Download - 3.leccion5 BúsquedaLocal
15/10/12
1
Curso 2012-2013 José Ángel Bañares 2/10/2013. Dpto. Informática e Ingeniería de Sistemas.
Inteligencia Artificial (30223) Lección 5. Búsqueda local
Í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
15/10/12
2
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
15/10/12
3
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
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
“Como escalar el Everest en una espesa niebla con amnesia”
15/10/12
4
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).
11
Ejemplo Hill-climbing example
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).
a) b)
3 4
2
3
2 2
1
0
0
0
0
1
0
0
0
0
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
15/10/12
5
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.
15/10/12
6
TLo (IRIDIA) 16 octubre 15, 2012
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.
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).
15/10/12
7
19
Algoritmos genéticos ¡ Variante de local beam search con
recombinación sexual.
20
Algoritmos genéticos = stochastic local beam search + generación de sucesores a partir de parejas de estados.
21
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
15/10/12
8
22
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.
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
6
5
4
3
3
2
0
6+5+4+3+3+2+0=23
6
5
4
4
3
1
1
6+5+4+3+1+1+0=24
24 23 20 11 ---- 78
24/78=31%
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))
15/10/12
9
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. Si la distancia al jugador < 50 pixels, salta dos instrucciones 4. Mover en dirección –x (izquierda de la pantalla) 5. Mover en dirección +x (derecha de la pantalla) 6. Mueve hacia el jugador 7. 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
15/10/12
10
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
¡ Método Newton-rhapson
!
x" x +#$f where $f =%f%x1, %f%x2
,...& ' (
) * +
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 la derivada de la función en Xn. Tangente=f(Xn)/(Xn-Xn+1)
¡ Método aproximado. Dejamos de iterar cuando |Estimación actual –Estimación previa| < tolerancia