Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tarea 3 parte f #3

Open
MelanyLillo opened this issue Oct 24, 2024 · 5 comments
Open

Tarea 3 parte f #3

MelanyLillo opened this issue Oct 24, 2024 · 5 comments

Comments

@MelanyLillo
Copy link

Hola!
Estoy haciendo la parte f de la tarea y noté que en el caso de HunterEnv done no está tomando valor True nunca, lo que impide continuar con el entrenamiento. De hecho llega un punto en que las posiciones son las siguientes y nunca cambian:
Hunter1: (2, 4), Hunter2: (3, 6), Prey: (6, 3), Done: False
¿Podemos cambiar algo de este entorno o debería tomar otro enfoque?
Agradezco de antemano su respuesta,
Saludos!

@MelanyLillo
Copy link
Author

MelanyLillo commented Oct 24, 2024

En caso de que a alguien más le pasara...

Al menos a mí me funcionó cambiar en GridEnv esta función:
def action_space(self):
#return ["down", "up", "right", "left"]
return [0, 1, 2, 3]

y esta parte de la clase HunterAndPreyEnv(GridEnv, AbstractMultiAgentEnv):
# self.__single_agent_actions = super().action_space + ['None']
self.__single_agent_actions = super().action_space + [4]

Así, dejando todo con el formato de números funciona el código.

@RodrigoToroIcarte
Copy link
Owner

No pueden cambiar nada del entorno. Al cambiar el entorno estás cambiando el problema que les pedí que resolvieran.

No es necesario cambiar el entorno tampoco. La razón por la que cambiar el entorno te funcionó es porque eliminaste la opción de que los agentes se queden quietos. Pero esa es parte de la dificultad del ambiente. Si no funciona es porque tienes un bug en Q-learning :(

Si el agente ejecuta la acción "None" muchas veces, Q-learning debería aprender que ejecutar esa acción no da recompensa y bajar su Q-value. Eventualmente otro Q-value tendrá mejor recompensa y cambiará la acción seleccionada.

@MelanyLillo
Copy link
Author

Hola profe, lo que pasa es que en la función step de HunterEnv, prey_action es un string y hunter1_action, hunter2_action son números, lo que está afectando el entrenamiento, por eso hice el cambio para que todos tengan el mismo formato, pero no eliminé la opción de que se queden quietos, solo puse su versión en número, que sería 4. Como no afecto las acciones en mi main, no sabría cómo atacar el problema de otra forma :( .

def step(self, action):
    prey_action = self.__sample_prey_action()
    hunter1_action, hunter2_action = action
    self.__state, reward, done = self.env.step((hunter1_action, hunter2_action, prey_action))
    reward = reward[:2]  # we ignore the prey's reward
    return self.__state, reward, done

@RodrigoToroIcarte
Copy link
Owner

¡Hola!

Las acciones de todos son strings (incluido los cazadores). De hecho, si ejecuto este código:

env = HunterEnv()
print(env.action_space)

... me sale lo siguiente:

[('down', 'down'), ('down', 'up'), ('down', 'right'), ('down', 'left'), ('down', 'None'), ('up', 'down'), ('up', 'up'), ('up', 'right'), ('up', 'left'), ('up', 'None'), ('right', 'down'), ('right', 'up'), ('right', 'right'), ('right', 'left'), ('right', 'None'), ('left', 'down'), ('left', 'up'), ('left', 'right'), ('left', 'left'), ('left', 'None'), ('None', 'down'), ('None', 'up'), ('None', 'right'), ('None', 'left'), ('None', 'None')]

Lo que no caché es si era importante para tu código que las acciones fueran números en vez de palabras. ¿Es ese el problema?

@MelanyLillo
Copy link
Author

MelanyLillo commented Oct 24, 2024

Hola! no sé por qué, pero cuando imprimí eso debuggeando me mostraba distintos formatos y al cambiarlo funcionó el entrenamiento :( Seguiré revisando porque en ese caso debe ser otro el error.
Muchas gracias!

Pdta: Efectivamente solo faltaba hacer un mapeo de acciones a índices y luego mapear las acciones numéricas a strings antes de enviarlas al entorno para tomar la acción.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants