Tema 07

Inteligencia Artificial I Curso 2005–2006 Tema 7: B´ usqueda local y algoritmos gen´ eticos Jos´ e A. Alonso Jim´ enez

Views 80 Downloads 0 File size 222KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Inteligencia Artificial I

Curso 2005–2006

Tema 7: B´ usqueda local y algoritmos gen´ eticos Jos´ e A. Alonso Jim´ enez Francisco J. Mart´ın Mateos Jos´ e L. Ruiz Reina

Dpto. de Ciencias de la Computaci´ on e Inteligencia Artificial

Universidad de Sevilla

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.1

Introducci´ on x

x

x

Algoritmos de b´ usqueda de soluciones ´ optimas u

Buscar la mejor soluci´ on dentro de un espacio de posibles soluciones

u

Maximizar o minimizar

u

En nuestro caso, minimizar (an´ alogamente maximizar)

Mejoras iterativas u

Empezar con un estado inicial cualquiera

u

Mejorar su calidad paso a paso

Algoritmos: u

Escalada

u

Escalada con reinicio aleatorio

u

Enfriamiento simulado

u

Algoritmos gen´ eticos

u

Reparaci´ on heur´ıstica (tema 7)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.2

B´ usqueda en escalada x

Idea de la b´ usqueda en escalada: u

Aplicar t´ ecnicas de mejora iterativa a solucionar problemas representados como espacios de estados

u

Confiar en la heur´ıstica, escogiendo en cada paso el sucesor con mejor heur´ıstica

u

No se permite recuperarse de un camino err´ oneo (no se mantiene un ´ arbol de b´ usqueda)

u

Puede verse como una escalada (ascenso o descenso) heuristica h(e’)

Estados

h(e)

e’ e

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.3

Implementaci´ on de la b´ usqueda en escalada FUNCION BUSQUEDA-EN-ESCALADA() 1. Hacer ACTUAL el nodo cuyo estado es *ESTADO-INICIAL*, cuyo camino es vac´ ıo y cuya heur´ ıstica es la de *ESTADO-INICIAL* 2. Mientras que ACTUAL sea distinto de FALLO, 2.1 Si ES-ESTADO-FINAL(ESTADO(ACTUAL)), devolver el nodo ACTUAL y terminar. 2.2 en caso contrario, 2.2.1 Hacer MEJOR-SUCESOR igual al nodo con mejor heur´ ıstica de entre SUCESORES(ACTUAL) 2.2.2 Si HEURISTICA-DEL-NODO(MEJOR-SUCESOR) < HEURISTICA-DEL-NODO(ACTUAL), 2.2.2.1 Hacer ACTUAL igual a MEJOR-SUCESOR 2.2.2.2 En caso contrario, hacer ACTUAL igual a FALLO 3. Devolver ACTUAL

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.4

Grafo de escalada para el problema del viaje Sevilla

1

H = 325.08

Cádiz

Córdoba

Huelva

Málaga

H = 348.37

H = 240.27

H = 409.15

H = 177.91

Cádiz

Córdoba

Granada

H = 348.37

H = 240.27

H = 106.26

Almería H=0

IA-I 2005–2006

2

Cc Ia

4

3

Sevilla H = 325.08

Córdoba

Jaén

Málaga

H = 240.27

H = 150.99

H = 177.91

B´ usqueda local y algoritmos gen´ eticos

7.5

8–puzzle por escalada: 1a heur´ıstica 1

2

8

3

1

6

4

7

5 H=4

2

2

8

3

2

1

6

4

1

7

5

7

H=5

2 7

3

2

1

4

1

6

5

7

IA-I 2005–2006

6

3

2

8

3

4

1

6

4

5

7

5

H=3

8

H=3

8

3

2

8

8

4

1

4

6

5

7

6

H=3

Cc Ia

H=5

H=4

3 5

2

8

3

1

6

4

7

5 H=4

B´ usqueda local y algoritmos gen´ eticos

7.6

8–puzzle por escalada: 2a heur´ıstica 1

2

8

3

1

6

4

7

5 H=5

2

2

8

3

2

1

6

4

1

7

5

7

H=6

8 6

3

2

8

3

4

1

6

4

5

7

5

H=4

H=6

3

2 7

8

3

2

1

4

1

6

5

7

H=5

3

2

8

8

4

1

4

6

5

7

6

H=3

3 5

2

8

3

1

6

4

7

H=5

5 H=5

4

2

3

2

3

2

1

8

4

1

8

4

1

7

6

5

7

6

5

7

H=4

H=2

8

3 4

6

5

H=4

5

2

3

1

8

4

7

6

5

1 7

2

3

8

4

6

5

H=1

H=3

6

2

3

1

1

8

4

8

7

6

5

7

H=2

IA-I 2005–2006

Cc Ia

2 6

3

1

2

3

4

7

8

4

6

5

5

H=0

H=2

B´ usqueda local y algoritmos gen´ eticos

7.7

Ventajas e inconvenientes x

x

x

Ventajas de la b´ usqueda en escalada: u

Eficiente en tiempo y en espacio

u

No mantiene un ´ arbol de b´ usqueda: mejora iterativa

Inconvenientes: incompletitud, dependiendo de la heur´ıstica u

Existencia de ´ optimos locales

u

Mesetas

En lo que sigue: u

Abandonaremos la representaci´ on como espacio de estados y adapteremos la b´ usqueda en escalada a problemas de optimizaci´ on en los que el camino no es importante

u

Introduciremos cierta componente aleatoria en la b´ usqueda

u

Introduciremos modificaciones para intentar superar el problema de los ´ optimos locales

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.8

Problema del viajante x

Problema: dada una lista de ciudades, pasar por todas ellas recorriendo la menor distancia posible (suponiendo que existe conexi´ on directa entre todas ellas)

CO

JA

SE HU GR AL MA

CA

x

No confundir con el problema del viaje

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.9

Problema del viajante x

x

Una posible representaci´ on: u

Estados: ciudades visitadas

u

Operadores: ir a una ciudad

u

Un operador es aplicable si la ciudad est´ a entre las que quedan por visitar

u

Aplicar una b´ usqueda que encuentre una soluci´ on ´ optima

u

Muy ineficiente en la pr´ actica

Alternativa: u

Estados: permutaci´ on de las ciudades

u

Operadores: obtener una nueva permutaci´ on, usando t´ ecnicas heur´ısticas e incluyendo cierta aleatoriedad

u

Mejorar los estados en iteraciones sucesivas

u

