Raúl Arias Pérez - IADB - IES de Teis
Estudo da solución básica ao xogo pedra, papel, tesoiras a través dun axente intelixente programado en Python
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.
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.
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.
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.
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