Transcript RefSet

METAHEURISTICAS
Ideas, Mitos, Soluciones
Irene Loiseau
2do Cuatrimestre 2010
OPTIMIZACION COMBINATORIA
Qué es 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 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)
Cómo se modela como problema de programación lineal
entera un problema de optimización combinatoria?
•
•
•
•
Problema de la mochila
Problema de asignación
Problema de flujo máximo
Problema del viajante de comercio.
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
Problema del viajante de comercio (TSP)
Dado un grafo G con longitudes asignadas a los ejes
queremos determinar un circuito hamiltoniano de
longitud mínima.
No se conocen algoritmos polinomiales para resolver el
problema del viajante de comercio.
Tampoco se conocen algoritmos - aproximados
polinomiales para el TSP general (si se conocen
cuando las distancias sean euclideanas)
Es “el” problema de optimización combinatoria más
estudiado.
Algunas heurísticas y algoritmos aproximados para
el TSP
Heurística del vecino más próximo
-----------------------------------------------------------------------Empezar
Elegir un nodo v cualquiera de G
Poner l(v) = 0
Inicializar i = 0
Mientras haya nodos sin marcar hacer:
poner i = i +1
elegir el eje (v,w) “más barato” tal que w no esté
marcado.
poner l(w) = i
poner v = w
Fin
--------------------------------------------------------------------------------------Cuál es la complejidad de este algoritmo?.
Heurísticas de inserción
------------------------------------------------------------------------Empezar
• Construir un circuito de longitud 3.
• Marcar los nodos del circuito
• Mientras haya nodos sin marcar hacer
ELEGIR un nodo v sin marcar
INSERTAR v en el circuito
Fin
----------------------------------------------------------------------Cómo ELEGIR?. Cómo INSERTAR?.... variantes de la
heurística de inserción.
Para INSERTAR el nodo v elegido
si ci j es el costo o la longitud de un eje (i,j), elegimos
dos nodos i, i+1 que ya están en el circuito y son
consecutivos en el mismo y tal que
ci v + cv i+1 – c i i+1
sea mínimo. Insertamos v entre i e i+1.
Podemos ELEGIR el nuevo nodo v para agregar al
circuito tal que:
•
•
•
•
v sea el nodo más próximo a un nodo que ya está
en el circuito.
v sea el nodo más lejano a un nodo que ya está en
el circuito.
v sea el nodo “más barato”, o sea el que hace
crecer menos la longitud del circuito.
v se elige al azar.
En los dos primeros casos y en el cuarto la complejidad del
algoritmo es O(n2), en el tercero es O(n2 log n)
En el caso de grafos euclideanos (por ejemplo grafos en
el plano R2), se puede implementar un algoritmo de
inserción
• usando la cápsula convexa de los nodos como
circuito inicial
• insertando en cada paso un nodo v tal que el ángulo
formado por los ejes (w,v) y (v,z), con w y z en el
circuito ya construido, sea máximo.
Hay muchas variantes sobre estas ideas.
Heurística del árbol generador
--------------------------------------------------------------• Encontrar un árbol generador mínimo T de G
• Duplicar los ejes de T
• Armar un circuito euleriano E con los ejes de T y sus
“duplicados”
• Recorrer E usando DFS y armar un circuito
hamiltoniano G
--------------------------------------------------------------------------
Cuál es la complejidad de este algoritmo?
Teorema: Si las distancias del grafo cumplen la
desigualdad triangular la heurística del árbol
generador tiene una perfomance en el peor caso dada
por
xH (i)/ x* (i) ≤ 2
O sea si las distancias son euclideanas hay algoritmos
polinomiales para el problema del TSP aproximado.
Perfomance de las otras heurísticas en el peor caso:
Si las distancias en G son euclideanas se puede probar
que valen las siguientes cotas para la perfomance en
el peor caso:
• Vecino más próximo
xh (i)/ x* (i) ≤ ½ (log n +1)
• Inserción del más próximo xh (i)/ x* (i) ≤ 2
• Inserción del más lejano
xh (i)/ x* (i) ≤ 2 log n +
0.16
• Inserción del más barato
xh (i)/ x* (i) ≤ 2
Heurísticas de mejoramiento
Cómo podemos mejorar la solución obtenida por alguna heurística
constructiva como las anteriores?
Heurística 2-opt de Lin y Kernighan
-------------------------------------------------------------------------• Obtener una solución inicial H (o sea un circuito hamiltoniano H),
por ejemplo con alguna de las heurísticas anteriores.
• Mientras sea posible hacer:
. Elegir dos ejes de G tal que al sacarlos de H y
reemplazarlos por los dos necesarios para reconstruir un nuevo
circuito hamiltoniano H´ obtengamos un H´ de longitud menor a
la de H.
. H = H´
. Fin
---------------------------------------------------------------------------------------Cuándo para este algoritmo?. Se obtiene la solución óptima del
TSP de este modo?
• En vez de elegir para sacar de H un par de ejes que nos lleve a
obtener un circuito de menor longitud podemos elegir el par que
nos hace obtener el menor H´ entre todos los pares
posibles.(más trabajo computacional)
• Esta idea se extiende en las heurísticas k-opt donde se hacen
intercambios para cualquier k. O sea en vez de sacar dos ejes,
sacamos k ejes de H y vemos cual es la mejor forma de
reconstruir el circuito. En la práctica se usa sólo 2-opt o 3 –opt.
• Estas mismas ideas se pueden usar para construir un algoritmo
Tabu Search para el TSP definiendo los vecinos de una
solución usando 2- opt o 3 opt. …….
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
Problema de asignación de tareas:
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)}
METAHEURISTICAS
NO HAY UNA DEFINICION UNICA PARA ESTE TERMINO
• “Una metaheurística es un conjunto de conceptos que
pueden ser usados para definir algoritmos heurísticas
para un amplio espectro de problemas diferentes”.
• “Las metaheurísticas son estrategias de alto nivel que
guían una heuristica específica del problema a resolver
para mejorar su perfomance”
Principales características de las metaheurísticas:
• Las metaheuristicas son estrategias que guían un proceso de
búsqueda.
• Las metaheurísticas no son técnicas para un problema específico.
Sus conceptos básicos se pueden describir con un alto nivel de
abstración.
• El objetivo es explorar eficientemente el espacio de búsqueda para
encontrar soluciones óptimas o casi óptimas.
• Las técnicas metaheurísticas van desde algoritmos simples de
búsqueda local a complejos procesos de aprendizaje.
• Las metaheurísticas son en muchos casos algoritmos nodeterminísticos.
• Las metaheurísticas pueden usar conocimiento del dominio
específico de aplicación manejando heurísticas controladas por ellas.
• Algunas metaheurísticas hace uso de la “memoria” de la búsqueda
para guiar los pasos futuros.
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,
mayormente aplicaciones a problemas de IA).
• GRASP (1989)
• Colonia de hormigas (1992), Swarm Optimization
• Redes neuronales (primeras ideas en los 60, resurgieron en los
80)
• VNS
• 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.
BIBLIOGRAFIA
• De que tratan los libros de metaheuristicas?.
• De que tratan los papers?:
• “nuevas ideas” para las metaheuristicas tradicionales.
• nuevas metaheurísticas
• aplicaciones a una enorme cantidad de problemas
REVISTAS:
• Journal of Heuristics, Kluwer
• Revistas de Operations Research, Sistemas Inteligentes,
Inteligencia artificial, etc.
Congresos
LIBROS y ANALES
•
•
•
•
•
•
•
•
•
•
•
•
Aarts,E.,Korst,J.,”Simulated Annealing and Boltzmann machines”, Wiley, 1989.
Aarts,E. Lenstra,J.K., “ Local Search in Combinatorial Optimization”, Wiley,1998
Alba,E.,"Parallel Metaheuristics:A New Class of Algorithms", Wiley, 2005.
Bonabeau, E.,Dorigo, M.,Theraulaz,G.,”Swarm Intelligence”,Oxford University Press,
1999.
Corne,D., Dorigo,M.,Glover, F., “New ideas in Optimization”, McGrawHill, 1999.
Davis,L.(ed),”Handbook of genetic algorithms”, Reinhold,1991.
Dorigo,M.,Stutzle,T.,”Ant Colony Optimization”, MIT Press 2004.
Glover,F., Laguna,M., “Tabu Search”, Kluwer Academic Pub., 1997.
Glover, F., Laguna, M., Taillard, E., de Werra, D. (eds), “Tabu Search”, Annals of
Operations Research, Vol. 41, 1993.
Goldberg, D.,” Genetic algorithms in Search, Optimization and Machine learning”,
Addison-Wesley,1989.
Haupt,R.,Haupt,S.,”Practical genetic algorithms”,Wiley,1998.
Hertz,J., Krog,A., Palmer,R., “Introduction to the theory of neural computacion”,
Addison_Wesley, 1991.
•
•
•
•
•
•
•
•
•
•
•
Holland,J. “Adaptation in netural and artificial systems”,MIT Press, 1975.
Laporte, G., Osman,I.H., “Metaheuristics in Combinatorial
Optimization”, Annals of Operations Research, Vol 63, 1996.
Michalewicz, Z.,”Genetic algorithms + Data Structures = Evolutionary programs”,
1996.
Mitchell,M.,”An introduction to genetic algorithms (complex adaptive systems)”,
1996.
Osman,I.,Kelly,J.,(eds) “Metaheuristics: theory and applications”, Kluwer Academic
pub., 1996.
Pham,D.,Karaboga,D.” Intelligent Optimization Techniques: Genetic Algorithms,
Tabu Search, Simulated Annealing, and Neural Networks”, Springer Verlag, 1998.
Rayward- Smith, Osman, Reeves, Smith,” Modern heuristics search methods”, 1996.
Reeves, C. (ed), “Modern heuristics techniques for combinatorial Problems”,
Blackwell,1993.
Talbi, E.G. "Metaheuristics:from design to implementation", Wiley, 2009.
Van Laarhoven,P.,Aarts,E.”Simulated Annealing:theory and applications”,
Kluwer,1988
Voss, Martello, Osman, Rocairol, “Metaheuristics”, Kluwer, 1999.
SIMULATING ANNEALING
Ideas básicas:
Metropolis, A., Rosenbluth,M., Rosenbluth,A., Teller, A., Teller,E., “ Equation of state
calculation by fast computing machines”, J. of Chemistry Physics, 1953
Algoritmo para simular el proceso de enfriamiento de un material en un baño
de calor (annealing).
Si un material sólido se calienta por encima de su punto de fundición y
después se enfría hasta quedar en estado sólido, las propiedades de este
sólido dependen de la velocidad de enfriamiento.
El proceso de “annealing” se puede simular modelando el material como un
sistema de partículas. El algoritmo de Metropolis simula matemáticamente
los cambios de energía del sistema cuando se lo somete a un proceso de
enfriamiento hasta con converge a un estado de “congelamiento”
30 años más tarde:
Kirkpatrick,S., Gellat,C., Vecchi,M., “Optimization by simulating
annealing”, Science, 1983.
Tomando como base el trabajo de Metropolis et all, proponen
usar estas ideas para buscar soluciones óptimas de problemas
de optimización. Esto implica mejorar el algoritmo básico de
(descenso o búsqueda local), permitiendo movimientos donde
el valor de la función empeora con una frecuencia gobernada
por una función de probabilidad que cambia a lo largo del
algoritmo.
Las leyes de la termodinámica dicen que a temperatura t la probabilidad de un
crecimiento de la energía de magnitud E está dada por
p (E) = exp ( -E/ kt)
(1)
donde k es la constante de Boltzman.
Metropolis et all. generan una perturbación y calculan el cambio de energía. Si
la energía decrece el sistema se mueve al nuevo estado. Si crece el nuevo
estado es aceptado con probabilidad (1). El procedimiento se repite para un
número predeterminado de iteraciones para cada temperatura, después de lo
cual la temperatura se disminuye hasta que el sistema se congela en estado
sólido.
Kirkpatrick et all., y Cerny (1985) propusieron en forma independiente usar
este algoritmo en problemas de optimización combinatoria haciendo un
paralelo entre el proceso de enfriamiento y los elementos de este tipo de
problemas
Si hacemos la siguiente correspondencia:
estado del sistema
Solución factible
Energía
Costo
cambio de estado
Solución vecina
Temperatura
Parámetro de control
estado de congelamiento
Solución heurística
Con esto cualquier algoritmo de búsqueda local puede
convertirse en un algoritmo “annealing” tomando al
azar un cierto numero de vecinos y permitiendo que
elija una solución peor de acuerdo a la ecuación (1)
• Cómo es la función de energía para la mayor parte
de los materiales?.
• Cómo es la función objetivo en problemas de
optimización?.
ESQUEMA GENERAL DE UN ALGORITMO SIMULATING
ANNEALING
------------------------------------------------------------------------Elegir una solución inicial s0
Elegir una temperatura inicial t0 > 0
Elegir una función de reducción de temperatura  (t)
Repetir mientras no se verifique la condición de parada
Repetir hasta icount = nrep (t)
Elegir al azar s  N(s0 )
 = f(s) - f(s0 )