La bondad de los estados se cuantifica por una funci´ on objetivo (en este caso, la distancia total del circuito)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.10

Caracter´ısticas de algunos problemas de optimizaci´ on x

Estados y soluciones al problema u

No buscamos el camino (los estados contienen toda la informaci´ on)

u

Se busca optimizar (maximizar o minimizar) respecto de una determinada funci´ on objetivo

x

Estado inicial: no est´ a claramente definido

x

Operadores:

x

u

Se puede definir cierta noci´ on de nodo “sucesor” o “vecino”

u

En algunos casos, gran cantidad de vecinos

u

Introducimos cierta componente aleatoria y restringimos la noci´ on de “nodo vecino”

Estados finales: u

Todos los estados son posibles soluciones, pero se trata de encontrar una soluci´ on buena (respecto de la funci´ on objetivo)

u

Si es posible, la mejor

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.11

Representaci´ on problema de optimizaci´ on (b´ usqueda local) x

Elecci´ on de una representaci´ on para los estados (estructura de datos)

x

Funci´ on F-OBJETIVO(ESTADO)

x

u

Funci´ on cuyo valor se trata de optimizar

u

En nuestro caso, minimizar (an´ alogamente maximizar)

Funci´ on GENERA-ESTADO-INICIAL() u

x

Si en el problema el estado inicial no est´ a claramente definido, el estado inicial puede generarse de manera aleatoria, o usando alguna t´ ecnica heur´ıstica

Funci´ on GENERA-SUCESOR(ESTADO) u

Genera un estado sucesor a uno dado

u

Define la noci´ on de “vecindad” para el problema concreto

u

Usualmente, existe cierta componente aleatoria en la generaci´ on del sucesor

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.12

Representaci´ on del problema del viajante x

x

Representaci´ on de los estados: u

Cada estado ser´ a un posible circuito, representado por una lista con todas las ciudades, sin repetir, en un orden determinado

u

Ejemplo: (malaga cadiz cordoba almeria huelva granada jaen sevilla)

Generaci´ on aleatoria del estado inicial u

x

Asumiremos que la funci´ on GENERA-ESTADO-INICIAL() obtiene un circuito inicial aleatorio

Funci´ on objetivo u

La funci´ on F-OBJETIVO(ESTADO) devuelve la distancia total del circuito

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.13

Representaci´ on del problema del viajante x

Generaci´ on de un sucesor con la funci´ on GENERA-SUCESOR(ESTADO) u

Elecci´ on aleatoria de dos ciudades e inversi´ on del camino entre ellas c1 c2

c1 c2

c8

c3

c7

c4

c6

c3

c7

c4

c6 c5

c5 x

c8

Heur´ıstica + aleatoriedad

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.14

Problema del cuadrado de puntos x

Caso particular del problema del viajante: u

Las “ciudades” est´ an representadas por pares de coordenadas

u

4n puntos situados uniformemente a lo largo de los lados de un cuadrado de lado n

u

Parametrizado y con soluci´ on conocida (escalable, adecuado para pruebas)

u

Representaci´ on an´ aloga al problema del viajante (0,n)

(n,n)

(0,3) (0,2) (0,1) (0,0) (1,0) IA-I 2005–2006

Cc Ia

(2,0)

(3,0)

(n,0) B´ usqueda local y algoritmos gen´ eticos

7.15

B´ usqueda en escalada aleatoria FUNCION ESCALADA-ALEATORIA() 1. Hacer ACTUAL igual GENERA-ESTADO-INICIAL() y VALOR-ACTUAL igual a F-OBJETIVO(ACTUAL). Hacer VECINO igual a GENERA-SUCESOR(ACTUAL) y VALOR-VECINO igual a F-OBJETIVO(VECINO) 2. Mientras VALOR-VECINO sea menor que VALOR-ACTUAL, 2.1 Hacer ACTUAL y VALOR-ACTUAL igual a VECINO y VALOR-VECINO, resp. 2.2 Hacer VECINO igual a GENERA-SUCESOR(ACTUAL) y VALOR-VECINO igual a F-OBJETIVO(VECINO) 3. Devolver ACTUAL y VALOR-ACTUAL x

Observaciones: u

Adaptaci´ on de la escalada en espacios de estados a la nueva representaci´ on

u

Posible aleatoriedad: generaci´ on de estado inicial y sucesores

u

No necesitamos caminos, luego no usamos nodos

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.16

B´ usqueda en escalada aleatoria: ejemplos x

Ejemplos > (load "viajante") ... > (escalada-aleatoria) ((CADIZ HUELVA CORDOBA JAEN ALMERIA SEVILLA GRANADA MALAGA) 1366.7968) > (escalada-aleatoria) ((SEVILLA JAEN HUELVA CORDOBA MALAGA ALMERIA GRANADA CADIZ) 1488.9255) > (escalada-aleatoria) ((SEVILLA GRANADA ALMERIA CORDOBA JAEN CADIZ MALAGA HUELVA) 1431.388)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.17

B´ usqueda en escalada aleatoria x

Problemas: u

x

´ Optimos locales, mesetas

Idea: u

Buscar aleatoriamente el inicio de la pendiente

u

Hacer escalada (o descenso) a partir de ah´ı

u

Iterar el proceso

u

Devolver el mejor estado conseguido en alguna de las iteraciones

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.18

B´ usqueda en escalada con reinicio aleatorio FUNCION ESCALADA-CON-REINICIO-ALEATORIO(ITERACIONES) 1. Hacer MEJOR-ESTADO igual GENERA-ESTADO-INICIAL() y MEJOR-VALOR igual a F-OBJETIVO(MEJOR-ESTADO) 2. Hacer un n´ umero de veces igual a ITERACIONES lo siguiente: 2.1 Realizar una escalada aleatoria. 2.2 Si el estado obtenido tiene un valor mejor que MEJOR-VALOR, actualizar MEJOR-ESTADO y MEJOR-VALOR con el nuevo estado y valor obtenido. 3. Devolver MEJOR-ESTADO y MEJOR-VALOR

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.19

Escalada con reinicio aleatorio: ejemplo x

Problema del viajante: > (load "viajante") ... > (escalada-con-reinicio-aleatorio 50) ((JAEN CORDOBA SEVILLA CADIZ HUELVA MALAGA ALMERIA GRANADA) 1009.58923) > (escalada-con-reinicio-aleatorio 300) ((CORDOBA GRANADA ALMERIA JAEN MALAGA SEVILLA HUELVA CADIZ) 1080.9673) > (escalada-con-reinicio-aleatorio 1000) ((MALAGA CADIZ HUELVA SEVILLA CORDOBA JAEN ALMERIA GRANADA) 929.9256)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.20

