15/10/12 Inteligencia Artificial (30223) Lección 5. Búsqueda local Curso 2012-2013 José Ángel Bañares 2/10/2013. Dpto. Informática e Ingeniería de Sistemas. Índice ¡ Problemas de optimización, búsqueda local ¡ Escalada/Hill Climbing ¡ Enfriamiento simulado/Simulated annealing ¡ Algoritmos genéticos Problemas de optimización y búsqueda local ¡ En lecciones previas, el agente Resolución de problemas exploraba sistemáticamente el espacio de estados. ¡ El camino al objetivo es la solución al problema ¡ En muchos problemas de optimización el camino es irrelevantes, lo que nos importa es el estado objetivo. Espacio de estados = conjunto completo de configuraciones Problema: Encontrar la configuración óptima ¡ Por ejemplo las 8-reinas ¡ Configuración horarios ¡ Diseño de circuitos integrados ¡ Planificación de trabajos ¡ Optimización de la red de telecomunicaciones 1 15/10/12 Problemas de optimización y búsqueda local ¡ Los algoritmos de búsqueda local trabajan utilizando un único nodo en curso (en lugar de múltiples caminos) y generalmente se mueven solo a nodos vecinos. ¡ Ventajas ¡ Usan muy poca memoria ¡ Encuentran una solución razonable en espacios de estados grande o infinito (continuo) para los cuales los algoritmos de exploración sistemática no son adecuados. ¡ Útiles para problemas de optimización puros. ¡ Encuentra el estado mejor de acuerdo a una función objetivo. ¡ P.e. la supervivencia de las especies es una función objetivo como metáfora de la optimización ¡ La evolución de Darwin no tiene un test objetivo, ni coste del camino para el problema. Ejemplo: Problema del viajante ¡ Comienza con un viaje completo, y realiza cambio ente pares ¡ Variantes de esta aproximación rondan el 1% de la solución óptima rápidamente con miles de ciudades. Ejemplo: n-reinas ¡ Poner n reinas en un tablero nxn sin que dos reinas estén en la misma fila, columna o diagonal. ¡ Mueve una reina para reducir el número de conflictos Casi siempre se resuelve el problema de las n-reinas casi instantáneamente para problemas muy grandes, p.e. n =1millón 2 15/10/12 Búsqueda local y optimización Escalada/Hill-climbing search ¡ “es un bucle que se mueve continuamente en la dirección del valor creciente” ¡ Termina cuando se alcanza unpoco. ¡ Hill climbing no mira mas allá de los vecinos inmediatos al estado en curso. ¡ Hill-climbing elige aleatoriamente entre el conjunto de sucesores si hay mas de uno. ¡ Hill-climbing se la conoce también como búsqueda local voraz (greedy local search) Hill-climbing search “Como escalar el Everest en una espesa niebla con amnesia” function HILL-CLIMBING( problema) return un estado que es un máximo local enCurso← MAKE-NODE(INITIAL-STATE[problema]) loop do vecino← sucesor de enCurso con mayor valor if vecino.VALUE ≤ enCurso.VALUE then return enCurso.STATE enCurso← vecino 3 15/10/12 Ejemplo Hill-climbing ¡ Problema 8-reinas (formulación del problema con estado completo, partimos de un estado con todas las reinas). ¡ Función sucesor: movemos una única reina a otro cuadrado de la misma columna. ¡ Función heurística h(n): número de pares de reinas que se atacan entre sí (directa o inderectamente). Ejemplo Hill-climbing example a) 0 b) 0 0 3 1 2 3 4 0 2 2 0 0 1 0 0 a) Muestra un estado con h=17 (3+4+2+3+2+2+1+0) y el valor de h para cada posible. b) Un mínimo local en el espacio de 8-reinas (h=1). 11 Problemas con la escalada ¡ Máximo local ¡ Cresta = secuencia de máximos locales de difícil navegación para algoritmos voraces ¡ Llano = un área del espacio de estados donde la función de evaluación es plana En el problema de las 8-reinas, partiendo de un estado inicial aleatorio la escalada se atasca en el 86% del tiempo y resuelve el 4% de los casos ¡ Cuando lo resuelve lo hace en cuatro pasos de media y se atasca en tres pasos de media. ¡ No está mal para un espacio de estados de 88 ≈17 millones de estados 4 15/10/12 Soluciones Hill-climbing ¡ Continuar en una dirección con la esperanza de que el llano sea un shoulder/joroba (no es un llano máximo local) ¡ Buena solución poniendo un límite en el número de movimientos consecutivos en el llano ¡ p.e. 100 en el problema de las 8-reinas. Elevamos el porcentaje de éxito del 14% al 94%. El algoritmo ahora lo hace en 21 pasos de promedia para cada caso exitoso, y 64 pasos para casos fallidos. Otras Soluciones Hill-climbing ¡ Hill-climbing estocástica ¡ Selección aleatoria entre los movimientos ascendentes. ¡ La probabilidad varía con la pendiente ¡ First-choice hill-climbing ¡ Como estocástica generando aleatoriamente sucesores hasta que encuentra uno mejor Otras Soluciones Hill-climbing ¡ Random-restart hill-climbing ¡ Intenta evitar atascarse en un máximo local ¡ Genera estados iniciales aleatoriamente. ¡ Completa, porque con infinito intentos, la probabilidad de generar el estado objetivo es 1. ¡ Si cada escalada tiene una probabilidad de éxito p, el número de reinicios es 1/p ¡ Para 8-reinas p≈0.14, así que 1/0.14=7 iteraciones se requerirán para tener éxito ( 6 fallos y 1 éxito) ¡ 3*6 + 4+1 = 22 pasos de media, Número de pasos promedio 3 pasos de media se atasca, 4 pasos de media éxito. 5 15/10/12 Enfriamiento simulado/ Simulated annealing ¡ Escapar de los máximos locales permitiendo “malos” movimientos. ¡ Idea: reducir gradulamente su tamaño y frecuencia. ¡ Simil; endriamiento de metales para que alcancen la mayor dureza ¡ Analogía de la bola en superficie no uniforme: ¡ Sacudir en una superficie con mínimos locales (= alta temperatura). ¡ Sacudir ligeramente (= menor temperatura). ¡ Si la temperatura T decrece los suficientemente despacio, alcanzaremos el mejor estado. ¡ Applied for VLSI layout, airline scheduling, etc. 16 octubre 15, 2012 TLo (IRIDIA) Simulated annealing function SIMULATED-ANNEALING( problema, schedule) return a solution state input: problema, un problema schedule, función de la temperatura con el tiempo local variables: current, un nodo next, un nodo T, la “temperatura” controlando la probailidad de pasos atrás current ← MAKE-NODE(problema.INITIAL-STATE) for t ← 1 to ∞ do T ← schedule(t) if T = 0 then return current next ← un sucesor elegido aleatoriamente ∆E ← next. VALUE - current. VALUE if ∆E > 0 then current ← next else current ← next sólo con probabilidad e∆E /T Local beam search ¡ Idea: Mantener k estados en lugar de uno ¡ Inicialmente: k estados aleatorios ¡ Siguiente: determinar los sucesores de los k estados ¡ Si cualquiera de los sucesores es el objetivo → fin ¡ Sino selecciona los k mejores de los sucesores y repetimos ¡ La principal diferencia con la random-restart search ¡ La información de las k búsquedas se comparte/ No es lo mismo que k búsquedas en paralelo. ¡ Puede sufrir de falta de diversidad ¡ Los k estados pueden acabar en el mismo máximo local. ¡ Variante estocástica: Elige k sucesores aleatoriamente con una probabilidad proporcional a una función de éxito (selección natural). 6 15/10/12 Algoritmos genéticos ¡ Variante de local beam search con recombinación sexual. 19 Algoritmos genéticos = stochastic local beam search + generación de sucesores a partir de parejas de estados. 20 Algoritmos genéticos ¡ Representación de los estados como Strings de dígitos (8 dígitos representando posición de la reina en cada columna 8 7 6 5 4 3 2 1 8 7 6 5 4 3 2 1 21 7 15/10/12 Algoritmos genéticos ¡ Clasificación de la población por la función de fitness (Número de pares de reinas que no se atacan). Tiene 28 para la solución. 24/78=31% 24 23 20 11 ---78 6+5+4+3+3+2+0=23 8 7 6 5 4 3 2 1 4 3 2 6 5 3 0 6+5+4+3+1+1+0=24 8 7 6 5 4 3 2 1 4 3 1 5 4 1 6 22 Genetic algorithm function GENETIC_ALGORITHM( población, FITNESS-FN) return un individuo input: población, un conjunto de individuos FITNESS-FN, una fución que determina la calidad del individuo repeat nueva_población ← conjunto vacio for i :=11 to SIZE(población) do x ← RANDOM_SELECTION(población, FITNESS_FN) y ← RANDOM_SELECTION(población, FITNESS_FN) hijo← REPRODUCE(x,y) if (pequeña probabilidad aleatoria) then hijo← MUTATE(hijo) add hijo to nueva_población población ← nueva_poblaciónn until algún individuo encaje suficientemente o haya pasado sufieciente tiempo return el mejor individuo Genetic algorithm function REPRODUCE( X, Y) returns un individuo input: x,y, individuos padres n ← LENGTH(x); c ← número aleatorio de 1 a n return APPEND (SUBSTRING(x,1,c), SUBSTRING(y,c+1,n)) 8 15/10/12 Algoritmos genéticos y aprendizaje en juegos Fitness function: Se evalúa si conseguimos el objetivo o no. En este caso El marciano tiene evaluación positiva si te mata o llega abajo, y negativa si no llega. Idea ¡ Diseñar un controlador, programas cortos escritos en lenguajes sencillos que contienen instrucciones para controlar las naves/asteroides ¡ P.E. Juego de 8 instrucciones 1. Mueve hacia el jugador 2. Alejar del jugador 3. Mover en dirección +x (derecha de la pantalla) 4. Mover en dirección –x (izquierda de la pantalla) 5. Si la distancia al jugador es < 100 pixels, saltar siguiente instrucción 6. Si la distancia al jugador > 100 pixels, saltar siguiente instrucción 7. Si la distancia < 50 pixels saltar dos siguientes instrucciones 8. Si la distancia > 50 pixels saltar dos siguientes instrucciones. Idea ¡ Ejemplo de programa escrito a mano razonable para el control de las naves enemigas (10 instrucciones/programa) 1. Mueve hacia el jugador 2. Mueve hacia el jugador 3. 4. 5. 6. 7. Si la distancia al jugador < 50 pixels, salta dos instrucciones Mover en dirección –x (izquierda de la pantalla) Mover en dirección +x (derecha de la pantalla) Mueve hacia el jugador Mueve hacia el jugador 8. Si la distancia al jugador es < 100 pixels, salta siguiente instrucción 9. Mover en dirección +x (derecha de la pantalla) 10. Mueve hacia el jugador 9 15/10/12 Juego ¡ Espacio de estados ¡ Programas: Secuencias de instrucciones que controlan las naves enemigas ¡ Representación: ¡ 8 instrucciones, con 3 bits (23) ¡ Programas de 10 instrucciones: 10*3= 30 bits (genes) ¡ Por ejemplo: 12 naves enemigas, el programa usa 12 “cromosomas” ¡ La función de fitness usa las siguientes estadísticas ¡ Distancia más cercana al jugador ¡ Distancia más lejana al jugador ¡ Distancia media al jugador ¡ Numero de veces que la nave es alcanzada y recreada ¡ Máxima velocidad Búsqueda local en espacios continuos ¡ Entorno Discretos vs. continuos ¡ La función sucesor produce infinitos estados ¡ ¿Como resolverlo? ¡ Discretizar la vecindad de cada estado. ¡ Utilizar la función gradiente para dirigir la búsqueda local x " x + #$f ¡ Método Newton-rhapson & %f %f ) where $f = ' , ,...* ( %x1 %x 2 + ! Método de Newton Raphson ¡ Para encontrar las raíces de una ecuación (Isaac Newton 1642-1727) ¡ Si Xn es una estimación de la raíz, Xn+1 es una estimación mejor. f ‘ es derivada de la función en Xn. la Tangente=f(Xn)/(Xn-Xn+1) ¡ Método aproximado. Dejamos de iterar cuando |Estimación actual –Estimación previa| < tolerancia 10 15/10/12 Inteligencia Artificial (30223) Grado en Ingeniería Informática lección 5. Búsqueda local Sección 4.1 (AIMA) 11