Si  < 0
entonces s := s0
Sino
Generar x al azar en (0,1)
Si x < exp (- / t) entonces s := s0
Fin
Poner t =  (t)
Fin
------------------------------------------------------------------
Qué hay que hacer para usar este esquema en la
práctica?
•
•
•
•
•
Definir conjunto de soluciones
Definir función de costo
Definir vecinos
“Elegir” parámetros: temperatura, nrep, 
“Elegir” criterio de parada
Más Detalles
La temperatura inicial debe ser suficientemente “alta” como para permitir un
intercambio casi libre de las soluciones vecinas.
La forma de reducir la temperatura es vital para el éxito de la heurística. Hay
que determinar:
•
•
número de repeticiones en cada temperatura.
forma de reducción de la temperatura
Muchas iteraciones por temperatura para pocos valores de temperatura o al
revés.
Por ejemplo:  (t) = a t con a < 1
Se acostumbra usar 0.8 < a < 0.99
• nrep puede crecer geométricamente o aritméticamente en cada temperatura.
• En algunos casos se usa la historia para determinar nrep
• Otra propuesta:  (t) = t/ (1 + b t ) con b chico
En la práctica...............
Criterios de parada:
• teóricos
• en la práctica.....nro. de iteraciones sucesivas sin
mejora
Elección del espacio de soluciones y definición de
vecinos: muy importante.
Factibilidad
Penalidades en la función objetivo
Evitar funciones “chatas”
Coloreo de grafos
(Ejemplo del libro de Reeves)
Grafo G = (V, X)
Se puede plantear el problema como particionar el conjunto de vértices en K
conjuntos.
Una solución sería entonces
s = (V1,V2…………, Vk )
El objetivo es entonces minimizar k.
No es una buena función objetivo…………..
Qué pasa si se intentan usar intercambios para pasar de una solución
factible a otra?.
Componentes bicolores. Complicado
Ideas:
• Cambiar la definición de solución factible. Poner como
solución factible una partición cualquiera de V, aunque no
defina un coloreo factible.
• Los vecinos se obtienen a partir de s cambiando un nodo de un
conjunto Vi a otro.
• Agregar a la función objetivo una función de penalidad que
cuente cuantos ejes hay dentro de cada subconjunto o sea
f (s) = k +  | Ei |
donde Ei es el conjunto de ejes entre nodos del conjunto Vi
Tampoco es una buena función objetivo…………..
•
Otra propuesta:
f (s) = -  | Ci |2 +  2 |Ci| | Ei |
donde Ci de nodos en el subconjunto Vi
•
Ninguna funciona demasiado bien en problemas grandes.
•
A veces necesitamos sólo una solución factible del problema
de coloreo y se usa sólo una función de penalidad
• Estimación inicial de la cantidad de vehículos requeridos
• Rutas iniciales
• Reglas para tratar de mantener la factibilidad de las
ventanas de tiempo durante la construcción.
• La inserción de un cliente en una ruta se determina
usando el crecimiento de la longitud de la ruta y del
tiempo de recorrido.
Problemas de horarios en instituciones educativas
• Cada institución tiene sus propias reglas.
• Muchas restricciones y objetivos.
Consideremos acá el problema de programar un conjunto dado
de exámenes en un numero fijo de franjas horarias, de modo
que ningún estudiante tenga que dar dos exámenes a la vez, y
que haya aulas del tamaño necesario para los mismos.
Puede haber muchas otras restricciones.
Presentaremos un caso tratado por K. Dowsland
(libro de Rayward-Smith, Osman, Reeves, Smith, 1996).
Se quieren programar los exámenes de un periodo en la Swansea University
Restricciones “fuertes”:
• 600 exámenes
• 3000 alumnos, 24 franjas horarias disponibles
• ningún alumno puede dar dos exámenes al mismo tiempo.
• algunos pares de exámenes pueden ser programados en el
mismo horario.
• algunos pares de exámenes NO pueden ser programados
en el mismo horario.
• algunos grupos de exámenes tienen que ser programados en un cierto
orden.
• algunos exámenes tienen que ser programados dentro de determinadas
ventanas de tiempo.
• no puede haber mas de 1200 alumnos dando examen al
mismo tiempo.
Objetivos secundarios:
•
•
minimizar el numero de exámenes de mas de 100 alumnos después del periodo 10.
minimizar la cantidad de alumnos que tienen que dar dos exámenes en periodos
consecutivos.
No es un problema de optimización. Cuál es el objetivo?
Difícil encontrar una solución factible.
Primer paso: decidir cuales serán las soluciones factibles y cuales restricciones se
incorporaran a la función objetivo como penalidades.
El problema básico de horarios se puede modelar como un problema de coloreo de
grafos. La solución propuesta se basa en algoritmos Simulating Annealing para ese
problema.
Espacio de soluciones: asignación de exámenes a las 24 franjas que verifiquen las
restricciones de orden.
Vecinos: cambiar una franja horaria para un examen.
Costo:
w1 c1 + w2 c2 + w3 c3 + w4 c4 + w5 c5 + w6 c6
donde
•
•
•
•
•
c1 es el número de conflictos de los estudiantes
c2 es el número de exámenes que colisionan por otras razones
c3 es el número de violaciones de ventanas de tiempo
c4 es el número de violaciones de la capacidad de las aulas
c5 es el número de exámenes que no verifican la segunda
restricción secundaria
• c6 es el número de exámenes de mas de 100 alumnos fuera del
periodo preferido.
• w1,w2,w3,w4,w5,w6 pesos
RESULTADOS:
Mucho experimentos con enfriamiento muy lento.
Pesos altos para las restricciones mas importantes, permitieron que cuando quedaban satisfechas no
volvieran a ser violadas.
Basada en las observaciones de estos primeros experimentos, se intento un procedimiento en 2
etapas.
La función objetivo para la primera fase fue:
f1= w1 c1 + w2 c2 + w3 (c3 + c6) + w4 c4
Este primer problema se resolvió con relativa facilidad poniendo todos los pesos en 1y usando una
tasa de enfriamiento de 0.99 cada 1000 iteraciones. Se obtuvieron entonces soluciones con
costo 0.
La fase 2 partió de esta solución final y trabajo en un espacio de soluciones en las cuales todas las
soluciones con f1 > 0 habían sido eliminadas.
La función objetivo fue
f2 = c5
Fue necesario usar un esquema de enfriamiento muy lento para obtener buenos resultados. Se uso
una temperatura inicial de 20, reduciéndola a 0.99 t cada 5000 iteraciones.
El manejo de vecinos en ambas fases fue diferente.
Problemas de Ruteo de Vehículos
• El problema básico de Ruteo de Vehículos (Vehicle Routing Problem, VRP)
requiere que se planifiquen de forma óptima las rutas de un conjunto de
vehículos que tienen que visitar a un conjunto de clientes partiendo de un
depósito.
• Hay muchas variantes del VRP, que puede incluir restricciones en la
capacidad de los vehículos, en la longitud de los recorridos, tener horarios de
entrega o recogida, etc.
• Problemas de optimización combinatoria de gran importancia económica y
muy estudiados.
• El ejemplo que vamos a presentar fue propuesto en:
Chiang, W,Russell, R.,“Simulating annealing metaheuritics for the vehicle
routing problem with time windows”, Annals of Operations Research 63
(1996)
Para cada cliente i definimos:
•
•
•
•
•
•
•
•
•
qi , carga o demanda del cliente i
si, tiempo de servicio del cliente i
ei, hora más temprana en que puede iniciarse el servicio en i
li, última hora en que puede iniciarse el servicio en i
tij, tiempo de viaje entre i y j
dij, distancia entre i y j
Qv, capacidad del vehículo v
bi, momento en que se empieza el servicio en i
bij, momento en que puede empezar a servirse al cliente j suponiendo que el
cliente j va después del i en una ruta.
•
bij= max { ej,bi+si+tij}
• wj, tiempo de espera si el vehículo llega a j antes de ej.
•
wj = ej – (bi+si+tij)
• En este trabajo se construye una solución inicial usando un procedimiento
de construcción de rutas en paralelo basado en una heurística inserción
propuesta por Solomon.
• Se estima en primer lugar la cantidad de vehículos necesarios V y se genera
esa cantidad de rutas. Al final se agregan rutas si quedaron clientes sin
servir, o se trata de disminuir el nro de rutas si la cantidad inicial V alcanzó.
• Reglas para elegir que cliente insertar basadas en cual es el meno ej, en cual
es la ventana de tiempo más estrecha, o en cual es el cliente más lejano al
depósito.
• El lugar para insertar al cliente está determinado por una combinación de la
distancia a la ruta y por el aumento del tiempo de viaje que produce insertar
ese cliente.
• Se combinan los criterios y se elige que cliente insertar y donde viendo cual
da la mejor solución.
A partir de la solución inicial anterior se aplica un algoritmo
Simulating Annealing:
• Soluciones factibles: conjunto de rutas que verifican las ventanas de tiempo
{R1,…….Rv} donde Rp es el conjunto de clientes visitados por el vehículo
p
• Vecinos: se obtienen cambiando un cliente de una ruta a otra o
intercambiando 2 clientes. Se consideraron 2 vecindarios diferentes:
N1(S): construido a partir de elegir los dos vecinos siguientes del vecino i en la
ruta p y los dos vecinos que no están en la ruta p que tienen menor costo de
inserción en dicha ruta. Se evalua la posibilidad de insertar cada uno de estos
cuatro elementos para cada cliente i, se repite el procedimiento para todos
los i y al final se tiene una nueva solución S que es aceptada o no por el SA.
N2(S): se hacen intercambios de clientes entre todos los pares de rutas siempre
que mejoren la solución.
Función de Costo a optimizar
C(S) = b1 R + b2 T + b3 D
con pesos b1 >> b2> b3 y donde
R es el total de vehículos usados
D la distancia total recorrida
T el tiempo total de recorrer todas las rutas
Parámetros y criterios de parada
Probabilidad inicial P0 = 0.05
Temperatura inicial T0 : se elige de forma que un movimiento peor sea aceptado
con probabilidad Po.( se generan al azar movimientos para determinar esto)
Cambio de la temperatura (t)=0.95 t
Nrep proporcional a del tamaño del vecindario (0.95%)
Criterio de parada
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)
Volvemos al ejemplo de asignación de tareas que
presentamos en “Búsqueda Local”:
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)
Ejercicio:
Pensar cómo implementaría un algoritmo tipo Tabu search
para el siguiente problema:
Encontrar el árbol de mínimo peso de con k ejes (MWKT)
en un grafo G = (V,X) con pesos en los ejes.
Problema del viajante de comercio
Espacio de soluciones:
• permutaciones de (1,2,……………..n)
• Solución inicial al azar
Movimientos:
• k intercambios, se usa k=2.
Tamaño del espacio: ( n-1)!/2
# de vecinos de una solución dada: n(n-1)/2
• Todas las soluciones son alcanzables entre si
• Es fácil generar vecinos al azar y actualizar el costo
Con estas definiciones se puede usar el esquema básico
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.
Coloreo de grafos
(“Using Tabu Search Techniques for graph coloring”, Hertz, de Werra, Computing 39, 345-351,
1987)
El problema de coloreo de grafos consiste en determinar cual es el mínimo número de colores con
los cuales se pueden colorear los nodos de un grafo sin que dos nodos adyacentes tengan el
mismo color.
Características del algoritmo Tabú Search implementado
•
•
G = (V,X) grafo
Soluciones factibles
s = (V1,V2,………….Vk)
(cada solución es una partición de V)
• Se arma una solución inicial al azar
•
Función objetivo
f(s) =  ( | E (Vi) |, i = 1….k)
•
•
Vecinos: cambiar un nodo de un conjunto Vi a otro.
Lista Tabú
(x,i), x  Vi por varias iteraciones
Función de aspiración
Inicial A(z) = z – 1
Se va actualizando.
•
Problemas de horarios en instituciones educativas
(“Tabú Search for large scale timetabling problems”,
Hertz,A.,European Journal of Operations Research, 54,
1991.)
Se tratan en este trabajo dos problemas relacionados con los horarios de los
cursos y con asignar alumnos a los mismos cumpliendo una serie de
restricciones.
Nos referiremos en particular al problema de establecer los horarios.
En este caso una de las mayores dificultades está en establecer que es lo que se
va considerar la región factible, o sea el conjunto de soluciones S.
El problema consiste en asignar un horario de comienzo a todas las clases x
que se deben dictar.
Dada la cantidad de restricciones planteadas se eligen algunas para definir un
horario factible y las demás se tratan con penalidades en la función
objetivo.
Un horario se dice factible si solo pueden ocurrir los siguientes
conflictos:
• cursos dictados en forma simultánea tienen el mismo profesor.
• idem algunos alumnos en común.
• Los alumnos o los profesores no tienen suficiente tiempo para
ir de un edificio a otro.
La función objetivo queda
f(u) =  (p4 d(x,y) + o(x,y) e(x,y) )+
 b(x,y) (p5 d(x,y) + p6e(x,y))
