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
Restricciones - Constraints
La mayoría de los problemas provenientes de la realidad contienen Restricciones
(Constraints), condiciones que deben ser satisfechas para que una solución
resulte útil. Estas restricciones pueden ser de 2 tipos:
• Restricciones Fuertes: La solución es completamente inútil si no cumple esta
condición (pesos, tiempos, o distancias negativas, personas o cargas que deberían
estar en 2 lugares al mismo tiempo, disponibilidad de materia prima, etc.)
• Restricciones Débiles: Condiciones que es preferible que se cumplan, pero que
tienen margen a error, y la solución es digna de considerarse aunque no la cumpla
(Cajas o cargamentos no completamente llenos, existencia de tiempos muertos en
un scheduling, etc.)
La Mejor forma de contemplar restricciones fuertes es INCORPORARLAS A
LA CODIFICACIÓN DEL PROBLEMA (por ej., la restricción de no repetir
ciudades en el TSP). De ese modo, es completamente seguro que toda solución
encontrada cumplirá la codificación.
Restricciones - Constraints
5
4
11
8
6
3
10
1
7
Centro
2
6
4
8
11
5
9
3
10
1
7
9
2
Codificación por Permutaciones - Toda solución considerada cumple la
restricción de no repetir ciudades
Restricciones – Funciones de Penalización
Existen entonces métodos destinados a contemplar la existencia de restricciones
en el problema:
• Funciones de Penalización: Se modifica la función de Fitness, agregándole
términos o factores que tengan en cuenta si la solución considerada cumple las
restricciones. En caso de no cumplirlas, disminuye el valor de Fitness de la
solución considerada, de modo que otra con similar fitness que sí cumpla la
restricción, tenga mejores probabilidades de sobrevivir.
• Métodos de Región Factible: Se Inicia con una población factible o Feasible
(una solución se dice factible si cumple todas las restricciones del problema). El
método intenta mantener todas las nuevas soluciones incorporadas dentro de la
región factible del problema
• Métodos de Reparación: Métodos adaptados a cada problema, que ante la
aparición de una solucion infeasible, tratan de repararla con alguna heurística
adaptada al problema
Restricciones – Funciones de Penalización
Existen entonces métodos destinados a contemplar la existencia de restricciones
en el problema:
•Penalizaciones Estáticas: Las funciones de penalización no cambian con la
cantidad de generaciones
• Penalizaciones dinámicas: Las funciones de Penalización cambian con las
generaciones, de acuerdo a un esquema prefijado. En general, al principio las
penalizaciones son suaves o inexistentes, aceptando cualquier solución.
Conforme avanza la cantidad de generaciones, se van poniendo más restrictivas,
y cerca del final de la corrida, sólo aceptan soluciones que cumplan todas las
restricciones, penalizando severamente a las demás.
• Penalizaciones Adaptativas: uno o más factores de las funciones de
penalización cambian de acuerdo al progreso de la corrida, de acuerdo a la
cantidad de soluciones Factibles (feasible) que se encuentran en la población, y la
cantidad de generaciones restantes.
Restricciones – Funciones de Penalización
Combinación Lineal Positiva
G ( sol ) = F ( sol ) + w1 R1 ( sol ) + L + wn Rn ( sol ), wi > 0
G ( sol ) = w0 F ( sol ) + w1 R1 ( sol ) + L + wn Rn ( sol ), wi > 0
Combinación Lineal Convexa
w0 F ( sol ) + w1 R1 ( sol ) + L + wn Rn ( sol )
, wi > 0
G ( sol ) =
w0 + w1 + L + wn
G ( sol ) = w0 F ( sol ) + w1 R1 ( sol ) + L + wn Rn ( sol ),
n
∑w
i =1
i
=1
Restricciones – Funciones de Penalización
La forma más utilizada y una de las más efectivas son las combinaciones
convexas y/o combinaciones lineales positivas de la función y las restricciones
Se arreglan los signos de los coeficientes y las funciones R de manera tal que
• Si todas las restricciones son satisfechas, los R son 0 y G=F
• Si alguna de las restricciones no es satisfecha, entonces el correspondiente
R pasa a ser positivo, y
G(sol) = F(sol) + wR(sol) > F(sol),
por lo que la solución es “castigada” o “penalizada” por no cumplir las
restricciones del problema
• Los pesos w determinan cuan severa es la penalización (si es grande, las
soluciones que no cumplan la restricción tendrán un valor de G mucho peor
que el resto y no sobrevivirán demasiado)
• Los pesos pueden ser Estáticos, Dinámicos o Adaptativos
Restricciones – Funciones de Penalización
⎛ gen actual
G ( sol ) = F ( sol ) + ∑ wi ⎜⎜
i =1
⎝ GTotal
n
β
⎞
⎟⎟ Ri ( sol )
⎠
Una de las formas mas utilizadas y mas efectivas de penalización dinámica, es el
que además del peso w, incorpora una función cuyo valor comienza en 0, dando
lugar a aceptar cualquier solución (incluso las que no cumplan las restricciones),
y va aumentando su valor conforme aumenta el número de generaciones
El coeficiente β determina la Forma en que crece esta función conforme
aumentan las generaciones: β = 1 determina crecimiento Lineal, β > 1
determina un crecimiento lento, y 0 < β < 1 determina un crecimiento veloz,
que alcanza una meseta durante las últimas generaciones. Este esquema es el
sugerido para las restricciones Fuertes, de manera que cualquier solución que no
cumpla la restricción será rechazada, sobre el final de la corrida.
Restricciones – Funciones de Penalización
β
⎛ gen actual
G ( sol ) = F ( sol ) + ∑ wi ⎜⎜
i =1
⎝ GTotal
n
β
⎞
⎟⎟ Ri ( sol )
⎠
Restricciones – Inundaciones
GA
GA
GA
= Población llenada al azar (Inmigración)
= Mejores individuos encontrados
en la Vuelta Anterior
Esta arquitectura tiene la ventaja de que se puede limpiar la población de soluciones
que no cumplan las restricciones entre vuelta y vuelta, llenando con población
limpia
Restricciones – Inundaciones
• La arquitectura de Inundaciones tiene la ventaja de que se la puede combinar con
cualquier otra estrategia para cumplir restricciones, como funciones de
penalización, subpoblaciones paralelas, etc.:
• Es posible y conveniente limpiar la población de soluciones que no cumplan las
restricciones entre una vuelta y la siguiente, rellenando con población al azar pero
“Limpia”, es decir, que cumpla las restricciones.
• Más aun, se puede monitorear el progreso de las penalizaciones y cumplimiento
de las restricciones, ajustando los parámetros e incluso ajustando la función de
evaluación entre una vuelta y la siguiente
• Este proceso, sin embargo, debe ser ajustado en cada caso y de acuerdo a las
restricciones usadas.
En general un problema complicado con muchas restricciones y un espacio de
soluciones muy restringido, requerirá de algoritmos especializados para producir
buenas soluciones en forma consistente
Restricciones – Ajuste de los pesos
Cualquiera sea la arquitectura utilizada, el ajuste de los pesos es una de las partes
más importantes y delicadas del proceso
La idea detrás del ajuste, es mantener los pesos equilibrados en magnitud, de
manera de obligar al algoritmo a atacar TODOS los términos presentes por igual
Eventualmente el método se desbalancea sobre el final de la corrida, donde una o
mas de las restricciones fuertes pasan a tener preponderancia, y ese término crece
sobre los demás
Restricciones – Ajuste de los pesos
Supongamos
G = w1 F + w2 f 2 + w3 f 3
donde F es la función de Evaluación original, f 2 y f 3 están asociadas a las
restricciones del problema, y los w1 , w2 , y w3 son los pesos que deseamos
ajustar.
Supongamos además que F toma valores en [0, 100], f 2 toma valores en [0,1],
y f 3 toma valores en [0,10]
Proponemos entonces
G = .05 * F + 50 * f 2 + 5 * f 3
De esa manera, los 3 términos estarán entre 0 y 50, de manera que tendrán la misma
magnitud, y el AG estará obligado a atacar a los 3 términos por igual. No es
necesario que sea exacto, pero sí que sean comparables en magnitud
Restricciones – Métodos de Región Factible
Existen varios algoritmos de este tipo, que intentan mantener las soluciones creadas
dentro de la región factible del problema.
• Esto implica que el algoritmo no explora la región infeasible del problema, lo que
provoca en general soluciones de baja calidad.
• Requieren de mayor cantidad de procesamiento, para asegurar que las soluciones
creadas son factibles
• Sólo funcionan cuando el espacio de búsqueda es convexo y/o no excesivamente
complicado
• Requieren en particular comenzar con una Población Inicial Feasible, lo cual en
muchos problemas es extremadamente complicado de conseguir (NP-Hard, si el
problema original es NP-Hard), haciendo su aplicación imposible en la mayoría de
los casos importantes
Restricciones – Métodos de Región Factible
BackTracking
En general se asocia este método con el Crossover y la Mutación. Al crear una
solución nueva con uno de estos operadores, se comprueba que cumpla las
restricciones. En caso de no hacerlo, se modifica algún parámetro y se vuelve
a aplicar el operador, de forma que el hijo sea progresivamente más parecido al
padre. En el caso límite, coincide con el padre, lo cual en última instancia
asegura que va a ser una solución factible
Sol Mutada
BackTracking
So
Sol Orig
Restricciones – Métodos de Región Factible
BackTracking
C1 = ra. * P1 + (1 − ra). * P2
C2 = (1 − ra ). * P1 + ra. * P2
,
a al azar, 0 ≤ r ≤ 1
Arith Crossover (o Cube Crossover) con Back Tracking. Inicialmente r=1, es
el procedimiento usual de Crossover. Si alguno de los hijos generados no
cumple las restricciones, se cambia r (usualmente r = λr , 0 ≤ λ ≤ 1), y se
vuelve a generar.
Los nuevos hijos generados se encontrarán progresivamente más cerca de sus
padres, hasta que eventualmente r = 0 y coinciden, lo que asegura que sean
soluciones factibles (recordemos que este proceso se aplica sobre poblaciones
iniciales factibles)
Optimización MultiObjetivo
Los ejemplos estudiados hasta el momento tienen como salida sólo un valor real. O
sea, el objetivo es siempre el mínimo o máximo de una función (o simulación?) a
valores reales.
Sin embargo, la mayoría de los problemas de la realidad son Multi Objetivo. O sea,
existe más de una función a minimizar al mismo tiempo. Mas aún, en general son
objetivos contrapuestos o por lo menos complementarios, donde en general lo que
interesa es el mejor compromiso posible entre las variables.
Es importante notar que incluso en el caso de una sola función objetivo, las
restricciones suelen ser consideradas a través de funciones de Penalización,
convirtiéndose nuevamente en una optimización MultiObjetivo.
F ( sol ) = ( f1 ( sol ),..., f n ( sol ))
Optimización MultiObjetivo – Frente Pareto
En general, para la mayoría de los problemas, no existe un único punto que realice
el mínimo conjunto de todas las funciones al mismo tiempo. Buscamos entonces
soluciones de compromiso, o sea, soluciones que sean “lo suficientemente buenas”
en todos los aspectos que nos interesan.
Existen 2 formas principales:
• Forzar Una solución de compromiso, que será el mejor compromiso posible entre
las funciones elegidas, de manera que las restricciones más importantes sean
cumplidas, y las demás se mantengan dentro del margen de interés
• Proporcionar un Conjunto de soluciones de salida, que representen distintos
niveles de compromiso entre las distintas funciones a optimizar, entre las que se
podrá elegir la más conveniente para el problema. Esto se conoce como
Optimalidad Pareto (Vilfredo Pareto, 1896, Edgeworth, 1881)
Optimización MultiObjetivo – Frente Pareto
La Optimización Multiobjetivo se puede dividir en 3 tipos:
• Combinación de Funciones (“Aggregating Functions”)
• Optimización por Subpoblaciones
• Optimización Pareto
Abordaremos en detalle el primero y tercer tipos. Del segundo existen varios
ejemplos, en particular VEGA (“Vector Evaluated Genetic Algorithm”, Schaffer,
1985), y muchos otros basados en variantes del concepto de utilizar distintas
subpoblaciones, una para cada función objetivo, tratando de combinarlas.
En general esta aproximación al problema no funciona porque los candidatos a
buenas soluciones en cada variable no suelen ser buenos compromisos, y las buenas
soluciones de compromiso no suelen ser muy buenas en cada variable. Se debe
diseñar un algoritmo específico, que busque los compromisos y caracterice como
Buenas a las soluciones que presenten buen comportamiento en todas las variables,
aunque no sobresalgan en ninguna
Optimización MultiObjetivo – Frente Pareto
Unión o Conjunción de Funciones (“Aggregating Functions”)
Se trata de combinar todas las funciones objetivo en una, ya sea por sumas,
productos, u otras operaciones matemáticas, de forma de forzar el compromiso
deseado entre las variables.
Es la forma más antigua de optimización multiobjetivo, pero no por ello menos
eficiente. Debería ser el primer intento en el caso de pocas funciones a combinar, o
problemas que no sean excesivamente restrictivos.
La forma más común es la combinación lineal o convexa
F ( sol ) = w1 f1 ( sol ) + L + wn f n ( sol )
donde los coeficientes son reales positivos, y representan los Pesos de la función, la
relativa importancia de cada sumando
Este Método funciona en el caso en que el frente pareto es CONEXO
(cuando no es conexo, sólo encontrará una componente conexa del mismo)
Optimización MultiObjetivo – Frente Pareto
Sea X = X 1 × L × X n producto de espacios ordenados. Decimos que x ∈ X está
Dominado por y ∈ X si
xi ≤ y i para todo i = 1,..., n , y ∃ j tal que x j < y j
Optimización MultiObjetivo – Frente Pareto
Supongamos que tenemos P funciones y N individuos en la población
1 - Generar N individuos al azar
2 - Seleccionar la primer función y Evaluarlos.
i – Utilizar Ruleta con los pesos determinados por esta función, y elegir
2 padres
ii – Efectuar Crossover con los 2 padres seleccionados y generar 2 hijos
iii – Incorporar los hijos a la nueva población NewPop
3 – Repetir los pasos 1 y 2 con las siguientes P – 1 funciones
4 – Repetir 2 y 3 hasta que NewPop contenga N elementos (se tiene entonces una
población de Padres Seleccionados y una Nueva, generada por tandas de
P soluciones buenas, una para cada función)
5 – Producir una población temporal uniendo los Padres seleccionados a NewPop
(hijos), que contendrá 2N Individuos
6 – Realizar Mutación con el operador seleccionado, en la parte correspondiente
de esta población temporal
Optimización MultiObjetivo – Frente Pareto
Tengo entonces una población con 2N Individuos, conseguidos por Crossover y
Mutación, de la que tengo que extraer N que pasarán a la generación siguiente
7 – Extraiga el conjunto Pareto de esta población temporal (el conjunto de
soluciones no dominadas por ninguna otra del conjunto)
i – Si tengo N individuos en este conjunto Pareto, esos forman la
generación siguiente
ii – Si tengo más de N individuos, tiro Ruleta sucesivamente usando F1
hasta FP, extrayendo una solución por vez, hasta completar N
individuos que formarán la generación siguiente
iii – Si tengo menos que N individuos, Selecciono el resto mediante
ruleta, de acuerdo a las funciones F1 hasta FP por turnos, hasta completar
N. De esta manera aunque son soluciones dominadas por algunas de las
del conjunto Pareto, son buenas soluciones y son seleccionadas para
pasar a la generación siguiente
8 – Repetir 2 a 7 hasta completar el número de generaciones especificado
Optimización MultiObjetivo – Frente Pareto
En el caso de que exista un óptimo simultáneo de todas las funciones consideradas,
este tipo de algoritmos lo encontrará, en cuyo caso coincide con un Algoritmo
Genético Usual y una función combinada
Descargar