Download Algoritmos Evolutivos - Departamento de Inteligencia Artificial

Document related concepts

Algoritmo de estimación de distribución wikipedia , lookup

Algoritmo evolutivo wikipedia , lookup

Computación evolutiva wikipedia , lookup

Programación genética wikipedia , lookup

Evolución diferencial wikipedia , lookup

Transcript
Departamento de Inteligencia Artificial
Grupo de Análisis de Decisiones y
Estadística
COMPUTACIÓN EVOLUTIVA
1
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
2
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Durante muchos años, la tesis más aceptada sobre el origen de las
especies fue el creacionismo: Dios creó a todas las especies del
planeta de forma separada.
Además, según el creacionismo, las especies estaban jerarquizadas
por Dios de tal manera que el hombre ocupaba el rango superior, al
lado del creador.
3
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Georges Louis Leclerc (Conde de Buffon), 1749-1788, fue
tal vez el pri-mero en especular (100 años antes que
Darwin) que las especies se originaron entre sí, en una
abierta oposición al “creacionismo”.
Leclerc no sólo notó las similitudes entre el hombre y los simios,
sino que incluso especuló sobre la existencia de un posible ancestro
común entre estas 2 especies.
Leclerc creía en los cambios orgánicos, pero no describió un mecanismo
coherente que fuera responsable para efectuarlos, sino que especuló que
era el ambiente el que influía directamente sobre los organismos.
4
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
El biólogo francés Jean-Baptiste Lamarck enunció
una teoría sobre la evolución a principios del
siglo XIX.
Según Lamarck, las características (físicas) adquiridas
por un organismo durante su vida podían ser
transmitidas a sus descendientes.
5
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
El naturalista inglés Charles Darwin enunció su teoría
sobre el origen de las especies en 1858, derrumbando el
Lamarckismo al indicar que la evolución se origina a
través de cambios aleatorios de características hereditarias, combinados con un proceso de selección natural.
El científico alemán August Weismann formuló en el
siglo XIX una teoría denominada del germoplasma,
según la cual la información hereditaria se transmite a
través de ciertas células (llamadas germinales), mientras que otras células (llamadas somáticas) no pueden
transmitir nada.
6
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
August Weismann realizó un experimento en el que cortó las colas de un
grupo de ratas durante 22 generaciones (1,592 ratas), sin que las nuevas generaciones de ratas perdieran dicha extremidad, demostrando
entonces la falsedad de la hipótesis fundamental del Lamarckismo.
El monje austriaco Johann Gregor Mendel realizó una serie de experimentos con guisantes durante una buena parte de su vida, enunciando a
partir de ellos las leyes básicas que gobiernan la herencia.
7
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
James Mark Baldwin propuso en 1896 que si el aprendizaje ayuda a la supervivencia, entonces los organismos con mayor capacidad de aprendizaje tendrán
más descendientes, incrementando de esa manera la
frecuencia de los genes responsables del aprendizaje.
Baldwin planteó un impacto indirecto del aprendizaje sobre el proceso
evolutivo (un individuo con mayor capacidad de aprendizaje será más
apto), y no uno directo como Lamarck. A su propuesta se le conoce hoy
en día como el “efecto Baldwin”.
8
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Darwin
Weismann
Mendel
=
Neo-Darwinismo
9
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
El pensamiento evolutivo actual gira en torno al Neo-Darwinismo, el
cual establece que toda la vida en el planeta puede ser explicada a
través de sólo 4 procesos:
• Reproducción
• Mutación
• Competencia
• Selección
10
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
11
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Historia de la Computación Evolutiva
La evolución natural ha sido vista como un proceso de
aprendizaje desde los 1930s, con el trabajo de Walter B.
Cannon (The Wisdom of the Body).
El célebre matemático Alan Mathison Turing reconoció
también una conexión “obvia” entre la evolución y el
aprendizaje de máquina en un artículo de 1950.
A fines de los 1950s y principios de los 1960s, el biólogo
Alexander S. Fraser publicó una serie de trabajos sobre
la evolución de sistemas biológicos en una computadora
digital, dando la inspiración para lo que después se
convertiría en el algoritmo genético.
12
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Aproximadamente en la misma época de Fraser, el
estadístico inglés George E. P. Box propuso un enfoque
evolutivo para la optimización de la producción industrial.
Su técnica, denominada EVOP (Evolutionary Operation) sigue en uso hoy en día en la industria química.
R. M. Friedberg fue uno de los primeros científicos en intentar evolucionar programas de computadora (a fines de los 1950s).
Sus experimentos no fueron muy exitosos, y originaron una avalancha
de críticas de parte de los investigadores de la IA clásica.
Nils Aall Barricelli desarrolló las que probablemente
fueron las primeras simulaciones de un sistema evolutivo en una computadora digital, entre 1953 y 1956.
Sus experimentos siguieron los lineamientos de una
disciplina bautizada a principios de los 1980s como
“vida artificial”.
13
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Hans J. Bremermann fue tal vez el primero en ver la
evolución como un proceso de optimización, además de
realizar una de las primeras simulaciones con cadenas
binarias que se procesaban por medio de reproducción
(sexual o asexual), selección y mutación, en lo que sería
otro claro predecesor del algoritmo genético.
Lawrence J. Fogel concibió el uso de la evolución simulada
en la solución de problemas (sobre todo de predicción)
hacia mediados de los 1960s. Su técnica se denominó
“Programación Evolutiva”.
Peter Bienert, Ingo Rechenberg y Hans-Paul
Schwefel desarrollaron hacia mediados de los
1960s un método de ajustes discretos aleatorios
inspirado en el mecanismo de mutación que
ocurre en la naturaleza.
Su técnica se denominó “estrategias evolutivas”.
14
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
John H. Holland desarrolló a principios de los 1960s los
“planes reproductivos” y “adaptativos” en un intento por
hacer que las computadoras aprendan imitando el proceso
de la evolución.
Esta técnica sería después conocida mundialmente como
el “algoritmo genético”.
Michael Conrad y H. H. Pattee se cuentan entre los primeros en simular un ecosistema artificial jerárquico en
el que un conjunto de organismos unicelulares estaban
sujetos a una estricta ley de conservación de la materia
que les inducía a competir por sobrevivir.
Conrad propuso también en los 1970s un “modelo de circuitos de aprendizaje evolutivo” en el cual especuló sobre
la posibilidad de que el cerebro use el mismo tipo de mecanismos que usa la evolución para aprender. Su técnica
fue uno de los primeros intentos por utilizar algoritmos
evolutivos para entrenar redes neuronales.
15
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Aunque los primeros intentos por evolucionar programas se remontan
a los 1950s y 1960s, fue hasta los 1980s en que se obtuvieron resultados satisfactorios.
Hicklin (1986) y Fujiki (1986) usaron expresiones-S en LISP para representar programas cuyo objetivo era resolver problemas de teoría
de juegos.
Nichal Lynn Cramer (1985) y posteriormente, John R. Koza (1989) propusieron (de forma independiente) el uso de una representación de
árbol en la que se implementó un operador de cruce para intercambiar
sub-árboles entre los diferentes programas de una población generada
al azar (con ciertas restricciones impuestas por la sintaxis del lenguaje
de programación utilizado).
La diferencia fundamental entre el trabajo de Cramer y el de Koza es
que el primero usó una función de aptitud interactiva (es decir, el usuario debía asignar a mano el valor de aptitud de cada árbol de la población), mientras el segundo logró automatizarla.
16
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
La propuesta de Koza fue la que se impuso a la
larga, y más tarde se denominó “Programación
Genética”.
Hoy en día es muy popular y cuenta con una
amplia gama de aplicaciones.
Thomas S. Ray desarrolló a principios de los 1990s un simulador muy
original en el que evolucionaban programas en lenguaje ensamblador,
los cuales competían por ciclos de CPU de una computadora, a la vez
que intentaban reproducirse (o sea, copiarse a sí mismos) en la memoria de dicha computadora.
En el simulador de Ray, denominado “Tierra”, se partía de un programa
único con la capacidad de auto-replicarse, al que se denominaba “ancestro”. Con base en este programa se generaban “criaturas” nuevas
(segmentos de código), las cuales a su vez se podían sub-dividir para
dar origen a nuevas criaturas.
17
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Tierra es uno de los pocos intentos por simular un ecosistema con el propósito expreso de observar los comportamientos que emergen de la dinámica evolutiva del mismo.
18
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
19
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Los algoritmos evolutivos imitan los principios evolutivos naturales
para constituir procedimientos de búsqueda y optimización.
Algoritmos Genéticos
Los algoritmos genéticos (denominados originalmente
“planes reproductivos”) fueron desarrollados por John
H. Holland a principios de los 1960s. Su motivación
principal fue el aprendizaje de máquina.
Una definición bastante completa de un algoritmo genético es la propuesta
por John Koza:
"Es un algoritmo matemático altamente paralelo que transforma un conjunto
de objetos matemáticos individuales con respecto al tiempo usando
operaciones modeladas de acuerdo al principio Darwiniano de reproducción
y supervivencia del más apto, y tras haberse presentado de forma natural
una serie de operaciones genéticas de entre las que destaca la
recombinación sexual. Cada uno de estos objetos matemáticos suele ser
una cadena de caracteres (letras o números) de longitud fija que se ajusta
al modelo de las cadenas de cromosomas, y se les asocia con una cierta
20
función matemática que refleja su aptitud. "
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
El algoritmo básico es el siguiente:
-Generar (aleatoriamente) una población inicial
-Calcular aptitud de cada individuo
-Seleccionar (probabilísticamente) con base en aptitud
- Aplicar operadores genéticos (cruce y mutación) para generar la
siguiente población
- Ciclar hasta que cierta condición se satisfaga
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Organigrama de la forma de trabajo de un AG.
Conjunto aleatorio de soluciones es generado
Generación inicial
La evaluación de una solución significa calcular el
valor de la función objetivo y la violación de
restricciones
Asignar Aptitud
Condición de terminación es comprobada
La población de soluciones es modificada
por tres posibles operadores
El algoritmo genético enfatiza la importancia del cruce sexual
(operador principal) sobre el de la mutación (operador
secundario), y usa selección probabilística.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Para poder aplicar el Algoritmo Genético se requiere de los 5
componentes básicos siguientes:
Una representación de las soluciones potenciales del problema
Una forma de crear una población inicial de posibles soluciones
(normalmente un proceso aleatorio)
Una función de evaluación que juegue el papel del ambiente,
clasificando las soluciones en términos de su “aptitud”
Operadores genéticos que alteren la composición de los hijos
que se producirán para las siguientes generaciones
Valores para los diferentes parámetros que utiliza el Algoritmo Genético
(tamaño de la población, probabilidad de cruce, probabilidad de mutación,
número máximo de generaciones, etc.)
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Población
Tamaño de la población
Las poblaciones pequeñas corren el riesgo de no cubrir adecuadamente
el espacio de búsqueda, mientras que el trabajar con poblaciones de
gran tamaño puede acarrear problemas relacionados con el excesivo
costo computacional.
Goldberg efectuó un estudio teórico, obteniendo como conclusión que el
tamaño óptimo de la población para cadenas de longitud l, con codificación binaria, crece exponencialmente con el tamaño de la cadena.
Alander, basándose en evidencia empírica sugiere que un tamaño de
población comprendida entre l y 2I es suficiente para atacar con éxito
los problemas por él considerados.
Población inicial
Habitualmente la población inicial se escoge generando cadenas al azar,
pudiendo contener cada gen uno de los posibles valores del alfabeto con
probabilidad uniforme.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Función objetivo
La regla, general para construir una buena función objetivo es que ésta
debe reflejar el valor del individuo de una manera "real", pero en muchos
problemas de optimización combinatoria, donde existe gran cantidad de
restricciones, buena parte de los puntos del espacio de búsqueda representan individuos no válidos.
Para este planteamiento en el que los individuos están sometidos a restricciones, se han propuesto varias soluciones.
La primera sería la que podríamos denominar absolutista, en la que 'aquellos individuos que no verifican las restricciones, no son considerados como
tales, y se siguen efectuando cruces y mutaciones hasta obtener individuos
válidos, o bien, a dichos individuos se les asigna una función objetivo igual a
cero.
Otro enfoque está basado en la penalización de la función objetivo. La idea
general consiste en dividir la función objetivo del individuo por una cantidad
(la penalización) que guarda relación con las restricciones que dicho
individuo viola.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Un problema habitual en las ejecuciones de los Algoritmos Genéticos surge
debido a la velocidad con la que el algoritmo converge. En algunos casos la
convergencia es muy rápida, lo que suele denominarse convergencia prematura, en la cual el algoritmo converge hacia óptimos locales, mientras que en
otros casos el problema es justo el contrario, es decir se produce una convergencia lenta del algoritmo.
El problema de la convergencia prematura, surge a menudo cuando la selección de individuos se realiza de manera proporcional a su función objetivo.
En tal caso, pueden existir individuos con una adaptación al problema muy
superior al resto, que a medida que avanza el algoritmo "dominan" a la
población. Por medio de una transformación de la función objetivo, en este
caso una comprensión del rango de variación de la función objetivo, se
pretende que dichos "superindividuos" no lleguen a dominar a la población.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algoritmos Genéticos Binarios
Ejemplo: Minimizar el coste del material de fabricación de un cilindro
cuyo volumen sea de al menos 300ml.
donde d es el diámetro y h la altura (0#d, h # 31).
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Representando una solución:
01000
d
01010
h
A la cadena se le llama “cromosoma”. A cada posición de la cadena se
le denomina “gen” y al valor dentro de esta posición se le llama “alelo”.
01000
d
23 = 8
01010
h
2 + 23 =10
29
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Asignando aptitud a una solución (función del valor de la solución en la
función objetivo o el valor de la solución en la función objetivo):
Generación de 6 soluciones aleatorias:
Dos soluciones no verifican la
restricción de un volumen mínimo de
300ml y es por ello que son
penalizadas
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Operador de Selección o Reproducción
El objetivo principal es duplicar buenas soluciones y eliminar malas
soluciones en una población
Métodos: Selección por torneo, selección proporcional y selección por
clasificación.
Selección por torneo.
El torneo es realizado entre dos soluciones y la mejor solución es elegida.
Luego otras dos son consideradas y elegida la mejor de ellas. Si se realiza sistemáticamente, cada solución puede ser elegida para participar
solamente en dos torneos.
31
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Un importante aspecto es que
sólo cambiando el operador de
comparación, podemos considerar un problema de minimización o de maximización.
32
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Método de selección proporcional
El número de copias de las solucioes es proporcional a su valor de aptitud.
Mecanismo de la ruleta
Usando el valor de aptitud Fi de todas las cadenas, la probabilidad de
seleccionar la i-ésima cadena es pi = Fi / ∑Fj
33
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Mecanismos de la ruleta de restos estocásticos
Las probabilidades pi son multiplicadas por lel tamaño de la población y el
número de copias esperado para cada solución es calculado para todas las
soluciones. Después, a cada solución es asignada un número de copias
igual a la parte entera de los números eperados. Después, el método de la
ruleta es aplicado con la parte fraccional del número esperado de todas las
soluciones para asignar más copias.
Una copia.
Ninguna copia
Mecanismo de la ruleta
34
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Muestreo Universal Estocástico
Sólo un número aleatorio es elegido para el proceso de selección completo, r.
35
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Método de selección ordenada
Primero, las soluciones son ordenadas de acuerdo a sus aptitudes, de la
peor (orden 1) a la mejor (orden N). Cada elemento de la lista ordenada
se le asigna una aptitud igual a su orden en la lista. Después, el operador
de selección proporcional es aplicado con los valores de aptitud de su
orden.
Operador cruce
En casi todos los operadores de cruce, dos cadenas son elegidas
aleatoriamente y una porción de la cadena son intercambiadas entre las
cadenas para crear dos nuevas cadenas.
36
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
En orden a preservar algunas buenas cadenas durante el operador de
reproducción, no todas las cadenas en la población son usadas para
cruzar. Si una probabilidad de cruce pc es usada, entonces 100pc%
cadenas de la población son usadas en la operación de cruce y 100(1-pc)%
de la población son simplemente copiados a la nueva población.
Con dos posiciones de cruce:
Con cruces uniformes (probabilidad 0.5 de cruzar cada gen)
37
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Operador de Mutación
El operador de mutación cambia el 1 por el 0, y viceversa, con una
probabilidad de mutación pm.
Reloj de mutación
Después que un gen es mutado, la localización del próximo gen mutado es
determinado por una distribución exponencial. La media de la distribución
se asume que es 1/pm. Primero, se genera un número aleatorio r ∈[0,1].
Luego, estimamos el próximo gen a ser estimado saltando –pmln(1-r)
posiciones del corriente gen.
38
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algoritmos Genéticos con parámetro real
Cruce lineal (Wright, 1991)
Tres soluciones son creadas
0.5( xi(1,t ) + xi( 2,t ) ),1.5 xi(1,t ) − 0.5 xi( 2,t ) ,−0.5 xi(1,t ) + 1.5 xi( 2,t )
(1,t )
x
i
de dos soluciones padres:
xi( 2,t )
Eligiendo las dos mejores soluciones como descendiente
39
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Cruce simplista (Naive)
Este operador de cruce es similar al operador de cruce usado en los
AG con codificación binaria.
Caso bidimensional:
40
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Cruce Mezcla (Blend)
(1,t )
Para dos soluciones padres xi
xi( 2,t )
se elige aleatoriamente una solución en el rango
[x
(1,t )
i
(
)
(
− α xi( 2,t ) − xi(1,t ) , xi( 2,t ) + α xi( 2,t ) − xi(1,t )
)]
Así, si ui es un número aleatorio entre 0 y 1, el siguiente es un descendiente
xi(1,t +1) = (1 − γ i ) xi(1,t ) + γ i xi( 2,t )
donde
γ i = (1 + 2α )ui − α
41
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Si α es cero, este cruce crea una solución aleatoria en el rango
[x
(1,t )
i
, xi( 2,t )
]
En un número de problemas test, los investigadores han indicado que
BLX-0.5 funciona mejor que cualquier operador BLX con cualquier otro
valor α.
Cruce Binario Simulado
Trabaja con dos soluciones padres y crea dos descendienes.
Como el nombre sugiere, el operador simula el principio de trabajar del
operador de cruce de un solo punto sobre las cadenas binarias.
Primero, un número aleatorio ui entre 0 y 1 es creado. Después, de una
función de distribución de probabilidad, la ordenada βqi es encontrada
tal que el área bajo la curva de probabilidad de 0 a βqi sea igual al nú42
mero aleatorio elegido ui.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Distribución de probabilidad:
Padres
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Mutación aleatoria
El esquema más simple de mutación sería crear una solución aleatoria
del espacio de búsqueda entero:
donde ri es un número aleatorio en [0,1]
Este operador es independiente de la solución padre y es equivalente a una inicialización aleatoria.
En lugar de crear una solución del espacio
de búsqueda entero, una solución cercana
a la del padre con una distribución uniforme puede ser elegida:
44
donde ∆i es la perturbación máxima permitida en la variable de decisión i-esima.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Mutación No Uniforme
La probabilidad de crear una solución cercana al padre es mayor que la de
crear uno alejado
donde τ toma un valor booleano, -1 ó 1, cada uno
con probabilidad de 0.5. El parámetro tmax es el número máximo de generaciones permitidas, mientras b es un parámetro definido por el usuario.
Mutación Distribuida Normalmente
Un método simple y popular es usar una distribución de probabilidad Gaussiana de media cero:
donde σi es un parámetro definido por el usuario.
45
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Mutación Polinomial
La distribución de probabilidad puede también ser una función polinomial,
en lugar de una distribución normal.
Este parámetro es calculado de la distribución de probabilidad polinomial
46
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ejemplo: En la Tabla, hemos representado los 4 individuos que constituyen la inicial, junto con su función de adaptación al problema, así
como la probabilidad de que cada uno de dichos individuos sea seleccionado. según el modelo de ruleta sesgada para emparejarse
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
El siguiente paso consiste en la selección de 2 parejas de individuos.
Para ello es suficiente, con obtener 4 números reales provenientes de
una distribución de probabilidad uniforme en el intervalo (0, 1), y compararlos con la última columna de la Tabla anterior. Así por ejemplo,
supongamos que dichos 4 números hayan sido: 0.58; 0.84; 0.11 y 0.43.
Esto significa que los individuos seleccionados para el cruce han sido:
el individuo 2 junto con el individuo 4, así como el individuo 1 junto con
el individuo 2.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
La Figura muestra como varía la adaptación media y la mejor adaptación
en un Algoritmo Genético Simple típico.
A medida que el número de generaciones aumenta, es más probable que la
adaptación media se aproxime a la del mejor individuo.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algoritmos Genéticos Paralelos
Modelos de islas.
La idea básica consiste en dividir la población total en varias subpoblaciones
en cada una de las cuales se lleva, a cabo un Algoritmo Genético.
Cada cierto número de generaciones, se efectúa un intercambio de
información entre las subpoblaciones, proceso que se denomina migración.
La introducción de la migración hace que los modelos de islas sean capaces
de explotar las diferencias entre las diversas subpoblaciones, obteniéndose
de esta manera una fuente de diversidad genética.
Cada subpoblación es una "isla", definiéndose un procedimiento por medio
del cual se mueve el material genético de una "isla" a otra.
La determinación de la tasa de migración, es un asunto de capital
importancia, ya que de ella puede depender la convergencia prematura de la
búsqueda.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Se pueden distinguir diferentes modelos de islas en función de la comunicación entre las subpoblaciones. Algunas comunicaciones típicas son las
siguientes:
Comunicación en estrella, en la cual existe una subpoblación que es seleccionada como maestra (aquella que tiene mejor media en el valor de la
función objetivo), siendo las demás consideradas como esclavas. Todas
las subpoblaciones esclavas mandan sus h1 mejores individuos (h1 > 1) a
la subpoblación maestra la cual a su vez manda sus h2 mejores individuos
(h2 > 1) a cada una de las subpoblaciones esclavas.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Comunicación en red, en la cual no existe una jerarquía entre las subpoblaciones, mandando todas y cada una de ellas sus h3 (h3 > 1) mejores
individuos al resto de las subpoblaciones.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Comunicación en anillo, en la cual cada subpoblación envía sus h4 mejores individuos (h4 > 1), a una población vecina, efectuándose la migración
en un único sentido de flujo.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algunas aplicaciones de los AGs son las siguientes:
Optimización (estructural, de topologías, numérica, combinatoria, etc.)
Aprendizaje de máquina (sistemas clasificadores)
Bases de datos (optimización de consultas)
Reconocimiento de patrones (por ejemplo, imágenes)
Generación de gramáticas (regulares, libres de contexto, etc.)
Planeación de movimientos de robots
Predicción
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
55
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Estrategias Evolutivas
Las estrategias evolutivas fueron desarrolladas en 1964 por un grupo
de estudiantes alemanes de ingeniería encabezado por Ingo Rechenberg. Su objetivo era resolver problemas hidrodinámicos de alto grado
de complejidad.
La versión original (1+1)-EE usaba un solo padre y con él se generaba un solo hijo. Este hijo se mantenía si era mejor que el padre, o de
lo contrario se eliminaba (a este tipo de selección se le llama extintiva, porque los peores individuos tienen una probabilidad de cero de
ser seleccionados).
En la (1+1)-EE, un individuo nuevo es generado usando:
donde t se refiere a la generación (o iteración) en la que nos encontramos, y N(0, ~) es un vector de números Gaussianos independientes con una media de cero y desviación estándar.
56
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ejemplo de una (1+1) - EE
Supongamos que queremos maximizar:
Ahora, supongamos que nuestra población consiste del siguiente
individuo (generado de forma aleatoria):
Supongamos también que las mutaciones producidas son las
siguientes:
57
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ejemplo de una (1+1) - EE
Ahora, comparamos al padre con el hijo:
Padre:
Hijo:
Dado que:
el hijo reemplazará al padre en la siguiente generación.
Ingo Rechenberg (1973) introdujo el concepto de población, al proponer una estrategia evolutiva llamada (μ + 1) − EE, en la cual hay μ
padres y se genera un solo hijo, el cual puede reemplazar al peor padre de la población (selección extintiva).
58
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Schwefel (1975) introdujo el uso de múltiples hijos en las denominadas
(μ + λ) − EEs y (μ, λ) − EEs. La notación se refiere al mecanismo de
selección utilizado:
a) En el primer caso, los μ mejores individuos obtenidos de la
unión de padres e hijos sobreviven.
b) En el segundo caso, sólo los μ mejores hijos de la siguiente
generación sobreviven.
Convergencia de las Estrategias Evolutivas
Rechenberg formuló una regla para ajustar la desviación estándar
de forma determinística durante el proceso evolutivo de tal manera
que el procedimiento convergiera hacia el óptimo.
Esta regla se conoce como la “regla del éxito 1/5”, y en palabras dice:
“ La razón entre mutaciones exitosas y el total de mutaciones debe ser
1/5. Si es más, entonces debe incrementarse la desviación estándar.
Si es menos, entonces debe decrementarse”.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Convergencia de las Estrategias Evolutivas
Formalmente:
donde n es el número de dimensiones, t es la generación, ps es la
frecuencia relativa de mutaciones exitosas medida sobre intervalos
de (por ejemplo) 10 · n individuos, y c=0.817 (este valor fue derivado teóricamente por Schwefel). (t) se ajusta cada n mutaciones.
Thomas Bäck (1996) derivó una regla de 1/7 para las
(μ+ λ)-EEs.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Auto-Adaptación
En las estrategias evolutivas se evoluciona no sólo a las variables
del problema, sino también a los parámetros mismos de la técnica
(es decir, las desviaciones estándar). A esto se le llama “autoadaptación”.
Los padres se mutan usando las siguientes fórmulas:
donde τ y τ son constantes de proporcionalidad que están en función
de n.
Los operadores de recombinación de las estrategias evolutivas pueden
ser:
- Sexuales: el operador actúa sobre 2 individuos elegidos aleatoriamente de la población de padres.
- Panmíticos: se elige un solo padre al azar, y se mantiene fijo mientras
se elige al azar un segundo padre (de entre toda la población) para
61
cada componente de sus vectores.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Las estrategias evolutivas simulan el proceso evolutivo al nivel
de los individuos, por lo que la recombinación es posible.
Asimismo, usan normalmente selección determinística.
Algunas aplicaciones de las estrategias evolutivas son:
-Problemas de ruteo y redes
-Bioquímica
-Óptica
-Diseño en ingeniería
- Magnetismo
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
63
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Programación Evolutiva:
Lawrence J. Fogel propuso en 1960 una técnica denominada
“programación evolutiva”, en la cual la inteligencia se ve como
un comportamiento adaptativo.
La programación evolutiva es un algoritmo evolutivo basado en mutación
aplicado a espacios de búsqueda discreto.
David Fogel (Fogel, 1988) extendió el trabajo inicial de su padre Laary
Fogel para problemas de optimización continuos.
64
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
El algoritmo básico de la programación evolutiva es el siguiente:
-Generar aleatoriamente una población inicial.
-Se aplica mutación.
- Se calcula la aptitud de cada hijo y se usa un proceso de selección
mediante torneo (normalmente estocástico) para determinar cuáles
serán las soluciones que se retendrán.
La programación evolutiva es una abstracción de la evolución al nivel
de las especies, por lo que no se requiere el uso de un operador de
recombinación (diferentes especies no se pueden cruzar entre sí).
Asimismo, usa selección probabilística.
65
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algunas aplicaciones de la programación evolutiva son:
• Predicción
• Generalización
• Juegos
• Control automático
• Problema del viajero
• Planeación de rutas
• Diseño y entrenamiento de redes neuronales
• Reconocimiento de patrones
66
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Estrategias Evolutivas vs Programación Evolutiva
La Programación Evolutiva usa normalmente selección estocástica,
mientras que las estrategias evolutivas usan selección determinística.
Ambas técnicas operan a nivel fenotípico.
La programación evolutiva es una abstracción de la evolución al nivel de
las especies, por lo que no se requiere el uso de un operador de recombinación (diferentes especies no se pueden cruzar entre sí).
En contraste, las estrategias evolutivas son una abstracción de la evolución al nivel de un individuo, por lo que la recombinación es posible.
67
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algoritmos Genéticos vs otras técnicas evolutivas
El AG usa selección probabilística al igual que la Programación Evolutiva, y en contraposición a la selección determinística de las Estrategias
Evolutivas.
El AG usa representación binaria para codificar las soluciones en un problema, por lo cual se evoluciona el genotipo y no el fenotipo como en la
Programación Evolutiva o las Estrategias Evolutivas.
El operador principal en el AG es el cruce, y la mutación es un operador
secundario. En la Programación Evolutiva, no hay cruce y en las Estrategias Evolutivas es un operador secundario.
Ha sido demostrado (Rudolph, 1994) que el AG requiere de elitismo para
poder converger al óptimo.
Los AGs no son, normalmente, auto-adaptativos.
68
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Para simular el proceso evolutivo en una computadora se requiere:
Codificar las estructuras que se replicarán.
Operaciones que afecten a los “individuos”.
Una función de aptitud.
Un mecanismo de selección.
Diferencias de las técnicas evolutivas con respecto a las tradicionales
Las técnicas evolutivas usan una población de soluciones potenciales
en vez de un solo individuo, lo cual las hace menos sensibles a
quedar atrapadas en mínimos/máximos locales.
Las técnicas evolutivas no necesitan conocimientos específicos sobre
el problema que intentan resolver.
Las técnicas evolutivas usan operadores probabilísticos, mientras las
técnicas tradicionales utilizan operadores determinísticos.
Aunque las técnicas evolutivas son estocásticas, el hecho de que usen
69
operadores probabilísticos no significa que operen de manera análoga
a una simple búsqueda aleatoria.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ventajas de las Técnicas Evolutivas
Simplicidad Conceptual.
Amplia aplicabilidad.
Superiores a las técnicas tradicionales en muchos problemas del
mundo real.
Tienen el potencial para incorporar conocimiento sobre el dominio y
para hibridizarse con otras técnicas de búsqueda/optimización.
Pueden explotar fácilmente las arquitecturas en paralelo.
Son robustas a los cambios dinámicos.
Generalmente pueden auto-adaptar sus parámetros.
Capaces de resolver problemas para los cuales no se conoce
solución alguna.
70
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Comparaciones entre técnicas (parte 1)
71
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Comparaciones entre técnicas (parte 2)
72
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Críticas a las Técnicas Evolutivas
Criticada en sus orígenes (1960s) por los investigadores de la IA
simbólica. Se creía que una simple búsqueda aleatoria podía
superarlas.
La programación automática fue considerada una “moda pasajera”
en IA y el enfoque evolutivo fue visto como “un intento más” por
lograr lo imposible.
Actualmente, todavía muchas personas creen que un AG funciona
igual que una técnica “escalando la colina” que comienza de varios
puntos. Se ha demostrado que esto no es cierto.
Las técnicas sub-simbólicas (redes neuronales y computación
evolutiva) gozan de gran popularidad entre la comunidad científica
en general, excepto por algunos especialistas de IA clásica que
las consideran “mal fundamentadas” e “inestables”.
73
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
74
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Optimización Multiobjetivo Evolutiva:
Pasado, Presente y Futuro
Motivación
Muchos problemas en la naturaleza tienen varios objetivos (posiblemente conflictivos) para ser satisfechos. Muchos de estos problemas son frecuentemente
tratados como problemas de optimización de un único objetivo.
¿Qué es un problema de optimización multiobjetivo?
El Problema de Optimización Multiobjetivo (también denominado optimización
multicriterio, o problema de optimización vectorial) puede definirse como el
problema de encontrar (Osyczka, 1985):
un vector de variables de decisión las cuales satisfacen las restricciones y optimizan una función vectorial cuyos elementos representan las funciones objetivos. Estas funciones forman una descripción matemática del logro de los criterios los cuales están usualmente en conflicto. Así, el término “optimizar” significa encontrar tal solución la cual debería dar los valores de todos las funciones
75
objetivos aceptables para el decisor.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Definición formal
Encontrar
tal que
Max/Min
s.a
76
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
¿Cuál es la noción de óptimo en Optimización Multiobjetivo?
Teniendo varias funciones objetivos, la noción de óptimo es diferente.
Realmente se intenta encontrar buenas soluciones de compromiso (o
“trade-offs”) en lugar de una única solución como en optimización global.
La noción de óptimo que es más comúnmente adoptada es la que
originalmente fue propuesta por Francis Ysidro Edgeworth in 1881.
77
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
¿Cuál es la noción de óptimo en Optimización Multiobjetivo?
Esta noción fue posteriormente generalizada por Vilfredo Pareto (in 1896).
Aunque algunos autores llaman óptimo de Edgeworth-Pareto, nosotros
usaremos el término más comunmente aceptado: óptimo de Pareto.
Definición de óptimo de Pareto
Decimos que un vector de variables de decisión
es óptimo de Pareto si no existe otro
tal que
y
para todo
para al menos un
78
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Definición de óptimo de Pareto
Esta definición dice que
es óptimo de Pareto si no existe otro vector
que decrezca algún criterio
factible de variables de decisión
sin causar un crecimiento simultáneo en al menos otro criterio.
Desafortunadamente, este concepto casi siempre no proporciona una
única solución, si no un conjunto de soluciones denominado conjunto
óptimo dePareto. Los elementos del conjunto óptimo de Pareto se
denominan soluciones no dominadas. El gráfico de las funciones
objetivos cuyos vectores no dominados están en el conjunto óptimo de
Pareto se denomina frontera de Pareto.
79
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Técnicas de Programación Matemática
Actualmente, hay sobre 30 técnicas de programación matemática para
optimización multiobjetivo. Sin embargo, estas técnicas tienden a generar
elementos del conjunto óptimo de Pareto de uno en uno. Además, muchos
de ellos son muy sensibles a la forma de la frontera de Pareto (por ej.
ellos no funcionan cuando la frontera de Pareto es cóncava o cuando la
Frontera es discontinua).
¿Por qué Algoritmos Evolutivos?
Los Algoritmos Evolutivos parecen particularmente adecuados para resolver problemas de optimización multiobjetivo, porque ellos tratan simultáneamente con un
conjunto de posibles soluciones (las poblaciones). Esto nos permite encontrar
varios miembros del conjunto óptimo de Pareto en cada ciclo del algoritmo, en
lugar de tener que realizar una serie de ejecuciones como en el caso de las técnicas de programación matemática tradicionales. Además, los algoritmos evolutivos
son menos sensibles a la forma o continuidad de la frontera de Pareto (por ej.,
pueden fácilmente tratar con fronteras de Pareto discontinuas o cóncavas), mientras estas dos cuestiones son una preocupación real para las técnicas de programación matemática.
80
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Reflejos históricos
El potencial de los algoritmos evolutivos en optimización multiobjetivo fue insinuado por Rosenberg
en el 1960, pero la primera implementación fue
realizada a mediados de 1980 (Schaffer,1984).
El primer esquema para incorporar las preferencias del
usuario en un algoritmo evolutivo multi-objetivo (MOEA)
fue propuesto al principio de los años 90 (Tanaka, 1992).
Durante diez años, el campo permaneció prácticamente
inactivo, pero comenzó a crecer a mediados de los 90,
donde varias técnicas y aplicaciones fueran desarrolladas.
81
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algoritmos Evolutivos
Podemos considerar, en general, dos tipos de MOEA:
1. Algoritmos que no incorporan el concepto de dominancia de
Pareto en sus mecanismos de selección (ej. Aproximaciones
que usan funciones de agregación lineal).
2. Algoritmos que ordenan la población basándose en la
dominancia de Pareto (ej. MOGA, NSGA, NPGA, etc.).
Históricamente, podemos considerar la existencia de dos generaciones
Principales de MOEA:
1. Primera Generación: Caracterizado por el uso de ordenación de Pareto.
Algoritmos relativamente simples. Otras aproximaciones (más
rudimentarias) fueron también desarrolladas (ej. Funciones de agregación
lineal). Es también digno de mencionar VEGA, el cual es una aproximación
basada en la población (no basada en Pareto).
2. Segunda Generación: El concepto de elitismo es introducido en dos
formas principalmente: usando selección (µ+λ) y usando una población
82
secundaria externa.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
y II)
83
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Representativos MOEA (Primera Generación)
VEGA
MOGA
NSGA
NPGA
Propuesto por Schaffer en (1984,1985).
Usa subpoblaciones que optimizan cada objetivo separadamente.
El concepto de óptimo de Pareto no es incorporado directamente
en el mecanismo de selección del GA.
84
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
85
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Algoritmo:
Paso 1. Sea un contador de la función objetivo i = 1 y se define q=N/M.
Paso 2. Para todas las soluciones desde j=1+(i-1)*q a j = i*q, asignar
F(x(j)) = fi (x(j)).
Paso 3. Realizar selección sobre todas las q soluciones para crear una
subpoblación Pi.
Paso 4. Si i = M, ir al paso 5. En otro caso, incrementar i en uno e ir
al paso 2.
Paso 5. Combinar todas las subpoblaciones juntas:
M
P = i =1 Pi
Realizar cruce y mutación sobre P para crear una nueva
población.
86
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ejemplo (Problema con dos objetivos):
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ejemplo (Problema con dos objetivos):
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ejemplo (Problema con dos objetivos):
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ejemplo (Problema con dos objetivos):
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Simulación.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Simulación.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ventajas:
La principal ventaja de un VEGA es que usa una idea simple y es fácil
de implementar.
VEGA tiene tendencia a encontrar soluciones próximas a las mejores
soluciones de cada objetivo. En problemas donde tales soluciones sean
deseables, VEGA puede ser una buena alternativa.
Inconveniente:
Cada solución en un VEGA es evaluada solo en un objetivo. Así, cada
solución no es evaluada en M-1 objetivos.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
y II)
94
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Propuesto por Fonseca and Fleming (1993).
Primero, cada solución es chequeada su dominación en la población. A
una solución i, un orden igual a uno más el número de soluciones ni que
dominan a i es asignado: ri = 1 + ni.
95
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Para la solución i, dij es calculada para cada solución j que tenga el mismo
orden que i.
a=1
Función “sharing”
Determina una penalización de la aptitud de un individuo debido a su
cercanía con los vecinos.
Número de soluciones en
el rango ri
Recuento del nicho i :
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Dividir el valor de aptitud asignado por el recuento del nicho. En orden a
conservar la aptitud media de las soluciones en un orden igual que el de
antes del sharing, estos valores de aptitud son escalados de forma que sus
valores de aptitud shared promedio sea el mismo que el valor de aptitud
asignado promedio. Después, selección universal estocástica, cruce en un
solo punto y operador de mutación son aplicados para crear una nueva
población.
Ejemplo:
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Simulación:
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ventajas e Inconvenientes de MOGA
Eficiente y relativamente fácil de implementar.
Su rendimiento depende de lo apropiada de la selección del factor
de sharing.
MOGA fue el MOEA más popular y normalmente superaba a todos
sus competidores contemporáneos.
99
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
y II)
100
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Propuesto por Srinivas and Deb (1994).
Está basado sobre varias leyes de clasificaciones de los
individuos. Individuos no dominados obtienen un cierto valor
de ajuste artificial y luego son apartadas de la población. El
proceso es repetido hasta que la población entera ha sido
clasificada.
101
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Para la solución i, dij es calculada para cada solución j de la misma clase que
i.
Notar que la distancia es calculada con las variables de decisión, en lugar
de los valores de la función objetivo como en un MOGA.
a= 2
Función “sharing”
Determina una penalización de la aptitud de un individuo debido a su
cercanía con los vecinos.
Número de soluciones en
el rango ri
Recuento del nicho i :
Dividir el valor de aptitud asignado por el recuento del nicho.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Simulación:
El NSGA mantiene la diversidad
incluso sin el uso de un operador de
mutación.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ventajas e Inconvenientes de NSGA
Relativamente fácil de implementar.
Parece ser muy sensible al valor del factor de clasificación.
En algunos estudios comparativos a mediados de los 90, el NSGA era
normalmente superado por MOGA y NPGA.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
y II)
107
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Propuesto por Jeffrey Horn et al. (1993,1994).
Usa un esquema de selección de torneo basado en
la dominancia de Pareto. Dos individuos aletoriamente elegidos son comparados con un subconjunto de la población entera (típicamente, sobre el 10%
de la Población). Cuando ambos competidores son
dominados o no dominados (es decir, cuando hay
un empate), el resultado del torneo es realizado por
el ajuste en el objetivo (una técnica llamada sharing
de la clase equivalente es usada en este caso).
108
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ventajas e Inconvenientes de NPGA
Fácil de implementar.
Eficiente porque no aplica ordenación de Pareto a la población entera.
Parece tener un buen comportamiento general.
Además de requerir un factor de sharing, requiere otro parámetro
(tamaño del torneo).
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Simulación:
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
y II)
112
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Representativos MOEA (Segunda Generación)
SPEA and SPEA2
NSGA-II
PAES
El microGA para optimización
Multiobjetivo y el microGA2
SPEA fue introducido por Zitzler & Thiele (1999).
Usa un fichero externo conteniendo soluciones
no dominadas previamente encontradas.
SPEA calcula un valor de intensidad similar al
valor de ordenación usado por MOGA.
Una técnica de agrupación llamada “método de conexión
promedio” es usado para conservar la diversidad.
113
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Aptitud para los elementos de la
población externa
Aptitud para los elementos de la
población
Menor aptitud es mejor
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
El algoritmo comienza con una población creada aleatoriamente y una
externa.las soluciones no dominadas mejores de la
En población
cada generación
población son copiadas a la población externa
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Ventajas:
La agrupación asegura una mejor distribución entre las soluciones no
dominadas obtenidas.
El algoritmo de propagación es sin parámetros
El proceso de asignación de aptitud en el SPEA es más o menos similar al
de MOGA y fácil de calcular.
Inconvenientes:
El SPEA introduce un nuevo parámetro, el tamaño de la población externa.
Los investigadores del SPEA usan un ratio 1:4 entre la población externa y
el tamaño de la población.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Una versión revisada de SPEA ha sido recientemente propuesta: SPEA2
(Zitzler, 2001). SPEA2 tiene tres principales diferencias con respecto a
su predecesor: (1) incorpora un una estrategia de asignación de ajuste
granulado fino que considera para cada individuo el número de individuos
por los que es dominado; (2) usa una técnica de estimación de la densidad
de los vecinos más próximos, la cual guía la búsqueda más eficientemente
y, (3) tiene un método de truncamiento de ficheros mejorado que garantiza
la preservación de las soluciones frontera.
118
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
y II)
119
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Deb et al. (2000,2002) propuso una nueva versión del
Algoritmo Genético de Clasificación No Dominado
(NSGA), llamado NSGA-II, el cual es más eficiente (computacionalmente hablando), usa elitismo y un operador de
cruce que conserva la diversidad sin especificación de
ningún parámetro adicional.
120
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Tamaño
N
Tamaño
N
Población de
descendientes
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Operador de selección por torneo de crowding
Una solución i gana un torneo con otra solución j si alguna de las siguientes
condiciones son verdaderas:
1. Si la solución i tiene un mejor orden.
2. Si ellas tienen el mismo orden pero la solución i tiene una mejor
distancia de crowding que la solución j.
Para obtener una estimación de la densidad de soluciones alrededor de una
solución particular i en la población, tomamos la distancia promedio de dos
soluciones al lado de la solución i en cada uno de los objetivos.
Esta cantidad di sirve como una estimación del perímetro de la figura
formada usando los vecinos más próximos como los vértices.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
y II)
125
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
PAES fue introducido por Knowles & Corne (2000). Usa una
estrategia de evolución (1+1) junto con un fichero externo
que contenga todos los vectores no dominados previamente
encontrados. PAES usa una red adaptativa para mantener
la diversidad.
Inicialmente, una solución aleatoria x0 (llamado padre) es elegido. Este es
mutado usando una función de probabilidad distribuida normalmente con
media cero y con una fijada desviación típica. Sea c0 el descendiente
mutado. Ahora, ambas soluciones son comparadas y el ganador se convierte en el padre de la próxima generación. El quid del PAES está en la
forma de elegir el ganador.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
En cada generación t, además del padre y el descendiente, el PAES
mantiene un archivo de las mejores soluciones encontradas hasta entonces. Inicialmente, este archivo es vacío y como las generaciones
avanzan, las soluciones buenas son añadidas al archivo y adaptado.
Sin embargo, un tamaño máximo es mantenido. Primero, el padre pt y
el descendiente ct son comparados para dominación. Existen tres posibles escenarios.
Si pt domina a ct, el descendiente ct no es aceptado y una nueva solución mutada es creada. Por otro lado, si ct domina a pt, el descendiente
es mejor que el padre. Luego, la solución ct es aceptada como un padre
de la próxima generación y una copia de esta es guardada en el archivo. Esto es como el archivo obtiene población de soluciones no dominadas.
La complejidad se produce cuando ambos son no dominadas. En tal
caso, el descendiente es comparado con el archivo. Tres casos son
posibles.
Optimización Multiobjetivo basada en Metaheurísticas: Computación Evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
6. Optimización Multiobjetivo Evolutiva
6.1. Vector Evaluated Genetic Algorithm (VEGA)
6.2. MultiObjective Genetic Algorithm (MOGA)
6.3. Non-dominated Sorting Genetic Algorithm (NSGA)
6.4. Niched-pareto Genetic Algorithm (NPGA)
6.5. Strength Pareto Evolutionary Algorithm (I y II)
6.6. Non-dominated Sorting Genetic Algorithm II (NSGA II)
6.7. Pareto Archived Evolutionary Algorithm (PAES)
6.8. MicroGenetic Algorithm for Multobjetive Optimization (I
130
y II)
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Propuesto por Coello and Toscano-Pulido [2001].
Un algoritmo genético micro usa una población
de tamaño de 5 individuos. El principal aspecto
del microGA es el uso de un proceso de
reinicialización una vez que la convergencia es
alcanzada. El microGA para optimización
multiobjetivo usa 3 formas de elitismo y el grid
adaptativo de PAES.
131
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
132
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Propuesto por Pulido & Coello [2003]. La motivación
principal del μGA2 fue eliminar los 8 parámetros
requeridos por el algoritmo original. El μGA2
usa un mecanismo de adaptación on-line que
hace innecesario el ajuste de cada uno de sus
parámetros. El μGA2 puede decidir cuando parar
(ningún número máximo de generaciones tiene
que ser proporcionado por el usuario). El único
parámetro que requiere es el tamaño del fichero
externo (aunque existe obviamente un valor por
defecto para este parámetro).
133
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
134
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
135
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Tendencias de los MOEA
Después del enorme éxito durante más de 10 años, los MOEA de primera generación han comenzado finalmente ha quedarse obsoletos
en la literatura (NSGA, NPGA, MOGA and VEGA).
Desde finales de los 90, los MOEA de segunda generación son considerados el estado del arte en optimización multiobjetivo evolutiva
(SPEA, SPEA2, NSGA-II, PAES, PESA, PESA II, microGA, etc.).
Los MOEA de segunda generación acentúan la eficiencia computacional.
Uno de los principales objetivos es encontrar formas sobre la
complejidad computacional de la ordenación de Pareto
donde k es el número de funciones objetivos y M es el tamaño de la
población) y sobre el coste computacional de niching
En gran medida ignorados por un número significante de investigadores,
MOEAs no Pareto son aún populares en Investigación Operativa
(en optimización combinatoria multiobjetivo), donde han sido muy 136
exitosos.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Manteniendo diversidad
Un aspecto importante de MOEAs es poder mantener la diversidad en la
población. Durante muchos años, clasificación por compartición fue el
mecanismo principal adoptado para esta propuesta (Goldberg & Richardson,1987). La idea de clasificación por compartición es dividir la población en varias poblaciones basándose en la similaridad entre individuos.
Obsérvese que cuando nos referimos a MOEAs, “similaridad” puede ser
medido en el espacio de variables de decisión (codificada o descodificada) o en el espacio de las funciones objetivos.
Clasificación por compartición es definido de la siguiente forma:
137
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
En la expresión de la transparencia anterior
indica la
distancia entre las soluciones i y j (en cualquier espacio definido), y
es un parámetro (o umbral) que define el tamaño del
nicho o vecindad. Cualquier solución dentro de esta distancia será
considera como parte del mismo nicho. El ajuste de un individuo i es
calculado usando:
donde M es el número de individuos localizados en la vecindad (o nicho)
del vecino i.
Otros esquemas son posible para mantener la diversidad y fomentar una
buena extensión de soluciones. Por ejemplo:
Técnicas de cruce.
Técnicas de clastering.
El grid adaptativo de PAES (Knowles & Corne, 2000).
El uso del concepto de entropía.
138
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Problemas test de Zitzler-Deb-Thiele
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
ÍNDICE
1. Introducción
2. Historia de la computación evolutiva
3. Algoritmos genéticos
4. Estrategias evolutivas
5. Programación evolutiva
6. Optimización Multiobjetivo Evolutiva
7. Tendencias de los MOEA
8. Conclusiones
146
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Conclusiones
Todos los algoritmos evolutivos multiobjetivo son mejores que el método de
búsqueda aleatoria (RAND).
El NSGA supera a todos los otros algoritmos no elitistas (excepto al SPEA) en
todos los problemas.
La no convexidad en la frontera optima de Pareto de ZDT2 causó dificultades
al HLGA, VEGA y SOGA. Ya que estos tres algoritmos usan la suma pesada
de los objetivos, era esperado que tuvieran dificultades en resolver un problema con una frontera de Pareto óptima no convexa.
La discretización en la frontera óptima de Pareto para ZDT3 causó dificultades
a muchos algoritmos en encontrar un conjunto diversificado de soluciones.
Multimodalidad (ZDT4) y engaño (ZDT6) causó dificultades a todos los algoritmos para converger a la verdadera frontera óptima de Pareto. Era claro que
parámetros diferentes (quizás con un tamaño de población mayor) era necesario para encontrar la verdadera frontera en estos problemas.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Un espacio de búsqueda con una densidad no uniforme (ZDT6) causó
dificultades a todos los algoritmos excepto al SPEA en mantener un
conjunto diverso de soluciones.
Una jerarquía de algoritmos emergió en términos de su rendimiento en
encontrar un conjunto de soluciones próximas a la verdadera frontera
óptima de Pareto. La jerarquía en orden descendente es:
1.
2.
3.
4.
5.
6.
SPEA;
NSGA;
VEGA;
NPGA, HLGA;
MOGA;
RAND.
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Software de Dominio Público
BUGS (Better to Use Genetic Systems)
El uso de este programa suele facilitar la comprensión de lo que son
los AGs y cómo funcionan para aquellos novatos en el área.
s
de demostrar los operadores genéticos fundamentales (selección,
cruce y mutación).
http://www.aic.nrl.navy.mil/pub/galist/src/BUGS.tar.Z
Genesis
Implementación de un AG que tiene gran valor histórico por haber
sido el primer programa de su tipo liberado en el dominio público.
http://www.aic.nrl.navy.mil/pub/galist/src/genesis.tar.Z
149
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
GENEsYs
Software de Dominio Público
Implementación de un AG basada en GENESIS que incluye
extensiones y nuevas funciones para propósitos experimentales.
http://www.aic.nrl.navy.mil/pub/galist/src/GENEsYs-1.0.tar.Z
DGenesis
Implementación de un AG distribuido desarrollada a partir de
GENESIS 5.0.
http://www.aic.nrl.navy.mil/pub/galist/src/dgenesis-1.0.tar.Z
150
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Software de Dominio Público
GECO (Genetic Evolution through Combination of Objects)
Ambiente de trabajo orientado a objetos para implementar prototipos
de algoritmos gen eticos. Usa el CLOS (Common LISP Object System)
y cuenta con abundante documentaci on y algunos ejemplos de uso.
http://www.aic.nrl.navy.mil/pub/galist/src/GECO-v2.0.tar.Z
GALOPPS
Parallelism)
(Genetic
Algorithm
Optimized
for
Portability
and
Un sistema de AGs paralelos
http://GARAGE.cps.msu.edu/
151
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Software de Dominio Público
ESCaPaDE
Sofisticado sistema que permite correr experimentos con algoritmos
evolutivos tales como la estrategia evolutiva. El sistema cuenta con
2 tablas internas: una de funciones objetivo y una de monitores de
datos, lo que permite una fácil implementación de funciones para
monitorear todo tipo de información dentro del algoritmo evolutivo.
Por e-mail a Hoffmeister
([email protected])
GANNET (Genetic Algorithm/Neural NETwork)
Paquete de software que permite evolucionar redes neuronales binarias.
Ofrece toda una variedad de opciones de configuración relacionadas con
los valores de los operadores genéticos.
http://fame.gmu.edu/˜dduane/thesis
152
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Software de Dominio Público
GPC++
Biblioteca de clases en C++ para desarrollar aplicaciones de
programación genética. Esta biblioteca define una jerarquía de
clases y uno de sus componentes integrales es la capacidad de
producir funciones definidas automáticamente.
http://www.emk.e-technik.thdarmstadt.de/˜thomasw/gp.html
GPEIST (Genetic Programming Environment in SmallTalk)
Ambiente de programación genética en Smalltalk que puede
correrse en HP/Sun/PC. Permite distribución de subpoblaciones
en varias estaciones de trabajo (con intercambios entre ellas a
ciertos intervalos)
http://www.cs.bham.ac.uk/Mirrors/ftp.de.uu.net/EC/clife/
153
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Software de Dominio Público
PGAPack
Biblioteca de prop osito general para desarrollar AGs paralelos.
http://www.mcs.anl.gov/pgapack.html
REGAL (RElational Genetic Algorithm Learner)
Sistema distribuido basado en AGs diseñado para aprender
descripciones de conceptos en lógica de primer orden a partir de
ejemplos.
Se basa en un operador llamado “Sufragio Universal” que permite la
probable convergencia asintótica de la población a un estado de
equilibrio en el que coexisten varias especies.
ftp://ftp.di.unito.it/pub/MLprog/REGAL3.2
154
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Software de Dominio Público
SCS-C (Simple Classifier System in C)
Versión en C del Sistema Clasificador Simple proporcionado
en el libro de Goldberg.
Software Comercial
ActiveGA
Un OLE que usa un algoritmo genético para solucionar un problema
dado.
Evolver
Paquete de algoritmos genéticos paraWindows.
155
Búsqueda Inteligente basada en Metaheurísticas: Computación evolutiva
Software Comercial
PC-Beagle
Programa que examina una base de datos con ejemplos y usa
técnicas de aprendizaje de máquina para crear un conjunto de
reglas de decisión que clasifiquen los ejemplos
MicroGA
Herramienta que permite laóde un ambiente de programación en
C++ que viene en código fuente con documentación y 3 ejemplos
completos.
GEATbx (Genetic and Evolutionary Algorithm Toolbox)
Conjunto de funciones enMATLAB que permiten implementar
diferentes tipos de algoritmos genéticos para optimización con
uno o varios objetivos.
156