donde para un par de turnos de clase x, y
• d(x,y) es el número de profesores en común
• e(x,y) es el número de alumnos en común
• o(x,y) depende del número de cursos opcionales entre x e y
• (puede ser 0,1 o 2)
• b(x,y) =1 si los cursos se dictan en lugares distantes y 0 sino.
• l(x) = duración del curso x
• Ut es el conjunto de cursos dictados en el periodo t
• Asignacion U = (U1……………….Uk)
Problema de localización de plantas
N talleres de una fabrica tiene que ser ubicados en N posibles ubicaciones. Se conocen
las distancias aij entre los lugares y el flujo de circulación de partes entre cada
taller.
Se desea minimizar el total de las distancias recorridas por las partes.
• Función objetivo:
F ( S ) =   aij bsisj
• Movimientos: cambiar de posición dos plantas.
• Facil de calcular el cambio de la función objetivo.
• Permite explorar todos los vecinos.
• Tamaño de N(S) O(n**2)
Lista Tabu
• Pares. Movimientos que mandan a p y q a lugares donde ya estuvieron en las
últimas t iteraciones.
• Se pueden considerar también en la lista Tabu las posiciones donde estuvieron esos
elementos.
• Tamaño variable. Puede ser al azar.
Criterios de aspiración:
El movimiento deja de ser Tabu si mejora la mejor solución hasta
el momento.
Penalidad de un movimiento:
se calcula la frecuencia fm con que un movimiento se realiza se
pone
pm =
{0
w fm
si m cumple con el criterio de aspiración
sino
y se usa como valor del movimiento
f (x + m ) – f(x) + pm
Problema de ruteo de vehículos
(“A Tabu Search heuristic for the vehicle routing
problem”, Gendreau, Hertz, Laporte, Management
Science, Vol 40, nro 10, 1994)
TABUROUTE
El problema básico de ruteo de vehículos consiste en
determinar que recorrido tienen que hacer un número de
vehículos dado para visitar un cierto número de lugares
prefijados y volver al lugar de origen con un costo o
tiempo mínimo. El conocido problema del Viajante de
Comercio es un caso particular del mismo.
• Importancia de este tipo de problemas.
En este caso particular, las características del
problema tratado fueron:
a) todas las rutas empiezan y terminan en el depósito v0
b) cada ciudad (salvo el depósito) es visitada exactamente
una vez por uno y solo un vehículo.
c) en cada ciudad hay una demanda qi (q0 = 0)
d) la demanda total de una ruta no puede superar la
capacidad de los vehículos Q.
e) en cada ciudad hay que considerar un tiempo de servicio
ti (t0 = 0 ).
f) la longitud total de una ruta (tiempo de recorrido mas
tiempo de servicio) no puede superar un valor máximo L
Algoritmo Tabu Search propuesto:
• Soluciones: Una solución S es un conjunto de m rutas R1,.....Rm
donde cada vértice vi, salvo el deposito, pertenece a una única ruta.
(las soluciones entonces no consideran las restricciones d y f).
•
Función objetivo:
F1 (S) =   cij
donde cij es el tiempo para ir de la ciudad i a la ciudad j
F2 (S) = F1 (S) + p1  max {0,[ (qi) – Q]}
+ p2  max {0, [ cij +  ti) – L]
Vecinos:
Al inicio de cada iteración se elige un cierto número de
ciudades al azar. Para cada una de ellas se hace el
siguiente procedimiento:
Una ciudad se inserta en otra ruta solo si en ella está
alguno de sus k vecinos mas próximos, o en una ruta
vacía si hace falta crear una nueva ruta. Para obtener la
nueva solución se reoptimiza esa nueva ruta.
Lista Tabu
• Se prohibe a una ciudad “volver” a una cierta ruta por un
cierto número de iteraciones.
•
Tamaño variable, y dependiente de variables
aleatorias.
Función de aspiración:
Un movimiento de la lista Tabu se acepta si la solución que
produce es factible y mejora el valor de F1 o es no
factible y mejora el valor de F2.
Ajuste de los parámetros de penalidad
Los parámetros p1 y p2 se revisan cada h iteraciones. Si las
pasadas h iteraciones produjeron soluciones que
cumplen la restricción d p1 se divide por 2, sino se
multiplica por 2. Lo mismo para p2.
Criterio de parada:
Si los valores de la función no cambiaron después de Nmax iteraciones.
Soluciones iniciales:
Si las ciudades se representan en coordenadas en el plano, se ordenan
según el ángulo que forman con el deposito. Se arma una solución
para el TSP para estas ciudades, y después se “parte” en m rutas,
donde m es el número máximo de vehículos disponibles.
Se repite este procedimiento λ veces y se toma como solución inicial del
Tabú Search la mejor solución encontrada.
La solución inicial puede ser no factible si no alcanza la cantidad de
camiones disponible.
Estrategia de diversificación: se penalizan los nodos que han hecho
“muchos” movimientos.
RESULTADOS
Se testearon con 14 problemas de literatura, de
entre 50 y 199 ciudades y se compararon los
resultados con otras 12 heuristicas clasicas o
implementaciones de simulating annealing y
Tabu Search. En la mayoría de los casos mejoró
los resultados que había hasta ese momento.
Problema de supervivencia de redes de
comunicaciones
“Solución para problemas de supervivencia de redes de
comunicaciones. Una estrategia con búsqueda Tabú”, Gustavo
Vulcano, Tesis de Licenciatura, Depto. de Computación, Facultad de
Ciencias Exactas y Naturales, UBA, 1997)
El problema consiste en diseñar una red de comunicaciones de costo
mínimo que cumpla ciertas condiciones de seguridad en el caso en
que haya una falla en alguno de sus componentes. Los
requerimientos de seguridad pueden ser muchos. En el caso
considerado aquí la red esta formada por dos tipos de centrales:
• Tipo 2, son los nodos troncales de la misma y por lo tanto la salida
de servicio de una de ellas no debe impedir la comunicación entre
cualquier otro par de centrales de tipo 2.
• Tipo 1, Su rotura podría impedir la comunicación entre otros dos
nodos.
Heurística Tabu implementada:
• Soluciones, espacio no-conexo.
• Construcción de la solución inicial: usando una
heurística constructiva llamada “greedy-earssparse”
• Para construir los vecinos se usan heurísticas
de intercambio. Después de analizar varias se
propone la 1-opt.
• Lista Tabú
• Función de Aspiración
• Problemas en que fue testeado el algoritmo
• Resultados
A tabu search algorithm for frecuency assignment:
Castelino, Hurley, Sephens, Annals of Operations
research,63,1996.
• En que consiste el problema de asignación de
frecuencias.
• Modelado como problema de coloreo de grafos con
restricciones.
• En este caso se consideró el problema de asigna
frecuencias de radio para comunicarse entre varios
lugares, donde hay transmisores y receptores. Las
frecuencias disponibles están separadas por 50 KHZ.
No todos los canales se pueden asignar.
• Se ponen restricciones para minimizar la interferencia.
Restricciones en el mismo sitio:
• Separación: cada par de frecuencias en un
mismo lugar tiene que estar separadas por una
cantidad fija (500 kHZ o 10 canales). esto se
escribe como
| fi – fj |  m
donde m es el número de canales de separación.
• “itermodulacion “
2 fi – fj  fk
3fi – 2fj  fk
fi + fj – fk  fl
2fi + fj – 2 fk  fl
Restricciones entre sitios lejanos:
• Restricción de distancia: dos radios en sitios diferentes
no deben tener asignados la misma frecuencia, al menos
que estén suficientemente lejos
| fi – fj | 0
• Restricciones de canal
| fi – fj |  m
donde m es el número de canales de separación.
Este problema es NP-Hard
Tabu Search
• Una asignación de frecuencias se representa por
un vector
(fi .............fn )
• Los vecinos difieren de la actual asignación en
una sola frecuencia. Se representan por el
movimiento que indica la posición y el valor.
• Las soluciones se evalúan en función del número
de interferencias.
• detalles de implementación
• Comparación con método de búsqueda local y
con algoritmo genético.
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
Qué tenemos que hacer para usar esta metodología para
un problema particular?
• 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” o sea los intercambios de la búsqueda local.
• Decidir el tamaño del conjunto V*  N(s) que será considerado
en cada iteración.
• Determinar el parámetro ß
• Definir criterios de parada.
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 tamañ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 < k, 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 difíciles que aparecían en la literatura.
• 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.
• Usaron solo 1,0 intercambios o sea sólo se eliminaron
columnas superfluas.
2. Máximo conjunto independiente
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.
El intercambio se hizo 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.
“A greedy randomized adaptive search procedure for job shop
scheduling”
Binato, Hery, Loewenstern, Resende (2002)
• Un conjunto de n trabajos tiene que ser procesado en un conjunto de m
máquinas.
• Cada trabajo requiere un número de operaciones o tareas que tienen que ser
hechas en un orden dado.
• Cada tarea tiene un tiempo de ejecución (independiente de la máquina
donde se lo procesa).
• Una vez que un trabajo está siendo procesado en una máquina dada no se
puede interrumpir.
• Cada máquina puede procesar un sólo trabajo por vez.
• Se quiere determinar un orden de procesamiento de los trabajos en las
máquinas de modo a minimizar el tiempo total en el cual se pueden tener
listos todos los trabajos. (makespan)
•
Una solución factible para este problema puede construirse
analizando todas las permutaciones de las tareas que tienen que
hacerse en cada máquina. (sólo hay que verificar las
restricciones de precedencia).
•
Este problema de Job Scheduling (JSP) es NP-hard. Incluso para
instancias pequeñas los métodos exactos no han tenido éxito.
•
En este trabajo se propone una heurística GRASP para el
mismo.
i)
Fase constructiva (“goloso randomizado” )
Para construir una planificación (schedule) factible se agregan las
tareas de a una.
Una operación puede ser agregada si ya han sido incluidas sus
predecesoras.Entonces en cada paso hay n candidatas (una por
trabajo).
Se elige al azar entre la tarea que hace crecer menos el makespan
hasta ese momento, y las que difieren en un porcentaje de la
misma.
(se pueden usar distribuciones de probabilidad que dan prioridad a
algunas candidatas en particular)
ii) Búsqueda Local
Se define un grafo en el cual el makespan corresponde a la longitud del
camino más largo. (camino crítico, ver gráfico en el paper).
Cualquier orientación dentro del subgrafo que corresponde a una misma
máquina define una planificación factible.
Dada una planificación se hace un intercambio a partir del camino
crítico. Se intenta cambiar un par de operaciones consecutivas
pertenecientes al camino,que se tengan que hacer en la misma
máquina.
iii) Intensificación
Se mantiene a lo largo del procedimiento un conjunto de soluciones
“elite”. En este caso se incluyen como elite soluciones mejores que
las que se tienen hasta el momento o que son muy diferentes de las
que se tiene hasta el momento.
La función para elegir la próxima tarea a incorporar a la planificación
toma en cuenta características de estas soluciones elite,
favoreciendo la elección de tareas que tienen el mismo tiempo de
inicio.
iv) POP
Cada varias iteraciones se realiza una búsqueda local sobre la
solución parcial.
• Se hicieron experimentos para determinar los mejores parámetros,
si convenía usar intensificación, etc.
• Los autores reportan muy buenos resultados en problemas test de
literatura.
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 + heurística de conjunto independiente +
extensión del subgrafo planar.
ALGORITMOS GENETICOS
Primeras ideas Holland ( 1975) (hay algún trabajo
anterior)
Basados en los principios de evolución y herencia.
Modelar o simular fenómenos naturales, evolución de
las especies, procesos de selección natural,
mutación, etc.
Vocabulario de la genética: individuos, cromosomas,
etc.
Programas o algoritmos evolutivos
Estructura general de un algoritmo evolutivo
-----------------------------------------------------------------Empezar
t := 0
inicializar P(t)
evaluar P(t)
Mientras no se cumpla la condición de parada hacer
Empezar
t:= t + 1
construir P (t) a partir de P( t-1)
modificar P(t)
evaluar P (t)
Fin
Fin
-----------------------------------------------------------------------
P(t) = {x1, x2, x3........xn} población de la generación t
Los xk son los individuos de esa población. Cada uno representa
una solución del problema que se está tratando.
Se evalúa cada individuo usando una función apropiada para
medirlo.
Para formar la población de la siguiente generación se eligen los
mejores, se realiza el cruzamiento y eventualmente se realiza
una mutación.
Después de un numero de generaciones se espera que el mejor
individuo represente una buena solución (casi óptima).
Qué hace falta para construir un algoritmo genético
para un problema particular?
• representación “genética” de las soluciones
•
forma de generar la población inicial
•
función de evaluación
• operadores genéticos que alteren la
composición de los hijos.
•
determinación de parámetros (tamaño de la población,
probabilidad de aplicar operadores genéticos, etc.)
Minimización de una función
max f(x) = x sen (10 pi x) + 1
s.a.
–1 < x < 2
Se puede resolver analíticamente
Representación:
Cromosoma: vector binario de longitud relacionada con la precisión
requerida (en este caso queremos 6 decimales)
[-1,2] tiene que dividirse en 3000000 intervalos
(22 bits)
2097152 = 2**21 < 3000000 < 2**22 = 4194304
Para convertir un string binario en un número real:
pasar (b21...............b0) de base 2 a base 10 y obtener x’
x = -1 + x’ * (3/ 2**22 –1)
Población inicial
Se construye una población de vectores de binarios de 22 bits.
Evaluación
La función de evaluación es la función f
Operadores genéticos
Mutación
Se altera uno o mas genes con una probabilidad igual a
la tasa de mutación predeterminada
Por ejemplo si el 5to gen de
v3 = (1110100000111111000101)
es elegido para mutación el nuevo cromosoma queda
v3”= (1110000000111111000101)
En cambio si se eligiera el 10mo gen quedaría
v3” = (1110000001111111000101)
Cruzamiento
Supongamos que tienen que cruzarse v2 y v3 y que el punto de
cruzamiento queda en el 5to gen.
Entonces si
v2 = (0000001110000000010000)
v3 =(1110000000111111000101)
los nuevos cromosomas son
v2”= (0000000000111111000101)
v3” = (1110001110000000010000)
Parámetros
• Tamaño de la población
• Probabilidad de cruzamiento
• Probabilidad de mutación
50
0.25
0.01
Resultados
Después de 150 generaciones:
vmax = (111........................) = 1.850773
f(vmax) = 2.85
# de Generación
Función de evaluación
1
1.441942
6
2.250003
8
2.250283
9
2.250284
10
2.250363
12
2.328077
39
2.344251
40
2.345087
51
2.738930
99
2.849346
137
2.850217
145
2.850227
Más detalles:
• Población inicial al azar de tamaño al azar
• Se calcula eval (vi) para cada cromosoma vi de la
población.
• Valor de la población:
F= i eval (vi)
•
Probabilidad de selección de vi
pi = eval(vi) / F
• Probabilidad de selección:
qi = 1j pj
Proceso de selección de la nueva población:
Hacer pop veces:
• Generar un número al azar r en el intervalo (0,1)
• Si r < q1 elegir v1 sino elegir i tal que
qi-1 < r < qi
(algunos cromosomas pueden ser elegidos más de
una vez)
Crossover (entre los individuos de la nueva población):
Dada la probabilidad dada de crossover pc
(parámetro) se toman pc * pop cromosomas
para participar del cruzamiento.
• Para cada cromosoma de la nueva población:
generar r al azar en (0,1)
• si r < pc elegir el cromosoma para cruzamiento
Aparear los cromosomas elegidos. Para cada par
determinar al azar pos
(b1,b2.....bpos,bpos+1,...........bm)
(c1,c2.....cpos,cpos+1,............cm)
se reemplazan por
(b1,b2.....bpos,cpos+1,...........cm)
(c1,c2.....cpos,bpos+1,............bm)
Mutación:
Dada la probabilidad de mutación pm se cambian
pm * m * pop bits.
• Para cada cromosoma y para cada bit generar r al
azar entre 0 y 1.
• Si r < pm cambiar el bit.
El dilema del prisionero
Cuento : “dos prisioneros están en
celdas separadas, imposibilitados
de comunicarse y se les pide que
traicionen al otro en forma
independiente............”
• El dilema del prisionero puede
jugarse como un juego de 2
jugadores, donde cada uno a su
turno traiciona o coopera con el otro.
El puntaje que cada uno saca esta
dado por la siguiente tabla:
Jugador 1
Traiciona
Traiciona
Coopera
Coopera
Jugador 2
Traiciona
Coopera
Traiciona
Coopera
P1 P2
1 1
5 0
0 5
3 3
Queremos diseñar un algoritmo que aprenda una
estrategia para jugar al dilema del prisionero:
Representación de la estrategia
• Consideraremos estrategias determinísticas, que usen los
resultados de las tres últimas jugadas para decidir la
jugada actual.
• Una estrategia se representa por un string de 64 bits
indicando que hacer después de cada una de las posibles
historias, más 6 bits para iniciar el juego (total 70 bits).
Esquema del algoritmo:
•
Elegir una población inicial: a cada jugador se le asigna
al azar un string.
•
Para determinar el score de cada jugador haciéndolo
jugar con los otros. El score es el promedio de todos los
juegos.
• Un jugador con score promedio se le asigna un par, a
uno por debajo del promedio ninguna, y a los que están
por encima 2 parejas.
•
Los jugadores exitosos se aparean al azar para producir
dos descendientes por pareja. La estrategia de cada
descendiente se arma a partir de la estrategia de sus
padres usando crossover y mutación.
Resultados experimentales:
• Partiendo de una población al azar se obtuvieron
poblaciones donde el jugador medio era tan exitoso como
el de las mejores heurísticas conocidas hasta el
momento.
• Se sacaron conclusiones acerca del “comportamiento” de
los mejores jugadores:
i) Continúe cooperando después de tres cooperaciones
mutuas .... (ponga C después de recibir (CC)(CC)(CC))
ii)Provoque: traicione después que el otro traiciona
después de varias cooperaciones (ponga D después de
recibir (CC)(CC)(CD))
El problema del viajante de comercio
Representación:
Conviene usar vector binario en este caso?. Haría falta un vector
binario de [log2 n] bits para cada ciudad, n [log2 n] en total.
Que pasaría con el crossover y la mutación?.
Algoritmos de reparación
Es mejor usar una representación entera. Usamos un vector
(i1,i2,......in) para representar un tour.
Inicialización:
Se pueden usar heurísticas constructivas empezando de distintas
ciudades o generar los tours al azar.
Crossover:
Hay muchas posibilidades, por ejemplo:
Padres :
(1,2,3,4,5,6,7,8,9,10,11,12)
(7,3,1,11,4,12,5,2,10,9,6,8)
Se toma por ejemplo el segmento (4,5,6,7) y queda el
descendiente:
(1,11,12,4,5,6,7,2,10,9,8,3)
De la misma forma se construye el otro hijo.
Se puede hacer mutación acá?.Cámo?
Otra representación: La ciudad i está en la posición j si el
tour va de la ciudd I a la ciudad j.
Posible cruzamiento:
Elegir al azar un eje del primer padre, después elegir el eje que sigue
del segundo y así siguiendo. (Si elige un eje que genera subtour, se
elige al azar uno que no genere subtour).
Ej: padres
(2 3 8 7 9 1 4 5 6)
(7 5 1 6 9 2 8 4 3)
Hijo: (2 5 8 7 9 1 6 4 3)
Otra posibilidad de cruzamiento.
Elegir una ciudad al azar y después el menor eje
de ambos padres saliendo de esa ciudad. Si ese
produce ciclo elegir el otro. Si ese también
produce ciclo elegir otro dentro de un pool de q
ejes elegidos al azar.
Otra representación:
Si tenemos el tour
C= (1 2 4 3 8 5 9 6 7)
se representa por (1 1 2 1 4 1 3 1 1)
(i representa la posición en la que está la ciudad
que sigue en el orden en el tour que queda
después que se fueron sacando las anteriores).
Acá se puede usar el cruzamiento “clásico”.
Padres:
(1 1 2 1 4 1 3 1 1)
( 5 1 5 5 5 3 3 2 1)
Hijos
(1 1 2 1 5 3 3 2 1)
(5 1 5 5 4 1 3 1 1)
corresponden a tours válidos
Ver que significa esto respecto de los circuitos
representados por los padres y los hijos.
Representaciones matriciales;
M matriz binaria donde mij = 1 si la ciudad i está
antes que la ciudad j en el circuito.
Características de estas matrices?.
Ideas de cruzamiento?
Porqué funcionan los algoritmos genéticos (con
representación binaria)?.
Esquemas
( x x 1 1 x x 0 0 1 1 x 1)
( 1 1 0 1 1 x x 1 1 1 1 0)
Idea de porqué sobreviven los mejores esquemas.
• Orden de un esquema
• Longitud de un esquema
Teorema del esquema. (“Schema Theorem”):
Los esquemas cortos, de bajo orden, de valor
(“fitness”) por encima de la media van a ser
revisados un número exponencialmente
creciente de veces en las generaciones de un
algoritmo genético.
A family of genetic algorithms for the pallet loading
problem. Herbert, Dowsland, ANOR, 1996.
• “Pallet loading” o “Two dimensional packing
problem”.
• El container y las piezas son rectangulares. En
este caso las piezas son todas iguales.
• Las piezas se acomodan paralelas a los bordes
• Qué consideran una solución?.
Una ubicación de las cajas en cualquier lugar del
rectángulo aunque se superpongan.
• Cómo representarla?
Se considera al rectángulo total y a las cajas como
tableros de ajedrez, y se permite la ubicación de las
cajas sólo en valores enteros.
Las coordenadas son múltiplos enteros de los anchos y
largos de las cajas.
Una solución factible se define por un conjunto de
posiciones ocupadas. Se representa por una matriz
binaria que indica si en la posición i hay una caja o no.
• Cómo hacer crossover y mutación?
Para hacer crossover se “corta” la matriz entre dos
posiciones y se toma una parte de un padre y otra del
otro.
La mutación es la clásica, cambiar un bit con una
probabilidad baja.
• Función objetivo
Si k es una solución se toma
f(k) = w1 n(k) – w2 m(k)
n(k): nro de cajas ubicadas, m(k) mide la superposición, wi,
pesos.
Se usaron varias versiones de la función m(k):n ro de cajas
que overlap, nro de pares de cajas que overlap
Otra función:
f(k) = a n(k) – 2 q(k)
donde a es el área de cada caja y q(k) es el área con
overlap. Se toman en cuenta todas las funciones para
elegir los individuos a cruzar.
• Cómo generar la primera población?
Se eligió no formarla con buenas soluciones iniciales.
En cambio se genera asignando a cada bit de cada
solución valor 1 con probabilidad opt/n
donde opt es un valor aproximado del número de cajas en
una solución óptima y n es el nro de bits de cada
individuo.
• Reparación de soluciones
En la solución final puede haber soluciones no factibles.
En lugar de hacer una reparación simple descartando
cajas que se superponen, se usa un operador de
reparación basado en un modelo teórico de grafos. Se
usa un modelo donde las posiciones de las cajas se
representan en los nodos y se pone un eje si las
posiciones de las cajas no se superponen. Se busca la
clique máxima. (en este caso se pudo resolver el
problema de clique porque hay pocas superposiciones).
• Parámetros
Genetic and hybrid algorithms for graph coloring
C.Fleurent,J. Ferland,
Annals of Operations Research, 63,1996
• Los algoritmos genéticos “puros” no funcionan bien para
problemas de optimización combinatoria.
• Esquemas híbridos
• Se quiere colorear un grafo con k colores.
• Individuos: permutaciones de los nodos. Se evalúan
usando una modificación de algoritmo de coloreo
secuencial. (cuándo no hay más colores posibles se usa
el que ha sido menos usado en los vecinos)
Crossover:
Se genera al azar un vector binario str. Se copian los elementos del
primer padre correspondientes a las posiciones que tienen
str(i) = 1. El resto de los nodos se ponen de acuerdo al orden en que
están en el segundo padre.
padre1
padre2
str
Primer paso
hijo
1
2
2
5
0
2
0
8
3
8
4 5 6 7 8
1 9 3 7 4
1 0 1 1 1
3 - 5 6 7
3 1 5 6 7
9
6
0 1
- 9
4 9
Mutación:
se eligen dos posiciones al azar. Se mezclan al azar los
elementos entre esas dos posiciones.
283156749
Se eligen al azar la 3era y la 6ta posición.
286135749
Otras propuestas de representación y crossover. Si el
conjunto de nodos se parte en k subconjuntos
C1, C2……. Ck , se arma un string donde s(i) = j si i  Cj
Varias propuestas de crossover:
i)
ii)
iii)
Elegir un punto al azar y cambiar las dos partes de los
padres.
Elegir dos puntos al azar y cambiar la parte entre esos
dos puntos.
Determinar un vector binario al azar y cambiar los
elementos de los dos padres correspondientes a los
bits iguales a 1.
Función objetivo:
F(C1, C2……. Ck) = j E(Cj) 
Las soluciones se ordenan de acuerdo a el valor de un
rango en el cual las mejores soluciones se ponen
primero. Se elige al azar dando mayor probabilidad de
ser elegidas a las soluciones mejores.
Para elegir un padre se elige al azar un nro u en [0,N1/r ]
donde r es un parámetro en el intervalo [1,2] .
Se toma el individuo en posición como padre. La
posibilidad de elegir buenos padres crece con r.
En este caso se pone r=2 y después se va haciendo
decrecer según r = 1+D donde D es una medida de la
diversidad de la población.
Diversidad de una población P:
ηij es el nro de individuos de P en los cuales el nodo i tiene color j
Di= (- j, ηij≠0 (ηij / P ) log (ηij / P ))/ log k
D = (i, Di) / V 
D es un valor normalizado en el intervalo [0,1] que indica la diversidad
de la población. Una población con todos sus individuos idénticos
tiene entropía D igual a 0.
D se usa para decidir criterios de parada y elección de padres a cruzar
Algoritmo Híbrido:
Los autores proponen una combinación de este algoritmo
genético con búsqueda local o con el algoritmo
TABUCOL (Tabu search), usados como mutación.
Algoritmo genético para diseño de redes de
comunicaciones usando Self Healing Rings
• Redes de telecomunicaciones
• Qué es un self healing ring (SHR)?. En este caso se usan
anillos unidireccionales.
• Add-drop-multiplexers
• Stacked rings (paralelos, concéntricos)
• Hub que pertenece a todos los anillos.
En este caso se asume que:
• Cada nodo puede ser servido por muchos SHR´s con un ADM
para cada uno. Hay un costo por colocar cada ADM.
• Una demanda dada entre un par de nodos i y j debe seguir una
única ruta en los anillos.
• El hub puede ser usado para cambiar tráfico entre los anillos.
Hay un costo por cada unidad de tráfico que cambia de anillo.
• Hay un límite a la cantidad de ADM que pueden estar
conectados a un SHR.
• La capacidad de cada SHR es limitada.
El problema es entonces:
Determinar a que anillos tiene que ser conectado cada nodo y
como rutear las demandas a costo mínimo.
• El problema se puede formular matemáticamente como un
problema de programación lineal entera.
Algoritmo Genético
• N número de nodos, R número de anillos
• Representación: Cromosomas binarios de longitud (N-1)R,
indicando si para el nodo i hay un ADM en el anillo k.
• A partir de allí se usa una heurística para determinar como se
rutean las demandas.
• Población inicial: se genera parte al azar y parte usando una
heurística.
• Función objetivo: costos + penalidad por no poder rutear todas
las demandas.
• Nueva generación: se elige un padre “bueno” de acuerdo al
valor de la función de evaluación y otro al azar con
distribución uniforme.
• Cruzamiento clásico,
• Mutación
• Puede requerir un procedimiento de “reparación”.
• Criterio de parada.
Heurística para el ruteo de demandas
1.
2.
3.
4.
5.
6.
7.
8.
Basada en los valores de los xik determinar para cada dij todas
las posibles rutas.
Si una demanda tiene una sola ruta posible asignarla a ella.
Actualizar para cada demanda no asignada el conjunto de
rutas factibles. Si alguna queda con una sola posibilidad
volver a 2.
Asignar en primer lugar a un sólo anillo, las demandas con
menores posibilidades, y dentro de ellas la que tiene mayor dij
Actualizar los dij. Si corresponde volver a 2, sino a 3.
Asignar demandas a rutas en dos anillos.
Actualizar los dij. Ir a 6.
Si no hay demandas no asignadas parar. Sino tendremos una
solución nofactible: asignar las demandas no asignadas lo
mejor posible (en orden decreciente de los dij y tomando en
cuenta las que poducen “menor infactibilidad” )
Heurísticas iniciales;
Se usan dos heurísticas basadas en ideas de GRASP (describimos
una de ellas acá)
•
1.
Heurística para generar soluciones iniciales donde cada nodo
está en un sólo anillo. Trata de crear R subconjuntos de
nodos combinando paso a paso varios grupos de notos.
Ordenar las demandas dij en orden decreciente. La lista de
candidatos es una lista que contiene las demandas no
procesadas de mayor valor, s es un paramétro del algoritmo,
el tamaño de la lista de candidatos es min{s,q}. Elegir al azar
dij de la lista de candidatos:
i) si ni i ni j están en ningún grupo abrir un grupo nuevo
ii) si uno de los nodos está en un grupo, agregar el otro nodo
al grupo si no se violan las restricciones. Sino ponerlo en un
grupo nuevo.
3.
iii) Si cada nodo pertenece a un grupo diferente, combinar
los dos grupos en uno si no se viola ninguna restricción.
Sino dejar los grupos como están.
Si quedan más de R grupos, recorrer todos los pares en
orden arbitrario. Si es posible combinar los dos grupos en
uno sólo. Repetir hasta que haya R grupos o menos o hasta
que no se encuentren soluciones factibles. Si quedan más de
R grupos se hacen combinaciones no factibles, empezando
por combinar los dos grupos más pequeños. Si la solución
viola la cantidad de nodos se repara. Para las violación de
cantidad de tráfico se usa la función de penalidad.
Resultados:
• Experimentos para fijar parámetros
• Se comparó con CPLEX para problemas de 10 a 15 nodos.
Soluciones casi óptimas a un tiempo muchísimo menor-
Ventajas y desventajas de los Algoritmos Genéticos
Inicialmente GA se usaba para problemas típicos de Inteligencia
Artificial (reconocimiento de patrones, machine learning, etc.)
Aplicaciones exitosas a problemas de Optimización
Problema: como hacer la representación.
Ventajas...............
COLONIA DE HORMIGAS
(primeras ideas Dorigo , Colorni, Maniezzo, 1991)
Inspiración en modelo biológico:
comportamiento de una colonia de hormigas (Argentine
ants) en un experimento de laboratorio donde tenían
que llegar a la comida por uno de dos puentes de
distinta longitud. Después de unos minutos la mayoría
de las hormigas eligen siempre el más corto. Las
hormigas dejan una huella de pheromona cada vez
que recorren un camino. Cada vez que una hormiga
llega a una intersección elige para seguir la rama
por donde hay más pheromona.
A partir de allí surgen las ideas básicas que permiten
construir soluciones a problemas de optimización:
• buscar en forma paralela a lo largo de  huellas o
caminos
• guardar traza de los caminos prometedores
Cada hormiga funciona como un agente
computacional que en cada iteración t produce una
solución completa del problema que va
construyendo paso a paso.
Características principales de un algoritmo de colonia de
hormigas para problemas de optimización combinatoria:
Para cada problema particular tenemos que definir:
• Un conjunto finito de componentes C = {c1, c2 ... cn}
• Un conjunto finito L de posibles conexiones o transiciones
entre los elementos de C
• Para cada lij  L un costo de conexión Jij
• Un conjunto de restricciones sobre los elementos de C y L
El problema se representa por un grafo G = ( C, L). las
soluciones se pueden pensar como caminos factibles en G.
• Los estados del problema se definen como
sucesiones de elementos de C, s =( ci1, ci2...... cik).
Estados factibles o soluciones.
• Una estructura de vecinos
• Un costo asociado a cada solución
• ij valor heurístico asociado a un eje conteniendo
información a priori sobre el problema.
Objetivos y más detalles:
• Obtener una solución intercambiando información entre las
hormigas, mejor que la que cada una construye
individualmente.
• Cada hormiga usa información propia o del nodo que esta
visitando o de la conexión que que está recorriendo.
• Las hormigas se comunican entre ellas en forma
indirecta a través de la información que proveen las
huellas de pheromona.
• Las hormigas no tienen un comportamiento adaptativo
individual.
• Cada hormiga busca una solución de mínimo costo.
• Cada hormiga tiene una memoria que puede usar para
almacenar información del camino que esta
recorriendo. la memoria se puede usar para construir
una solución factible, para evaluar la solución actual y
para reconstruir el camino hacia atrás.
• Una hormiga en estado sr puede moverse a cualquier
nodo de su vecindario N. Se mueve en función de una
regla probabilística de decisión.
• Cuando la hormiga se mueve del nodo i al nodo j se
puede actualizar el valor de la huella de pheromona
ij. O sino cuando termina de construir la solución
recorre el camino hacia atrás y actualiza entonces ij .
• Cuando terminan su trabajo de construir la solución y
actualizar la pheromona, la hormiga “muere”.
Evaporación de la pheromona:
Se disminuye la intensidad de la pheromona a lo largo
de las iteraciones para evitar una convergencia muy
rápida a un óptimo local.
Esquema general de un algoritmo de colonia de hormigas:
• ij valor que indica la atracción a priori del
movimiento (i,j)
• pk ij= (ij + (1 - ) ij )/ ((ij + (1 - ) ij ))
donde la sumatoria del denominador es sobre los movimientos posibles para la
hormiga k.
• 0   < 1,  parámetros definidos por el usuario.
Esquema:
1. Inicialización
2. Construcción
Para k=1,m hacer hasta que k termine:
Repetir
- Calcular ij para todo (i,j)
- Elegir el próximo movimiento con probabilidad pk ij
- Agregar el movimiento a la lista Tabú de la hormiga k.
3. Actualización de la huella
Para cada movimiento (i,j) calcular ij y actualizar
la matriz de trazas.
ij =  ij + ij
4. Si se verifica condición de parada parar, sino repetir.
Otra forma de la regla de transición de estados
 (i,j)   . (i,j)   si (i,j) Tabuk
  (i,z)  . (i,z) 
