En esta subunidad
veremos en detalle
ejemplos de algoritmos genéticos simples
que permiten evolucionar programas de control
para robots virtuales
Bueno, nuestro robot virtual
se llama Robby
es un robot muy simple
que vive en un mundo virtual
que definí por primera vez en mi libro
"Complejidad. Una visita guiada"
y su trabajo es dar vueltas
recogiendo latas de refresco
Robby está inspirado en un robot real
llamado Herbert
que funcionó en los años 80'
en el laboratorio de inteligencia artificial
del M.I.T
Iba sobre sus ruedas por el laboratorio
visitando distintas oficinas
y recogiendo latas de refresco vacías
llevándolas a los contenedores
de reciclado
Herbert fue un trabajo
de Jonathan Connell
Un estudiante de graduado
del M.I.T.
que trabajaba con Rodney Brooks
y Peter Ning
y lo impresionante de su robot
es que usaba unos algoritmos muy simples
para controlar su comportamiento
Nuestra versión de Herbert
se llama Robby
y es un robot virtual
que vive en un mundo simulado
que consiste en una retícula
de 10 x 10 cuadrados
y puedes considerar cada cuadrado
como oficinas virtuales
y cada oficina esta vacía
o contiene una lata vacía de refresco
Esta por ejemplo tiene una lata vacía
y el trabajo de Robby es moverse
por este mundo
recogiendo latas vacías
Así que tenemos que darle a Robby
un programa que le diga qué hacer
Puedo hacer yo misma el programa
o también usar un algoritmo genético
que desarrolle el programa de esta tarea
Primero veamos que puede ver Robby
y qué puede hacer
Es un robot muy simple
y tiene muy mala visión
lo único que puede ver es su cuadrado
y los que están al norte, sur, este y oeste
Así, el cuadrado en el que está, el del norte
el sur, el este y el oeste
el cuadrado actual, o la oficina, está vacía
al norte es un muro
al oeste es un muro
al sur es un cuadrado vacío
y al este hay una lata de refresco
eso es todo lo que puede ver
Podemos decidir que acción
puede hacer en el siguiente paso
y tiene 7 opciones posibles
Moverse al norte
moverse al sur
moverse al este
moverse al oeste
solo una casilla
se puede mover en dirección aleatoria
puede permanecer parado y no hacer nada
o coger una lata
Si en la casilla hay una lata
e intenta cogerla, es un éxito
o puede cometer el error
de intentar coger una lata
en una casilla vacía
Y hay premios y penalizaciones
que puede lograr
por las acciones que realiza
Si recoge una lata
consigue 10 puntos, lo que está bien
si tratar de coger una lata
en un lugar vacio
pierde un punto
si choca contra algún muro
pierde 5 puntos
Y la puntuación que consigue
es la suma de premios y penalizaciones
La meta es usar
un algoritmo genético
para controlar la evolución del programa
es decir una estrategia para Robby
Dejenme que explique
qué es una estrategia
La definición que voy a usar
es: un conjunto de reglas
que especifican una acción
para cada situación posible
donde las situaciones posibles
son los posibles inputs que podría ver
Así que hagamos una lista
de situaciones posibles
en las que se vería Robby
qué vería al norte, sur
esté, oeste y la casilla en la que está
y una estrategia para cada situación
la acción que tomaría
Por ejemplo
aquí hay una situación posible
la más simple
todo está vacío
la casilla actual
y en todas las direcciones
están vacías
está es una situación posible
Otra situación posible sería
todo está vacío menos
la casilla actual
en la que hay una lata
y podemos seguir así
listando las situaciones posibles
y figurarnos cuantas
situaciones posibles habría
Pero, para ver si han entendido
todo esto
empecemos primero por una
pequeña prueba
La prueba tiene dos preguntas
La primera, mirando esta situación
y suponiendo que empezamos
con Robby con marcador a 0
y si Robby toma las siguientes acciones
moverse al este, moverse al este
tomar una lata, moverse al este,
coger una lata, moverse al sur
Así hace 6 acciones, las preguntas son
¿Cuál es la situación después de esas acciones?
y ¿cuál es su puntuación?
Aquí tienen un recordatorio
de las evaluaciones
para puntuar el proceso