{"id":719,"date":"2018-11-27T19:03:00","date_gmt":"2018-11-28T00:03:00","guid":{"rendered":"https:\/\/v3.ricardoromo.co\/?p=719"},"modified":"2020-01-09T07:35:37","modified_gmt":"2020-01-09T12:35:37","slug":"ai-for-future-equipo-ganador-del-ai-challenge-2018","status":"publish","type":"post","link":"https:\/\/v3.ricardoromo.co\/2018\/ai-for-future-equipo-ganador-del-ai-challenge-2018\/","title":{"rendered":"AI For Future equipo Ganador del AI Challenge 2018"},"content":{"rendered":"\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t

Blog<\/a><\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t

Recursos<\/a><\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t

AI For Future equipo Ganador del AI Challenge<\/h1>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t

24 de Septiembre de 2018<\/strong><\/h4>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\"PacmanBack\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
El pasado 24 de septiembre de septiembre se celebraba en uno de los laboratorios de la Universidad del Magdalena la premiaci\u00f3n del concurso patrocinado por Bancolombia, el AI Challenge.<\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
\u201cEl AI Challenge hace parte de la propuesta liderada por la Alianza SinfonIA<\/strong> conformada por Bancolombia, la Universidad del Magdalena, la Universidad Santo Tom\u00e1s y la Universidad de los Andes, cuyo fin principal consiste en potencializar el ecosistema de inteligencia artificial en Colombia a trav\u00e9s de innovaciones que generen impactos positivos en la sociedad. <\/em><\/pre>
AI Challenge pretende proponer un reto interesante y desafiante que motive a estudiantes en niveles de pregrado y posgrado a demostrar habilidades de creatividad, recursividad y resoluci\u00f3n de problemas usando inteligencia artificial.\u201d\u00a0<\/em><\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t\t\t\"aichallenge-banner\"\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
El equipo conformado por Fabi\u00e1n Beltr\u00e1n, Sergio Robles y Ricardo Romo se hizo con el primer puesto del concurso al presentar una solucion que cumplia con todos los retos del concurso.
La soluci\u00f3n a este reto se divide en dos partes, una es el dispositivo f\u00edsico externo al computador y otra es el nodo implementado en el paquete de pacman_controller.
Paquete del juego: https:\/\/github.com\/carlosquinterop\/ros-pacman.git<\/a><\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t

1. Sistema controlador de interacci\u00f3n externo al computador.<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
Para la primera parte se decidi\u00f3 fabricar un guante con contactos met\u00e1licos en la yema de los dedos como dispositivo controlador. Este guante se conecta a trav\u00e9s del computador con un arduino que se comunica por puerto serial. El dedo pulgar est\u00e1 conectado a tierra (GND) y los otros 4 dedos a un pin digital del arduino. La l\u00f3gica implementada en la programaci\u00f3n del microcontrolador, detecta los cambios de estado de los pines digitales, estos se mantendr\u00e1n en HIGH (ALTO) siempre que no hagan contacto con el dedo pulgar. Este cambio genera una respuesta del arduino, mandado un caracter numerico al puerto serial (0,1,2,3,4).

La segunda parte se lleva a cabo dentro del paquete de pacman_controller, este estar\u00e1 leyendo constantemente el puerto serial en busca de nuevos cambios del dispositivo externo. Una vez detectado el car\u00e1cter num\u00e9rico adecuado, se procede a publicarlo al topic de \/pacman_Actions0 para ser interpretado por \/pacman_world (en caso de jugar con un pacman, \/pacman_Actions1 en caso de jugar con los dos). La manera en que est\u00e1n distribuidos los controles en el guante se realiza de la siguiente manera:<\/pre>
\u00a0<\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
Dedo \u00edndice = arriba.\nDedo medio = derecha.\nDedo anular = izquierda.\nDedo me\u00f1ique = abajo.<\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t

2. Agente controlador aut\u00f3nomo:<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
Para la implementaci\u00f3n del agente controlador se intenta separar los estados del juego en campos generales: adversarial (enemigos encerrados, enemigos libres), muchas galletas o pocas galletas, cantidad de enemigos, etc. En cada campo o estado de juego se realiza un comportamiento determinado.
\nCuando el mapa es un laberinto con una sola galleta y sin enemigos o con enemigos encerrados, se ejecuta un algoritmo de b\u00fasqueda por profundidad para cada combinaci\u00f3n de los movimientos disponibles (arriba, abajo, izquierda, derecha). Cuando el mapa es un laberinto y tiene m\u00e1s de una galletas pero no demasiadas, se genera un grafo de todas las galletas y el pacman y se utiliza algoritmos gen\u00e9ticos para encontrar la ruta m\u00e1s \u00f3ptima.<\/pre>
Cuando se tiene un estado de juego adversarial, el pacman se mueve dependiente de un agente automada. Este agente se basa en un algoritmo minmax. Este algoritmo supone que los enemigos se mueven de manera \u00f3ptima, tratando de minimizar mi score (puntaje). El algoritmo lo que busca es obtener el mejor puntaje suponiendo que los fantasmas se mover\u00e1n (luego del pacman moverse) buscando minimizar mi puntaje. Es decir, el pacman busca el mejor puntaje que puede obtener cuando los fantasmas se muevan de manera \u00f3ptima.            <\/pre>
          <\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\"\"<\/a><\/figure><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
Nota: el puntaje es dado por una funci\u00f3n de evaluaci\u00f3n creada por el grupo.\n<\/pre>
\u00a0<\/b><\/pre>
Debilidades:<\/b><\/pre>
Cuando el mapa tiene pocas galletas,y estado del juego es adversarial el pacman intenta huir de los fantasmas, y a veces no ve la galletas cercanas por darle mucho peso a la huida de los fantasmas.\u00a0<\/pre>
Cuando se tiene un mapa de dimensiones grandes, se encuentran menos cantidades galletas y el estado del juego no es adversarial, el sistema aut\u00f3nomo es menos eficiente.\n<\/pre>
Algunos trabajos en los que se basaron las soluciones:\n                       <\/pre>
\u25cf ALGORITMO GENETICO<\/a><\/div>
\u25cf AGENTE AUTOMATA<\/a><\/div>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t

3. Soluci\u00f3n de cooperaci\u00f3n humano\/m\u00e1quina:<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
Para esta solucion se utilizaron los paquetes anteriores, con la diferencia de que el controlador manual se deb\u00eda enviar al pacman_controller2.
Las instrucciones, links y requisitos para ejecutar el juego y los controladores estar\u00e1n en la pesta\u00f1a de recursos: \n <\/pre>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t

4. El equipo:<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t

Hardware Developer<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\"\"<\/a><\/figure>

Fabian Beltr\u00e1n<\/a><\/h3><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t

Technological Architect<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\"\"<\/a><\/figure>

Ricardo Romo<\/a><\/h3><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t

Software Developer<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\"\"<\/a><\/figure>

Sergio Robles<\/a><\/h3><\/div><\/div>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t
<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\t\t
\n\t\t

Deja una respuesta Cancelar la respuesta<\/a><\/small><\/h3>

Tu direcci\u00f3n de correo electr\u00f3nico no ser\u00e1 publicada.<\/span> Los campos obligatorios est\u00e1n marcados con *<\/span><\/p>