Pk(i,j) =
(i,z)  TabuK
0
si (i,j)  Tabuk
Pseudo Código de Colonia de Hormigas
Inicialización de niveles de pheromona, seteo de parámetros.
Loop /*Para cada iteración t */
Inicializar hormigas
Loop /* Para cada paso  */
For cada hormiga k
Armar un conjunto Ak de estados de expansión posibles a
partir del estado actual de la hormiga k.
Aplicar la regla de transición de estados sobre el conjunto
Ak y elegir un nuevo estado j.
End
Until todas las hormigas hayan generado una solución completa
del problema.
Actualizar niveles de pheromona.
Until condicion_de_finalización
Aplicación al problema del viajante de comercio
Cada hormiga es un agente con las siguientes
características:
 En cada paso elegir una ciudad a visitar en base a
Pk(i,j).
 No repetir ciudades hasta completar un tour.
 Al completar un tour, depositar pheromona sobre
los arcos del mismo.
Regla de transición o sea probabilidad con la cual una
hormiga k posicionada en la ciudad i elige moverse hacia
la ciudad j:
Pk(i,j) =
 (i,j) 
 .
  (i,z)
.
(i,j) 

(i,z)

si j Vecinosk(i)
z  Vecinosk(i)
0
sino
Actualización de la feromona al terminar cada ciclo:
m
(i,j) =  . (i,j) +   k (i,j)
k =1
•  es el coeficiente de persistencia de pheromona o
sea ( 0<  <1), (1 - ) representa la evaporación.
•  k (i,j) representa la cantidad de pheromona
depositada en los arcos por la hormiga k.
Q / Lk si (i,j) pertenece al tour generado
por la hormiga k
 k (i,j) =
