METAHEURISTICAS Ideas, Mitos, Soluciones

Download Report

Transcript METAHEURISTICAS Ideas, Mitos, Soluciones

METAHEURISTICAS
Ideas, Mitos, Soluciones
OPTIMIZACION COMBINATORIA
Qué es un problema de optimización
combinatoria?
Cómo se modela matemáticamente un problema de
optimización combinatoria?
Minimizar (o maximizar) f(x)
sujeto a
g (xi)  bi
h (xi) = ci
xi  Z
i=1.........m1
i= m1 +1,....... M
• función objetivo
• variables de decisión
• restricciones
(No siempre se puede modelar exactamente así un problema de
optimización combinatoria)
Ejemplos de problemas de optimización combinatoria:
•
•
•
•
•
•
Problema de la suma de subconjuntos
Determinación de caminos mínimos en grafos
Flujo en redes
Asignación de tareas
Problema de la mochila
Problemas de ruteo de vehículos. El problema del Viajante de
comercio
• Diseño de redes de comunicaciones
• Ruteo en redes de comunicaciones
• VLSI
•
•
•
•
•
•
•
Planificación de tareas
Asignación de recursos y horarios en instituciones educativas
Minimizaron de desperdicios en el corte de materiales
Localización de plantas
Planificación financiera
Problemas de energía
Biología Computacional (secuenciamiento de ADN, árboles
filogenéticos, doblamiento de proteínas)
• etc.
Cómo se resuelve un problema de optimización
combinatoria?
• Enumeración completa o “algoritmo de fuerza bruta”. Sirve?
COMPLEJIDAD COMPUTACIONAL
Qué hacer?
• SOLUCIONES EXACTAS
• HEURISTICAS
HEURISTICAS
• Heurísticas clásicas
• Metaheurísticas o heurísticas “modernas” o
sistemas inteligentes
Cuándo usarlas?
• Problemas para los cuales no se conocen
“buenos” algoritmos exactos
• Problemas difíciles de modelar
Porqué usarlas?
• Adaptabilidad a modificaciones de los datos o del
problema una vez que ya se obtuvo un resultado.
• Fáciles de implementar y programar
• Basadas en tener una gran capacidad de cálculo
• No sólo para problemas de optimización
combinatoria
Cómo se evalúan?
•
•
•
•
problemas test
problemas reales
problemas generados al azar
cotas inferiores
ESQUEMA GENERAL DE UN ALGORITMO DE
DESCENSO (O BUSQUEDA LOCAL)
S= conjunto de soluciones
N(s) =soluciones “vecinas” de la solución s
---------------------------------------------------------------Elegir una solución inicial s0 S
Repetir
Elegir s  N(s0) tal que f(s) < f(s0)
Reemplazar s0 por s
Hasta que f(s) > f(s0) para todos los s  N(s0)
----------------------------------------------------------------
Cómo determinar las soluciones vecinas de una solución
s dada?
Qué se obtiene con este procedimiento? Sirve?
Optimos locales y globales
Espacio de búsqueda
Ejemplo:
Supongamos que tenemos el problema de asignar tareas a un sola
máquina de modo a minimizar el tiempo total de ejecución.
Cada trabajo j tiene un tiempo de procesamiento p j y una fecha de
entrega d j. El objetivo es entonces minimizar
T = j max {(C j – dj),0}
donde C j es el momento en que se completa el trabajo j.
Como elegir las soluciones iniciales. A priori se puede
tomar cualquier permutación de las tareas.
Determinación de los vecinos de una solución dada: en
este caso podemos tomar los que se obtengan de la
solución actual cambiando la posición de un trabajo
con otro.
En un problema con 4 trabajos por ejemplo los vecinos
de (1,2,3,4) serán:
N(s) = {(1,3,2,4),(3,2,1,4),(1,2,4,3),
(1,4,3,2),(2,1,3,4),(4,2,3,1)}
TECNICAS METAHEURISTICAS
• Simulated annealing (primeros trabajos 1953, 1983)
• Algoritmos Tabú Search (primeras aplicaciones a optimización
combinatoria en 1986, basado en algunas ideas de los 70)
• Algoritmos genéticos y evolutivos (primeras ideas en los 60, en ese
momento mayormente aplicaciones a problemas de IA). Algoritmos
meméticos, BRKGA (1994, 2007)
• Scatter search and path relinking (1998)
• GRASP (1989)
• ISL
• Colonia de hormigas (1992)
• Redes neuronales (primeras ideas en los 60, resurgieron en los 80)
• otras..
• Híbridos
• Origen, motivación, exceso de nomenclatura,
similitudes ¨forzadas¨ con problemas de la física y la
biología por ejemplo, etc.
• Se usan en otros problemas, que no son de
optimización combinatoria también.
TABU SEARCH
CONCEPTOS BASICOS:
• Permitir elegir una solución vecina que no sea
estrictamente mejor que la actual para “salir” de un
mínimo local.
• Usar una lista Tabú de soluciones (o movimientos)
para evitar que el algoritmo cicle.
• Usar una función de aspiración que permita en algunos
casos elegir un elemento o movimiento Tabú.
ESQUEMA GENERAL DE TABU SEARCH
Inicialización
Elegir una solución inicial s en S
Niter:=0
bestiter:=0
bestsol:= s
T:=
Inicializar la función de aspiración A
Mientras ( f(s) > f(s*) y (niter- bestiter < nbmax) hacer
niter := niter + 1
generar un conjunto V* de soluciones sv en N(s) que no sean Tabu o tales que A(f(s)) f(sv)
elegir una solución s* que minimice f en V*
actualizar la función de aspiración A y la lista Tabú T
si f(s*) < f(bestsol) entonces
bestsol:= s*
bestiter := niter
s:=s*
-------------------------------------------------------------------------
Qué hay que hacer para usar este esquema?:
• Determinar el conjunto de soluciones factibles S.
• Determinar la función objetivo f.
• Dar un procedimiento para generar los elementos de N(s),
“vecinos de s”.
• Decidir el tamaño del conjunto V*  N(s) que será considerado
en cada iteración
• Definir el tamaño de la lista Tabú T.
• De ser posible definir una cota inferior para la función objetivo
f.
• Definir la función de Aspiración A(z) para todos los valores z
que puede tomar la función objetivo.
• Definir criterios de parada (nbmax y/o comparación con la cota
inferior si la hay)
Ejemplo: seguimos con el ejemplo anterior de asignar tareas a un
sola máquina de modo a minimizar el tiempo total de ejecución.
Como construir el conjunto de soluciones posibles V* ?
En este caso, si, cuando la solución actual es (1,2,3,4) la lista Tabu,
proveniente de los pasos anteriores del algoritmo es
T= {(1,3,2,4),(3,1,2,4)(3,2,1,4)}
Entonces V* tiene solo cuatro elementos
(1,2,4,3), (1,4,3,2),(2,1,3,4),(4,2,3,1)}
Posibles reglas Tabu a usar en este caso:
• impedir todos los movimientos donde i ocupa la posición p(i) y j
ocupa la posición p(j)
• impedir los movimientos donde alguna de las situaciones arriba
suceda
• impedir que el trabajo i vuelva a una posición k con k < p(i)
• impedir que el trabajo i cambie de posición
• impedir que i y j cambien de posición
Como elegir el tiempo de permanencia en la lista Tabu:
• valor fijo ( a ser ajustado en la experimentación)
• valor aleatorio entre un tmin y tmax dados a priori.
• valor variable de acuerdo al tamaño de la lista y las variaciones
del valor de la función objetivo.
Ejemplos de criterios de aspiración:
• cuando todos los movimientos o vecinos posibles son Tabu, se
elige alguno de ellos (“el menos tabu”)
• cuando con un movimiento tabu se obtiene una solución mejor
que la mejor hasta ese momento (global o en la región)
MAS DETALLES de Tabu search......
Uso de la memoria “a largo plazo”, en contraposición con la que
se usa para manejar N(s), “a corto plazo”:
• Frecuencia : guardar información sobre atributos en una
misma posición, movimientos que se repiten, datos sobre el
valor de la solución cuando un atributo esta en una posición
dada, etc.
• Lista de soluciones “elite”
• Intensificación
• Diversificación
• Camino de soluciones entre dos soluciones prometedoras.
• Etc.
GRASP
(Feo, T.,Resende, M.,”Greedy randomized adaptive search
procedures”, Journal of Global Optimization, 1995, pp 1,27)
Esquema de un algoritmo GRASP
-----------------------------------------------------------------------Mientras no se verifique el criterio de parada
ConstruirGreedyRandomizedSolución ( Solución)
Búsqueda Local (Solución)
ActualizarSolución (Solución, MejorSolución)
End
-------------------------------------------------------------------------
• Algoritmo ConstruirGreedyRandomizedSolución
(Solución)
En vez de usar un algoritmo goloso que elija el elemento más
prometedor para agregar a la solución, en cada iteración se
elige al azar entre los que cumplen que no pasan de un
porcentaje  del valor del mejor elemento.
Se puede limitar el tamaño de la lista de estos elementos.
• Algoritmo Búsqueda Local (Solución)
Definición de intercambios
EJEMPLOS
1. Cubrimiento de conjuntos
Dados n conjuntos P1, P2,………..Pn
sea
I = i Pi
y J ={1,2,….n}
Un subconjunto J* de J es un cubrimiento si
iJ* Pi = I
El problema de recubrimiento mínimo (set covering
problem) consiste en determinar un cubrimiento
de I de cardinal mínimo ( o sea con la mínima
cantidad de conjuntos Pi)
Ejemplo:
P1 = { 1,2 }, P2 = { 1,3 }, P3 = { 2 }, P4 = { 3 }
Los cubrimientos mínimos tienen cardinal 2 y son:
{P1 P2,} ó
{P1 P4,} ó
{P2 P3,}
Primer paso:
ConstruirGreedyRandomizedSolución ( Solución)
Un algoritmo goloso podría ser agregar al cubrimiento el
conjunto que cubre la mayor cantidad de elementos de
I sin cubrir.
En este caso para el algoritmo GreedyRandomized
consideramos como conjuntos candidatos a los que
cubren al menos un porcentaje  del número cubierto
por el conjunto determinado por el algoritmo goloso.
También se puede limitar el tamño de la lista de
candidatos a tener a lo sumo  elementos.
Dentro de esta lista de conjuntos se elige uno al azar.
Segundo paso:
Búsqueda Local (Solución)
Para el algoritmo de descenso se definen los vecinos
usando el siguiente procedimiento de intercambios:
Un k,p-intercambio, con p < q, consiste en cambiar si
es posible k-uplas del cubrimiento por p-uplas que no
pertenezcan al mismo.
Ejemplo: cambiar la 2-upla P2 = { 1,3 } con la 1-upla P4
={ 3 }
Ejemplo:
P1 = { 3,4 } , P2 = { 3 } , P3 = { 2 },
P4 = { 2,3,4 } , P5 = { 3,4,5 }, P6 = { 1,4,5 }, P7 = { 2,3 },
P8 = { 4 }
Tomamos  = 40%
En la primer iteración la lista es {P1, P4, P5 ,P6 , P7}. Supongamos
que sale elegido al azar P5..
Para el segundo paso la lista es {P3, P4,P6 , P7}. Si resultara
elegido P3 tendríamos el cubrimiento {P3, P5 ,P6 } que no es
óptimo y podriamos pasar al algoritmo de búsqueda local.
Si en primer lugar hubiera resultado elegido P6. y después hubiera
salido P4.hubieramos obtenido la solución óptima {P4,P6 }.
Resultados presentados en el trabajo de Feo y Resende:
Testearon el algoritmo en problemas no muy grandes
pero díficiles que aparecían en la literatura.
• Se lograron resolver problemas pequeños pero que
aún no habían sido resueltos. Se hicieron 10 corridas
para cada ejemplo con ß = 0.5,0.6,0.7,0.8,0.9.
• Se usaron solo 1,0 intercambios o sea sólo se
eliminaron columnas superfluas.
Los ejemplos siguientes de GRASP los veremos
más adelante después de ver los conceptos
correspondientes de grafos.
2. Máximo conjunto independiente
i)
en este caso la medida para decidir que nodo agregar al
conjunto independiente puede ser el grado. Se puede hacer un
algoritmo goloso que en cada iteración agregue el nodo de
menor grado.
ii) En este caso el intercambio se hace de la siguiente forma:
Si tenemos un conjunto independiente S de tamaño p, para cada kupla de nodos en ese conjunto hacemos una búsqueda
exhaustiva para encontrar el máximo conjunto independiente
en el grafo inducido por los nodos de G que no son
adyacentes a los nodos de S” = S \ {v1.....vk}. Si el conjunto N
resultante es de cardinal mayor que S entonces S U N es un
conjunto independiente mayor que S.
RESULTADOS
• Se testeó el algoritmo en grafos generados al azar de
1000 nodos (con ciertas condiciones). Se usó un
máximo de 100 iteraciones y ß = 0.1.
• Se hizo un preprocesamiento para facilitar el trabajo
de GRASP, que se corre en grafos más chicos que los
originales.
3. Job Scheduling
Problema: Un conjunto de tareas debe ser ejecutada en
un único procesador. Hay tiempos no simétricos de
transición entre tareas.
Base del algoritmo: se construye un camino
hamiltoniano en forma golosa. Se usa un
procedimiento de intercambio de nodos para la
búsqueda local.
4. A GRASP for graph planarization, (Resende,
Ribeiro, 1995).
Problema: Encontrar un subconjunto F de los ejes de G
tal que el grafo G\F sea planar.
Base: un algoritmo GRASP como primer paso de una
heurística conocida que antes usaba un algoritmo
goloso + heuristica de conjunto independiente +
extension del subgrafo planar.
Tabu Search y GRASP se dan como ejemplo de técnicas
metaheurísticas. Dar una idea de todas ellas y de sus
numerosísimas aplicaciones abarca un curso completo o
más. A continuación mencionamos dos referencias recientes
de entra las muchas que dan un panorama completo sobre
metaheurísticas:
•
•
Gendreau, M., Potvin, J. »Handbook of Metaheuristics “,
Springer, 2010.
Talbi, E.G. "Metaheuristics: from design to implementation", Wiley,
2009