Vous êtes sur la page 1sur 33

1

Proyecto de Optimización y Simulación

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

• Algoritmia versus programación matemática

• Metaheurística
Sección opcional:

• Punteros y estructuras de datos

2| X A. Navarra
3
Proyecto de Optimización y Simulación

Algoritmia versus programación


matemática
Dos paradigmas de la optimización computacional

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:

Programación matemática Algoritmia

• Programación Matemática: listado de variables, restricciones, y otros constructos


matemáticos en el cual se aplique algoritmos (ya implementado) de resolución
• Entre otro, es una extensión de álgebra lineal y de cálculo diferencial
• Algoritmia: análisis, diseño, adaptación e implementación de algoritmos
(especializados) para resolver una clase particular de problemas
• Luego vamos a presentar la metaheurística que un subdominio importante de la algoritmia
4| X A. Navarra
5
Proyecto de Optimización y Simulación

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)

• Programación por restricciones (PR):


• Para problemas con carácter combinatorio, en donde se enumeran las posibles soluciones, que son
fuertemente restringida
• Se utilicen las restricciones para filtrar (eliminar) las soluciones subóptimas y no factibles
• Muchas aplicaciones en Scheduling están basada en PR

• La PD y la PR se prestan a formulaciones matemáticas, a veces parecido a una PM


• Pero no cuentan con una formación estándar “del” problema arquetipo, sino que
tienen estructuras generales que se deben adaptar a las situaciones particulares
6| X A. Navarra
7
Proyecto de Optimización y Simulación

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

• Probar implementaciones del PM en Solver o en CPLEX,


• Empezar típicamente con un problema de tamaña reducido
• Ver hasta qué tamaño/complejidad la implementación del PM puede
llegar, dado un tiempo “razonable” de computación

• Las implementaciones de PM pueden no lograr a


satisfacer la necesidad industrial, requiriendo entonces
una exploración de los enfoques de algoritmia

• La aplicación puede presentar un tamaño/complejidad que demanda una


heurística (sacrificar la optimalidad para la practicidad)
7| X A. Navarra
8
Proyecto de Optimización y Simulación

Limitaciones de la programación matemática


• Un enfoque puramente de PM puede encontrar varias problemas relacionado,
entre otro, con comportamientos:
• No lineal
• Combinatorio
• Estocástico

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

Limitaciones de la programación matemática


Complejidad combinatoria
• Los algoritmos de PM discretas se basen en técnicas de
corte y ramificación, que implican una serie de
subproblemas continuas (relajaciones)
• La cantidad de relajaciones a resolver crezca de forma
exponencial con la cantidad de variables discretas
Estocásticidad
• Los parámetros del problema pueden tener un comportamiento
aleatorio, que hace que el sistema sea impredecible (estocástico)
• Típicamente sería imposible encontrar una solución que sería
óptima para todas las salidas probabilísticas
• Se espere una solución que se comporte bien para la distribución
de posibles parámetros; tiene relación con gestión de riesgo
9| X A. Navarra
10
Proyecto de Optimización y Simulación

Optimizadores de caja negra


• La optimización de caja negra es una extensión de la PM que se debe utilizar con
mucho cuidado
• Se evite la necesidad de suposiciones relacionado con la función objetivo, restricciones, etc.
• Cuando el problema cabe dentro de un marco simplificado (p. ej. un programa lineal), el
optimizador aprovecha y logra al mismo resultado que una implementación de PM
• Si el problema no cabe en algún marco clásico, el optimizador puede (a veces) funcionar igual

• Los optimizadores de caja negra comerciales


• Son relativamente fácil a utilizar
• Combinan enfoques de PM y de algoritmia
• Las detalles de la implementación son confidenciales

10| X A. Navarra
11
Proyecto de Optimización y Simulación

Optimizadores de caja negra


• El Solver de Excel es un ejemplo de un optimizador de caja negra
• Da un comportamiento correcto para programación lineal, cuadrática, etc.
• En casos no lineales, se debe cuidar con la solución inicial, y la posibilidad de quedarse en un
óptimo local
• Cuando se combinen aspectos no lineales y discretos, puede que no converge a una
solución, o que nos da una solución poco fiable
• Luego introduciremos el OptQuest que es un optimizador que ha sido integrado
con Arena
• Nos permitirá resolver la problemática de Inventario (R,Q) introducido en la sesión 4.
Nivel de Inventario

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

• Una metaheurística es un marco general (membrete) que proporciona


• estructura
• vocabulario
que se adaptan para desarrollar heurísticas para problemáticas específicas
• Vamos a introducir los siguientes marcos de metaheurística:
• Búsqueda Tabú
• Templado Simulado
• Algoritmos Genéticos
Existen otros marcos comunes de metaheurística: optimización de Colonias de Hormigas,
Búsqueda de Vecindad Variable, etc.
13| X A. Navarra
14
Proyecto de Optimización y Simulación

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

• Iniciación: Establecer las condiciones iniciales, incluso la construcción y evaluación de una


