LaAbadIAdelCrimen / abadia-gym

A simple stochastic OpenAI environment for training RL agents
17 stars 8 forks source link

El agente agentv6_ngdqn.py se cae si Adso no está en la pantalla #3

Open luzbel opened 5 years ago

luzbel commented 5 years ago

Hay situaciones en que Adso no está en la misma pantalla que Guillermo. Por ejemplo, cuando hay que ir a misa o al refectorio, Adso es autónomo y se va directamente sin importarle dejar atrás a Guillermo.

Se puede forzar la situación dejando a Adso quito modificando Adso::run en VigasocoSDL para que haga simplemente return. Con esa prueba, si se lanza una sesión de entrenamiento, en cuanto Guillermo abandona la pantalla inicial y Adso no le ha seguido el agente se cae con trazas como esta:

Traceback (most recent call last):> 0.00521920 0.00521920 File "agentv6_ngdqn.py", line 389, in <module>.00369859 mainLoop():39:INFO: SE 1:0:0 -> 0.00463802 0.0046380200odels/last_value_v1.model) File "agentv6_ngdqn.py", line 332, in mainLoop.0043658500odels/last_value_v1.model) env.pintaRejilla(40, 20):0:0 -> 0.00339327 0.0033932700 File "/home/abadIA/python3/src/gym-abadia/gym_abadia/gym_abadia/envs/abadia_env2.py", line 783, in pintaRejilla adsoX, adsoY, adsoO = self.personajeByName('Adso')625 File "/home/abadIA/python3/src/gym-abadia/gym_abadia/gym_abadia/envs/abadia_env2.py", line 759, in personajeByName return int(self.Personajes[name]['posX']), int(self.Personajes[name]['posY']), int(self.Personajes[name]['orientacion']) KeyError: 'posX'9:INFO:reward: 0.0001 tr: 0.008100000000000007 action: 0

Por lo que parece el problema está en el entorno del gym dónde se accede a las propiedades de Adso sin verificar si han llegado en el volcado (comando DUMP), por lo que seguramente afecte a otras versiones de los agentes.

luzbel commented 5 years ago

Me sigue saliendo tras el commit 0af6b3317773cf29eda8b72e9931ad4da1dc42b7

Traceback (most recent call last):001 tr: 0.046100000000000294 action: 0 File "agentv6_ngdqn.py", line 389, in <module> mainLoop():45:INFO:reward: 0.0001 tr: 0.0001 action: 2 File "agentv6_ngdqn.py", line 332, in mainLoop env.pintaRejilla(40, 20) File "/home/abadIA/python3/src/gym-abadia/gym_abadia/gym_abadia/envs/abadia_env2.py", line 783, in pintaRejilla adsoX, adsoY, adsoO = self.personajeByName('Adso') File "/home/abadIA/python3/src/gym-abadia/gym_abadia/gym_abadia/envs/abadia_env2.py", line 759, in personajeByName return int(self.Personajes[name]['posX']), int(self.Personajes[name]['posY']), int(self.Personajes[name]['orientacion']) KeyError: 'posX'

Pero lo raro es que la línea 783 son comentarios y no adsoX, adsoY, adsoO = self.personajeByName('Adso')

En realidad, al hacer git pull el gym_abadia/gym_abadia/envs/abadia_env2.py de donde he clonado https://github.com/LaAbadIAdelCrimen/abadia-gym/ se actualiza

pero en el virtualenv parece que hay otro instalado, seguramente por ejecutar el pip3 install requirements.txt ¿hay que volver a instalar los requisitos?

Además, en requirements aparece git+https://github.com/LaAbadIAdelCrimen/abadia-gym@3463ac3b2ab0e460036d8cdf797bdb43262bae5b#egg=gym_abadia&subdirectory=gym_abadia ¿es correcto?