1-Descripción del medio ambiente
El medio ambiente hasta este momento cuenta con zombies que te siguen de forma inmediata ni bien el programa se inicia. dentro del ambiente también tenemos edificios que sirven para dar una mejor idea del movimiento del jugador. El jugador tiene una cantidad de vida limitada la cual podemos alterar tanto programaticamente como manualmente mediante el engine de Unity 3D.
El jugador tiene la opción de disparar, rotar en 8 direcciones, moverse e invertir su movimiento sin rotar.
2-Descripción detallada de la actividad o acción que va a aprender tu agente.
El agente aprenderá a desplazarse por el medio ambiente esquivando a los zombies.
3-Solución planteada al problema utilizando el algoritmo LMS.
a. Selección de la experiencia de aprendizaje
i.Se optó por usar feedback indirecto para poder hacer un análisis de los estados que eligió durante su toma de decisiones.
b. Selección de la función objetivo
i.La función objetivo quedó de la siguiente forma:
Donde :
P=Número de enemigos en la dirección elegida.
D=Distancia al zombie más cercano.
R=Que tan rodeado estás.
Z=Si ves zombies.
c.Selección de la representación de la función objetivo.
La función objetivo devuelve un número real. Se optará por el mayor a la hora de decidir la acción.
d.Selección del algoritmo de aproximación.
i.Selección de los patrones utilizados para el aprendizaje
1. Cuando el agente esta rodeado por zombies.
2. Cuando hay muchos zombies en una sola dirección.
3. Cuando no hay ningún zombie a la vista.
ii.Los pesos elegidos dentro de la función objetivo buscaban
1. w0 = -1
2. w1 = -10
3. w2 = -3
4. w3 = 1
4-Conclusiones después de la programación.
Luego de finalizar la actividad de programación 2 nos pudimos dar cuenta de certas cosas.
Para empezar nos topamos con ciertos problemas con unity, su función arctan. Los ángulos que nos devolvía no concordaban con los angulos de nuestros cuadrantes por lo cual debimos adaptar nuestra lógica al engine para que todo saliera bien. Luego fue muy interesante el hecho de que el algoritmo pudiera balancear los pesos de niuestra función objetivo en cada corrida. Determinar cada cuanto tiempo se hace el LMS fue algo un poco dificil y esto implicó que pensaramos que tanto una persona piensa lo que hace. Nos dimos cuenta de que la decisión se toma en un primer instante y por lo general luego actuas inmediatamente. Esto nos ayudó a determinar que el algoritmo debía de balancear los pesos luego de cada muerte. El algoritmo para tomar decisiones se corre cada medio segundo y cada decisión es almacenada en una lista para poder realizar el balanceo de pesos posteriormente.
Finalmente es muy interesante ver como el personaje esquiva a los zombies y aparentemente aprende con base a nuestra función objetivo. Lo más impresionante es que lo hace solo sin necesidad de estar manipulando los pesos manualmente.
No hay comentarios:
Publicar un comentario