Escalada con reinicio aleatorio: ejemplo x

Problema del cuadrado de puntos (soluciones no ´ optimas): > (load "puntos") ... > (cuadrado 3) > (escalada-con-reinicio-aleatorio 10000) (((3 . 3) (3 . 2) (2 . 3) (3 . 1) (2 . 0) (3 (1 . 0) (0 . 0) (0 . 1) (0 . 3) (0 . 2) (1 17.478706) > (escalada-con-reinicio-aleatorio 100000) (((1 . 0) (0 . 0) (0 . 1) (0 . 2) (0 . 3) (1 (3 . 2) (3 . 3) (2 . 3) (3 . 0) (3 . 1) (2 15.812559)

IA-I 2005–2006

Cc Ia

. 0) . 3))

. 3) . 0))

B´ usqueda local y algoritmos gen´ eticos

7.21

Enfriamiento simulado x

x

Idea principal: u

Aceptar probabil´ısticamente estados “peores”

u

La probabilidad de que un estado peor sea aceptado var´ıa en funci´ on del incremento producido en la funci´ on objetivo

u

Permitimos as´ı salir de ´ optimos locales, sin salir del ´ optimo global

Algoritmo inspirado en el proceso f´ısico-qu´ımico de enfriamiento de metales

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.22

Enfriamiento simulado x

x

Enfriamiento de metales u

Sistema estable: m´ınimo de energ´ıa

u

Dada una temperatura, el sistema necesita tiempo para estabilizarse (perder energ´ıa)

u

Es posible pasar moment´ aneamente por estados de mayor energ´ıa, con probabilidad dada por ∆E p(∆E, T ) = e− k·T

u

Despu´ es de estabilizarse, se vuelve a bajar la temperatura, y el sistema se estabiliza nuevamente en un estado de menor energ´ıa

Programa de enfriamiento u

Al princio (T grande) mayor probabilidad de aceptaci´ on de soluciones candidatas (diversificaci´ on)

u

Al final (T peque˜ na), se aceptan pocas soluciones candidatas (intensificaci´ on)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.23

Enfriamiento simulado: par´ ametros x

Generaci´ on del estado inicial y estados vecinos u

x

Aceptaci´ on probabil´ıstica u

x

x

Aleatoria, heur´ıstica

Probabilidad de aceptaci´ on de un estado que incrementa ∆F el valor de la funci´ on ∆F objetivo: e− T

Programa de enfriamiento, en nuestro caso: u

Temperatura inicial

u

Variaci´ on de la temperatura: T ← α · T

u

N´ umero fijo de iteraciones para cada T

Criterio de parada u

Valor suficientemente bueno de la funci´ on objetivo

u

N´ umero m´ aximo de iteraciones sin mejora

u

En nuestro caso, n´ umero fijo de iteraciones totales

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.24

Enfriamiento simulado FUNCION ENFRIAMIENTO-SIMULADO(T-INICIAL,FACTOR-DESCENSO, N-ENFRIAMIENTOS,N-ITERACIONES) 1. Crear las siguientes variables locales: 1.1 TEMPERATURA (para almacenar la temperatura actual), inicialmente con valor T-INICIAL. 1.2 ACTUAL (para almacenar el estado actual), cuyo valor inicial es GENERA-ESTADO-INICIAL(). 1.3 VALOR-ACTUAL igual a F-OBJETIVO(ACTUAL) 1.4 MEJOR (para almacenar el valor del mejor estado encontrado hasta el momento), inicialmente ACTUAL. 1.5 VALOR-MEJOR (para almacenar el valor de MEJOR), inicialmente igual a VALOR-ACTUAL 2. Iterar un n´ umero de veces igual a N-ENFRIAMIENTOS lo siguiente: 2.1 Iterar un n´ umero de veces igual a N-ITERACIONES lo siguiente: 2.1.1 Crear las siguientes variables locales: 2.1.1.1 CANDIDATA, una soluci´ on vecina de ACTUAL, generada por GENERA-SUCESOR. 2.1.1.2 VALOR-CANDIDATA, el valor de CANDIDATA. 2.1.1.3 INCREMENTO, la diferencia entre VALOR-CANDIDATA y VALOR-ACTUAL 2.1.2 Cuando INCREMENTO es negativo, o se acepta probabil´ ısticamente la soluci´ on candidata, hacer ACTUAL y VALOR-ACTUAL iguales a VECINA y VALOR-VECINA, respectivamente. 2.1.3 Si VALOR-ACTUAL es mejor que VALOR-MEJOR, actualizar MEJOR y VALOR-MEJOR con con ACTUAL y VALOR-ACTUAL, respectivamente. 2.2

Disminuir TEMPERATURA usando FACTOR-DESCENSO

3. Devolver MEJOR y VALOR-MEJOR

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.25

Enfriamiento simulado x

Ejemplo (problema del viajante) > (enfriamiento-simulado 100 0.95 100 100) ((MALAGA GRANADA ALMERIA JAEN CORDOBA SEVILLA HUELVA CADIZ) 929.92554)

x

Ejemplo (problema de los puntos) > (cuadrado 3) (0 1 2 3 4 5 6 7 8 9 10 11) > (enfriamiento-simulado 5 0.95 100 100) (((0 . 1) (0 . 0) (1 . 0) (2 . 0) (3 . 0) (3 . 1) (3 . 2) (3 . 3) (2 . 3) (1 . 3) (0 . 3) (0 . 2)) 12) > (cuadrado 4) ... > (second (enfriamiento-simulado 8 0.95 100 100)) 16 > (cuadrado 7) ... > (second (enfriamiento-simulado 15 0.95 100 100)) 28 > (cuadrado 10) ... > (second (enfriamiento-simulado 20 0.95 100 100)) 43.414215 > (second (enfriamiento-simulado 20 0.95 100 100)) 40 > (cuadrado 15) ... > (second (enfriamiento-simulado 35 0.95 100 100)) 99.498474 > (second (enfriamiento-simulado 35 0.95 500 500)) 60

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.26

Algoritmos gen´ eticos: evoluci´ on natural x

Procesos evolutivos

x

La evoluci´ on ocurre en los cromosomas de los individuos

x

Selecci´ on natural: las “buenas estructuras” sobreviven con m´ as probabilidad que las dem´ as

x

Reproducci´ on mediante cruces y mutaciones

