Download Sesión 8 “Algoritmos Genéticos” - Grupo de Inteligencia Artificial

Document related concepts

Programación genética wikipedia , lookup

Programación de expresiones de genes wikipedia , lookup

Mutación wikipedia , lookup

Aptitud (biología) wikipedia , lookup

Haplotipo wikipedia , lookup

Transcript
Inteligencia Artificial
Sesión 8
“Algoritmos Genéticos”
Ingeniería Superior en Informática, 4º
Curso académico: 2008/2009
Profesores: Sascha Ossowski, Ramón Hermoso, y Matteo Vasirani
Resumen:
2. Agentes basados en búsqueda
2.1. Búsqueda en espacios de estados
2.2 Búsqueda no-informada
2.3. Búsqueda heurística
2.4. Búsqueda multiagente
2.5. Búsqueda con espacios estructurados
– Planificación
– Satisfacción de Restricciones
– Algoritmos Genéticos
Motivación
• La evolución y la selección natural es un principio exitoso para la
búsqueda de individuos capaces de sobrevivir en un entorno.
• Idea: imitar la selección natural para buscar soluciones a problemas
complejos
1) Una posible solución a un problema se formaliza como un
individuo que lucha para la sobrevivencia dentro de una población
de individuos
2) Solo los mejores sobreviven y se reproducen
Selección natural
• Teoría introducida por Charles Darwin (1809-1882)
– “El origen de las especies” (1859)
• Observaciones:
– Las especies se desarrollan continuamente
– Las variaciones entre especies son enormes
– Solo un pequeño porcentaje sobrevive hasta llegar a la edad adulta
Terminología
Cromosoma
Individuo
Gen
Selección
Cruce
Inserción
Mutación
Operadores Genéticos
Generación N
Generación N+1
Cromosoma
1
0
0
0
1
1
1
0
0
0
0
0
1
1
1
1
1
0
0
1
1
0
0
Alelo
• Cada cromosoma representa una solución, codificada como
un conjunto de valores discretos (binarios, enteros …)
• El valor de cada gen se llama alelo
• Un cromosoma aislado no tiene significado, necesita una
decodificación
Algoritmos Genéticos: Estructura
Inicializa población
inicialización
Selecciona padres
selección
Crea hijos
cruce
Muta hijos
mutación
Inserta hijos en la población
inserción
Generación N+1
Criterio de stop?
no
sí
Devolver el mejor individuo
encontrado a lo largo de la ejecución
Crear un AG
•
•
•
Definir una representación (estructura y decodificación) del
cromosoma
Definir una función de fitness
Definir los operadores genéticos
–
Inicialización, selección, cruce, mutación, inserción
1. Ejecutar el algoritmo
–
Monitorizar la fitness media
–
Evaluar el mejor individuo
2. Tunear el algoritmo
–
Ajustar la selección, estrategia de inserción, porcentajes de
mutación
Representación de un cromosoma
Genotipo
Fenotipo
codificación
decodificación
Biología: UCGAACCGU
bloques de ADN
L
Diseño:
100101010010
H
cromosoma
radio
Representación de un cromosoma
4-Reinas:
Genotipo
Fenotipo
codificación
decodificación
2203
cromosoma
Dependiendo del problema, se pueden usar diferentes representaciones
– binaria {0, 1}
– ternaria {0, 1, 2}, {A, B, C}
– enteros {1, 2, 4,..., 16, 17, ...}
– reales {1.2, 4.5, 5.77777, -0.566 }
Fitness y probabilidad de selección
• Típicamente la selección de los individuos candidatos a la reproducción
(padres), es el paso más importante y más costoso computacionalmente
solución
candidata
100101010010
cromosoma
La fitness determina la
probabilidad de ser
seleccionado
x
decodificación
P(seleccionado)
F
Evaluar x respeto al
objetivo del problema
F = f(x)
fitness
Función de fitness
• Cada cromosoma tiene un valor de fitness asociado
–
Mapear el objetivo del problema en una función de fitness
• 4-Reinas: número de reinas amenazadas
• Problema del viajero: longitud del camino
• Asignación obras a empresas: coste total de la asignación
• ...
• Elegir una apropiada función de fitness es muy importante
• Si el problema tiene vínculos de factibilidad, se pueden incluir:
–
En la función de fitness (penalidad por violación)
–
En la representación
–
En los operadores de cruce y mutación (crean individuos que no
violan vínculos)
Función de fitness
• En general, a valores de fitness altos (no necesariamente positivos),
corresponden individuos que son buenos candidatos para la
reproducción
• Problemas de maximización:
–
F = g(x)
g(x) = objetivo
–
F = a · g(x) + b | a > 0, b tal que F > 0
–
F = g(x)k
• Problemas de minimización
–
F = 1/g(x)
–
F = K – g(x), K >> g(x)
Selección
• El objetivo de un operador de selección es seleccionar los padres para la
creación de los individuos de la generación sucesiva
• Un operador de selección debería favorecer la selección de los
individuos con valor de fitness alto pero también preservar la
diversidad en la población
• Operadores de selección
–
Ruleta
–
Ranking
–
Torneo
–
…
Selección de la ruleta
• La probabilidad de una individuo x ∈ población de ser seleccionado
está dada por:
P(x) =
Probabilidad proporcional
al valor de fitness
F(x)
F( xi )
i
Todos los individuos
tienen probabilidad de ser
seleccionados
• Favorece los individuos con fitness mucho más alta de los demás
• Converge más rápidamente (no siempre es bueno)
Selección con ranking
• Los individuos son ordenados según su valor de fitness del mejor al
peor. El lugar ocupado en esta lista se denomina su ranking.
• El ranking determina la probabilidad de ser seleccionado, de manera
que individuos con alto ranking tengan más probabilidad
P(x) =
1
·[
rank(x)
i
1/rank( xi ) ]-1
• Ejemplo:
• F( x1 ) = 1000, F( x2 ) = 10, F( x3 ) = 1
• Ruleta: P( x1 ) = 0.99, P( x2 ) = 0.009, P( x3 ) = 0.0009
• Ranking: i 1/rank( xi ) = 1+1/2+1/3= 1.83, P( x1 ) = 0.55,
P( x2 ) = 0.27, P( x3 ) = 0.18
Selección con ranking
• Usando la selección por ranking, el individuo de ranking r en cualquier
generación tendrá la misma probabilidad de ser seleccionado
• En las primeras generaciones, esto es bueno porque evita la
convergencia prematura, asignando a individuos de bajo ranking
suficiente probabilidad de ser seleccionados
• Cuando la desviación de la fitness media es pequeña (i.e., la población
está formada por individuos medianamente aptos), es mejor asignar más
probabilidad a los mejores individuos
– Aumentar la presión selectiva a lo largo de las generaciones
Selección con ranking
• Calcular una fitness F' con la fórmula:
F'(x) = min + (Max - min) ·
N - rank( xi )
N-1
• Aplicar la selección de la ruleta
• Variar los valores min y Max para generar más o menos presión selectiva
• Ejemplo: 1) min=100, Max=110 2) min=10, Max=110
• 1) F’(r1) = 110, F’(r2) = 100+10·1/2=105, F’(r3) = 100
o P(x1)=110/315=0.34, P(x2)=105/315=0.33,
P(x3)=100/315=0.32
• 2) F’(r1) = 110, F’(r2) = 10+100·1/2=60, F’(r3) = 10
o P(x1)=110/180=0.61, P(x2)=60/180=0.33,
P(x3)=10/180=0.06
Selección con distribución de Boltzmann (soft-max )
• La probabilidad de una individuo x ∈ población de ser seleccionado está
dada por:
eF(x)/T
P(x) =
eF(x)/T
i
• Variando el parámetro T (temperatura), se puede controlar la presión
selectiva
• Primeras generaciones T alta
todos los individuos tienen
buena probabilidad de ser seleccionados
• Ultimas generaciones T baja
los mejores tienen mucha más
probabilidad de ser seleccionados
Selección con torneo
• Seleccionar k individuos aleatoriamente (k es el tamaño del torneo) y
elegir el mejor
Población
Ganador
Concursantes (k=3)
f=2
f=3
f=9
f=2
f=1
f=9
f=8
f=2
f=9
f=2
f=5
f=7
f=8
f=8
2
1
f=2
3
Cruce
cruce
???
???
¿Como se puede operar sobre x1 e x2 para crear dos hijos con la misma
representación (longitud, decodificación, estructura de gen) ?
Cruce en un solo punto
Padres
Hijos
El punto de cruce se selecciona de manera aleatoria
Cruce en dos (o más) puntos
Padres
Hijos
Cruce: ejemplo
• 4 reinas
[ x1 x2 x3 x4 ]
3 3 1 3 f=4–3=1
[ x1 x2 x3 x4 ]
2 4 2 4 f=4–2=2
[ x1 x2 x3 x4 ]
2
4
1
3
f=4–0=4
Cruce
• Un operador de cruce debe producir hijos consistentes con la
representación
• E.g.: el problema del viajero
[ ciudad1
Bilbao
[ ciudad1
Lugo
[ ciudad1
Bilbao
ciudad2
ciudad3 ...
Sevilla
Madrid
Soria
ciudad2
ciudad3 ...
Madrid
Sevilla
ciudad2
ciudad3 ...
Sevilla
Sevilla
ciudadN ]
ciudadN ]
Vigo
ciudadN ]
Vigo
Hijo no consistente con la representación
Cruce
• Cruce para el problema del viajero
[ ciudad1
Selecciono aleatoriamente un subcamino
ciudad2
ciudad3
ciudad4
ciudad5
ciudad6
ciudad7 ]
Lugo
Madrid
Sevilla
Vigo
Soria
Bilbao
Mostoles
Madrid
Lugo
Sevilla
Mostoles
Bilbao
Vigo
Soria
Completo el subcamino añadiendo la ciudades del segundo
padre, que ya no están en el subcamino, según el orden en que
aparecen
[ ciudad1
Sevilla
ciudad2
ciudad3
ciudad4
ciudad5
ciudad6
Vigo
Bilbao
Soria
Madrid
Lugo
ciudad7 ]
Mostoles
Mutación
• Dilemma
– Poca mutación conduce a poblaciones con un pobre patrimonio
genético a lo largo de las generaciones
– Demasiada mutación ralentiza la convergencia
• Características:
– Actúan sobre un único cromosoma.
• Modificar los cromosomas para recuperar diversidad genética
(exploración)
– Como los operadores de cruce, debe producir cromosomas validos
Mutación
• Ejemplo: juego genético.
– La fitness de un invididuo es dada por el numero de “1” en el
cromosoma
Generación k
Generación m
11000
01001
...
10011
11011
11011
...
11011
Fitness media: 3.4
Fitness media: 4
Sin mutación nunca aparecerá “1”, por lo tanto
nunca se alcanzará la máxima fitness posible
Mutación
• Ejemplo: 4 reinas
Sin mutación nunca se llegará a una solución
Individuo 1
Individuo 2
Individuo 3
Individuo N
Mutación
• Posibles operadores:
– Cada cromosoma tiene una probabilidad de mutar. Si un cromosoma
ha sido seleccionado para la mutación, modificar cada gen con
probabilidad Pm << 1
– Mutar un gen aleatoriamente en todos los cromosomas
– Intercambiar dos genes de un cromosoma
Inserción
• El operador de inserción se encarga de crear la población de la
generación K+1
• Posibles estrategias:
–
Remplazar la población entera
• Seleccionar N/2 parejas de padres N=tamaño de la población
• Crear N hijos y remplazar todos los padres
• Un padre puede ser seleccionado más veces
–
Remplazar la población dos a dos
• Seleccionar una pareja de padres
• Crear un hijo y remplazar un padre (¿el peor?)
–
Elitismo
• Los mejores individuos (e.g., 1%) son preservados en la
generación K+1, los otros se crean con una de las dos estrategias
anteriores
Inicialización
• Para poder ejecutar un algoritmo genético, hay que inicializar la
población de la generación 0
• En general se inicializa de manera aleatoria, usando una distribución
uniforme
• Se pueden insertar en la generación 0 algunos buenos individuos, por
ejemplo ejecutando una búsqueda voraz que rapidamente pueda
encontrar algunas buenas soluciones
Criterio de parada
• No existe un criterio obvio
• Algunas opciones:
–
Max número de generaciones (e.g. 100)
–
Desviación de la fitness media por debajo de un umbral (poca
diversidad genética en la población)
–
Estancamiento (ninguna mejora evidente entre una generación y
la succesiva)
–
Se ha encontrado un estado particular del espacio de búsqueda
(e.g., en caso se sepa cual es el máximo valor de fitness posible,
una vez encontrado un individuo con tal valor, el algoritmo puede
parar)
Convergencia
Óptimo (desconocido)
Convergencia demasiado rápida
(poca mutación, demasiado elitismo?)
La fitness promedia debería crecer,
porqué los individuos buenos se
preservan y se reproducen, mientras
que los malos desaparecen
Algoritmos genéticos
• Buenas noticias
– No se necesita mucho conocimiento sobre el problema
• Representación del cromosoma y funcion de fitness
– Aplicables a muchos problemas
• Problemas de búsqueda donde el estado meta no es explicito, y
no es importante el camino hasta el estado meta, si no el estado
meta en sí (e.g. 4-reinas)
• Malas noticias
– No existe una “best practice” (ensayo-y-error)
• Probar diferentes operadores de selección, cambiar los
porcentajes de mutación...
– Diseño de la función de fitness puede ser problemático
– No maneja muy bien los problemas con vínculos de factibilidad
– Criterio de parada