En este trabajo se pretende estudiar y caracterizar el juego de snake, de modo que se desarrollen diferentes estrategias de juego basadas en sistemas inteligentes. Existen algunas aproximaciones donde deep reinforcement learning ha demostrado que puede jugar satisfactoriamente a este juego. En este TFG pretendemos buscar otros paradigmas como podrían ser los sistemas probabilísticos, o los sistemas basados en reglas, de forma que podamos hacer una comparativa entre ellos. No descartamos la posibillidad de implementar nuestra propia variante de Deep Reinforcement Learning, si ésto facilitara el análisis y comparativa.
El trabajo a desarrollar, se cubriría abordando las siguientes fases: (1) estudio del juego snake; (2) documentación y análisis de diferentes implementaciones y/o paradigmas de tñecnicas inteligentes que se hayan aplicado (3) caracterización del problema. (4) diseño de técnicas propias, en principio se van a intentar sistemas probabilísticos (Naive Bayes y modelos/clasificadores ampliados) (5) parametrización de los algoritmos y modelos escogidos (6) comparativa de las técnicas empleadas entre ellas, usando también alguna técnica base o de estado del arte (7) análisis de los resultados.
El principal objetivo de este trabajo es el estudio de la aplicabilidad de técnicas de sistemas inteligentes y de su desempeño como jugadores de 'snake'.
El desarrollo de este trabajo conlleva distintas tareas/fases:
1. Estudio del juego escogido, alguna implementación existente (que se podrá adaptar o reprogramar)
2. Documentación sobre algunas las técnicas basadas en IA que ya se han empleado para este juego particular
3. Caracterización del juego, determinar qué se van a considerar inputs y outputs para el agente de juego. Se podría, incluso, buscar o generar un dataset de partidas (jugadas por un buen agente o por un jugador humano).
4. Desarrollo de nuestros propios algoritmos, buscando inicialmente explorar modelos probabilísticos, que podrían ser mixtos con otros paradigmas como redes Neuronales o búsqueda A*
5. Implementación del algoritmo o algoritmos desarrollados en el punto 4, integrándolo en la implementación desarrollada/adaptada en el punto 1.
6. Comparativa de los distintos enfoques, empleando métricas que pueden incluir el score conseguido en unha misma partida, pero también la capacidad de supervivencia (longevidad) de la serpiente
7. Análisis de los resultados para extraer conclusiones particulares y generales.
8. Escritura de la memoria del TFG.
Este TFG permite completar las competencias específicas [CM3], [CM5] ,[CM6] y [CM7] de la Intensificación de Computación, es decir, se trabajarán principalmente (en distinto grado) las siguientes competencias específicas de la tecnología de computación:
[CM3] Capacidad para evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.
[CM5] Capacidad para adquirir, obtener, formalizar y representar el conocimiento humano en una forma computable para la resolución de problemas medianteun sistema informático en cualquier ámbito de aplicación, particularmente los relacionados con aspectos de computación, percepción y actuación en ambientes o entornos inteligentes.
[CM5] Capacidad para adquirir, obtener, formalizar y representar el conocimiento humano en una forma computable para la resolución de problemas mediante un sistema informático en cualquier ámbito de aplicación, particularmente los relacionados con aspectos de computación, percepción y actuación en ambientes o entornos inteligentes.
[CM7] Capacidad para conocer y desarrollar técnicas de aprendizaje computacional y diseñar e implementar aplicaciones y sistemas que las utilicen, incluyendo las dedicadas a extracción automática de información y conocimiento a partir de grandes volúmenes de datos.