Académique Documents
Professionnel Documents
Culture Documents
Algoritmia y introducción a la
metaheuristica
Empleando el estado del arte de la optimización computacional
1| X A. Navarra
2
Proyecto de Optimización y Simulación
Agenda
• Metaheurística
Sección opcional:
2| X A. Navarra
3
Proyecto de Optimización y Simulación
3| X A. Navarra
4
Proyecto de Optimización y Simulación
Optimización computacional
• Una definición de “optimización” podría ser
• La búsqueda sistemática para el mejoramiento de algo (sistema, diseños, toma de decisiones,
etc.)
• Aplicando herramienta computacional, se entiende “optimización
computacional”, que se divide en dos paradigmas:
Optimización computacional
En la práctica,
• Programación matemática (PM) implique organizar y entrar datos en una
herramienta computacional que ya tiene implementado algoritmos conocidos:
• Método Simplex para programas lineales
• Método de Conjunto Activo o de Puntos Interiores para programas cuadráticas Implementado
en CPLEX
• Enfoques de Ramificación y Corte para programas lineales en número enteros, etc.
(A veces se requieren transformaciones de datos de entrada y de salida, pero se evita la
implementación y/o adaptación de los algoritmos de resolución).
• Algoritmia implique una implementación y/o adaptación de uno o más
algoritmos, aprovechando la estructura particular del problema
• Es típicamente un esfuerzo de programación en C++, Matlab, Java, o Python, etc.
• Muchas veces implica una investigación bibliográfica relacionado a la problemática
• Requiere una comprensión de cómo representar y manipular los constructos
matemáticos en el ámbito computacional (estructuras de datos)
5| X A. Navarra
6
Proyecto de Optimización y Simulación
Optimización computacional
• Algunos enfoques pueden caer entre las paradigmas de PM y de algoritmia; dos
ejemplos:
• Programación dinámica (PD):
• Para problemas que se descomponen en decisiones secuenciales y interrelacionadas
• Se construye de forma eficaz los distintos “caminos” de decisiones, seleccionando la
secuencia óptima
• P. ej. se considera incluir o no incluir cada ítem en la mochila (Problema de la Mochila)
Optimización computacional
Para satisfacer una necesidad o problemática industrial,
• Empezar con enfoque de programación matemática,
• P.ej. modelar un problema combinatorio como programa en números enteros
No linealidad
• Mejor dicho, el problema es con la no convexidad
• Formulaciones cuadráticas sí se resuelvan, p. ej. con CPLEX
• Se manifiestan problemas cuando la función objetivo y/o las restricciones son de orden
superior a dos, y que cambien de convexidad (2ª derivadas)
• Aún en los casos continuos, los algoritmos de PM pueden quedarse en un óptimo
local en vez de global
• Estos algoritmos se basen en procedimientos de mejoras locales (e.g. Método de Newton)
que pueden ser sensibles a la solución inicial
8| X A. Navarra
9
Proyecto de Optimización y Simulación
10| X A. Navarra
11
Proyecto de Optimización y Simulación
Q
R
T. de Elaboración Tiempo
11| X A. Navarra
12
Proyecto de Optimización y Simulación
Metaheurística
Procedimientos generales para generar heurísticas
12| X A. Navarra
13
Proyecto de Optimización y Simulación
Introducción a la metaheurística
• Una heurística es un algoritmo que trate de descubrir una solución
factible muy buena, pero no necesariamente óptima. Se usa cuando:
• PM no logre a satisfacer las necesidades industriales de una problemática
• No se encuentren algoritmos adecuados que aseguran la optimalidad
• Incluso la PD y la PR no se adaptan de forma satisfactoria al problema
Introducción a la metaheurística
• La metaheuristica lleva a algoritmos iterativos, considerando entonces los pasos
iniciales, las iteraciones, y las reglas de detención
Introducción a la metaheurística
• Problema tipo: Problema del agente viajero (Traveling Salesman Problem, TSP)
• Un agente de ventas debe visitar cierta cantidad de ciudades en solo un viaje, comenzando
desde su cuidad de origen
• Se espere visitar cada ciudad una sola vez, de manera que minimice la longitud total del viaje
• El Capítulo 13 de Hillier da el siguiente instante pequeño, donde Nodo A es el origen:
12
12 B 8 11 D (Arcos omitidos tienen distancias
10
A C 3 11 “grandes”, efectivamente ∞)
9
12 7 E 6 10
G 9
F
• Una solución inicial podría ser el camino (A-B-C-D-E-F-G-A) que tiene distancia 69
• Por lo que sigue, consideremos que dos soluciones son “vecinos” si se diferencien por solo un
subviaje invertido
• P. ej. (A-B-D-C-E-F-G-A) y (A-B-D-F-E-C-G-A) son vecinos por el subviaje C-E-F
• Veremos algunas metaheurísticas que hacen búsquedas según este tipo de “vecindad”
• En general se considera n ciudades con un arco entre cada una, que nos da
(n-1)!/2 caminos; es una “explosión combinatoria”
15| X A. Navarra
16
Proyecto de Optimización y Simulación
Búsqueda tabú
• La Búsqueda tabú (BT) está basada en el concepto de vecindad
• En cada iteración se mueve de una solución factible hacia un vecino factible
• Se priorice movimientos que van hacia vecinos que mejora el valor de la función objetivo
• BT está conceptualizado para contravenir el problema de óptimo local
• Si se encuentre una solución que no tiene vecinos superiores (es decir un óptimo local), se
mueve hacia el vecino admisible que menos empeora el objetivo
• En la próxima iteración se prohíbe regresar a este óptimo local, para no formar un lazo
infinito de ida-vuelta entre el óptimo y su vecino “favorito”; eso sería un movimiento “tabú”
Óptimo
Vecino
Local
• En general se guarda en memoria una lista tabú, es decir un listado que describe
los movimientos prohibidos en cualquier iteración
• Evite la formación de ciclos repetitivos que regresen siempre a los mismos nodos
• Cuando la lista logre a un tamaño máximo, se borre la prohibición más antigua
• Devuelve un grado de flexibilidad para los movimientos futuros
16| X A. Navarra
17
Proyecto de Optimización y Simulación
Búsqueda tabú
• Iteración de Búsqueda tabú:
• Aplique búsqueda local para definir los movimientos factibles en la vecindad local de la
solución de prueba actual
• No se permite ningún movimiento incluido en la lista tabú salvo cuando genere una
mejor solución que se haya encontrado hasta ahora
• Determine cuál de los movimientos restantes proporciona la mejor solución; adopte este
solución como la próxima solución de prueba, sin importar si está mejor o peor que la
solución actual
• Actualice la lista tabú según las reglas establecido
• Si la lista tabú está llena, elimine el elemento más antigua de la lista
• Siempre se mantiene en memoria la mejora solución que se ha encontrado
hasta ahora; es el candidato para la solución final
• Se permite un movimiento tabú solo cuando resulta en un un nuevo candidato
para la solución final
17| X A. Navarra
18
Proyecto de Optimización y Simulación
Búsqueda tabú
• Sección 13.2 de Hillier define una búsqueda tabú para el TSP:
• Estructura de vecindad está basado en los subviajes inversos
(descrito anteriormente)
• Cada movimiento implique eliminar dos arcos de la solución actual,
y reemplazarlas con dos otros arcos
• La lista tabú consiste en una lista de arcos. Un movimiento se considera
tabú si los dos arcos que se eliminarían se encuentren en la lista
• En cada iteración, los dos arcos que se agregan a la solución se incorporen
a la lista
• Además Hillier precise los siguientes parámetros (que podrían tomar otros
valores) Resulte en el
• Tamaño máximo de la lista = 4 arcos óptimo global con
• N° Iteraciones sin mejora antes de que se detiene el algoritmo = 3 distancia 63
En general, metaheurísticas pueden incluir parámetros algorítmicos que requieren
experimentación y afinación para saber cuáles combinaciones dan un buen rendimiento
18| X A. Navarra
19
Proyecto de Optimización y Simulación
Templado simulado
• El Templado simulado (TS) está basada en el concepto de vecindad
• Es comparable a la Búsqueda tabú, pero ofrece otro mecanismo para
escaparse de los óptimos locales, inspirado por la metalurgia física
(ciencia de materiales)
• En las primeras iteraciones, se considera que la “temperatura” está alta,
• El algoritmo sea disponible para aceptar movimientos que empeora el objetivo
• Eso facilite la evasión de óptimos locales
• Luego la “temperatura” empieza a bajar (“se enfría”), y eventualmente se
acepte solo los movimientos que mejora la solución
• En alguna iteración, la probabilidad de aceptar un movimiento se da por
1 si el movimiento mejora el objetivo
𝑃= Empeoramiento
exp − si el movimiento empeora el objetivo
Temperatura
19| X A. Navarra
20
Proyecto de Optimización y Simulación
Templado simulado
• Una corrida de templado simulado requiere un programa de enfriamiento
• Por ejemplo:
Temperatura
TA
TB
TC
200 700 1200 Iteraciones
Templado simulado
• Sección 13.3 de Hillier define un templado simulado para el TSP:
• Estructura de vecindad está basado en los subviajes inversos
(descrito anteriormente)
• Se aplique una selección aleatoria de un vecino inmediato en cada iteración. Luego se
verifique si se acepte el movimiento, o si la próxima iteración reutilice la solución actual
21| X A. Navarra
22
Proyecto de Optimización y Simulación
Algoritmos genéticos
• Los algoritmos genéticos AG son análogos a la evolución biológica
• Cada iteración de un AG trabaja con una población de soluciones de prueba, en vez de
trabajar con una sola solución a la vez
• Las soluciones con valores altos en la función objetico se ven aptas para ser
seleccionado para “ser padres”, así para transmitir sus características (“genes”)
hacia la próxima iteración
• Cruzamiento
• Según el algoritmo, la generación de un hijo puede involucrar la combinación de
características que provienen de dos o más padres que fueron seleccionados
• Mutaciones
• Con cierta frecuencia, ocurren combinaciones aleatorias de características que no
provienen de padres, que se dicen “mutaciones”
• A veces estas mutaciones resulten en mejoras que se incorporen en las próximas
generaciones
• Las mutaciones permiten que la población se escape de óptimos locales
22| X A. Navarra
23
Proyecto de Optimización y Simulación
Algoritmos genéticos
• Iteración de un AG:
• Selecciona los padres según un proceso aleatorio que esté sesgado hacia miembros con los
mejores valores de la función objetivo
• Cruce las características de los padres para generar nuevas soluciones factibles (“hijos”),
insertando algunas mutaciones ocasionales
• Si resulte en algunas soluciones no factibles, se reintenta la procreación hasta que logre una cantidad suficiente
de nuevas soluciones
• Conserve los hijos y una cantidad suficiente de los mejores miembros de la población actual
para alimentar la próxima iteración
• Evalúa el valor de la función objetivo de cada miembro de la población actual
• Se debe definir:
• Cómo gestionar el tamaño de la población
• Cómo seleccionar padres
• Cuáles características transferir y cómo pueden ser susceptibles a mutaciones
• Tasa de mutación
• Cómo gestionar la duplicación de hijos, etc.
23| X A. Navarra
24
Proyecto de Optimización y Simulación
Algoritmos genéticos
• La Sección 13.4 de Hillier define un algoritmo genético para el TSP:
• Se acoplan pares de viajes (padres) para producir pares de nuevos viajes (hijos)
• Cada hijo se construye un arco a la vez. En cada paso,
• se elige un arco que se hereda de uno de los padres, o
• en caso de mutación, se puede elegir según cualquier arco disponible
B
D
A C
?
E
G F
• La posibilidad de un subviaje inversa se maneja de forma particular. (ver detalles en el
libro)
• Se inicialice el algoritmo con 10 soluciones (incluso duplicaciones), y se
demuestre el resultado de una iteración que produce tres pares de hijos
• Logre viajes con distancia 64
• Para encontrar el óptimo global (distancia 63), se requiere más que una iteración
24| X A. Navarra
25
Proyecto de Optimización y Simulación
26| X A. Navarra
27
Proyecto de Optimización y Simulación
Lista enlazada
• Una lista enlazada (LE) consiste en una secuencia de nodos; cada nodo tiene los
siguientes campos:
• campos de datos
• 1 o 2 punteros (ver a continuidad)
• Además una LE tiene un puntero que da acceso al comienzo, dicho un centinela
• Según la implementación, una LE puede tener también un centinela que
identifique el fin
• Nodos de 1 puntero se utilicen para representar colas simples (“queue”)
comienzo fin
datos
Nodo: prox Lista Enlazada:
… NIL
• Nodos de 2 punteros se utilicen para colas de dos vías (“deque” o “double-ended queue”)
comienzo fin
Nodo: datos
prev prox Lista Enlazada:
NIL … NIL
Árbol binario
• Los nodos de un árbol binario (AB) son parecidos a los de un deque; tienen:
• campos de datos
datos
• puntero hacia el hijo de izquierda
izqu der
• puntero hacia el hijo de derecha
• Además, un AB tiene un centinela que da acceso a la raíz del árbol
raíz
Árbol binario
• Además de los campos de datos y de los punteros de izquierda y derecha, un nodo de
árbol rojo-negro (ARN) tiene:
• Una clave ordinal (que es típicamente un número) 7
• Un color 2 11
• Los ARN permiten recuperar datos de forma rápida según las claves
• En forma global, las claves siempre suben de la izquierda hacia la derecha.
• Localmente, CLAVE[nodo de hijo de izquierda] < CLAVE[nodo padre] < CLAVE[nodo de hijo de derecha]
• Solo el último nivel puede ser incompleto; por eso se dice que los ARN son equilibrados
• Cuando se agrega un nuevo nodo con clave
• se busque el lugar donde insertar
• luego se hace “rotaciones” para reestablecer el equilibrio y asignar el color
• Cuando se borre un nodo, también se hacen rotaciones para reestablecer el equilibrio
30| X A. Navarra
31
Proyecto de Optimización y Simulación
Árbol binario
• Un ARN implementa una lista ordenada (con respecto a la clave) si se mantengan
• Un centinela de comienzo que siempre punta al nodo más a la izquierda
• Un centinela de fin que siempre punta al nodo más a la derecha
(además del centinela de raíz)
• A diferencia, una lista enlazada es en general una lista no ordenada
• Suponemos que tenemos una lista enlazada que tiene algún campo de dato que
podría servir como clave ordinal
• Se puede ordenar los datos de la LE, posicionándolos uno por uno en un nuevo ARN
• Existen formas más rápidas para ordenar (QuickSort, MergeSort, etc.)
• La gracia de un ARN es que se mantenga el orden, aun cuando se inserten/borren nodos.
• Nota que las estructuras de <map> y de <set> en Java, C++, etc. se basan en ARN
• Mientras, <list>, <unordered_map> y <unordered_set> se basan en listas enlazadas
31| X A. Navarra
32
Proyecto de Optimización y Simulación
Lista de adyacencia
• La manera más típica de representar un grafo (es decir una red), es por listas de
adyacencia (LA)
• Se consideran nodos que consiste en: Hacia Hacia Hacia
• Campos de datos datos
nodo nodo nodo
LA
• Una lista de punteros hacia los nodos vecinos (“lista de adyacencia”) … NIL
• Si el orden sea esencial y/o si el acceso rápido (por clave) ofrezca algún beneficio,
se pueden basar las LA en árboles rojo-negros en vez de listas enlazadas
• P. ej. las distancias de los arcos en el TSP pueden servir como claves, así ordenar las ciudades
de cerca hacia lejos
32| X A. Navarra
33
Proyecto de Optimización y Simulación
Optimización computacional
• Los nodos que hemos visto en las listas y árboles pueden representar los diferentes
componentes matemáticos de una problemática:
• Conjuntos, grafos, relaciones, etc.
• Incluso, se pueden representar atributos en los distintos campos de datos, p. ej.
• El problema de mochila tiene una lista de ítems: ítem1, ítem2, etc.
• Cada ítem tendría un valor y un peso: (ítem1.valor, ítem1.peso),
(ítem2.valor, ítem2.peso), etc.
• (es parecido al uso de tuples en CPLEX)
• Típicamente, se guardan los datos de una problemática una sola vez
• La solución, y las estructuras intermedias que se utilicen para acelerar las
iteraciones, están construido por punteros hacia los datos guardados
• La manera en que los datos están entrelazados (LE, ARN, LA, etc.) determinen que tan rápido
son las actualizaciones de la solución y de las otras estructuras
33| X A. Navarra