Este laboratorio implementa un agente basado en aprendizaje por diferencias temporales (TD Learning) para el juego Connect Four. Su desempeño se evalúa en comparación con un agente basado en Minimax y otro con poda Alpha-Beta.
- Python 3.x
- Bibliotecas necesarias:
numpymatplotlibtensorflow(opcional, para utilizar una red neuronal en la función de valor)
Este proyecto implementa un agente de Aprendizaje por Diferencias Temporales (TD Learning) para jugar Conecta 4. Utiliza una tabla de valores Q para mejorar su rendimiento a través de la experiencia.
- Exploración y Explotación: Implementa una política epsilon-greedy.
- Aprendizaje Temporal Diferenciado: Ajusta los valores Q basándose en la ecuación de actualización de TD Learning.
- Simulación de Movimientos: Evalúa el impacto de sus acciones en el tablero.
- Oponente Minimax: Se entrena jugando contra un agente basado en Minimax.
- Persistencia de Valores Q: Guarda y carga modelos entrenados usando
pickle.
- Python 3.x
- NumPy
from td_agent import TDAgent
agente = TDAgent(player_id=1)
agente.aprender(episodios=10000)
agente.guardar_modelo("modelo_q.pkl")agente = TDAgent(player_id=1, load_file="modelo_q.pkl")estado_actual = [[0 for _ in range(7)] for _ in range(6)]
movimiento = agente.elegir_movimiento(estado_actual)
print(f"El agente juega en la columna: {movimiento}")Convierte el estado del tablero en una clave hashable para la tabla de valores Q.
Devuelve una lista de columnas en las que es posible realizar un movimiento.
Calcula la recompensa de un movimiento basándose en la victoria, derrota o control del centro.
Elige la mejor acción disponible usando una política epsilon-greedy.
Aplica la ecuación de aprendizaje TD para actualizar los valores Q.
Durante el entrenamiento, el agente juega contra un oponente Minimax con profundidad 3. Se ajusta el valor de epsilon progresivamente para reducir la exploración y favorecer la explotación de conocimiento adquirido.
El modelo de valores Q puede guardarse en un archivo usando:
agente.guardar_modelo("modelo_q.pkl")Y cargarlo posteriormente con:
agente = TDAgent(player_id=1, load_file="modelo_q.pkl")Se realizaron 150 juegos para evaluar el rendimiento del agente:
- 50 juegos contra el agente Minimax
- 50 juegos contra Minimax con poda Alpha-Beta
- 50 juegos jugando contra sí mismo
Los resultados se representaron gráficamente para analizar la cantidad de victorias de cada agente.
El video de demostración muestra 3 partidas aceleradas:
- TD Learning vs. Minimax
- TD Learning vs. Minimax con poda Alpha-Beta
- TD Learning vs. sí mismo
- La implementación del juego de Connect 4 con turtle es extraído del repositorio FabianKel/connect4-python de Derek Arreaga.
