Programación dinámica para jugar 21 - Parte III
Ivan Moreno, 12 October 2018
Terminamos la unidad sobre Programación Dinámica del curso y solo falta reportar los últimos cambios y las conclusiones del trabajo hecho.
Dos versiones del 21
Debido a los problemas para modelar el juego, terminé haciendo dos versiones
del 21: una con repartidor y otra sin él. Si revisas la versión simplificada que no toma en cuenta al repartidor, todos los algoritmos
vistos en clase funcionan, aunque con resultados mixtos. Si después
ves la otra versión, notarás que policy_iteration
y value_iteration
no se usan debido a que los valores de los estados divergen.
Después de bastante depuración ingenua (porque Julia no tiene depurador por lo pronto,) concluí que el problema está en el modelo de decisión de Markov. Pero al tener al menos 1 mes trabajando continuamente en este proyecto, siento que ya no tengo la capacidad de ver qué parte es la que ocupo corregir. Esta es la parte en donde ocupo una segunda (y una tercera) opinión. Sin embargo, también es momento de calificar el trabajo de todos, por lo que de todos modos ocupo dar por finalizado el proyecto.
Si revisas mis libretas y encuentras algo que pueda hacer mejor, desde la implementación de los algoritmos hasta el MDP, por favor avísame por correo electrónico o por GitHub. Realmente lo apreciaré.
Ejercicios de la unidad
Además del proyecto para esta unidad, también fue necesario resolver ejercicios del libro de Sutton y Barto de Aprendizaje por Refuerzo. Los ejercicios resueltos se pueden ver aquí.
Lo que aprendí en la escuela de Programación Dinámica fue…
Es difícil modelar de manera completa y correcta un proceso, incluso si no es complejo. La programación dinámica tiene algoritmos sencillos y elegantes que desafortunadamente pasan la dificultad a otras partes del proceso para resolver el problema.
Los procesos de decisión de Markov son buenos para simplificar un modelo estocástico, a cambio de pedir que conozcamos completamente y a priori, como funciona lo que queremos modelar.
Me muero por volver a atacar el 21, pero ahora con aprendizaje por refuerzo, después de programar este proyecto. Por lo pronto suena más sencillo.