x

Algoritmo gen´ etico: u

Aplicaci´ on de estas ideas en la b´ usqueda de soluciones ´ optimas

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.27

Algoritmos gen´ eticos x

x

Posibles soluciones representadas como individuos u

Codificaci´ on como cromosoma (lista de genes)

u

Poblaci´ on de individuos

u

Generaciones

u

Genotipo y fenotipo

Bondad de los individuos u

x

x

Seg´ un el valor de la funci´ on objetivo

Reproducci´ on de las generaciones u

Cruces: combinaci´ on de estructuras, aleatorio

u

Mutaciones: cambio de algunos genes, aleatorio

Mecanismo de evoluci´ on u

Selecci´ on probabil´ıstica de los individuos con mejor valoraci´ on

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.28

Operaciones gen´ eticas x

x

Cruces:

1 0 0 0 1 1

1 0

0 0 0 0

0 1 1 0 0 0

0 1 1

0 1 1

Mutaciones:

1 0 0 0 1 1

IA-I 2005–2006

Cc Ia

1 0 1

0 1 1

B´ usqueda local y algoritmos gen´ eticos

7.29

Algoritmo gen´ etico (pseudoc´ odigo) t := 0 Inicia-Poblaci´ on P(t) Eval´ ua-Poblaci´ on P(t) Mientras no Fin hacer P’ := Selecciona-Padres P(t) P’’ := Cruza P’ P’’’ := Muta P’’ Evalua-Poblaci´ on P’’’ P(t+1) := Selecciona-Mejores P’’’,P(t) t:= t+1 Fin-Mientras Devolver el mejor de P(t)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.30

Par´ ametros del algoritmo gen´ etico x

x

N´ umero total de individuos en la poblaci´ on (en cada generaci´ on) Individuos que intervienen en la reproducci´ on en cada generaci´ on (padres) u

x

x

Dado como proporci´ on de la poblaci´ on total (proporci´ on de cruces)

Padres que se escogen entre los mejores u

Dado como proporci´ on del total de padres (proporci´ on de mejores)

u

Selecci´ on por ranking dentro de la poblaci´ on

Probabilidad de que ocurra una mutaci´ on u

Generalmente un n´ umero muy bajo

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.31

Selecci´ on, mutaci´ on y reproducci´ on x

x

Selecci´ on de padres: u

Un n´ umero fijo de padres se obtienen con los mejores de la poblaci´ on

u

El resto se escoge aleatoriamente de entre los restantes (para mentener as´ı la diversidad)

Cruces: u

x

Mutaci´ on: u

x

Cada gen de cada individuo se mutar´ a seg´ un la probabilidad dada

Nueva generaci´ on: u

x

Las parejas se obtiene reordenando aleatoriamente los padres y cruzando de dos en dos

Unir las dos generaciones y quedarse con los mejores (en igual n´ umero que la poblaci´ on inicial)

Atenci´ on: existen otras implementaciones de algoritmos gen´ etico u

Pero todas se basan en las mismas ideas de reproducci´ on, mutaci´ on, selecci´ on de los mejores y mantenimiento de la diversidad

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.32

Representaci´ on de problemas en algoritmos gen´ eticos x

Problemas de optimizaci´ on u

x

Variables *GENES* y *LONGITUD-INDIVIDUOS* u

x

Ejemplo en la funci´ on cuadrado: un cromosoma puede verse como un n´ umero binario de 10 d´ıgitos (en orden inverso). El fenotipo de un cromosoma es dicho n´ umero (en notaci´ on decimal)

Funci´ on F-OBJETIVO(X), valor de de la funci´ on a optimizar (actuando sobre el fenotipo) u

x

Ejemplo en la funci´ on cuadrado: (0 1) y 10, respectivamente

Funci´ on DECODIFICA(X), obtiene el fenotipo u

x

Ejemplo: encontrar el m´ınimo de la funci´ on f (x) = x2 en [0, 210) ∩ N

Ejemplo en la funci´ on cuadrado: la funci´ on que recibiendo un n´ umero natural lo eleva al cuadrado

Funci´ on ES-OPTIMO(X), criterio de parada u

Ejemplo: F-OBJETIVO(X)=0

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.33

Ejemplo de ejecuci´ on (funci´ on cuadrado) > (load "funcion-cuadrado") ... > (algoritmo-genetico-con-salida 20 10 0.75 0.6 0.1) Generacion: 1. Media: 361954.9, Mejor: (0 1 1 0 0 1 0 0 0 0), Valor: 1444 Generacion: 2. Media: 79730.6, Mejor: (0 1 1 0 0 1 0 0 0 0), Valor: 1444 Generacion: 3. Media: 22278.6, Mejor: (0 1 1 0 0 1 0 0 0 0), Valor: 1444 Generacion: 4. Media: 3537.7, Mejor: (1 1 1 1 0 0 0 0 0 0), Valor: 225 Generacion: 5. Media: 1597.3, Mejor: (0 0 1 1 0 0 0 0 0 0), Valor: 144 Generacion: 6. Media: 912.8, Mejor: (0 1 0 0 0 0 0 0 0 0), Valor: 4 Generacion: 7. Media: 345.3, Mejor: (0 1 0 0 0 0 0 0 0 0), Valor: 4 Generacion: 8. Media: 60.7, Mejor: (0 1 0 0 0 0 0 0 0 0), Valor: 4 Generacion: 9. Media: 14.0, Mejor: (0 1 0 0 0 0 0 0 0 0), Valor: 4 Generacion: 10. Media: 4.5, Mejor: (0 1 0 0 0 0 0 0 0 0), Valor: 4 Generacion: 11. Media: 3.7, Mejor: (1 0 0 0 0 0 0 0 0 0), Valor: 1 Generacion: 12. Media: 3.4, Mejor: (1 0 0 0 0 0 0 0 0 0), Valor: 1 Generacion: 13. Media: 2.4, Mejor: (0 0 0 0 0 0 0 0 0 0), Valor: 0 0

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.34

Algoritmos gen´ eticos: representaci´ on problema del viajante x

x

Genes y longitud de los individuos en el problema del viajante u

*GENES* = (almeria cadiz cordoba granada huelva jaen malaga sevilla)

u

*LONGITUD-INDIVIDUOS* = 8

Decodificaci´ on en el problema del viajante: u

x

DECODIFICA(X)= X

Criterio de parada (parar s´ olo al llegar al m´ aximo de generaciones): u

ES-OPTIMO(X)=FALSO

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.35

