Tarea1_y_Plan_de_clase_25_01_2013

Anuncio
Trimestre 13-I Curso: Inteligencia Artificial Prof. Gueorgi Khatchatourov
Plan de la clase 25/01/2013
Tarea N°1
Entrega: 11 de febrero 2013 al ayudante
Se permite desarrollo por equipos formados por 3 alumnos
Contenido: Desarrollar programa que aplica método A* para "Rompecabeza de 8"
Especificaciones: Operador introduce al programa un estado. El programa implementa
A* demostrando cada paso de la búsqueda. Como las funciones heurísticas usar h1 y h2 (Sección
4.2, Russel and Norvig).
Tema: Computación Evolutiva (CE)
La búsqueda tradicional responde a la pregunta ¿Cómo debe actuar un agente para resolver un
PB?
Una alternativa consiste en la generación de un vasto conjunto de agentes, cuyo comportamiento
para la búsqueda está basado en mismos principios, pero se varia en algunos detalles, y luego
elegir de ellos aquél que tiene el mejor rendimiento. Esa idea se explora en CE de tal manera que
el conjunto de agentes no se construye de una vez, sino generación tras generación mediante el
principio de "sobrevivencia selectiva".
Representación de programas en programación genética
Los objetos de evolución son programas funcionales (functional programs) de tipo las funciones
de LISP. Ellos pueden ser representados como árboles con nodos etiquetados.
Nodos internos pueden ser:
 funciones,
 predicados,
 or acciones que tienen uno o más argumentos.
Un ejemplo de cómo un programa de cálculo de 3+(54)/7 se representa como árbol, ver en
archivo http://newton.uam.mx/xgeorge/Intel_Art/13_I/prog_funcional_como_arbol_25_01.pdf
El problema de modelo que analizaremos en ese contexto es "Robot in grid world" (ver libro de
Nilsson, N. J., "Inteligencia artificial: una nueva síntesis"). Dos ejemplos de ese tipo están
archivo acaba mencionado y en otro archivo
http://newton.uam.mx/xgeorge/Intel_Art/13_I/robot_en_mundo_2d_25_01.pdf
Ese robot tiene tarea de moverse a norte hasta encontrar la primera frontera y luego marcharse
permanentemente a lo largo de la frontera en la dirección del sentido de manecillas de reloj.
Trimestre 13-I Curso: Inteligencia Artificial Prof. Gueorgi Khatchatourov
El universo de los programas del robot se implementa como conjunto de los programas
funcionales. Un subconjunto de ese universo se declara como generación-0 de los candidatos de
ser el programa-objetivo. Luego, mediante unos operaciones sobre pares del conjunto, se
construye siguiente generación, cuyos representantes deben supuestamente actuar mejor
resolviendo la tarea. Esa operación se repite muchas veces en ciclo.
Las funciones primitivas que se usan en el programa incluyen cuatro funciones booleanas:
AND, OR, NOT, y IF, asimismo cuatro acciones norte, este, sur, oeste.
Donde, como usualmente,
AND(x,y)=0 if x=0; else y
OR(x,y)=1 if x=1; else y
NOT(x)=0 if x=1; else 1
IF(x,y, z)=y if x=1; else z
Las acciones mueven robot por un paso a la dirección correspondiente. Las acciones tienen
efecto, pero no regresan valores. Intentando moverse a la pared, no hay efecto.
El robot tiene ocho sensores n, ne, e, se, s, sw, w, y nw los cuales regresan 0 o 1 (libre o pared).
Localidades relativos a robot a las cuales se refieren los sensores ver en Fig.4.2 del archivo
http://newton.uam.mx/xgeorge/Intel_Art/13_I/prog_funcional_como_arbol_25_01.pdf
Un ejemplo del programa del robot que cumple con las especificaciones se presenta en
http://newton.uam.mx/xgeorge/Intel_Art/13_I/prog_robot_sigue_pared_25_01.pdf.
El proceso evolutivo tiene intención de construir un programa similar.
Descripción del proceso evolutivo
Se genera aleatoriamente una populación de programas, usando funciones, constantes, y entradas
de sensores sobre los cuales pensamos que ellos podrían ser eficientes en el dominio de interés.
Esos programas iniciales forman generación-0.
La dimensión de generación-0 es un parámetro del proceso (5000 en el ejemplo). En el ejemplo,
cada programa se produce de funciones primitivas AND, OR, NOT, y IF, las funciones
sensoriales n, ne, e, se, s, sw, w, y nw, y los constantes 1 y 0.
Los programas de cada generación se evalúan y una nueva generación se produce hasta producir
un programa que actúa bastante bién.
La evaluación del programa se hace mediante su ejecución múltiple para ver con qué calidad
cumple con la tarea. (… ) La medida numérica de calidad del programa se llama fitness (valores
grandes significan mejor calidad)
La generación—(i+1) se construye de la manera siguiente:
Trimestre 13-I Curso: Inteligencia Artificial Prof. Gueorgi Khatchatourov
1. 500 programas (10%) de la generación i se copian directamente a la i+1. Para seleccionar
cuales deben ser copiados se hace un proceso de selección comparativa (tournament
selection process) : siete ("siete" es parámetro del proceso) programas sean elegidos (con
reemplazamiento) aleatoriamente de los 5000. Luego el programa con el mayor fitness se
escoge de los siete.
2. 4500 programas (90%) de nuevos programas-hijos (child programs) se incluyen en la
generación i+1. Cada programa-hijo se produce de un programa-madre y un programapadre a través de "crossover operation" (?) de la manera siguiente: madre y padre se
escogen mediante de selección comparativa (como arriba). Luego aleatoriamente elegido
sub-árbol de padre se re-emplaza con aleatoriamente elegido sub-árbol de madre. Un
ejemplo de esa operación se presenta en archivo
http://newton.uam.mx/xgeorge/Intel_Art/13_I/padres_y_su_hijo_25_01.pdf.
3. A veces operación de mutación se aplica para un porcentaje pequeño (1%) de población.
En ese caso, como antes, mediante selección comparativa se escoge padre. Luego un subárbol de padre elegido aleatoriamente se sustituye con el otro generado como para la
generación-0.
Descargar