Code Monkey home page Code Monkey logo

rps_mia's Introduction

Axente Intelixente para RPS

Raúl Arias Pérez - IADB - IES de Teis

O problema

Estudo da solución básica ao xogo pedra, papel, tesoiras a través dun axente intelixente programado en Python

Contorno de tarefas

Contorno de tarefas Observable Axentes Determinista Episódico Estático Discreto Coñecido
RPS Parcialmente Multi Estocástico Episódico Estático Discreto Coñecido
  • Parcialmente Observable: Xa que non podemos saber o que "pensa" o axente ao que se enfrenta o noso.
  • Multiaxente: Existen dous xogadores(axentes) que se enfrentan.
  • Estocástico: As accións do axente non sempre levan ao mesmo resultado.
  • Episódico: Cada partida dase nun instante.
  • Estático: O medio non cambia mentras o axente está a pensar a súa acción.
  • Discreto: As posibles variables que se poden dar son limitadas e ademáis tamén estas son discretas.
  • Coñecido: Sabemos as reglas do xogo e como aplicalas.

Estrutura do Axente

Optei por un axente reactivo baseado en modelos. O meu axente toma o historial de partidas xogadas, a partir de este colle a última partida xogada e busca a partida seguinte a todas as similares a esta. De este conxunto tomamos o movemento máis probable do rival e realizamos o movemento gañador contra este.

img

Implementación

A implentación de este axente está realizada en Python 3.11 apoiandose na librería Pandas e no código aportado por dfleta no seu repositorio de RPS (lixeiramente modificado para adaptarse as nosas necesidades). Todo o meu código atópase no repositorio do proxecto.

Apórtase un arhcivo enviroment.yml para poder replicar a contorna que se utilizou á hora de ser desenvolvido.

Ademáis achégase un axente ciclico ao que poder enfrentar ao noso axente.

Extensión - Pedra Papel Tesoiras Lagarto Spock (RPSLS)

Engadiuse un diccionario extra, baseado no orixinal, que permite o uso do axente na versión extendida do xogo (RPSLS). A estructura do axente non precisa modificación para poder funcionar con esta versión extendida, mais precisa máis partidas para comenzar a ser efectivo ao ter máis posibilidades entre as que elixir. img

Ejecución y uso

Crea un entorno conda con las especificaciones en enviroment.yml:

conda env create -f environment.yml
conda activate RPS

Ejecuta el programa:

RPS:

python src/rps.py

RPSLS:

python src/RPSLS.py

rps_mia's People

Contributors

th0rln avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.