Algoritmos gen´ eticos: representaci´ on problema del viajante x

La codificaci´ on permite ciudades repetidas u

x

La funci´ on objetivo penaliza las repeticiones

Funci´ on objetivo: u

Penalizaci´ on por camino incompleto PENALIZACION-POR-INCOMPLETO(CAMINO)= 100 * (|CAMINO - *GENES*| + |*GENES* - CAMINO|)

u

Combinaci´ on de distancia con penalizaci´ on F-OBJETIVO(X)= 2*DISTANCIA-VIAJE(X) + 50*PENALIZACION-POR-INCOMPLETO(X)

u

Los pesos de cada componente pueden ajustarse experimentalmente

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.36

Soluci´ on al problema del viajante x

Una evaluaci´ on

;;; ;;; ;;; ;;; x

(algoritmo-genetico 100 50 0.75 0.6 0.05) Mejor individuo: (HUELVA SEVILLA CORDOBA GRANADA ALMERIA JAEN MALAGA CADIZ) Valor: 2015.8258

Varios intentos

(defun intentos (n-intentos) (loop for i from 1 to n-intentos do (let ((res (algoritmo-genetico 100 50 0.75 0.6 0.05))) (format t "~& Experimento: ~a, Mejor individuo: ~a, Valor: ~a" i res (f-objetivo res))))) ;; ;; ;; ;;

Experimento: 84, Mejor individuo: (MALAGA GRANADA ALMERIA JAEN CORDOBA SEVILLA HUELVA CADIZ), Valor: 1859.8511 (Soluci´ on ´ optima)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.37

Algoritmos gen´ eticos: problema del cuadrado m´ agico x

x

x

Colocar en un cuadrado n × n los n´ umeros naturales de 1 a n2, de tal manera que las filas, las columnas y las diagonales principales sumen los mismo Una soluci´ on para n = 3: 4

3

8

9

5

1

2

7

6

Soluciones representadas como listas de n´ umeros entre 1 y n2 u

Admitimos repeticiones

u

La funci´ on objetivo penaliza las repeticiones

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.38

Algoritmos gen´ eticos: cuadrado m´ agico x

x

Problema parametrizado, variables globales: u

Dimensi´ on del cuadrado: N

u

Suma com´ un: SUMA=(N·(N2 + 1))/2

Funci´ on de decodificaci´ on, DECODIFICA(X): u

Un cromosoma representa al cuadrado cuya concatenaci´ on de filas es igual al cromosoma Ejemplo (para N igual a 3): > (decodifica ’(1 7 5 3 2 8 4 6 9)) ((1 7 5) (3 2 8) (4 6 9))

x

Genes y longitud de los individuos: u

*GENES* = (1 2 3 ...N2)

u

*LONGITUD-INDIVIDUOS* = N2

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.39

Algoritmos gen´ eticos: cuadrado m´ agico x

Criterio de parada: ES-OPTIMO(X) = "X es un cromosoma sin repeticiones que representa un cuadrado m´ agico"

x

La funci´ on objetivo penaliza las repeticiones: N-REPETICIONES(X)= "N´ umero de genes repetidos en X" SUMA-DIFERENCIAS(X)= "Suma de las diferencias (en valor absoluto) entre la suma de los n´ umeros de cada hilera (filas, columnas y diagonales) y SUMA" F-OBJETIVO(X)= (1 + N-REPETICIONES(X)) * SUMA-DIFERENCIAS(X)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.40

Soluci´ on al cuadrado m´ agico x

Caso n = 3

;;; Soluciones N=3 (se encuentra f´ acilmente) ;;; ((8 1 6) (3 5 7) (4 9 2)) x

Caso n = 4

;;; Soluciones N=4 ;;; Encontrado con ;;; (algoritmo-genetico 1000 500 0.75 0.6 0.1) ;;; en la generaci´ on 125: ;;; ((7 14 9 4) (16 2 5 11) (1 15 12 6) (10 3 8 13))

IA-I 2005–2006

Cc Ia

7

14

9

4

16

2

5

11

1

15

12

6

10

3

8

13 B´ usqueda local y algoritmos gen´ eticos

7.41

Variantes x

Variantes en el cruce: cruces multipunto y uniforme

x

Variantes en la selecci´ on de indiv´ıduos u

Cada individuo i es seleccionado para ser padre con probabilidad proporcional a su valor de la funci´ on objetivo (ruleta probabil´ıstica): Fobj (i) P (i) = Pn j=1 Fobj (j)

x

Variantes en el c´ alculo de la nueva generaci´ on: u

Si el tama˜ no de la poblaci´ on es n y r es la proporci´ on de cruces,

u

se seleccionan (1 − r) · n individuos que pasan directamente a la nueva generaci´ on, y

u

u

parejas para cruzar y pasan a la nueva generaci´ on los resultados se seleccionan r·p 2 de sus cruces respectivos. la selecci´ on se hace por ruleta probabil´ıstica

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.42

Conclusi´ on x

x

x

Algoritmos gen´ eticos como proceso de b´ usqueda local u

Mejora iterativa

u

Los cruces, las mutaciones y la diversidad tratan de evitar el problema de los ´ optimos locales

F´ acil de aplicar a muchos tipos de problemas: u

optimizaci´ on

u

aprendizaje autom´ atico

u

planificaci´ on

u

...

Resultados aceptables en algunos problemas u

Aunque no son mejores que algoritmos espec´ıficos para cada problema

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.43

Bibliograf´ıa x

Rich, E. y Knight, K. Inteligencia artificial (segunda edici´ on) (McGraw–Hill Interamericana, 1994). u

x

Russell, S. y Norvig, P. Artificial Intelligence (A Modern Approach) (Prentice–Hall, 1995). u

x

x

Cap. 3: “T´ ecnicas de b´ usqueda heur´ıstica”.

Cap. 4 “Informed search methods”.

Goldberg, D.E. Genetic Algorithms (in Search, Optimization & Machine Learning) (Addison–Wesley, 1989). Grillmeyer, O. Exploring Computer Science with Scheme (Springer, 1999). u

Cap. 16 “Soft Computing: Fuzzy Logic, Neural Networks and Genetic Algorithms”.

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.44

Inteligencia Artificial I

Curso 2005–2006

Tema 7 (anexo): Implementaciones en Lisp

Dpto. de Ciencias de la Computaci´ on e Inteligencia Artificial

Universidad de Sevilla

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.45

