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