solución inicial factible
• Iteración: Según la metaheurística, efectuar una secuencia de pasos que permiten identificar
y evaluar uno o más soluciones pruebas, y actualizar estructuras de datos para facilitar la
ejecución de próximas iteraciones
• Detención: Detener cuando (i) no se detecta posibilidades de mejoramiento, o (ii) si se
pasaron muchas iteraciones sin encontrar ninguna mejora, o (iii) se ha logrado una cantidad
máxima de iteraciones o de tiempo
• Después de la detención, se tome la mejor solución de prueba que se haya
encontrado en cualquier iteración como la solución final
14| X A. Navarra
15
Proyecto de Optimización y Simulació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

• Iteración de Templado simulado:


• Utilice una regla de selección para proponer un movimiento hacia la próxima solución de prueba
• Si resulta en una mejora, se acepta el movimiento
• Si no resulta en una mejora, tiene una probabilidad de aceptar el movimiento, considerando la
temperatura (ver fórmula en la lámina anterior)
• En caso que el movimiento sea rechazado, se reutilice la solución actual en la próxima iteración
• Se detenga el algoritmo al fin del programa de enfriamiento cuando no se encuentre
mejoras
20| X A. Navarra
21
Proyecto de Optimización y Simulación

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

• Además Hillier precise el programa de enfriamiento


• Iteraciones 1 – 5, se utilice T = 13,8
• Iteraciones 6 – 10, se utilice T = 6,9
Resulte en el
• Iteraciones 11 – 15, se utilice T = 3,45 óptimo global con
• Iteraciones 16 – 20, se utilice T = 1,725 distancia 63
• Iteraciones 21 – 25, se utilice T = 0,8625
• Se termine después de 25 iteraciones

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

Suporte bibliográfica para metaheurística


• Existe una bibliografía extensa que describe las marcos conocidos, p.ej.
• Glover y Kochenberger (eds.), Handbook of Metaheuristics, Springer, 2010.
• En aplicaciones industriales, es típico de no encontrar un algoritmo que es
exactamente lo que se necesita; casi siempre se requiere un grado de adaptación
• Un paso intermedio puede ser de mapear la problemática industrial hacia una
problemática clásica:
• Agente viajero
• Mochila
• Job shop scheduling
• Asignación de recursos, etc.
que ya disponga de muchos artículos, libros, etc.
• De otra forma, puede ser necesario desarrollar su propio algoritmo, desde una
base metaheurística, quizás hibridando conceptos de varios marcos
25| X A. Navarra
26
Proyecto de Optimización y Simulación

Punteros y estructuras de datos


El enlace entre el lenguaje matemática y el código computacional

26| X A. Navarra
27
Proyecto de Optimización y Simulación

Introducción a punteros y estructuras de datos


• La PM está soportado por software: Solver para problemas pequeños, CPLEX para
problemas mediado-largos, etc.
• Mientras, la algoritmia no dispone del mismo soporte; la literatura se concentra en:
• formulación matemática
• lógica y conceptos generales de los algoritmos
con poco énfasis en la implementación
• Se pregunte cómo se podría codificar una red de ciudades, una carta Gantt, etc.
• De hecho, la eficacia de un algoritmo depende de la implementación:
• cómo los datos están organizados y enlazados
• cómo las soluciones estás representados y alterados
algo que requiere una comprensión de punteros y estructuras de datos
• Veremos las tres estructuras más básicos que fundamenta la algoritmia:
• Lista enlazada
• Árbol binario
• Lista de adyacencia
27| X A. Navarra
28
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

• Se introduce el símbolo “NIL” (o “NULL”) para punteros que no son inicializados


28| X A. Navarra
29
Proyecto de Optimización y Simulación

Á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

• El acceso global al AB es por el


puntero (centinela) de raíz

NIL NIL NIL NIL

NIL NIL NIL NIL NIL

NIL NIL NIL NIL NIL NIL

• Existe una extensión de AB que es importante para la optimización


computacional que se llama árbol rojo-negro (ARN) o “red-black tree”
• Es eficaz para mantener el orden de los nodos
29| X A. Navarra
30
Proyecto de Optimización y Simulación

Á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

• El mono no muestre explícitamente los campos de datos y 1 5 8 14


punteros izquierda-derecha)
4 15

• 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

• Las listas de adyacencia se pueden implementar como listas encadenadas, lo cual


minimice el uso de memoria A E (hacia B) (hacia C) (hacia G) (hacia C) (hacia D)(hacia F) (hacia G)
datos datos
NIL NIL
B B datos (hacia A)(hacia C) (hacia D)
F (hacia D)(hacia E) (hacia G)

• Por ejemplo, A D se codifique NIL datos


C C datos (hacia A)(hacia B) (hacia D)(hacia E) (hacia G)
NIL
(hacia A)(hacia C) (hacia E) (hacia F)
G datos
E como NIL NIL

G F D datos (hacia B) (hacia C) (hacia E) (hacia F)


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

Vous aimerez peut-être aussi