0
sino
• Q es una constante,
• Lk la longitud del tour generado por la hormiga k.
Otra forma de actualizar la feromona:
Después que todas las hormigas completaron su tour, cada una
de ellas deposita una cantidad de pheromona igual a
k (t) = 1 / Lk (t)
en cada eje lij usado donde Lk (t) es la longitud del tour hecho
por la hormiga k en la interación t. o sea
ij (t) ----------- ij (t) + k (t)
para todo eje (i,j) que haya sido usado por alguna hormiga.
Evaporación de pheromona:
ij (t) ------- (1- ) ij (t)
Sobre este equema básico se han propuestos muchas
variantes de colonia de hormigas para el TSP (y para
otros problemas también)
• Sistemas elitistas: usar la información del mejor tour
hallado hasta el momento.
• La pheromona depositada depende del “rango” de las
hormigas.
• Sistemas de colonia de hormigas Max-Min: se limita
el rango de variación de la pheronoma.
• Regla pseudoramdom para elegir el próximo elemento.
Mínima supersecuencia común entre L strings.
(aplicaciones a análisis de ADN y a procesos de
producción).(Michel, Middendorf, 1999). No usa
función heurística.
L = {bbbaaa,bbaab,cbaab,cbaaa}
Una supersecuencia mínima en este caso es
(cbbbaaab)
Notación sij denota el carácter de Li en la posición j
Cada hormiga construye una supersecuencia empezando
por el primer carácter de uno de los strings. Este
carácter se saca del string.
Después en cada paso:
i) Elige un carácter que sea el primero de al menos un
string (con ciertos criterios).
ii) Saca ese carácter de esos primeros lugares.
iii) Se repite sobre el nuevo conjunto de strings L´,
hasta que L´esté constituido sólo por strings vacíos.
Más detalles:
• vk = (v1k….vlk) con l = | L| , vik apunta a la primera
posición si vik de Li (la posición que tiene un candidato
para incluir)
Ej; con el L del ejemplo, vk = (2,2,3,3) y
s1v1k = s12 = b
s2v2k = s22 = b
s3v3k = s33 = a
s4v4k = s43 = a
Inicialmente vk = (1,1,1,1), al final vk = (|L1| + 1,… (|Ll| + 1}
En cada paso, dentro de los posibles caracteres a agregar
la hormiga k elige usando la fórmula pseudorandom
entre los elementos de Nvkk = {x/ existe i tq x = si vik }
usando como feromona la suma de la feromona de todas
las apariciones de x en los l strings:
 ivik
(la suma es sobre los i tq si vik = x).
O sea la feromona toma en cuenta la cantidad de veces
que aparece x como primer elemento y es mayor
cuanto mayor es la feromona en las componentes sij
para las cuales si vik = x.
Describen otra variante que toma en cuenta cuántos
caracteres de Li faltan cubrir.
Se actualiza después el vector vk
vik =
{v
k+
i
vik
1
si si vik = x
sino
Actualización de la feromona:
Se toma en cuenta el rango de las hormigas ordenadas de
acuerdo a la calidad de sus soluciones en esa
iteración, para actualizar la feromona o sea se usa una
fórmula del tipo:
 k = g(rk) / |sk|
donde g es una función que depende del rango de k.
Se define un vector zk = (z1k….zlk) donde zik apunta a un
carater de Li candidato a recibir feromona.
zk se inicializa como (1,…1)
sk es la secuencia construida por la hormiga k.
xh carácter en la posición h en sk
Se pone:
Mhk = {sizik / sizik = xh}
Se actualiza:
zik = zik + 1
vik
si si zik = x
sino
Entonces la feromona que deposita la hormiga en cada
componente que visita queda:
ij k = ( k / | Mhk| )(2 (|sk| -h+1)/ (|sk|2 + |sk|))
La suma total de la feromona depositada por la hormiga
k es  k.
Cada carácter de un string recibe una cantidad de
feromona que depende de cuán pronto fue elegido por
la hormiga k, cuán buena es la solución sk y el
número de strings de los cuales fue elegido en el
mismo paso de la construcción.
Otras características:
• Usa un paso de “mirar hacia delante antes de decidir”
y usa los resultados de ese mirar hacia delante como
la heurística usual en colonia de hormigas.
• Varias colonias de hormigas trabajan en paralelo.
• Colonias que trabajan hacia delante y hacia atrás
• Muy buenos resultados.
• Scheduling: varias aplicaciones
• Set covering: (Leguizamon, Michalewicz, 2000 y
Hadji et al., 2000).Dada una matriz binaria A, donde
cada columna tiene un costo, encontrar el conjunto de
columnas que cubre las filas a costo mínimo. La
heurística usada para elegir columnas está basada en
cuántas filas quedan cubiertas al elegir una columna.
Búsqueda local. Los resultados fueron buenos pero
no mejoraron los mejores resultados hasta el
momento.
• Partición de un grafo en árboles: (Cordone, Maffioli, 2003).
Problema que se presenta en el área diseño de redes de
comunicaciones. Se tiene un grafo con costos en los ejes y
pesos en los nodos. Se quiere encontrar un bosque de p árboles
generador del grafo, de costo mínimo y tal que el peso de cada
árbol esté entre dos valores dados W- y W+. En este caso cada
nodo j tiene p valores ij de feromona, indicando si es
conveniente que forme parte del árbol Ti. La función heurística
es el costo mínimo de agregar el nodo cj al árbol Ti,
multiplicada por una penalidad.
Cada hormiga construye una solución completa. Se aplica un
procedimiento de búsqueda local al final.
Elección de los nodos iniciales: se eligen p nodos al azar.
Después se generan árboles con el algoritmo goloso, y se
eligen como nodos iniciales los centroides de estos árboles.
K-árbol mínimo: Hamacher,Jornsten, Foulds, Hamacher,
Wilson, (1998) Borndorfer, Ferreira,Martin, 1998).
Aplicaciones a leasing de reservas de petróleo, a ubicación de
plantas, etc. La heurística es la longitud de los arcos. Las
hormigas empiezan desde un eje elegido al azar y usan la regla
pesudo-random proportional con q0 = 0.8.
Al final de cada iteración se aplica Tabú Search a la mejor
solución obtenida.
Otras aplicaciones:
•
•
•
•
•
Protein Folding
Bin Packing
Conjunto independiente máximo
Problema de la mochila
Planificación deportiva
• ACO Algorithms achiece state of the art performance
for several application problems (resource project
scheduling problem, quadratic assignement, vechicle
routing problem with time window,bin packing,
shortest common spersequence, single machine total
weighted tardiness problem (Dorigo, Stutzle, 2004).
• Problems where other algorithms appear to be
superior to ACO: Graph coloring, job shop. (Dorigo,
Stutzle, 2004)
Scatter Search
Scatter Search: diseño básico y estrategias avanzadas Martí,
Laguna, (2004)
Scatter Search se basa en combinar las soluciones que aparecen
en el llamado conjunto de referencia. Esteconjunto almacena
las ”buenas” soluciones que se hanido encontrando durante el
proceso de búsqueda. Es importante destacar que el significado
de buena no se restringe a la calidad de la solución, sino que
también se considera la diversidad que esta aporta al conjunto
de referencia.
SS consta básicamente de cinco elementos:
• Diversification Generation Method.
Un generador de soluciones diversas. El método se basa en generar
un conjunto P de soluciones diversas (alrededor de 100), del
que extraeremos un subconjunto pequeño (alrededor de b=10)
que denominamos conjunto de referencia RefSet.
• Improvement Method.
Típicamente se trata de un método de búsqueda local para mejorar
las soluciones, tanto del conjunto de referencia como las
combinadas antes de estudiar su inclusión en el conjunto de
referencia. Es importante destacar que en las implementaciones
donde se manejen soluciones no factibles, este método ha de ser
capaz de, a partir
de una solución no factible, obtener una que sea factible y después
intentar mejorar su valor. Si el método no logra mejorar a la
solución inicial, se considera que el resultado es la propia
solución inicial.
•
Reference Set Update Method.
Crear y actualizar el conjunto de referencia RefSet.
A partir del conjunto de soluciones diversas P se extrae el conjunto
de referencia según el criterio de contener soluciones de calidad
y diferentes entre sí (Calidad y Diversidad). Las soluciones en
este conjunto están ordenadas de mejor a peor respecto de su
calidad.
i) Creación. Iniciamos el conjunto de referencia con las b/2
(|RefSet|=b) mejores soluciones de P. Las b/2 restantes se
extraen de P con el criterio de maximizar la mínima distancia
con las ya incluidas en el conjunto de referencia. Para ello
debemos de definir previamente una función de distancia en el
problema.
ii) Actualización.
Las soluciones fruto de las combinaciones pueden entrar en el
conjunto de referencia y reemplazar a alguna de las ya
incluidas, en caso de que las mejoren. Así pues, el conjunto de
referencia mantiene un tamaño b constante, pero el valor de sus
soluciones va mejorando a lo largo de labúsqueda. En
implementaciones sencillas, la actualización de este conjunto se
realiza únicamente por calidad, aunque se puede hacer también
por diversidad.
• Subset Generation Method.
Un método para generar subconjuntos de RefSet a los que se
aplicará el método de combinación. SS se basa en examinar de
una forma bastante exhaustiva todas las combinaciones del
RefSet. Este método especifica la forma en que se seleccionan
los subconjuntos para aplicarles el método de combinación.
Una implementación sencilla, utilizada a menudo, consiste en
restringir la búsqueda a parejas de soluciones. Así el método
considera todas las parejas que se pueden formar con los
elementos del RefSet y a todas ellas le aplica el método de
combinación.
• Solution Combination Method.
SS se basa en combinar todas las soluciones del conjunto de
referencia. Para ello, se consideran los subconjuntos formados
por el método del paso 4, y se les aplica el método de
combinación. La solución o soluciones que se obtienen de esta
combinación pueden ser inmediatamente introducidas en el
conjunto de referencia o almacenadas temporalmente en una
lista hasta terminar de realizar todas las combinaciones y
después ver qué soluciones entran en éste.
Algoritmo Scatter Search
1. Comenzar con P = Ø. Utilizar el método de generación
para construir una solución y el método de mejora para
tratar de mejorarla; sea x la solución obtenida. Si x∉ P
entonces añadir x a P. (i.e., P = P ∪ x ), en otro caso,
rechazar x.
Repetir esta etapa hasta que P tenga un tamaño prefijado.
2. Construir el conjunto de referencia
RefSet = { x1, …, xb } con las b/2 mejores soluciones de P
y las b/2 soluciones de P más diversas a las ya incluidas.
3. Evaluar las soluciones en RefSet y ordenarlas de mejor
a peor respecto a la función objetivo.
4. Hacer NuevaSolución = TRUE
Mientras (NuevaSolución)
5. NuevaSolucion = FALSE
6. Generar los subconjuntos de RefSet en los que
haya al menos una nueva solución.
Mientras (Queden subconjuntos sin examinar)
7. Seleccionar un subconjunto y etiquetarlo como
examinado.
8. Aplicar el método de combinación a las soluciones
del subconjunto.
9. Aplicar el método de mejora a cada solución obtenida
por combinación. Sea x la solución mejorada:
Si( f (x)< f (xb ) y x no está en RefSet)
10. Hacer xb = x y reordenar Refset
11. Hacer NuevaSolucion = TRUE
Ejemplo Scatter Search problema de la mochila
Max 11x1 + 10 x2 + 9 x3 + 12 x4 + 10 x5 + 6 x6 + 7 x7 + 5 x8 + 3 x9 + 8 x10
Sujeto a
33 x1 + 27 x2 + 16 x3 + 14 x4 + 29 x5 + 30 x6 + 31 x7 + 33 x8 + 14 x9 + 18 x10 ≤ 100
xi  {0,1}
• Método de diversificación
• Método de mejora
• Método para actualizar el conjunto de
referencia
• Método para generar el subconjunto
• Método de combinación de soluciones.
An experimental evaluation of a Scatter Search for the Linear
Ordering Problem, Campos, Glover, Laguna, Martí (1999).
• Dada una matriz con pesos el LOP consiste en encontrar una
permutación p de las columnas (y filas) que maximice la suma
de los pesos en el triángulo superior.
• En términos de grafos se trata de encontrar un “tournament”
acíclico tal que la suma de las longitudes de los arcos sea
máxima.
• El LOP tiene numerosas aplicaciones. Dos ejemplos bien
conocidos son la triangulación de las matrices insumo producto
de una economía, donde el ordenamiento óptimo permite a los
economistas extraer información acerca de la estabilidad de la
misma, o el problema de estratificación en arqueología, donde
el LOP es usado para encontrar el orden cronológico más
probable de las muestras encontradas en distintos lugares.
• LOP es NP-hard
• Diversification generator: testearon 10 métodos, 6 basados en
GRASP, uno es una combinación de estos 6, uno es azar, uno
que usa memoria basada en frecuencia. Se quedan con este
último.
• Improvement Method: permutaciones
• Reference Set Uptade method : se mantiene la información
de cuales son las b mejores soluciones encontradas hasta el
momento.
• Subset Generation Method: varios tipos de subconjuntos:
todos los pares, subconjuntos de 3 obtenidos de los de dos,
subconjuntos de los mejores i elementos para i desde 5 a b.
• Solution Combination Method: reglas para combinar las
soluciones entre si. Cada solución vota por su primer elemento
que no está en la combinación hasta el momento.
Overall Procedure
1. Start with P = Ø. Use the diversification generator DG10 to construct a
solution s. Apply the Improvement Method to s to obtain the improved
solution s* . If s* Ï P then, add s* to P (i.e., P = P Ès* ), otherwise,
discard s*. Repeat this step until |P| = PSize.
2. Order the solutions in P according to their objective function value (where
the best overall solution is first on the list).
3. Build RefSet from P, with |RefSet| = b1+b2 (i.e., b = b1+b2). Take the first
b1 solutions in P and assign them to RefSet. For each solution x in PRefSet, calculate the minimum dissimilarity d(RefSet,x) to all solutions in
RefSet. Select the solution x¢ with the maximum dissimilarity d(RefSet,x¢)
of all x in P-RefSet. Add x¢ to RefSet, until |RefSet| = b1+b2. Make
NewElements = TRUE.
While (NewElements) do
4. Calculate the number of subsets (MaxSubset) that include at least one new
element. Make NewElements = FALSE.
For (SubsetCounter = 1, …, MaxSubset) do
5. Generate the next subset r from RefSet with the Subset Generation
Method. This method generates one of four types of subsets with number
of elements ranging from 2 to |RefSet|. Let subset r = { r1, …, rk }, for
2≤ k ≤ |RefSet|.
6. Apply the Solution Combination Method to r to obtain a new solution sr.
7. Apply the Improvement Method to sr, to obtain the improved solution sr* .
If ( sr* is not in RefSet and the objective function value of sr* is better than the
objective function value of the worst element in RefSet ) then
8. Add sr* to RefSet and delete the worst element currently in RefSet.
9. Make NewElements = TRUE.
End if
End for
End while
Resultados:
Testearon el algoritmo en la biblioteca LOLIB, SGB y generadas
al azar.
Resultados comparables a las mejores heurísticas hasta el
momento.
PATH relinking
Se combina con otros métodos metaheurísticos. Se
construye un camino entre dos “buenas soluciones”,
esperando de ese modo encontrar soluciones mejores
que combinen los elementos de ambas.
Variable Neighborhood Search
La idea es usar en el contexto de la búsqueda local
varias definiciones de vecindarios.
Se supone que los mínimos locales de los distintos
vecindarios no son iguales, pero si el mínimo global.
• Cómo elegir los vecindarios?.
• Algoritmos de búsqueda local.
Se han propuesto varias extensiones del VNS básico.
Ejemplo VNDS
Algunos ejemplos de aplicaciones:
• Viajante de comercio
• El problema de determinar el árbol generador mínimo con
restricciones de grado.
• El problema de la p-mediana
Iterative Local Search
procedure Iterated Local Search
s0 = GenerarSolucionInicial
S* = BúsquedaLocal(s )
0
Repeat
s´ = Perturbación (s*)
s´* = BúsquedaLocal(s´)
s* = Criteriodeaceptacion ( s*, s´*)
until termination condition met
end
Más aplicaciones de metaheurísticas….
“An improved Tabu search Algorithm for DNA
Sequencing with errors”, Blazewicz, Formanowicz,
Glover, Kasprzak, Weglarz, Proceedings MIC´99
“Hybrid genetic algorithm for DNA sequencing with
errors”, Blazewicz,Kasprzak,Kuroczki, Journal of Heuristics,
2002
------------------------------------------------------------------Problema: A partir de un conjunto de olegonucleótidos de
longitud dada (usualmente 8-12 nucleótidos) reconstruir una
cadena de ADN de longitud conocida n.
Cómo se hace el procedimiento de secuenciar el ADN?
• No se puede leer la cadena entera
• Secuenciamiento por hibridización. Detecta un conjunto
(spectrum) de oligonucleótidos (palabras) de una longitud dada
l. (palabras de igual longitud sobre el alfabeto {A,C,G,T})
• A partir de esto hay que reconstruir la secuencia.
• La información tiene errores.
• Errores “negativos” (faltan palabras). Errores positivos (hay
datos superfluos, palabras que no están en la secuencia
original)
• Si la secuencia es de longitud n, el spectrum ideal, sin errores,
tiene n-l+1 diferentes palabras que se superponen en l-1 letras.
• Si en los experimentos de hibridización no hubiera errores el
problema se reduce a detectar un camino euleriano en un grafo.
• Si, como ocurre en la práctica hay errores positivos y negativos
el problema es NP-hard.
En este caso el objetivo de los algoritmos será maximizar el
número de elementos del spectrum que den una solución (una
cadena) de longitud menor o igual a n.
Ejemplo: (si no hubiera errores)
• Secuencia ACTCTGG, n =7, l=3
• Supongamos que usamos los 64 oligonucleotidos de longitud 3.
• Si no hay errores el spectrum obtenido experimentalmente sería
{ACT,CTC,CTG,TCT,TGG}
• La reconstrucción consiste en encontrar un orden tal que haya
un overlap de 2 letras entre una palabra y la siguiente.
• Hay una única solución.
Ejemplo: (ahora consideramos que pueda haber
errores)
•
•
•
•
Error negativo: CTC
Errores positivos: CAA, TTG
El spectrum quedaría {ACT,CAA,CTG,TCT,TGG,TTG}
Con la función objetivo mencionada, acá habría dos soluciones
óptimas
{ACT,TCT, CTG,TGG} da la solución ACTCTGG
{CAA,ACT,CTG,TGG} da la solución CAACTGG
• En la práctica si se usan los datos de experimentos reales esto
no pasa.
TABU SEARCH
• Dos estructuras de datos: una lista de palabras que constituyen
las solución actual y una lista del resto de las palabras
(conjunto “basura”).
• El nro. de palabras contenidas en una solución no puede ser
mayor que la que produce una solución de n nucleótidos.
• No se aceptan movimientos que lleven a soluciones no
factibles.
• Solución inicial generada al azar. (se podría mejorar esto,
puede ocurrir que se disponga de la primera palabra
experimentalmente)
Tres clases de movimientos para obtener soluciones vecinas, a
partir de las palabras:
• Inserción de una palabra
• Borrado de una palabra
• Cambio de lugar de una palabra
Cluster dentro de una solución: un conjunto de soluciones
vecinas que se superponen en l-1 letras. Hay que actualizarlos
después de cada movimiento.
Movimientos a partir de los cluster:
• Borrado de un cluster
• Cambio de lugar de un cluster.
Reglas:
• Un cluster se puede correr si no “rompe” otro cluster.
• Sólo las palabras fuera de un cluster se pueden correr, y a
posiciones donde no rompen un cluster
• Solo una palabra fuera de un cluster o si es la primera la la
última de un cluster se puede borrar.
Funciones objetivo:
1. Maximizar el número de palabras en la solución
2. Condensación: cociente entre el número de palabras en la
solución sobre el número de nucleótidos.
Si se usara sólo la primera casi no habría movimientos de
borrado o cambio de lugar.
Como se combinan estas funciones:
Si el valor máximo de 2 se obtiene con más de un
movimiento, se elije el que resulta en un nro. mayor de
palabras.
Después de un número dado de movimientos sin mejora de
la función 1, se ejecutan movimientos de extensión.
Movimientos de extensión: se basan en la frecuencia, o sea en la
cantidad de veces que una palabra apareció en una solución.
Se usan dos tipos de movimientos de extensión, en el siguiente
orden:
•
en primer lugar se intenta insertar una palabra con el menor
valor de frecuencia.
• si no es posible insertar nada, se borra la palabra con el mayor
valor de frecuencia
Después de un movimiento de extensión se vuelve al esquema
anterior.
LISTA TABU:
• se incluyen las palabras que se borran o que se incluyen.
• No se incluyen clusters.
• Se puede borrar o correr un cluster aunque tenga un elemento
tabu.
• Si no hay ningún movimiento posible se usa el elemento “más
viejo” de la lista Tabu.
• No se usa criterio de aspiración.
Después de un cierto número de iteraciones el algoritmo Tabu
Search se reinicia con una nueva solución inicial generada a
partir de los valores de frecuencia, se eligen las palabras con
menor valor de frecuencia.
Resultados computacionales:
Se construyeron ejemplos para realizar los experimentos a partir
del GEnBank:
• Secuencias de 409 nucleótidos
• Spectrum de 400 elementos.
• Se simuló un experimento de hibridización, creando
oligonucleíotidos de longitud 10.
• Se introdujeron errores. De un spectrum de ideal se borraron al
azar 10 palabras y se introdujeron 10 nuevas generadas también
al azar. (después se hizo lo mismo con 20,30, 40).
Parámetros:
- Longitud de la secuencia original
- El número de movimientos de condensación que se realizan
sin mejora del la función 1.(5)
- Número de movimientos de extensión. (4)
- Número de ciclos antes de reiniciar el algoritmo. (600)
- Número de veces que se reinicia el algoritmo. (4)
- Longitud de la lista tabú. (30)
- (opcional) La primera palabra de la secuencia original.
Los resultados obtenidos muestran que en la mayoría de
los casos, la cantidad del palabras determinadas
coincidía en un 90% o más con el óptimo.
Los tiempos computacionales (Pentium II 300MHz)
fueron de menos de 180 segundos en todos los casos.
Los autores dicen que los tiempos de un algoritmo
exacto son “dramáticamente más grandes”.
Algoritmo Genético
• Permutación de los índices de los oligonucleótidos. El valor i
en la posición j indica que el oligonucleótido i sigue a j en la
cadena.
• Para calcular la función de evaluación toma el mejor substring
del cromosoma, o sea el que tiene más elementos, con la
condición de que no produce una sucesión de más de n
nucleótidos. Se supone que las palabras se superponen lo más
posible.
• La función objetivo es el número de palabras del substring
anterior dividido por n-l+1.
• La población inicial se genera al azar con distribución
uniforme, cuidando de no generar soluciones con subciclos de
cardinal menor que el tamaño del spectrum.
• Las generaciones siguientes se construyen a partir de los
mejores individuos, que se combinan al azar para el crossover.
• Para obtener el hijo, se elige el primer oligonucleótido al azar.
Después con probabilidad 20% se elige el mejor sucesor entre
los restantes (o sea el que tiene el mayor overlap) . Con
probabilidad del 80% se toma como siguiente a la palabra que
tiene el mejor overlap entre los padres. Si no hay ninguna se
elige una al azar.
• El algoritmo para después de un número de iteraciones sin
mejora.
• Se va guardando la mejor solución producida a lo largo de las
iteraciones.
Parámetros:
• s (tamaño de la población, usaron s = 50)
• r (número de iteraciones sin mejora antes de parar, usaron r =
20)
Resultados computacionales:
• Se testeó en casos generados a partir secuencias de tmaño 109
al 509 del GEnBank en forma similar al ejemplo anterior, con
oligonucleótidos de tamaño 10.
• Se introdujo un 20% de errores positivos y 20% negativos, en
spectrum de 100 a 500 palabras.
• Los spectrum se introducen ordenados por orden alfabético.
• Corridas de entre 13 y 437 segundos (Pentium II, 300
MHz, 256 MB)
• En este caso se compararon también las secuencias
obtenidas con las originales usando el algoritmo de
alineamiento de Waterman (programación dinámica)
con valores match =1, gap = mismatch = -1).
• En promedio el score de similaridad fue de 99% a 82%
según el tamaño de los problemas (conjuntos de
palabras de 100 a 500 palabras).
• La calidad de las soluciones (nro. de palabras en la
solución) fue de 98.3% al 100%.
• Las soluciones fueron mejores que las del Tabu Search (aunque
ambos son muy buenas), sobretodo en similaridad.
• El algoritmos genético puede devolver más soluciones óptimas
que el Tabu.
• Se hicieron nuevos experimentos permitiendo a ambos
algoritmos correr 40 minutos. (r=40, s=200 para el genético).
Funcionó mejor en similaridad el genético.
• Trabajo futuro propuesto por los autores: combinar ideas de los
dos métodos y con Scatter Search
“A hybrid VNS/Tabu search Algorithm for apportioning the
European Parliament” Villa, Lozano, Racero, Canca, LNCS
3906, 2006.
Problema:
• Como distribuir los escaños (cantidad de parlamentarios) por
país en forma proporcional a los habitantes de cada país (en este
caso de la Unión Europea).
• La distribución de la población se puede considerar
fraccionaria, pero la cantidad de escaños es discreta. Entonces
no se puede lograr una proporcionalidad perfecta.
• Hay varias metodologías para resolver esto aproximadamente
en diversos ámbitos y países. También se toman en cuenta
consideraciones políticas, como por ejemplo que haya un
número mínimo de representantes por país.
Modelo de programación lineal entera mixta
Min r (r + + r - )
Sujeto a
sr  smin
Nr sr = S
Nr pr = P
r + - r - = (sr / S/ pr/ P) -1 r
r + , r -  0, sr entero
Donde:
• N es el nro de países
• pr la población del país r
• smin mínimo número de escaños por paíss
• r +, r – , desviación positiva y negativa respecto de la relación entre escaños
y población.
• P población total, S, número total de escaños.
Se corrió el modelo para valores de smin de 0 a 5, y en todos los
casos después de 5 horas con el CPLEX 7.0 no se obtuvo el
óptimo. Si se encontraron soluciones factibles, mejores que las
que se usan en la actualidad en la práctica.
Se propuso una heurística basada en VNS y Tabu Search
• Solución inicial: la situación actual (s01, s02, s03,…… s0N)
• Varias estructuras de vecindarios simples que mantienen la
factibilidad, es decir el total de escaños repartidos.
Seudocódigo
Inicialización
Repetir mientras no se cumpla criterio de parada:
i)
k=1
ii)
mientras k≠ kmax
a) Aplicar Tabú Search dentro de la vecindad k de la
solución actual
b) Si la solución obtenida x´ es mejor que la mejor hasta el
momento poner x = x´ y poner k =1. Sino cambiar de
vecindario o sea poner k = k+1
Parar
Como lista Tabu se usa que por un cierto número de iteraciones la
cantidad de escaños para los países afectados por el cambio
no puede cambiarse.
Se obtuvieron soluciones mejores que la actual, y un poco
mejores que las de CPLEX pero en este caso fue en pocos
segundos y no en las 5 hrs. que demoró el CPLEX.
“A Tabu Search Algorithm for Optimization of Gas
Distribution Networks” Duarte, Goldbarg, Goldbarg, LNCS
3906, 2006
Problema: Encontrar la combinación de diámetros de mínimo
costo para caños para satisfacer la demanda de una red de gas,
dentro de un conjunto disponible en el comercio. Se deben
satisfacer restricciones sobre la presión y otras.
Se supone que la topología de la red está definida.
Modelo de programación lineal entera mixta
min k c(Dk) Lk
sujeto a
Pi  PDi
 i  N\{n0}