Implementaci´ on de la b´ usqueda en escalada (defun sucesores (nodo) (let ((resultado ())) (loop for operador in *operadores* do (let ((siguiente (sucesor nodo operador))) (when siguiente (push siguiente resultado)))) (nreverse resultado))) (defun sucesor (nodo operador) (let ((siguiente-estado (aplica operador (estado nodo)))) (when siguiente-estado (crea-nodo-h :estado siguiente-estado :camino (cons operador (camino nodo)) :heuristica-del-nodo (heuristica siguiente-estado)))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.46

Implementaci´ on de la b´ usqueda en escalada (defun mejor (nodos minima-distancia-al-final) (let ((mejor-nodo nil)) (loop for n in nodos do (when (< (heuristica-del-nodo n) minima-distancia-al-final) (setf mejor-nodo n minima-distancia-al-final (heuristica-del-nodo n)))) mejor-nodo))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.47

Implementaci´ on de la b´ usqueda en escalada (defun busqueda-en-escalada () (let ((actual (crea-nodo-h :estado *estado-inicial* :camino nil :heuristica-del-nodo (heuristica *estado-inicial*)))) (loop until (null actual) do (cond ((es-estado-final (estado actual)) (return actual)) (t (setf actual (mejor (sucesores actual) (heuristica-del-nodo actual))))))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.48

Problema del viajante para b´ usqueda local x

Lista de todas las ciudades: (defparameter *ciudades* ’(almeria cadiz cordoba granada huelva jaen malaga sevilla))

x

Generaci´ on aleatoria del estado inicial: (defun escoge-aleatoriamente (n l) (if (= n 0) ’() (let ((pos-escogida (random (length l)))) (cons (nth pos-escogida l) (escoge-aleatoriamente (- n 1) (append (subseq l 0 pos-escogida) (subseq l (1+ pos-escogida)))))))) (defun genera-estado-inicial () (escoge-aleatoriamente (length *ciudades*) *ciudades*))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.49

Problema del viajante para b´ usqueda local x

Generaci´ on de un sucesor (aleatorio): (defparameter *lista-indices* (loop for i from 0 to (- (length *ciudades*) 1) collect i)) (defun genera-sucesor (estado) (let* ((indices (escoge-aleatoriamente 2 *lista-indices*)) (indices-ord (if (< (first indices) (second indices)) (list (first indices) (second indices)) (list (second indices) (first indices)))) (primero (first indices-ord)) (segundo (second indices-ord))) (append (subseq estado 0 primero) (reverse (subseq estado primero segundo)) (subseq estado segundo))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.50

Problema del viajante x

Funci´ on objetivo: (defparameter *coordenadas-ciudades* ’((almeria (409.5 93)) (cadiz ( 63 57)) (cordoba (198 207)) (granada (309 127.5)) (huelva ( 3 139.5)) (jaen (295.5 192)) (malaga (232.5 75)) (sevilla ( 90 153)))) (defun distancia (c1 c2) (sqrt (+ (expt (- (abscisa c1) (abscisa c2)) 2) (expt (- (ordenada c1) (ordenada c2)) 2)))) (defun abscisa (ciudad) (first (second (assoc ciudad *coordenadas-ciudades*)))) (defun ordenada (ciudad) (second (second (assoc ciudad *coordenadas-ciudades*)))) (defun suma-distancias (camino) (if (endp (rest camino)) 0 (+ (distancia (first camino) (second camino)) (suma-distancias (rest camino))))) (defun longitud-viaje (camino) (+ (distancia (first (last camino)) (first camino)) (suma-distancias camino))) (defun f-objetivo (estado) (longitud-viaje estado))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.51

Problema del cuadrado de puntos x

Par´ ametros del problema (defvar *lado*) (defvar *puntos*) (defun cuadrado (n) (setf *lado* n) (crea-puntos) (crea-lista-indices)) (defun crea-puntos () (setf *puntos* (append (loop for i from 0 to *lado* collect (cons 0 i)) (loop for i from 1 to *lado* collect (cons i 0)) (loop for i from 1 to *lado* collect (cons *lado* i)) (loop for i from 1 to (1- *lado*) collect (cons i *lado*))))) (defun crea-lista-indices () (setf *lista-indices* (loop for i from 0 to (- (length *puntos*) 1) collect i)))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.52

Problema del cuadrado de puntos x

Generaci´ on del estado inicial (defun genera-estado-inicial () (escoge-aleatoriamente (length *puntos*) *puntos*))

x

Generaci´ on de un sucesor (defun genera-sucesor (estado) (let* ((indices (escoge-aleatoriamente 2 *lista-indices*)) (indices-ord (if (< (first indices) (second indices)) (list (first indices) (second indices)) (list (second indices) (first indices)))) (primero (first indices-ord)) (segundo (second indices-ord))) (append (subseq estado 0 primero) (reverse (subseq estado primero segundo)) (subseq estado segundo))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.53

Problema del cuadrado de puntos x

Funci´ on objetivo (defun distancia (p1 p2) (sqrt (+ (expt (- (car p1) (car p2)) 2) (expt (- (cdr p1) (cdr p2)) 2)))) (defun suma-distancias (camino) (if (endp (rest camino)) 0 (+ (distancia (first camino) (second camino)) (suma-distancias (rest camino)))))

(defun distancia-viaje (camino) (+ (distancia (first camino) (first (last camino))) (suma-distancias camino))) (defun f-objetivo (estado) (distancia-viaje estado))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.54

B´ usqueda en escalada aleatoria (defun escalada-aleatoria () (let* ((actual (genera-estado-inicial)) (vecino (genera-sucesor actual)) (valor-actual (f-objetivo actual)) (valor-vecino (f-objetivo vecino))) (loop while (< valor-vecino valor-actual) do (setf actual vecino valor-actual valor-vecino vecino (genera-sucesor actual) valor-vecino (f-objetivo vecino))) (list actual valor-actual)))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.55

B´ usqueda en escalada con reinicio aleatorio (defun escalada-con-reinicio-aleatorio (iteraciones) (let* ((mejor-estado (genera-estado-inicial)) (mejor-valor (f-objetivo mejor-estado))) (loop for i from 1 to iteraciones do (let* ((resultado (escalada-aleatoria)) (estado (first resultado)) (valor (second resultado))) (when (< valor mejor-valor) (setf mejor-estado estado mejor-valor valor)))) (list mejor-estado mejor-valor)))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.56

Enfriamiento simulado (defun enfriamiento-simulado (t-inicial factor-descenso n-enfriamientos n-iteraciones) (let* ((temperatura t-inicial) ;;; 1.1 (actual (genera-estado-inicial)) ;;; 1.2 (valor-actual (f-objetivo actual)) ;;; 1.3 (mejor actual) ;;; 1.4 (valor-mejor (f-objetivo actual))) ;;; 1.5 (loop for i from 1 to n-enfriamientos do ;;; 2 (loop for j from 1 to n-iteraciones do ;;; 2.1 (let* ((candidata (genera-sucesor actual)) (valor-candidata (f-objetivo candidata)) (incremento (- valor-candidata valor-actual))) (when (or (< incremento 0) (< (/ (random 1001) 1000.0) (exp (max (/ (- incremento) temperatura) -80)))) (setf actual candidata valor-actual valor-candidata) (when (< valor-actual valor-mejor) (setf mejor actual valor-mejor valor-actual))))) (setf temperatura ;;; 2.2 (* factor-descenso temperatura))) (list mejor valor-mejor))) ;;; 3

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.57

Algoritmo gen´ etico (par´ ametros) x

Variables globales (defvar (defvar (defvar (defvar

x

*numero-total-individuos*) *numero-total-padres*) *numero-mejores*) *probabilidad-mutacion*)

Iniciar variables globales (defun inicia-variables-globales (numero-total-individuos proporcion-cruces proporcion-mejores probabilidad-mutacion) (setf *numero-total-individuos* numero-total-individuos *numero-total-padres* (fuerza-numero-par (round (* proporcion-cruces numero-total-individuos))) *numero-mejores* (round (* *numero-total-padres* proporcion-mejores)) *probabilidad-mutacion* probabilidad-mutacion))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.58

Generaci´ on de la poblaci´ on inicial x

Poblaci´ on inicial sin evaluar:

(defun poblacion-inicial (num-individuos num-genes) (if (= num-individuos 0) ’() (cons (individuo-aleatorio num-genes) (poblacion-inicial (1- num-individuos) num-genes)))) (defun individuo-aleatorio (num-genes) (if (= num-genes 0) ’() (cons (crea-gen) (individuo-aleatorio (1- num-genes))))) (defun crea-gen () (nth (random (length *genes*)) *genes*))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.59

Generaci´ on de la poblaci´ on inicial x

Ordenaci´ on de la poblaci´ on (defun evalua-cromosoma (cromosoma) (f-objetivo (decodifica cromosoma))) (defun ordena-poblacion-por-valor (poblacion) (sort poblacion #’< :key #’evalua-cromosoma)) (defun poblacion-inicial-ordenada (num-individuos num-genes) (ordena-poblacion-por-valor (poblacion-inicial num-individuos num-genes)))

x

Ejemplo (funci´ on cuadrado):

> (poblacion-inicial-ordenada ((0 0 1 0 1 1 0 0 0 0) (0 0 1 (0 0 1 1 0 0 1 1 1 0) (1 1 0 (0 0 0 0 1 0 1 1 0 1) (1 0 0 (0 0 1 1 0 1 1 0 1 1)) IA-I 2005–2006

10 10) 0 1 0 1 1 0 0) (1 1 1 0 1 1 1 1 0 0) 1 1 0 0 1 0 1) (1 1 0 1 1 1 0 1 0 1) 0 1 0 0 0 1 1) (0 1 1 1 1 0 1 0 1 1) Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.60

Cruces x

Cruce en un punto seleccionado aleatoriamente (defun cruza-pareja (individuo1 individuo2) (let ((posicion-cruce (1+ (random (- *longitud-individuos* 1))))) (list (append (subseq individuo1 0 posicion-cruce) (subseq individuo2 posicion-cruce)) (append (subseq individuo2 0 posicion-cruce) (subseq individuo1 posicion-cruce)))))

x

Ejemplo (funci´ on cuadrado): > (cruza-pareja ((1 1 1 1 1 1 0 > (cruza-pareja ((1 0 1 0 1 0 0

IA-I 2005–2006

’(1 0 0 ’(1 0 0

1 1 1 0) (0 0 1 0 0) (1

1 0 1 1

1 0 0 1

1 0 1 1

Cc Ia

1 0 0 1

1 0 1 0

1) ’(0 0 0 0 0 0 0 0 0 0)) 1 1 1 1) 0) ’(1 1 1 1 1 0 0 0 0 0)) 1 0 1 0))

B´ usqueda local y algoritmos gen´ eticos

7.61

Mutaciones x

Mutaci´ on probabil´ıstica de un gen: (defun muta-individuo (ind) (if (endp ind) nil (cons (if (< (random 100) (* *probabilidad-mutacion* 100)) (crea-gen) (first ind)) (muta-individuo (rest ind)))))

x

Ejemplo (funci´ on cuadrado, con probabilidad de mutaci´ on 0,1): > (muta-individuo ’(1 1 1 1 1 1 1 1 1 1)) (1 1 1 1 1 1 1 1 1 1) > (muta-individuo ’(1 1 1 1 1 1 1 1 1 1)) (1 1 0 1 1 1 1 1 1 1)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.62

M´ etodos de reproducci´ on x

Obtenci´ on de una nueva generaci´ on

(defun nueva-generacion (g) (supervivientes (une-dos-generaciones (muta (cruza (selecciona-padres g))) g))) x

Selecci´ on de padres (defun selecciona-padres (g) (let ((mejores (subseq g 0 *numero-mejores*)) (numero-restantes-padres (- *numero-total-padres* *numero-mejores*)) (restantes (subseq g *numero-mejores*))) (append mejores (escoge-aleatoriamente numero-restantes-padres restantes))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.63

M´ etodos de reproducci´ on x

Cruce de padres (defun cruza (g) (cruza-de-dos-en-dos (reordena-aleatoriamente g))) (defun reordena-aleatoriamente (l) (escoge-aleatoriamente (length l) l)) (defun cruza-de-dos-en-dos (g) (if (endp g) nil (append (cruza-pareja (first g) (second g)) (cruza-de-dos-en-dos (cddr g)))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.64

M´ etodos de reproducci´ on x

Mutaci´ on de la poblaci´ on (defun muta (g) (if (endp g) ’() (cons (muta-individuo (first g)) (muta (cdr g)))))

x

Supervivencia de los mejores (defun une-dos-generaciones (g1 g2) (append g1 g2)) (defun supervivientes (poblacion) (subseq (ordena-poblacion-por-valor poblacion) 0 *numero-total-individuos*))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.65

M´ etodos de reproducci´ on x

Ejemplo de obtenci´ on de una nueva generaci´ on (en el problema de la funci´ on cuadrado): > (setf poblacion-inicial (poblacion-inicial-ordenada *numero-total-individuos* *longitud-individuos*)) ((1 1 0 1 1 0 0 0 0 1) (1 1 1 1 1 0 0 0 0 1) (0 1 1 1 0 1 1 0 0 1) (1 1 1 1 0 1 1 1 0 1) (1 1 0 1 0 1 0 1 1 1) (0 1 1 1 0 1 0 1 1 1) (1 1 0 1 1 1 0 1 1 1) (1 1 0 1 1 1 0 1 1 1) (0 0 0 1 0 0 1 1 1 1) (1 1 0 0 0 1 1 1 1 1)) > (setf poblacion-siguiente (nueva-generacion poblacion-inicial)) ((1 0 0 1 1 0 0 1 1 0) (0 0 0 1 0 0 1 1 1 0) (1 0 0 1 0 0 1 1 1 0) (1 1 0 1 1 0 1 1 1 0) (1 1 1 0 0 1 1 1 1 0) (0 0 0 0 1 1 1 1 1 0) (1 0 0 0 1 1 1 1 1 0) (1 1 1 0 1 1 1 1 1 0) (1 1 1 0 1 1 1 1 1 0) (1 1 0 1 1 1 1 1 1 0))

x

Mejora de la poblaci´ on: Media Valor Media Valor

valores individuos poblacion-inicial mejor individuo poblacion-inicial valores individuos poblacion-siguiente mejor individuo poblacion-siguiente

IA-I 2005–2006

Cc Ia

= = = =

545886.3 290521 230295.2 167281

B´ usqueda local y algoritmos gen´ eticos

7.66

Algoritmo gen´ etico (defun algoritmo-genetico (num-generaciones numero-total-individuos proporcion-cruces proporcion-mejores probabilidad-mutacion) (inicia-variables-globales numero-total-individuos proporcion-cruces proporcion-mejores probabilidad-mutacion) (let* ((generacion-actual (poblacion-inicial-ordenada *numero-total-individuos* *longitud-individuos*)) (mejor-individuo (first generacion-actual)) (n-gen 1) (final (or (es-optimo mejor-individuo) (> n-gen num-generaciones)))) (loop until final do (setf generacion-actual (nueva-generacion generacion-actual) mejor-individuo (first generacion-actual) n-gen (1+ n-gen) final (or (es-optimo mejor-individuo) (> n-gen num-generaciones)))) (decodifica mejor-individuo)))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.67

Representaci´ on problema del viajante (alg. gen´ eticos) x

Genes y longitud de los individuos (defparameter *genes* ’(almeria cadiz cordoba granada huelva jaen malaga sevilla)) (defparameter *longitud-individuos* 8)

x

Decodificaci´ on (defun decodifica (x) x)

x

Criterio de parada: (defun es-optimo (x) (declare (ignore x)) nil)

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.68

Representaci´ on problema del viajante x

La codificaci´ on permite ciudades repetidas u

x

La funci´ on objetivo penaliza las repeticiones

Funci´ on objetivo: u

Penalizaci´ on por camino incompleto (defun penalizacion-por-incompleto (camino) (* 100 (+ (length (set-difference camino *genes*)) (length (set-difference *genes* camino)))))

u

Combinaci´ on de distancia con penalizaci´ on (defun f-objetivo (x) (+ (* 2 (distancia-viaje x)) (* 50 (penalizacion-por-incompleto x))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.69

Problema cuadrado m´ agico x

Problema parametrizado: (defvar *n*) (defun asigna-suma () (defparameter *suma* (/ (* *n* (+ (expt *n* 2) 1)) 2))) (defun asigna-genes () (defparameter *genes* (loop for i from 1 to (expt *n* 2) collect i))) (defun asigna-longitud-individuos () (defparameter *longitud-individuos* (expt *n* 2))) (defun cuadrado-magico-genetico (n) (setf *n* n) (asigna-suma) (asigna-genes) (asigna-longitud-individuos) (list ’cuadrado-magico-genetico n))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.70

Problema cuadrado m´ agico x

Decodificaci´ on (defun decodifica (l) (if (endp l) ’() (cons (subseq l 0 *n*) (decodifica (subseq l *n*))))) ;;; Ejemplo (para *n* igual a 3): ;;; > (decodifica ’(1 7 5 3 2 8 4 6 9)) ;;; ((1 7 5) (3 2 8) (4 6 9))

x

Columnas y diagonales (defun columnas (l) (loop for i from 0 to (- *n* 1) collect (mapcar #’(lambda (x) (nth i x)) l))) (defun diagonales (l) (let ((lista-posiciones (loop for i from 0 to (- *n* 1) collect i))) (list (mapcar #’(lambda (i x) (nth i x)) lista-posiciones l) (mapcar #’(lambda (i x) (nth i x)) (reverse lista-posiciones) l)))) ;;; ;;; ;;; ;;; ;;;

Ejemplo (para *n* igual a 3): > (columnas ’((1 7 5) (3 2 8) (4 6 9))) ((1 3 4) (7 2 6) (5 8 9)) > (diagonales ’((1 7 5) (3 2 8) (4 6 9))) ((1 2 9) (5 2 4))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.71

Problema cuadrado m´ agico x

Criterio de parada: (defun no-repetidos (l) (if (endp l) t (and (not (member (first l) (rest l))) (no-repetidos (rest l))))) (defun todos-suman (n l) (if (endp l) t (and (= n (apply #’+ (first l))) (todos-suman n (rest l))))) (defun es-optimo (m) (let ((l (decodifica m))) (and (todos-suman *suma* (append l (columnas l) (diagonales l))) (no-repetidos m))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.72

Problema cuadrado m´ agico x

Funci´ on objetivo: (defun suma-diferencias (l) (apply #’+ (mapcar #’(lambda (s) (abs (- s *suma*))) l))) (defun ocurrencias (x l) (cond ((endp l) 0) ((equal x (first l)) (1+ (ocurrencias x (rest l)))) (t (ocurrencias x (rest l))))) (defun numero-repeticiones (l) (if (endp l) 0 (+ (ocurrencias (first l) (rest l)) (numero-repeticiones (rest l))))) (defun f-objetivo (x) (* (suma-diferencias (suma-hileras (append x (columnas x) (diagonales x)))) (1+ (numero-repeticiones (apply #’append x)))))

IA-I 2005–2006

Cc Ia

B´ usqueda local y algoritmos gen´ eticos

7.73