Algoritmos Genéticos Y Optimización Heurística

Anuncio
Algoritmos Genéticos
Y
Optimización Heurística
Dr. Adrian Will
Grupo de Aplicaciones de Inteligencia Artificial
Universidad Nacional de Tucumán
awill@herrera.unt.edu.ar
Otras Arquitecturas – Steady State
• Una de las desventajas del método Generacional tradicional es la cantidad
de procesamiento que requiere. En general funciona con gran eficiencia en
problemas difíciles, pero requiere de grandes cantidades de procesamiento.
• Uno de los principales intentos para superar esta dificultad es el SteadyState Genetic Algorithm (“Estado Estacionario”)
• Se basa en la idea de un “Mating Pool”, una sola población, en general de
tamaño constante, sobre la que actúan los operadores genéticos. La idea es
una población en estado estacionario, donde la mayoría de los padres son
iguales a sus hijos, mientras que un bajo porcentaje resulta distinto, y este
porcentaje es el que efectúa la exploración
• Tiene la ventaja sobre los esquemas tradicionales que requiere mucha
menos memoria y cantidad de procesamiento, pero tiene la desventaja de que
la exploración que realiza es mucho más limitada, por lo tanto no es tan
eficiente.
Otras Arquitecturas – Steady State
Crossover
Mutación
Shuffle and Pairing
Reinserción
Selección
Competencia
Población
Evaluación
Otras Arquitecturas - Steady State GA
• En Steady State GA, lo básico es que existe Una Sola Población sobre la
que opera el algoritmo
• Se opera sobre unos pocos individuos a la vez (usualmente menos del 10 %
de la población, nunca más del 20 %), y se reemplazan todavía menos
individuos al final de la operación (generación, por extensión).
• La selección, usando el método que sea, puede ser Local o Global. En el
caso Local, se define un entorno al cuan se restringe la selección en cada
caso. En el caso global, se selecciona de la población completa.
• En la etapa de Competencia (no siempre presente en todas las versiones),
los padres seleccionados y el offspring producido son evaluados y sólo los
mejores son elegidos para reinserción (evita el reemplazar padres buenos con
hijos malos, al no haber elitismo posible en este esquema)
Steady State GA – Selección
• Para Steady State, cualquiera de los métodos de Selección estudiados puede
ser usado. Sin embargo existen otros, que si bien pueden ser usados en AG
generacionales, son más específicos de Steady State (como Tournament
Selection)
• En todos los casos se selecciona un porcentaje Pequeño de la población,
entre 2 individuos, y el 10 a 15 % del total de la población
• Hay distintos tipos de Selección posible para Steady State, mas allá del
operador utilizado:
• Local al azar
• Local por turnos
• Global
En el caso de selección local, se define un entorno donde tiene lugar la
competencia por ser seleccionado para reproducción, comúnmente llamada
Torneo (Tournament).
Steady State GA – Selección
• Local al azar: En cada vuelta del algoritmo (a veces llamada por extensión
generación), se seleccionan uniformemente al azar k soluciones del total de
la población, formando un entorno dentro del cual se realiza la selección de
los padres
• Local por turnos: El algoritmo recorre la población, un individuo a la vez.
En cada paso, se define un entorno de k soluciones del individuo
seleccionado, llamado Torneo o Tournament. k se denomina Tamaño del
torneo o Tournament Size, y es un parámetro crítico para el comportamiento
del algoritmo, así como la forma y el tamaño del entorno elegido
• Global: Se seleccionan los individuos a reproducir del total de la población
por los métodos estudiados
Es claro que, dado que los tiros son sucesivos, el individuo mejor
posicionado será elegido con mucha mayor frecuencia, por lo que los 2
primeros métodos son preferibles.
Steady State GA – Selección
• Tournament Selection (ó Random Tournament Selection): Se eligen k
individuos uniformemente al azar, del total de la población. Se elige
entonces el mejor de ellos para reproducción (el que gana el torneo). Versión
1, se realiza el procedimiento 2n veces para elegir n parejas para
reproducción, o se realiza n veces y de cada conjunto se eligen los 2 mejores
para reproducción
• Unbiased Tournament Selection (Sokolov & Whitley 2005): El método de
Tournament presenta Bias, tiene tendencia a dejar individuos sin considerar,
o sea, que luego de las n tiradas, y aunque kn > Popsize, siguen existiendo
individuos en la población que no han participado de ningún torneo, y por lo
tanto no han sido considerados para reproducción. Esto tiene el
inconveniente (entre otros) que un individuo de baja calidad puede
permanecer por largo tiempo en la población.
• Se presentó una modificación, que intenta eliminar ese bias, incorporando
una permutación y comparando por parejas, pero sólo funciona en el caso en
que se desea generar PopSize individuos
Steady State GA – Selección
• El factor más importante para controlar la Selective Pressure es el
Tournament Size k, la cantidad de individuos que son elegidos para la
competencia en cada caso.
• Mayor Tournament Size, mayor Selective Pressure, mayor probabilidad del
mejor de toda la población de ser elegido todas o casi todas las veces.
• Menor Tournament Size, menor Selective Pressure, y más probabilidades
tiene un óptimo local de ser elegido, ya que sólo va a ser comparado con
unas cuantas soluciones (y por lo tanto, la probabilidad de ser comparado con
una solución mejor son bajas)
Este método de selección y procedimiento es útil cuando interesa conservar
todos los óptimos locales, y no sólo encontrar el óptimo global del problema
Steady State GA – Crossover and Mutation
• Crossover – El procedimiento de Crossover es completamente similar al del
esquema generacional, siendo utilizados exactamente los mismos operadores
de Crossover. Las principales diferencias es cuantas veces es aplicado, sobre
que individuos, y cuanto offspring es generado.
• En general, se selecciona entre 2 individuos y un 10 % de la población, y
esta población es cruzada para generar un número igual de descendientes.
También existen variantes donde se genera un número mayor de
descendientes y por competencia sólo vuelven a la población los mejores.
• Mutación – El procedimiento de Mutación es nuevamente similar al del
esquema generacional, con los mismos operadores de Mutación. En el caso
de elegirse sólo 2 soluciones, se genera una copia de uno de ellos, que será
mutada, y competirá con los padres y el offspring en la parte de
Competencia.
• En el caso de torneos de mayor tamaño, existen variantes similares al caso
generacional (mutar un porcentaje luego del crossover, guardar un porcentaje
sin crossover para mutación, etc.)
Steady State GA – Competition
• Competición – Una vez que se ha elegido un porcentaje de la Población
mediante el procedimiento de Selección elegido, se ha efectuado Crossover
con las parejas resultantes, y se ha aplicado mutación, se cuenta con una
población de entre 5 individuos, y un 12 a 15 % del tamaño total de la
población. Estas soluciones son entonces evaluadas usando la función de
Fitness, y se eligen sólo las mejores de ellas para reinserción en la población.
• En general, el número de soluciones elegidas para reinserción es bajo,
menor que el tamaño del torneo elegido. Es común el esquema de sólo
reemplazar la mejor solución encontrada por la peor solución de la
población.
• Estos esquemas donde los padres compiten con los hijos que generan por la
supervivencia, se denominan Overlapping methods
Steady State GA – Reinsertion
• Reinserción – Una vez que se ha efectuado la Competencia, se cuenta con
un número de soluciones a reinsertar en la población. Como el tamaño de la
población es constante, las soluciones a reinsertar deben tomar el lugar de
otras, que serán descartadas de la población.
• Usualmente se reinsertan entre un individuo, y un 5 % de la poblacion.
Existen diversas estrategias para elegir cuál o cuáles individuos de la
población serán reemplazados (Replacement Strategy):
• El peor de toda la población (Replace Worst Strategy)
• El más viejo de la población (Replace Oldest Strategy)
• Elegir al azar
Y se debe decidir si se reemplaza efectivamente el anterior con el nuevo
(Replacement Condition):
• Reemplazar Siempre (Unconditional Replacement)
• Reemplazar sólo si es mejor (Replace Worst)
Steady State GA - Pseudocodigo
• Llenar Población al azar
• for I=1:número de vueltas (usualmente 1000 o más)
• Elegir 2 individuos al azar de la población
• Elegir uno al azar y copiarlo
• Efectuar Crossover sobre los individuos originales
• Efectuar Mutación sobre la copia
• Evaluar los 5 individuos resultantes y elegir el mejor new_sol
• Elegir el individuo con peor fitness de toda la población old_sol
• Compararlo con el obtenido, y dejar en ese lugar el mejor de
ambos (replace worst strategy)
• end
Steady State GA - Pseudocodigo
Llenar Población al azar
for I=1:número de vueltas (usualmente 1000 o más)
for J=1:2N
Elegir Tour_Size individuos al azar de la población
Elegir el mejor de ellos y agregarlo a NewPop
end
Realizar shuffle y dividir en N parejas, al azar
Efectuar Crossover sobre las parejas elegidas
Elegir un porcentaje del Offspring y mutar (o aplicar mutación a
todo con baja probabilidad)
Evaluar los individuos resultantes y elegir los M mejores
Elegir los M individuos con menor fitness de toda la población
Comparar por parejas y reemplazar si es mejor (replace worst
strategy)
end
Steady State GA - Conclusiones
• Es computacionalmente más eficiente que la versión Generacional: Requiere
la mitad de la memoria aproximadamente, al mantener sólo una población
activa a la vez. Requiere menos procesamiento al tener que realizar crossover
sólo sobre pequeñas cantidades de soluciones a la vez
• Se compensa porque requiere un número mucho mayor de generaciones para
converger, dada la baja exploración por generación del espacio de búsqueda
• En general parece converger más rápido, pero la exploración del espacio de
búsqueda es muy limitada (sólo un par de crossovers y mutaciones por
generación), por lo que los resultados pueden no ser tan buenos como el
esquema generacional.
Computacionalmente más eficiente pero Búsqueda más limitada
Otras Arquitecturas - Paralelización
• Una de las principales ventajas de los Algoritmos Genéticos es la facilidad
con que se pueden paralelizar. Es decir, se pueden armar distintas poblaciones
en distintos procesadores o máquinas, en forma independiente. Una vez
terminado el proceso en todas las máquinas, comparar los resultados obtenidos
entre sí y conservar el mejor resultado obtenido, o unirlos de manera
sistemática y seguir procesando. Esto se llama Offline Paralelism
• Existen también otras formas de paralelismo, donde se aprovecha mejor las
capacidades de varios procesadores y de unir las máquinas en red, o dentro de
una misma máquina, establecer distintos procesos independientes cuyos
resultados son comparados y/o aprovechados según un esquema
predeterminado. Esto se denomina Online Paralelism.
• En ambos casos la arquitectura se denomina de Migraciones o Island Model
• El paralelismo es muy útil además en AGs, porque en general, la parte
computacionalmente más costosa, es el cálculo de la función de Fitness, que
por lo general no puede ser distribuido
Otras Arquitecturas - Paralelización
Para ello se divide en SUBPOBLACIONES, subconjuntos de la Población tales
que todos los procesos y operadores genéticos tienen lugar dentro de cada
subpoblación (Selección y Cruzamiento, Reinserción en el caso de Steady State)
Se deja correr el algoritmo en cada subpoblación por un número predeterminado
de generaciones, luego de las cuales se produce la MIGRACIÓN, o sea, una parte
de cada subpoblación es copiada o movida hacia otra subpoblación. Las distintas
decisiones sobre qué parte de la subpoblación usar y el esquema según el cual se
realiza la migación (Sharing), determinan las distintas arquitecturas.
En el caso general, todas las subpoblaciones exploran el mismo espacio de
búsqueda y por lo tanto comparten la misma Matriz de Bounds. Sin embargo,
existen esquemas en que, al menos en las primeras Vueltas o Turnos del
algoritmo, las subpoblaciones o Islas tienen distintas matrices de bounds, de
forma de especializarse en distintos sectores del espacio de Búsqueda
Otras Arquitecturas - Paralelización
1 – Dividir la población en subpoblaciones (de igual tamaño o no). Agregar una
columna a la matriz indicando a que subpoblación pertenece cada
individuo, o un vector separado que indique el tamaño de las sucesivas
subpoblaciones dentro de la matriz de Población del Algoritmo.
2 – Correr el algoritmo con la arquitectura establecida, usualmente por una cantidad
MENOR de generaciones que la requerida para convergencia.
3 – Elegir los individuos a Emigrar de cada subpoblación, si serán copiados o
removidos de la subpoblación (generalmente copiados). Los principales
esquemas son:
• El mejor de la Subpoblación
• Los k mejores
• k individuos elegidos al azar
• los k mejores y el resto al azar
4 – Migrar los individuos según el esquema (topología) elegido
5 – Seleccionar los individuos a Inmigrar, de haber demasiados
6 – Elegir los individuos a reemplazar y reemplazarlos (Reinserción). Por lo
general se eligen individuos al azar, o los k peores de la población
Migraciones – Ring Topology
Topología Anillo – Cada subpoblación le pasa parte de su población al vecino de
un lado. En forma matricial, cada subpoblación pasa individuos (filas) a la
subpoblación inferior, y el último al primero
Migraciones – Neighbourhood Topology
Topología de Vecindad – Cada subpoblación le pasa parte de su población al
vecino de un lado o del otro, eligiendo al azar. En forma matricial, cada
subpoblación pasa individuos (filas) a la subpoblación inferior o superior, y el
último y el primero entre sí – Pueden sobrar o faltar inmigrantes
Migraciones – Unrestricted Topology
Topología de Migración Irrestricta – Cada subpoblación le pasa parte de su
población a otra, al azar. En forma matricial, cada subpoblación pasa individuos
(filas) a cualquier otro sector de la matriz – Sobran o faltan inmigrantes
Migraciones – Efectos de la Topología
Estas Arquitecturas tienen como objetivo explorar de forma Independiente el
espacio de búsqueda, ya que se logra utilizar una población final mucho mayor que
la posible en una sola máquina para problemas grandes (paralelización)
También tienen el efecto de mejorar el problema del crowding, mejorando la
calidad de las soluciones finales. Esto se debe a que de encontrarse un óptimo local
en una de las subpoblaciones, sólo copa esa subpoblación, y las sucesivas a las que
se entregan copias de la buena solución encontrada (una o dos por vuelta,
dependiendo del esquema de migraciones elegido). Mientras tanto, las otras
subpoblaciones tienen posibilidad de continuar la búsqueda en forma
independiente, con mejores probabilidades de encontrar el óptimo global.
Esto no ocurre en el esquema de Migración Irrestricta y emigración de los mejores
por copia, donde el mejor individuo encontrado es repartido con igual probabilidad
en varias subpoblaciones. Por ello es aconsejable un bajo porcentaje de
migraciones (entre el 10 y el 20 %), y esquemas como el de Vecindad, donde una
buena solución no va a ser descartada, pero tiene pocas probabilidades de copar
toda la población
Migraciones – Inundaciones
Las arquitecturas estudiadas en el punto anterior son simultáneas. Es decir, mas
allá de demoras en el tránsito entre subpoblaciones o efectos similares, cada
subpoblación evoluciona al mismo tiempo y en forma independiente (similar a
Islas). Al ser mínima la migración, no hay mayor necesidad de esperar a que una u
otra subpoblación termine para largar la siguiente.
Existe una arquitectura sin embargo, donde el porcentaje de migraciones es
elevado, y cuyas subpoblaciones son Sucesivas, o sea, debe terminar una antes de
empezar la siguiente.
Corresponde al hecho de que en la naturaleza, los individuos menos adaptados de la
población son eliminados periódicamente, ya sea por enfermedades, inundaciones,
etc. Así, se corre el algoritmo por una cierta cantidad de generaciones, y se
conservan sólo un porcentaje de los mejores, o los que superen cierto umbral (que
puede ser vacío si el umbral es demasiado alto)
Migraciones – Inundaciones
GA
GA
GA
= Población llenada al azar (Inmigración)
= Mejores individuos encontrados
en la Vuelta Anterior
Subpoblaciones Sucesivas con Inundacion: Todos los individuos cuyo Fitness es
menor que una cierta cota son eliminados, y la población rellenada al azar
Migraciones – Inundaciones
En esta arquitectura existe un número importante de variables a ajustar:
• Número de Vueltas (numero de veces que se repite la operación
• Número de Generaciones a realizar en cada vuelta (que en principio varía de
una vuelta a otra, dado que la composición de la población también varía)
• Porcentaje de la población a conservar para la siguiente vuelta (demasiado
bajo porcentaje, búsqueda al azar. Demasiado alto, corresponde a una sola
población)
En general estas variables deben ajustarse en cada problema (problem dependent).
Como regla general, mientras avanza el algoritmo la mejor población encontrada
será de mejor calidad, y la población al azar deberá dejarse evolucionar más tiempo
para producir exploración útil
Del mismo modo, en las últimas vueltas se puede restringir la matriz de Bounds de
modo de explorar mejor el entorno de la mejor solución encontrada
A pesar del gran número de variables a ajustar, este modelo resulta muy útil ante la
presencia de Restricciones en el problema
Benchmark Functions
• La amplia aplicabilidad de los Algoritmos Genéticos, Evolutivos,
Simulated Annealing, y otros a estudiar, hace que sea casi imposible un
estudio teórico completo que abarque todos los métodos y demuestre
convergencia del algoritmo, o cotas de velocidad de convergencia, etc. Del
mismo modo entonces, es muy difícil establecer Comparaciones entre
distintos algoritmos.
• Se ha creado entonces un conjunto de Funciones de Prueba o Benchmark
Functions (“Banco de Pruebas”), funciones con distintos tipos y grados de
dificultad, que permiten probar la eficiencia del Algoritmo en distintas
situaciones, y comparar distintos algoritmos de una manera objetiva y
medible.
• Existen también repositorios de problemas de optimización conocidos,
como el TSPLib, con problemas TSP y soluciones conocidas, para
comparación de nuevos algoritmos
Benchmarks - De Jong Functions
n
F1 ( x) = x + 2 x + ... + nx = ∑ ixi2 ,
2
1
2
2
2
n
i =1
-5.12 ≤ xi ≤ 5.12
Benchmarks - De Jong Functions
100 ( x 2 − y ) 2 + (1 − x) 2 ,
-2.048 ≤ x, y ≤ 2.048
De Jong’s Function 2 – Rosenbrock’s Valley
Mínimo global en 0
Benchmarks - De Jong Functions
F3 ( x, y) = [ x] + [ y ] = Parte_Entera ( x) + Parte_Entera ( y)
= floor(x) + floor( y)
- 5.12 ≤ x, y ≤ 5.12
Benchmarks - De Jong Functions
n
F4 ( x) = ∑ ixi4 + ε rand, -1.28 ≤ xi ≤ 1.28
i =1
Benchmarks - De Jong Functions
5
1
F5 = ε + ∑
6
6
[
i
+
(
x
−
A
)
]
+
[
j
+
(
y
−
A
)
]
i , j =1
i, j
i, j
⎡−32 −32 −32 −32 −32 −16 −16 −16 −16 −16 0 0 0 0 0 16 16 16 16 16 32 32 32 32 32⎤
A= ⎢
⎥
⎢⎣−32 −16 0 16 32 −32 −16 0 16 32 −32 −16 0 16 32 −32 −16 0 16 32 −32 −16 0 16 32⎥⎦
Benchmarks – Rastriguin’s Functions
n
R ( x1 ,..., x n ) = 10 n + ∑ ( xi2 − 10 cos( 2π xi ))
i =1
Mínimo global en 0
− 5.12 ≤ xi ≤ 5.12
Descargar