Dk ≤ DUk  k  NP
Dk  D,  k  NP
NP es el conjunto de caños, N el conjunto de nodos de la red, n0 el nodo
origen, D es el conjunto de diámetros comerciales, Lk es la longitud del
caño k, c es una función de costo por unidad de longitud, Pi es la presión
que se obtienen en el nodo i, PDi es la presión requerida en el nodo i y DUk
es el diámetro del caño conectado al caño k más cercano a la fuente.
Para verificar que se cumplen los requerimientos de presión hay que resolver
una ecuación nolineal.
• A lo largo del algoritmos se mantiene la factibilidad de las
soluciones.
• Se toma una solución inicial factible con el máximo diámetro
en cada tramo o sea que es la más cara.
• La soluciones se representan como una lista de caños y sus
diámetros, ordenada según BFS.
• El movimiento básico es decrecer los valores de los diámetros
desde las hojas hasta la raíz del árbol tomando en cuenta la
factibilidad. Hay que recalcular la presión en cada nodo.
• Cuando se llega a un óptimo local (no se puede dismminuir
ningún diámetro) se diversifica. Haciendo crecer algún
diámetro y los que dependan de él.
• Cuando se cambia un diámetro esa rama se pone en la lista
Tabu por un cierto número de iteraciones. (Tabu tenure al azar)
• Se usa el criterio de aspiración clásico.
• Se usaron dos criterios de parada: tiempo y nro de iteraciones
sin mejora. En la práctica este último fue el que hizo terminar
el algoritmo.
Resultados computacionales:
Se generaron instancias de entre 51 y 1432 nodos, basadas en
instancias de TSPLIB. Los flujos y las presiones requeridas se
generaron al azar dentro de un rango predeterminado.
Se usó un conjunto de diámetros comerciales reales.
Se compararon los resultados con otros algoritmos de la literatura
que los mismos autores implementaron para estos problemas.
Tanto la calidad de las soluciones como el tiempo de ejecución
fueron mejores.
Como trabajo futuro se proponen paralelizar el algoritmo. Y
también aplicarlo a redes más complicadas (en este caso las
redes eran todas acíclicas).
Además de todos los ejemplos que vimos hay
aplicaciones de metaheurísticas a muchos problemas
diferentes…..y todos los días aparecen nuevos
problemas. Algunos trabajos que tengo a mano:
• VLSI
• Planificación de horarios de enfermeras
• Gran variedad de problemas de planificación
industrial
• Diseño de códigos
• Diseño de portfolios
• Otros problemas de Bioinformática
OTRAS METAHEURISTICAS
• Swarm optimization
• Artificial Inmune Systems
Comentarios y Conclusiones
Cuándo usar metaheuristicas?.
•
•
•
Problemas difíciles (NP-hard)
Problemas difíciles de modelar
Problemas reales donde se quiere tener una “buena”
solución urgentemente.
Ventajas
•
•
•
Relativamente fáciles de programar, transportables.
Modificación del problema de los datos,flexibilidad,
interacción con el usuario.
Paralelización
•
•
•
•
Falta “teoría”
Nomenclatura
PROGRAMACION
Híbridos
Relación con:
• Heurísticas tradicionales
• Métodos exactos (cotas, branch and cut,generación de
columnas, etc.)
• Qué metaheurística elegir?.
• Cuál es mejor?. Cómo comparar?.
• Cómo saber si los resultados son buenos?.
• Cómo se hace para implementar una
metaheurística exitosa?.
• Paralelización.