Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Contenido
1. Introduccin .......................................................................................................................... 5
1.1 Conceptos bsicos de grafos y redes ............................................................................ 5
1.2 Grafos y redes con Mathematica ................................................................................ 11
2. Los mtodos heursticos...................................................................................................... 12
2.1 Definicin y propiedades de los mtodos heursticos ................................................ 12
2.2 Tipos de mtodos heursticos ..................................................................................... 15
2.2.1 Mtodos de Descomposicin ............................................................................. 15
2.2.2 Mtodos Inductivos ............................................................................................ 16
2.2.3 Mtodos de Reduccin ....................................................................................... 16
2.2.4 Mtodos Constructivos ...................................................................................... 16
2.2.5 Mtodos de Bsqueda Local .............................................................................. 16
2.2.6 Mtodos combinados ......................................................................................... 16
2.2.7 Mtodos metaheursticos .................................................................................. 16
2.3 Problemas Estructurados ............................................................................................ 17
2.3.1 Problema de la Mochila (Knapsack Problem) .................................................... 18
2.3.2 Los problemas de Recubrimiento, empaquetamiento y particionamiento de
Conjuntos ............................................................................................................................ 19
2.3.3 Problema del Agente Viajero (Traveling Salesman Problem) ........................... 23
2.3.4 El Problema de la Asignacin Cuadrtica........................................................... 25
2.3.5 Problema de Asignacin Generalizada .............................................................. 26
2.3.6 Problema de la Ordenacin Lineal ..................................................................... 27
2.4 Medidas de Calidad de un Algoritmo .......................................................................... 28
2.4.1 Comparacin con la solucin ptima ................................................................. 28
2.4.2 Comparacin con una cota ................................................................................. 28
2.4.3 Comparacin con un mtodo exacto truncado ................................................. 29
2.4.4 Comparacin con otros heursticos.................................................................... 29
2.4.5 Anlisis del peor caso (worst case analisys) ...................................................... 29
3. Mtodos Constructivos ....................................................................................................... 30
3.1 Heursticos del Vecino ms Cercano ........................................................................... 30
3.2 Heursticos de Insercin .............................................................................................. 31
3.3 Heursticos Basados en rboles Generadores ............................................................ 33
3.4 Heursticos Basados en Ahorros .................................................................................. 37
4. Mtodos de Bsqueda Local ............................................................................................... 40
4.1 Procedimientos de 2 intercambio ............................................................................... 41
4.2 Procedimientos de k - intercambio ............................................................................. 43
1. Introduccin
El propsito de este curso es introducir los principales mtodos heursticos y metaheursticos
para resolver problemas de optimizacin combinatoria, y como analizar su eficiencia. Desde el
punto de vista prctico esto es muy interesante para la industria, la logstica, el transporte, los
servicios, etc., basta decir que muchos de los problemas que encontramos en la literatura de la
optimizacin combinatoria tienen sus orgenes en muchos problemas de ingeniera y
administracin reales, por ejemplo diseo de las de hospitales, diseo de chips y circuitos
electrnicos, asignacin de tareas, ruteo, diseo de lneas de ensamblaje, secuenciacin de
rdenes de produccin, asignacin de personal y determinacin de turnos, planificacin de
horarios, etc.. Todos estos problemas tienen sus abstracciones en la literatura cientfica, tales
como: Knapsack problem, set covering problem, set partitioning problem, permutation
assignment, travel salesman problem, vehiche routing problem, flow shop problem, job shop
problem, timetabling problem, etc. A lo largo del texto consideraremos algunos de estos
problemas para desarrollar e implementar los algoritmos propuestos.
Red Dirigida: Una red dirigida es un grafo dirigido cuyos nodos o arcos tienen asociados
valores numricos tales como costos, capacidades, ofertas, demandas, tiempo etc. En general
se suele representar el nmero de nodos con la letra y al nmero de arcos con .
Colas y Cabezas: Un arco dirigido (, ) tiene dos puntos de finalizacin . Nos referiremos
al nodo como la cola del arco y al nodo como su cabeza. Diremos que al arco (, ) emana
del nodo y termina en el nodo . El arco (, ) es incidente a los nodos .
El arco (, ) es un arco saliente del nodo y un arco entrante al nodo . Siempre que el arco
(, ) pertenezca al conjunto A, diremos que el nodo es adyacente al nodo .
Grados: El grado interno de un nodo es el nmero de arcos que llegan al nodo y su grado
externo es el nmero de arcos que salen del nodo. Al sumar el grado interno de un nodo con
su grado externo se obtiene el grado del nodo. Se observa que la suma de los grado interno de
todos los nodos es igual a la suma de todos los grados externos de todos los nodos y ambos
son iguales al nmero de arcos en la red.
() = {(, ) :
ak= (i k 1 , i k ) A o ak= (i k , i k 1 ) A.
RUTA: Una ruta es un camino sin repeticin de nodos. Es posible particionar los arcos de un
camino en dos grupos: los arcos que van hacia delante y los arcos que van hacia atrs. Un arco
(i, j ) en el camino es un arco dirigido hacia delante si la ruta visita al nodo i antes de visitar
al nodo j, de ser contrario es un arco que est dirigido hacia atrs.
RUTA DIRIGIDA: Una ruta dirigida es un camino dirigido en el que no se repiten nodos. Dicho
de otra forma en una ruta dirigida no existen arcos dirigidos hacia atrs. Resulta fcil
almacenar una ruta en una computadora definiendo un ndice pred(j), para todo nodo j en la
ruta.
CICLO: Un ciclo es una ruta i1 i2 - ... ir , junto con el arco (i1 , ir ) o el arco (i r , i1 ) . Nos
referiremos a un ciclo empleando la notacin i1 i2 - ... ir ir. De manera anloga a las rutas
es posible definir arcos dirigidos hacia delante o hacia atrs.
CICLO DIRIGIDO: Un ciclo dirigido es una ruta dirigida i1 i2 - ... ir, junto con el arco (i r , i1 ) .
CONECTIVIDAD: Dos nodos , estn conectados si el grafo contiene por lo menos una ruta
desde el nodo al nodo . Un grafo es conectado si cada par de nodos estn conectados. De
otra forma el grafo es desconectado. Nos referimos a los subgrafos conectados de una red
como sus componentes.
PROPIEDADES DE UN RBOL:
BOSQUE:
Las definiciones para redes dirigidas se pueden trasladar hacia las redes no dirigidas. Un arco
no dirigido (, ) tiene dos puntos de finalizacin y , pero la cabeza y la cola del arco no estn
definidos.
El grado de un nodo es el nmero de nodos adyacentes al nodo . Los dems conceptos como
caminos, rutas, ciclos, cortaduras y rboles tienen las mismas definiciones para redes no
dirigidas, pero no existen diferencias entre rutas y rutas dirigidas, ciclos y ciclos dirigidos, y as
sucesivamente.
MATRIZ DE INCIDENCIA DE NODOS Y ARCOS: Esta representacin almacena la red como una
matriz de , que contiene una fila por cada nodo, y una columna por cada arco. La
columna correspondiente al arco (, ) tiene solo dos elementos diferentes de cero, posee un
+1 en la fila correspondiente al nodo y un 1 en la fila correspondiente al nodo .
Esta matriz tiene una estructura particular. De los elementos de la matriz solo 2 son
diferentes de cero, las que toman los valores de +1 y 1 en cada columna. El nmero de
elementos en la fila -sima iguales a +1 representa el grado exterior del nodo y el nmero de
elementos en tal fila iguales a 1 representa el grado interior del nodo .
Debido a que la matriz de incidencia de nodos y arcos contiene pocos elementos diferentes de
cero en relacin al nmero total de elementos, esta representacin requiere del uso de
matrices dispersas o de lo contrario origina algoritmos poco eficientes.
MATRIZ DE ADYACENCIA DE NODO A NODO: Esta representacin almacena la red como una
matriz = { } de . La matriz posee una fila y una columna por cada nodo y la i-sima
entrada es igual 1 si el arco (, ) pertenece al conjunto , y es igual a cero en otro caso. Si
se pretende almacenar los costos y las capacidades de los arcos se pueden utilizar dos matrices
adicionales de , y .
De los n2 elementos que posee la matriz, solo m son diferentes de cero, cuyo nmero se debe
al nmero de arcos de la red. Por lo tanto esta representacin es eficiente si la red es
suficientemente densa, para redes esparcidas esta representacin desperdicia mucho espacio
en la matriz.
La manipulacin de esta matriz es muy fcil. Para determinar el costo o la capacidad del arco
(, ) basta con ubicar a los elementos situados en la posicin de las matrices y
respectivamente. Se puede conocer qu arcos emanan del nodo observando los elementos
iguales a 1 en la fila -sima de la matriz . De manera anloga se pueden obtener los arcos
que llegan al nodo examinando los elementos de la columna de la matriz , si elemento de
la fila -sima es igual a 1, entonces el arco (, ) pertenece a la red.
El tiempo requerido para determinar los arcos que llegan y salen de un nodo es proporcional a
n. En conclusin para redes densas se podra permitir emplear esta representacin, pero para
redes dispersas contribuira al mal desenvolvimiento del algoritmo empleado.
La lista de adyacencia del nodo i ser representada por una lista enlazada en una direccin,
la que tendr un nmero de celdas igual a la cardinalidad del conjunto (), y cada celda
corresponde a un arco (, ) perteneciente al conjunto . El nmero de campos de la celda
que hace referencia al arco (, ), ser consistente con la cantidad de informacin que se desee
almacenar. Un campo almacenar al nodo y los dems pueden ser utilizados para guardar el
costo c ij , los lmites de flujo del arco l ij y u ij .
aunque no fueran ptimas. Estos mtodos, en los que la rapidez del proceso es tan importante
como la calidad de la solucin obtenida, se denominan heursticos o aproximados. En (1) se
recogen algunas definiciones de algoritmo heurstico, entre las que se destaca la siguiente:
En ese sentido, al contrario de los mtodos exactos que proporcionan la solucin ptima al
problema, los mtodos heursticos se limitan a proporcionar una buena solucin. Lo
determinante es que el tiempo invertido por un mtodo exacto para encontrar la solucin
ptima de un problema difcil, en general es muy superior (o incluso prcticamente infinito) en
comparacin con el tiempo que se requiere hallar una buena solucin por el mtodo
heurstico.
El problema a tratar es de una naturaleza tal que no se conoce ningn mtodo exacto
para su resolucin.
Los mtodos heursticos son ms flexibles que los mtodos exactos, permitiendo, por
ejemplo, la incorporacin de condiciones de difcil modelizacin.
Una caracterstica determinante de los algoritmos heursticos es que estos dependen en gran
medida del problema concreto para el que se han diseado, es decir el algoritmo diseado
para un problema no es directamente aplicable a otro problema de optimizacin. Esta
caracterstica los diferencia de los mtodos de resolucin de propsito general, como por
ejemplo los algoritmos exactos de Branch & Bound, para los cuales existe un procedimiento
conciso y preestablecido, independiente del problema abordado.
As, en los mtodos heursticos las tcnicas e ideas aplicadas a la resolucin de un problema
son especficas y aplicables solo a ste y aunque, en general, pueden ser trasladadas a otros
problemas, tienen que particularizarse y adaptarse en cada caso. As pues, es necesario
referirse a un problema concreto para estudiar con detalle los procedimientos heursticos, por
lo que, para su estudio, hay que considerar un problema de optimizacin combinatorio
especfico, y a partir de ah describir el desarrollo de los mtodos. Existen muchos problemas
que se prestan, por ser fciles de entender pero difciles de resolver, para esto. En general se
puede utilizar el Problema del Agente Viajero, que posee buenas propiedades combinatorias
propiedades que lo hacen especialmente indicado. Dicho problema puede enunciarse del
siguiente modo:
Entre las buenas caractersticas que posee el Problema del Agente Viajero que lo hacen ideal
para el estudio de las tcnicas heursticas se pueden nombrar las siguientes:
Es extremadamente difcil de resolver por lo que resulta un desafo constante para los
investigadores y cientficos.
La gran mayora de las tcnicas que han ido apareciendo en el rea de la Optimizacin
Combinatoria han sido probadas en l, puesto que su resolucin es de gran complejidad
EJERCICIO:
Analice el problema de agente viajero (TSP por sus siglas en ingls) con nodos a visitar
Existen muchos mtodos heursticos de naturaleza muy diferente, por lo que es complicado
dar una clasificacin completa. Adems, muchos de ellos han sido diseados para un problema
especfico sin posibilidad de generalizacin o aplicacin a otros problemas similares. El
siguiente esquema trata de dar unas categoras amplias, no excluyentes, en donde ubicar a los
heursticos ms conocidos:
1
FLOPS es el acrnimo de FLoating-point Operations Per Seconds, es decir el nmero de
operaciones de punto flotante por segundo.
Estos mtodos consisten en identificar propiedades que cumplen mayoritariamente las buenas
soluciones e introducirlas como restricciones del problema. El objeto es restringir el espacio
de soluciones, encogiendo el espacio de bsqueda de las soluciones y simplificando el
problema. El riesgo obvio es dejar fuera buenas soluciones e incluso la ptima del problema
original.
Consisten en construir literalmente paso a paso una solucin del problema, incorporando un
nuevo elemento a la solucin en cada iteracin. Usualmente son mtodos deterministas.
Si bien todos estos mtodos han contribuido a ampliar nuestro conocimiento para la
resolucin de problemas reales, la integracin de los mtodos constructivos y los de bsqueda
local constituyen la base de los procedimientos metaheursticos. Por ello, estudiaremos en
captulos independientes los mtodos constructivos y los mtodos de bsqueda local, mientras
que se harn menciones a lo largo del texto a cualquiera de los mtodos de descomposicin,
inductivos o de reduccin, pero no dedicaremos una seccin especfica a su estudio.
Alternativamente, prestaremos especial atencin a los mtodos resultantes de combinar la
construccin con la bsqueda local y sus diferentes variantes, puesto que puede considerarse
un punto de inicio en el desarrollo de los mtodos metaheursticos.
Existen una serie de mtodos que se conocen bajo el nombre de Metaheursticos, los cuales
tienen el propsito de obtener mejores resultados que los alcanzados por los heursticos
tradicionales. El trmino metaheurstico fue introducido por Fred Glover en 1986. En este
curso utilizaremos la acepcin de heursticos para referirnos a los mtodos clsicos en
contraposicin a la de metaheursticos que reservamos para los ms recientes y complejos,
con los que se obtienen mejores soluciones. En algunos textos podemos encontrar la expresin
heursticos modernos refirindose a los Metaheursticos. En (2) se introduce la siguiente
definicin:
En estos momentos existe un gran desarrollo y crecimiento de estos mtodos. En este curso
vamos a limitarnos a aquellos procedimientos relativamente consolidados y que han probado
su eficacia sobre una coleccin significativa de problemas. Especficamente consideraremos en
sendos captulos la Bsqueda Tab, el Recocido Simulado, los diferentes Mtodos Evolutivos,
incluyendo los Algoritmos Genticos y la Bsqueda Dispersa (Scatter Search), la evolucin
diferencial, el rencadenamiento de trayectorias y los mtodos GRASP.
Es importante notar que para la correcta compresin y asimilacin de los mtodos descritos,
resulta indispensable su puesta en prctica, para lo cual el lector deber implementar en un
lenguaje de computacin los algoritmos descritos y resolver algn problema de optimizacin
combinatoria. Se recomendamos utilizar cualquier lenguaje de programacin que permita
controlar los detalles de implementacin y que incluya la posibilidad de programacin
funcional y un buen manejo de estructuras de datos, en particular Wolfram Mathematica tiene
esas caractersticas. La seccin 2.3 incluye una coleccin de problemas de entre los que el
lector puede escoger alguno e ir trabajando con l, aplicando los mtodos descritos a lo largo
de todo el texto.
El objeto de esta seccin no es nicamente dar una coleccin de ejemplos reales, sino el de
establecer modelos que han sido muy estudiados. As, al enfrentarse el lector a un problema
dado, tratar de reconocer las estructuras especiales que aparecen en estos modelos y de esta
forma se podr aprovechar la extensa literatura y experiencia computacional al respecto.
Adems, no debemos olvidar la limitada, pero significativa, importancia prctica de estos
modelos.
El KP es un problema combinatorio que es NP-duro, como se puede ver en (4), con respecto a
la codificacin binaria estndar, y consta en la lista de 21 problemas NP-completos de Karp,
por tanto es improbable que, en algn momento, pueda ser encontrado un algoritmo que
pueda resolverlo en tiempo polinomial. Sin embargo KP no es del tipo fuertemente NP-duro, y
por tanto puede ser resuelto en tiempo seudo-polinomial, particularmente por programacin
dinmica, como se demuestra en (5) ; es decir, que en su codificacin uniaria el problema es
resoluble polinomialmente. De esta manera, incluso grandes instancias del problema pueden
ser resueltas de manera exacta con solvers que utilizan mtodos como la bsqueda dinmica o
branch & bound (en particular Cplex), y el planteamiento de mtodos aproximados, como los
basados en metaheursticas, se da para probar la eficiencia de estos procedimientos.
=1
. .
=1
{0, 1}; = 1, 2, ,
La denominada Cutting Stock, en donde hay que cortar una plancha de acero en diferentes
piezas.
Determinar los artculos que puede almacenar un depsito para maximizar su valor total.
Maximizar el beneficio en asignacin de inversiones cuando slo hay una restriccin.
EJERCICIO:
Estos problemas, en ingls conocidos como Set Covering (SCP), Set Packing (SSP) y Set
Partitioning (SPP), respectivamente, son problemas de optimizacin de tipo NP-hard con un
tronco comn con muchas aplicaciones, en particular sern tratados como problemas de
prueba para los mtodos basados en evolucin diferencial (Captulo 0) y que se pueden
enunciar del siguiente modo:
. . 1 . . 1 . . = 1
Los tres problemas, SCP, SSP y SPP, pueden ser muy tiles para mostrar la transformacin y
relaciones entre problemas. As podemos ver que el Set Packing y el Set Partitioning son
equivalentes. Para pasar del primero al segundo basta con aadir variables de holgura. La
transformacin inversa se realiza mediante variables artificiales. Estos dos problemas son ms
fciles de resolver de forma exacta que el Set Covering ya que en ellos las restricciones
lineales estn ms ajustadas respecto al conjunto de soluciones enteras posibles, por lo que los
ptimos de las relajaciones lineales estn ms cerca de las soluciones enteras.
=1
. .: 1; = 1, ,
=1
{0, 1}; = 1, ,
Este problema tiene diferentes aplicaciones, entre las que podemos destacar la localizacin de
servicios, tales como hospitales, bomberos, etc. y, la asignacin de tripulaciones a vuelos.
El problema del Set Covering es relativamente fcil de resolver con mtodos de Ramificacin y
Acotacin ya que la solucin ptima del problema lineal coincide, en ocasiones, con la del
problema MIP o est bastante cerca de l. La dificultad del problema proviene del nmero
enorme de variables que suelen aparecer en problemas reales.
El gerente de operaciones ha establecido 15 locales que pueden ser adecuados como centros,
as como tambin el costo de alquiler de estos locales. As mismo se ha zonificado la ciudad en
17 zonas. En la tabla adjunta constan los costos as como tambin las zonas de la ciudad que
pueden ser servidas por cada uno de los mismos El objetivo es determinar que centros instalar
de tal manera que se minimice el costo total y que permita dar el servicio a todas las zonas.
9 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
10 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0
11 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1
12 0 0 0 1 1 1 0 0 0 0 0 1 0 1 0
13 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1
14 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0
15 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1
16 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1
17 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1
ALQUILER 600 500 380 400 600 280 500 480 510 390 420 450 500 600 550
ASIGNACION DE TRIPULACIONES
Una empresa area necesita asignar sus tripulaciones para cubrir todos sus vuelos. En
particular, se quiere resolver el problema de asignar TRES tripulaciones con base en Bogot a
los vuelos listados en la primera columna de la tabla. Las otras columnas muestran las 12
secuencias factibles de vuelos para una tripulacin cualquiera. Los nmeros de cada columna
indican el orden de los vuelos. Se necesita elegir tres secuencias (una por tripulacin) de
manera que se cubran todos los vuelos. Se permite tener ms de una tripulacin en un vuelo,
donde la tripulacin extra viaja como pasajeros, pero como parte del contrato colectivo cada
tripulacin extra que le toque viajar cobra como si estuviera trabajando. El coste de asignacin
de una tripulacin a cada secuencia de vuelos se da en miles de dlares en la ltima fila.
El objetivo es determinar una forma ptima de asignacin de las tres tripulaciones de tal
manera que se minimice el costo total para cubrir todos los vuelos.
1 2 3 4 5 6 7 8 9 10 11 12
1 BOG-UIO 1 1 1 1
2 BOG-GYE 1 1 1 1
3 BOG-LIM 1 1 1 1
4 UIO-HAV 2 2 3 2 3
5 UIO-BOG 2 3 5 5
6 HAV-GYE 3 3 4
7 HAV-LIM 3 3 3 3 4
8 GYE-BOG 2 4 4 5
9 GYE-HAV 2 2 2
10 LIM-BOG 2 4 4 5
11 LIM-UIO 2 2 4 4 2
12 Costo 20 30 40 60 70 50 70 80 90 90 80 90
Ahora consideremos el Set Partitioning y, al igual que en los dos anteriores, se tienen los
conjuntos S y H. As como en el Set Covering cada elemento de S tiene que aparecer al menos
en uno de H, en este problema cada elemento de S tiene que aparecer exactamente en uno de
H, por lo tanto la solucin representa una particin del conjunto S. La funcin objetivo puede
ser maximizar o minimizar, segn la aplicacin.
Aplicaciones:
EJEMPLO:
Dado un grafo G, el problema de coloreamiento del grafo consiste en colorear todos los nodos
con la cantidad mnima de colores de tal manera que no existan dos nodos adyacentes (unidos
con una arista) del mismo color. Este problema representa muchas situaciones reales como en
la planificacin de horarios para una serie de actividades que deben tener lugar, algunas de las
cuales no pueden suceder simultneamente, tales como horarios de exmenes, horarios de
competencias deportivas, etc. Se desea conseguir una planificacin que asegure la menor
duracin total de todo el plan.
Para formular este problema se define un grafo en el que cada nodo representa una actividad,
y cada arista (, ) significa que las actividades , no pueden ocurrir simultneamente. El
problema consiste en particionar el conjunto de nodos en el menor conjunto posible de
subconjuntos disjuntos, de tal forma que no existan dos nodos adyacentes en el mismo
subconjunto.
Para formular el problema se consideran todos los posibles conjuntos de nodos tales que no
contengan dos nodos adyacentes, y a cada se le asocia una variable de decisin . La matriz
= ( ) se define como: = 1 si el nodo j pertenece al subconjunto , y cero en caso
contrario. Entonces la formulacin es:
=1
. .: = 1; = 1, ,
=1
{0, 1}; = 1, ,
EJEMPLO:
Ahora consideremos una aplicacin del Set Packing. Igual que en el problema anterior se
tienen los conjuntos S y H, pero ahora cada Hi tiene un valor asociado. El objetivo es
empaquetar tantos elementos de S como sea posible de forma que el beneficio obtenido sea
mximo y no haya solapamientos (ningn elemento de S puede aparecer ms de una vez).
En cierto modo, la relajacin lineal del Set Covering y la del Set Packing son problemas duales.
Sin embargo esto no sirve para establecer una relacin entre los problemas enteros originales.
EJERCICIO:
Este problema, tambin conocido como Traveling Salesman Problem (TSP), ha sido uno de los
ms estudiados en Investigacin Operativa, por lo que merece una atencin especial. Cuando
se desarroll la teora de la Complejidad Algortmica, el TSP fue uno de los primeros problemas
en estudiarse, probando Karp en 1972 que pertenece a la clase de los problemas difciles (NP-
hard).
Un camino (o cadena) es una sucesin de aristas (e1, e2, , ek) en donde el vrtice final de
cada arista coincide con el inicial de la siguiente. Tambin puede representarse por la
sucesin de vrtices utilizados.
Un camino es simple o elemental si no utiliza el mismo vrtice ms de una vez.
Un ciclo es un camino (e1, e2, , ek) en el que el vrtice final de ek coincide con el inicial de
e1.
Un ciclo es simple si lo es el camino que lo define.
Un subtour es un ciclo simple que no pasa por todos los vrtices del grafo.
Un tour o ciclo hamiltoniano es un ciclo simple que pasa por todos los vrtices del grafo.
El Problema del Agente Viajero consiste en determinar un tour de costo mnimo. La figura 2
muestra un grafo de 8 vrtices en el que aparece destacado un ciclo hamiltoniano.
8 5 4
1
6
4
3 6
5
4 3
10
2 5 6
8 10
6 7
4
4 8 4
3 8
Consideraremos, sin prdida de generalidad, que el grafo es completo; es decir, que para cada
par de vrtices existe una arista que los une. Notar que, de no ser as, siempre podemos aadir
una arista ficticia entre dos vrtices con el costo del camino ms corto que los une. As por
ejemplo, en el grafo de la figura 2 podemos aadir una arista entre los vrtices 1 y 6 con costo
9 correspondiente al camino 1-3-6.
MIN c
i j
ij xij
s.t. :
x x
i j
ij
j i
ji 2 i 1,2,...,n
xij 0,1 i j
Las restricciones que aparecen en segundo lugar (vinculadas a todos los subconjuntos de
vrtices S) reciben el nombre de restricciones de eliminacin de subtours y garantizan que la
solucin sea un tour. El problema es que al haber una por cada subconjunto del conjunto de
vrtices, aparecen en una cantidad del orden de 2n, lo cual hace inmanejable tal formulacin.
Se han encontrado restricciones alternativas para evitar la formacin de subtours que suponen
la incorporacin de una cantidad polinmica de restricciones (Miller, Tucker y Zemlin, 1960).
An as, la resolucin ptima del problema ha resultado poco eficiente, salvo para ejemplos
relativamente pequeos, dado el elevado tiempo de computacin requerido por cualquier
mtodo exacto.
Al igual que en los otros modelos de asignacin vistos, se introducen variables binarias xij que
toman el valor 1 si el mdulo i se asigna a la posicin j y 0 en otro caso. La formulacin MIP es
la siguiente:
n n n n
MIN
i 1 j 1 k 1 l 1
tik d jl xij xkl
s.t. :
n
x
j 1
ij 1 i 1,2,...,n
x
i 1
ij 1 j 1,2,...,n
xij 0,1
El problema se llama cuadrtico por la funcin objetivo ya que el costo viene dado por parejas
de variables que aparecen como producto. As pues la funcin objetivo es no lineal, aunque se
puede transformar en un problema lineal entero introduciendo variables que representen a los
productos. Notar que esta transformacin obligara a reformular las restricciones.
Este problema tiene numerosas aplicaciones ya que podemos encontrar en mbitos muy
diversos situaciones como la descrita. As, por ejemplo, el problema de ubicar determinados
servicios (como laboratorios, rayos X,... etc.) en un hospital en donde se conoce el flujo
previsto de personal entre tales servicios. Anlogamente el guardar determinados productos
en un almacn.
El objeto de introducir este problema es doble: por una parte mostrar un problema no lineal,
con un gran nmero de aplicaciones prcticas, que puede transformarse en un PLE y, por otra,
presentar uno de los problemas ms difciles (sino el que ms) dentro de los ya de por s
difciles problemas enteros.
EJERCICIO:
Se tiene un conjunto J={1,2,..,n} de ndices de los trabajos a realizar y otro conjunto I={1,2,..,m}
de personas para realizarlos. El costo (o valor) de asignar la persona i al trabajo j viene dado
por cij. Adems se tiene una disponibilidad bi de recursos de la persona i (como por ejemplo
horas de trabajo) y una cantidad aij de recursos de la persona i necesarias para realizar el
trabajo j.
Con todo esto, el problema consiste en asignar las personas a los trabajos con el mnimo costo
(o el mximo valor).
Al igual que en los otros modelos de asignacin vistos, se introducen variables xij que valen 1 si
la persona i se asigna al trabajo j y 0 en otro caso.
n n
MIN c x
i 1 j 1
ij ij
s.t. :
n
x
i 1
ij 1 j 1,2,...,n
n
a x
j 1
ij ij bi i 1,2,...,n
xij 0,1
Este problema consiste en determinar una permutacin p de las filas y columnas de una matriz
cuadrada dada, de manera que la suma de los elementos por encima de la diagonal sea
mxima. Notar que la permutacin p proporciona el orden tanto de las filas como de las
columnas.
Este problema tambin puede enunciarse en trminos de grafos, lo cual ayuda a formularlo del
siguiente modo:
n n
MAX
i 1 j 1
cij xij
s.t. :
xij x ji 1 i, j V , i j
xij x jk xki 2 1 i < j < k n
xij 0,1
Donde xij=1 representa que el sector (vrtice) i precede al j en la ordenacin dada por la
solucin.
Para medir la calidad de un heurstico existen diversos procedimientos, entre los que se
encuentran los siguientes:
Normalmente se mide, para cada uno de los ejemplos, la desviacin porcentual de la solucin
heurstica frente a la ptima, calculando posteriormente el promedio de dichas desviaciones.
Si llamamos ch al valor objetivo en la solucin del algoritmo heurstico y copt al valor objetivo de
la solucin ptima de un ejemplo dado, en un problema de optimizacin el GAP absoluto
(desviacin absoluta) viene dada por la expresin:
= | |
| |
= 100%
En ocasiones el ptimo del problema no est disponible ni siquiera para un conjunto limitado
de ejemplos. Un mtodo alternativo de evaluacin consiste en comparar el valor de la solucin
que proporciona el heurstico con una cota del problema (inferior si es un problema de
minimizacin y superior si es de maximizacin). Obviamente la bondad de esta medida
depender de la bondad de la cota (cercana de sta al ptimo), por lo que, de alguna manera,
tendremos que tener informacin de lo buena que es dicha cota. En caso contrario la
comparacin propuesta no tiene demasiado inters.
Este es uno de los mtodos ms empleados en problemas difciles (NP-duros) sobre los que se
ha trabajado durante tiempo y para los que se conocen algunos buenos heursticos. Al igual
que ocurre con la comparacin con las cotas, la conclusin de dicha comparacin est en
funcin de la bondad del heurstico escogido.
Uno de los mtodos que durante un tiempo tuvo bastante aceptacin es analizar el
comportamiento en el peor caso del algoritmo heurstico; esto es, considerar los ejemplos que
sean ms desfavorables para el algoritmo y acotar analticamente la mxima desviacin
respecto del ptimo del problema. Lo mejor de este mtodo es que acota el resultado del
algoritmo para cualquier ejemplo; sin embargo, por esto mismo, los resultados no suelen ser
representativos del comportamiento medio del algoritmo. Adems, el anlisis puede ser muy
complicado para los heursticos ms sofisticados.
Aquellos algoritmos que, para cualquier ejemplo, producen soluciones cuyo costo no se aleja
de un porcentaje del costo de la solucin ptima, se llaman Algoritmos -Aproximados. Esto
es; en un problema de minimizacin se tiene que cumplir para un > 0 que:
ch (1+) copt
3. Mtodos Constructivos
Los mtodos constructivos son procedimientos iterativos que, en cada paso, aaden un
elemento hasta completar una solucin. Usualmente son mtodos deterministas y estn
basados en seleccionar, en cada iteracin, el elemento con mejor evaluacin. Estos mtodos
son muy dependientes del problema que resuelven, por lo que utilizaremos el Problema del
Agente Viajero (TSP) para describirlos. En este captulo se describen cuatro de los mtodos
ms conocidos para el TSP.
Uno de los heursticos ms sencillos para el TSP es el llamado del vecino ms cercano, que es
un algoritmo glotn (Greedy) que trata de construir un ciclo Hamiltoniano de bajo costo
basndose en el vrtice cercano a uno dado. Este algoritmo en una versin estndar tiene el
siguiente cdigo:
Inicializacin
Hacer t = j y W = V \ {j}.
Mientras ( W )
Conectar t a j
El algoritmo tal y como aparece puede ser programado en unas pocas lneas de cdigo. Sin
embargo una implementacin directa ser muy lenta al ejecutarse sobre ejemplos de gran
tamao (10,000 vrtices). As pues, incluso para un heurstico tan sencillo como ste, es
importante pensar en la eficiencia y velocidad de su cdigo.
Un subgrafo candidato es un subgrafo del grafo completo con los vrtices y nicamente las
aristas consideradas atractivas para aparecer en un ciclo Hamiltoniano de bajo costo. Una
posibilidad es tomar, por ejemplo, el subgrafo de los k vecinos ms cercanos; esto es, el
subgrafo con los vrtices y para cada uno de ellos las aristas que lo unen con los k vrtices
ms cercanos. Este subgrafo tambin ser usado en otros procedimientos.
Cuando un vrtice queda conectado (con grado 2) al tour en construccin, se eliminan del
subgrafo candidato las aristas incidentes con l.
Se especifica un nmero s < k de modo que cuando un vrtice que no est en el tour est
conectado nicamente a s o menos aristas del subgrafo candidato se considera que se est
quedando aislado. Por ello se inserta inmediatamente en el tour. Como punto de insercin
se toma el mejor de entre los k vrtices ms cercanos presentes en el tour.
Considerando el estudio emprico sobre las 30 ejemplos utilizados, la versin inicial del
algoritmo presenta un porcentaje de desviacin en promedio respecto del ptimo de 24.2%,
mientras que la mejorada con k=10 y s=4 de 18.6%. La primera tiene un tiempo de ejecucin
medio de 15.3 segundos mientras que la segunda lo tiene de 0.3 segundos.
EJERCICIO:
Implemente un cdigo para hallar una solucin al TSP por medio del algoritmo del vecino ms
cercano.
Otra aproximacin intuitiva a la resolucin del TSP consiste en comenzar construyendo ciclos
que visiten nicamente unos cuantos vrtices, para posteriormente extenderlos insertando los
vrtices restantes. En cada paso se inserta un nuevo vrtice en el ciclo hasta obtener un ciclo
Hamiltoniano. Este procedimiento es debido a los mismos autores que el anterior y su
esquema es el siguiente:
Algoritmo de Insercin
Inicializacin
Seleccionar un ciclo inicial (subtour) con k vrtices.
Mientras ( W )
Hacer W = W \ {j}.
Existen varias posibilidades para implementar el esquema anterior de acuerdo con el criterio
de seleccin del vrtice j de W a insertar en el ciclo. Se define la distancia de un vrtice v al
ciclo como el mnimo de las distancias de v a todos los vrtices del ciclo:
La figura 2 muestra la diferencia entre estos criterios en un caso dado. El ciclo actual est
formado por 4 vrtices y hay que determinar el prximo a insertar. La insercin ms cercana
escoger el vrtice i, la ms lejana el s y la ms barata el k.
i
k
EJERCICIO:
Implemente un cdigo para hallar una solucin al TSP por medio del algoritmo de insercin.
Las figuras siguientes ilustran los conceptos vistos sobre un grafo completo de 8 vrtices. En la
figura 3 tenemos un rbol generador. Notar que contiene a todos los vrtices y no hay ningn
ciclo. La figura 4 muestra un acoplamiento perfecto en el que podemos ver cmo cada vrtice
es incidente con una, y solo una, de las aristas. Al ser un grafo de 8 vrtices el nmero mximo
de aristas en un acoplamiento es de 4, por lo que el de la figura es perfecto.
5 5
1 1
6 6
3 3
2 2
7 7
4 4
8 8
El algoritmo debido a Prim (1957) obtiene un rbol generador de mnimo peso de un grafo G
completo. El algoritmo comienza por definir el conjunto T de aristas del rbol (inicialmente
vaco) y, el conjunto U de vrtices del rbol (inicialmente formado por uno elegido al azar). En
cada paso se calcula la arista de menor costo que une U con V\U, aadindola a T y pasando su
vrtice adyacente de V\U a U. El procedimiento finaliza cuando U es igual a V; en cuyo caso el
conjunto T proporciona la solucin.
Dado un ciclo vi0, vi1,, vik que pasa por todos los vrtices de G (no necesariamente simple), el
siguiente procedimiento obtiene un ciclo Hamiltoniano comenzando en vi0 y terminando en vik
(vi0= vik). En el caso de grafos con costos cumpliendo la desigualdad triangular (como es el caso
de grafos eucldeos), este procedimiento obtiene un ciclo de longitud menor o igual que la del
ciclo de partida.
A partir de los elementos descritos se puede disear un algoritmo para obtener un ciclo
Hamiltoniano. Basta con construir un rbol generador de mnimo peso (figura 5), considerar el
ciclo en el que todas las aristas del rbol son recorridas dos veces, cada vez en un sentido
(figura 6), y aplicar el algoritmo de obtencin de tour a dicho ciclo (figura 7). El ejemplo de las
figuras mencionadas ilustra dicho procedimiento sobre un grafo completo con 10 vrtices.
16 3 4
3 4
25
2 2
25 1 1
19
10 10
15 14
5 9 5 9
19
7 7
8 8
17 6 9 6
La figura 5 muestra un rbol generador de mnimo peso e igual a 156. En la figura 6 se han
duplicado las aristas y se seala mediante flechas la direccin del ciclo resultante. Su costo
obviamente ser de 156x2=312.
El proceso de duplicacin de las aristas (recorrerlas todas en ambos sentidos) para obtener un
tour aumenta en gran medida el costo de la solucin. Podemos ver que es posible obtener un
ciclo que pase por todos los vrtices de G a partir de un rbol generador sin necesidad de
duplicar todas las aristas. De hecho, basta con aadir aristas al rbol de modo que todos los
vrtices tengan grado par.
Algoritmo de Christofides
1. Calcular un rbol Generador de Mnimo Peso
2. Obtener el conjunto de vrtices de grado impar en el rbol.
3. Obtener un Acoplamiento Perfecto de mnimo peso sobre dichos vrtices.
4. Aadir las aristas del Acoplamiento al rbol.
5. Aplicar el procedimiento de Obtencin de Tour.
El clculo del acoplamiento perfecto de costo mnimo sobre un grafo de k vrtices se realiza en
un tiempo O(k3) con el algoritmo de Edmonds (1965). Dado que un rbol generador de
mnimo peso tiene como mximo n-1 hojas (vrtices de grado 1 en el rbol), el procedimiento
de Christofides tendr un tiempo de orden O(n3).
3
cH c
2 OPT
Prueba:
Sea c(AGMP) el costo del rbol generador de mnimo peso y c(A) el costo del acoplamiento
perfecto calculado en el algoritmo de Christofides. Al aadir las aristas del acoplamiento al
rbol se obtiene un ciclo (con posibles repeticiones) cuyo costo es la suma de ambos costos.
Dado que la matriz de distancias cumple la desigualdad triangular, al aplicar el algoritmo de
obtencin de tour el costo puede reducirse eventualmente. Por ello el costo de la solucin
obtenida, cH, cumple:
Un rbol generador de mnimo peso, por construccin, tiene un costo menor que cualquier
ciclo Hamiltoniano y, por lo tanto, que el ciclo Hamiltoniano de costo mnimo (tour ptimo).
Para probarlo basta con considerar un ciclo Hamiltoniano y quitarle una arista, con lo que se
obtiene un rbol generador.
El rbol generador de mnimo peso tiene, obviamente, un costo menor que dicho rbol
generador y, por lo tanto, que el ciclo Hamiltoniano.
Luego:
El acoplamiento del paso 3 del algoritmo de Christofides tiene un costo menor o igual que la
mitad de la longitud de un tour ptimo en un grafo Eucldeo. Para probarlo consideremos un
tour ptimo y llamemos S al conjunto de vrtices de grado impar en el rbol. El algoritmo
calcula un acoplamiento perfecto de costo mnimo sobre los vrtices de S. La figura 8 muestra
un ciclo Hamiltoniano ptimo y los vrtices de S en oscuro. Adems aparecen dos
acoplamientos perfectos sobre S, A1 (trazo continuo) y A2 (trazo discontinuo), en donde cada
vrtice est acoplado al ms prximo en el tour ptimo.
Como se cumple la desigualdad triangular, se tiene que c(A1)+c(A2) cOPT. . Es evidente que por
ser el de costo mnimo c(A) c(A1) y c(A) c(A2), de donde:
Las figuras siguientes ilustran el mtodo de Christofides sobre el mismo ejemplo de las figuras
5, 6 y 7. En la figura 9 aparecen oscurecidos los vrtices de grado impar en el rbol generador,
y en trazo discontinuo las aristas del acoplamiento perfecto de costo mnimo sobre tales
vrtices. Al aadirlas se obtiene un tour de costo 199. La figura 10 muestra el ciclo
Hamiltoniano que se obtiene al aplicarle el procedimiento de obtencin del ciclo al tour de la
figura anterior. La solucin tiene un costo de 203, mientras que la obtenida con el
procedimiento de duplicar aristas (figura 7) tena un costo de 258.
16 16
3 4 3 4
25 25
21
21
2 2
25 19 1 19 1
10 10
15 14 15 14
5 9 5 9
48
19 19
19
7 7
8 8
6 9 6 9
17 17
Los mtodos de esta seccin son debidos a Clarke y Wright (1964) y fueron propuestos
inicialmente para problemas de rutas de vehculos. Veamos una adaptacin de estos
procedimientos al Problema del Agente Viajero.
El procedimiento de unin de subtours se basa en eliminar las aristas que conectan dos
vrtices de diferentes subtours con el vrtice base, uniendo posteriormente los vrtices entre
si. Llamamos ahorro a la diferencia del costo entre las aristas eliminadas y la aadida.
Algoritmo de Ahorros
Inicializacin
Tomar un vrtice zV como base.
Establecer los n-1 subtours [( z,v),(v,z)] vV \{z} .
Mientras ( Queden dos o ms subtours )
Para cada par de subtours calcular el ahorro de unirlos al eliminar en
cada uno una de las aristas que lo une con z y conectar los dos vrtices
asociados.
Unir los dos subtours que produzcan un ahorro mayor.
En las figuras 11 y 12 se ilustra una iteracin del procedimiento. Podemos ver cmo se
combinan dos subtours eliminando las aristas de los vrtices i y j al vrtice base z, e insertando
la arista (i,j).
i i
z j z j
En la implementacin del algoritmo se tiene que mantener una lista con las combinaciones
posibles. El punto clave de la implementacin es la actualizacin de esta lista.
Sin embargo, al unir dos subtours nicamente se ven afectados aquellos en los que su mejor
conexin pertenece a alguno de los dos subtours recin unidos. Luego basta con actualizar
estos en cada iteracin sin necesidad de actualizarlos todos cada vez que se realiza una unin.
Al igual que en otros heursticos, podemos utilizar el subgrafo candidato (en el que estn todos
los vrtices y slo las aristas consideradas atractivas) para acelerar los clculos. As, al
actualizar la lista de la mejores conexiones nicamente se consideran aristas del subgrafo
candidato.
El mtodo presenta un tiempo de ejecucin de O(n3). Respecto al estudio emprico sobre los
30 ejemplos de la TSPLIB los porcentajes de desviacin respecto del ptimo son de 9.8% para
el mtodo original y 9.6% para el mejorado con el uso del subgrafo candidato. Adems, el
tiempo de ejecucin es mucho menor para este ltimo.
La siguiente tabla recoge los resultados del estudio comparativo sobre los cuatro algoritmos
descritos, con los 30 ejemplos de la TSPLIB considerados:
Todos los mtodos estn basados en clculos relativamente sencillos y han sido
implementados eficientemente, por lo que los tiempos de computacin son muy parecidos
entre s e inferiores a 1 segundo en promedio. Por ello, para distinguir entre todos, en la tabla
A la vista de los resultados podemos concluir que tanto el mtodo de los ahorros como el de
insercin basado en el elemento ms lejano son los que mejores resultados obtienen, aunque
presentan un tiempo de computacin mayor que los otros dos.
Definicin: Sea X el conjunto de soluciones del problema combinatorio. Cada solucin x tiene
un conjunto de soluciones asociadas N(x) X, que denominaremos entorno de x.
Definicin: Dada una solucin x, cada solucin de su entorno, x N(x), puede obtenerse
directamente a partir de x mediante una operacin llamada movimiento.
Un procedimiento de bsqueda local parte de una solucin inicial x0, calcula su entorno N(x0) y
escoge una nueva solucin x1 en l. Dicho de otro modo, realiza el movimiento m1 que
aplicado a x0 da como resultado x1. Este proceso puede ser aplicado reiteradamente tal y
como muestra el diagrama siguiente:
x0 1 x1 2 x2 3 x3
m m m
El ptimo local alcanzado no puede mejorarse mediante el movimiento definido. Sin embargo,
el mtodo empleado no permite garantizar, de ningn modo, que sea el ptimo global del
problema. Ms an, dada la miopa de la bsqueda local, es de esperar que en problemas de
cierta dificultad, en general no lo sea.
considera un procedimiento de bsqueda local greedy iniciado a partir de una solucin x0 con
valor 0.00001 y que realiza 8 movimientos de mejora hasta alcanzar la solucin x8 con valor
0.000015. La figura muestra cmo x8 es un ptimo local y cualquier movimiento que se le
aplique proporcionar una solucin con peor valor. Podemos ver cmo el ptimo global del
problema, con un valor de 0.00002, no puede ser alcanzado desde x8, a menos que
permitamos realizar movimientos que empeoren el valor de las soluciones y sepamos dirigir
correctamente la bsqueda
PTIMO GLOBAL
8 (PTIMO LOCAL)
0 (VALOR INICIAL)
Pese a la miopa de los mtodos de bsqueda local simples, suelen ser muy rpidos y
proporcionan soluciones que, en promedio, estn relativamente cerca del ptimo global del
problema. Adems, dichos mtodos suelen ser el punto de partida en el diseo de algoritmos
Metaheursticos ms complejos. En este apartado vamos a estudiar algunos mtodos
heursticos de bsqueda local para el Problema del Agente Viajero.
Este procedimiento est basado en la siguiente observacin para grafos eucldeos. Si un ciclo
Hamiltoniano se cruza a si mismo, puede ser fcilmente acortado, basta con eliminar las dos
aristas que se cruzan y reconectar los dos caminos resultantes mediante aristas que no se
corten. El ciclo final es ms corto que el inicial.
Un movimiento 2-opt consiste en eliminar dos aristas y reconectar los dos caminos resultantes
de una manera diferente para obtener un nuevo ciclo. Las figuras 14 y 15 ilustran este
movimiento en el que las aristas (i,j) y (l,k) son reemplazadas por (l,j) y (i,k). Notar que slo
hay una manera de reconectar los dos caminos formando un nico tour.
l l
i i
j k j k
Algoritmo 2-ptimo
Inicializacin
move = 1
Mientras (move = 1)
La variable move vale 0 si no se ha realizado ningn movimiento al examinar todos los vrtices,
y 1 en otro caso. El algoritmo finaliza cuando move=0, con lo que queda garantizado que no
existe ningn movimiento 2-opt que pueda mejorar la solucin.
Dado que el proceso de examinar todos los movimientos 2-opt asociados a cada vrtice es muy
costoso computacionalmente, se pueden introducir las siguientes mejoras para acelerar el
algoritmo:
Exigir que al menos una de las dos aristas aadidas en cada movimiento, para formar la
nueva solucin, pertenezca al subgrafo candidato.
Observando el funcionamiento del algoritmo se puede ver que en las primeras iteraciones
la funcin objetivo decrece substancialmente, mientras que en las ltimas apenas se
modifica. De hecho la ltima nicamente verifica que es un ptimo local al no realizar
ningn movimiento. Por ello, si interrumpimos el algoritmo antes de su finalizacin,
ahorraremos bastante tiempo y no perderemos mucha calidad.
El comprobar si existe, o no, un movimiento 2-opt de mejora utiliza un tiempo de orden O(n2),
ya que hay que examinar todos los pares de aristas en el ciclo. Podemos encontrar clases de
problemas para los que el tiempo de ejecucin del algoritmo no est acotado
polinmicamente. Respecto al estudio emprico sobre los ejemplos de la TSPLIB considerados,
partiendo de la solucin del algoritmo del Vecino ms cercano, el promedio de desviacin del
ptimo es del 8.3%.
Examinar todos los movimientos k-opt de una solucin lleva un tiempo del orden de O(nk) por
lo que, para valores altos de k, slo es aplicable a ejemplos de tamao pequeo.
En este apartado vamos a estudiar el caso de k=3 y adems impondremos ciertas restricciones
para reducir el entorno y poder realizar los clculos en un tiempo razonable.
En un movimiento 3-opt, una vez eliminadas las tres aristas hay ocho maneras de conectar los
tres caminos resultantes para formar un ciclo. Las figuras siguientes ilustran algunos de los
ocho casos. La figura 16 muestra el ciclo inicial en el que se encuentran las aristas (a, b), (c, d)
y (e, f) por las que se dividir ste. La figura 17 utiliza la propia arista (e,f) para reconstruir el
ciclo, por lo que, este caso equivale a realizar un movimiento 2-opt sobre las aristas (a,b) y
(c,d). Anlogamente podemos considerar los otros dos casos en los que se mantiene una de
las tres aristas en el ciclo y se realiza un movimiento 2-opt sobre las restantes. Las figuras 18 y
19 muestran un movimiento 3-opt puro en el que desaparecen del ciclo las tres aristas
seleccionadas.
e e
a a
f f
b b
c c
d d
e e
a a
f f
b b
c c
d d
A diferencia de los movimientos 2-opt, el reconstruir el ciclo una vez eliminadas las tres aristas
es muy costoso. Notar que la direccin en el ciclo puede cambiar en todos los caminos menos
en el ms largo por lo que hay que realizar varias actualizaciones. Adems, el mero hecho de
examinar todas las posibilidades representa un esfuerzo computacional enorme (ms de 1
hora en los problemas considerados). Por ello, se consideran nicamente algunos de los
movimientos 3-opt. En concreto se define para cada vrtice i un conjunto de vrtices N(i) de
modo que al examinar los movimientos 3-opt asociados a una arista (i,j), nicamente se
consideran aquellos en los que las otras dos aristas tengan al menos uno de los vrtices en
N(i). Una posibilidad para definir N(i) consiste en considerar los vrtices adyacentes a i en el
subgrafo candidato.
move = 1
Mientras (move = 1)
move=0
Como vimos en la introduccin a los mtodos de mejora (figura 13), el problema de los
algoritmos de bsqueda local es que suelen quedarse atrapados en un ptimo local. Vimos
que para alcanzar una solucin mejor a partir de un ptimo local habra que comenzar por
realizar movimientos que empeoren el valor de la solucin, lo que conducira a un esquema de
Se pueden considerar muchas variantes para este algoritmo. En este apartado consideraremos
una versin sencilla basada en realizar dos movimientos 2-opt seguidos de un movimiento de
insercin. Ilustraremos el procedimiento mediante el ejemplo desarrollado en las figuras
siguientes sobre un grafo de 12 vrtices. Consideramos el ciclo Hamiltoniano inicial dado por el
orden natural de los vrtices y lo representamos tal y como aparece en la figura 20.
1 2 3 4 5 6 7 8 9 10 11 12
Figura 21
Figura 20
Paso 1: Realiza un movimiento 2-opt reemplazando las aristas (12,1) y (5,6) por (12,5) y (1,6).
El resultado se muestra en la figura 21.
1 2 3 4 5 6 7 8 9 10 11 12
Figura 22
Figura 21
Paso 2: Realiza un movimiento 2-opt reemplazando las aristas (6,1) y (3,4) por (6,3) y (1,4). Ver
figura 22.
1 2 3 4 5 6 7 8 9 10 11 12
Figura 23
Figura 22
1 2 3 4 5 6 7 8 9 10 11 12
Figura 24
Figura 23
move = 1
Mientras (move = 1)
move=0
Dado el gran nmero de combinaciones posibles para escoger los movimientos, es evidente
que una implementacin eficiente del algoritmo tendr que restringir el conjunto de
movimientos a examinar en cada paso. De entre las numerosas variantes estudiadas para
reducir los tiempos de computacin del algoritmo y aumentar la eficiencia del proceso,
destacamos las dos siguientes:
Utilizar el subgrafo candidato en el que nicamente figuran las aristas relativas a los 6
vecinos ms cercanos para cada vrtice. Se admiten movimientos compuestos de hasta 15
movimientos simples todos del tipo 2-opt o insercin. Para el primer movimiento simple
nicamente se examinan 3 candidatos.
El subgrafo candidato est formado por las aristas relativas a los 8 vecinos ms cercanos.
Se admiten hasta 15 movimientos simples del tipo 2-opt o insercin por cada movimiento
completo. En los 3 primeros movimientos simples nicamente se examinan 2 aristas.
La siguiente tabla recoge el promedio de las desviaciones del ptimo y tiempos de ejecucin
de los 4 algoritmos de mejora considerados sobre los 30 ejemplos de la TSPLIB. Todos ellos
toman como solucin inicial la obtenida con el mtodo del Vecino ms cercano.
Respecto a los tiempos de ejecucin, podemos ver cmo el pasar de una exploracin 2-opt a 3-
opt aumenta considerablemente el tiempo, incluso en la versin restringida planteada.
Tambin es de sealar cmo aumenta el tiempo, en casi un factor de 3, de una versin a otra
del algoritmo de Lin y Kernighan, mientras que el porcentaje de desviacin respecto del
ptimo nicamente gana un 0.4 %.
5. Mtodos Combinados
En los apartados anteriores hemos visto los mtodos constructivos que obtienen una solucin
del problema y los mtodos de mejora que, a partir de una solucin inicial, tratan de obtener
nuevas soluciones con mejor valor. Es evidente que ambos mtodos pueden combinarse,
tomando los segundos como solucin inicial la obtenida con los primeros. En este apartado
estudiaremos algunas variantes y mejoras sobre tal esquema.
Como hemos visto, una de las limitaciones ms importantes de los mtodos heursticos es la
denominada miopa provocada por seleccionar, en cada paso, la mejor opcin. Resulta muy
ilustrativo que en los mtodos de insercin, se obtengan mejores resultados al elegir al azar el
vrtice a insertar, que al tomar el elemento ms cercano (11.1% frente a 20% de promedio de
desviacin del ptimo). Sin embargo, es evidente que el tomar una opcin al azar como norma
puede conducirnos a cualquier resultado, por lo que parece ms adecuado recurrir a algn
procedimiento sistemtico que compendie la evaluacin con el azar. Veamos dos de los ms
utilizados.
Una modificacin en el algoritmo de construccin consiste en sustituir una eleccin greedy por
una eleccin al azar de entre un conjunto de buenos candidatos. As, en cada paso del
procedimiento, se evalan todos los elementos que pueden ser aadidos y se selecciona un
subconjunto con los mejores. La eleccin se realiza al azar sobre ese subconjunto de buenos
candidatos.
En todos los casos la eleccin final se realiza al azar de entre los preseleccionados.
Una estrategia alternativa a la anterior consiste en considerar las evaluaciones como pesos y
utilizar un mtodo probabilstico para seleccionar una opcin. As, si v1, v2,vk son los posibles
elementos a aadir en un paso del algoritmo, se calculan sus evaluaciones e1, e2,, ek, y se les
asigna un intervalo del siguiente modo:
k 1 k
ei , ei
vk ek i 1 i 1
k
Se genera un nmero a al azar entre 0 y e
i 1
i , y se selecciona el elemento correspondiente al
Al algoritmo constructivo modificado, tanto con la opcin primera como con la segunda, lo
llamaremos algoritmo constructivo aleatorizado. Este algoritmo puede que produzca una
solucin de peor calidad que la del algoritmo original. Sin embargo, dado que el proceso no es
completamente determinista, cada vez que lo realicemos sobre un mismo ejemplo
obtendremos resultados diferentes. Esto permite definir un proceso iterativo consistente en
ejecutar un nmero prefijado de veces (MAX_ITER) el algoritmo y quedarnos con la mejor de
las soluciones obtenidas. Obviamente, cada una de dichas soluciones puede mejorarse con un
algoritmo de bsqueda local. El siguiente procedimiento incorpora el algoritmo de mejora a
dicho esquema.
En cada iteracin el algoritmo construye una solucin (fase 1) y despus trata de mejorarla
(fase 2). As, en la iteracin i, el algoritmo construye la solucin x(i) con valor S(i) y
posteriormente la mejora obteniendo x*(i) con valor S*(i). Notar que x*(i) puede ser igual a x(i)
si el algoritmo de la segunda fase no encuentra ningn movimiento que mejore la solucin.
Dadas las numerosas variantes posibles sobre el esquema propuesto, no las incluiremos en la
comparativa realizada sobre los 30 ejemplos de la TSPLIB. nicamente citar que en general los
resultados son de mejor calidad que los obtenidos por el heurstico de Lin y Kernighan
(alrededor de un 0.5 %) aunque a expensas de emplear tiempos de computacin bastante
mayores (del orden de algunos minutos).
Dado el inters por resolver problemas enteros en general, y en particular el TSP, se han
propuesto numerosas mejoras y nuevas estrategias sobre el esquema anterior. Una de las ms
utilizadas es la denominada tcnica de Multi-Arranque que abordamos en la prxima seccin.
Los mtodos Multi-Start (tambin llamados Re-Start) generalizan el esquema anterior. Tienen
dos fases: la primera en la que se genera una solucin y la segunda en la que la solucin es
tpicamente, pero no necesariamente, mejorada. Cada iteracin global produce una solucin,
usualmente un ptimo local, y la mejor de todas es la salida del algoritmo.
Algoritmo Multi-Arranque
Mientras (Condicin de parada)
Fase de Generacin
Construir una solucin.
Fase de Bsqueda
Aplicar un mtodo de bsqueda para mejorar la solucin
construida
Actualizacin
Si la solucin obtenida mejora a la mejor almacenada,
actualizarla.
Dada su sencillez de aplicacin, estos mtodos han sido muy utilizados para resolver gran
cantidad de problemas. En el contexto de la programacin no lineal sin restricciones, podemos
encontrar numerosos trabajos tanto tericos como aplicados. Rinnoy Kan y Timmer (1989)
estudian la generacin de soluciones aleatorias (mtodos Monte Carlo) y condiciones de
convergencia. Las primeras aplicaciones en el mbito de la optimizacin combinatoria
consistan en mtodos sencillos de construccin, completa o parcialmente aleatorios, y su
posterior mejora con un mtodo de bsqueda local. Sin embargo el mismo esquema permite
sofisticar el procedimiento basndolo en unas construcciones y/o mejoras ms complejas.
Numerosas referencias y aplicaciones se pueden encontrar en Mart (2000).
Uno de los artculos que contiene las ideas en que se basa el mtodo Tab Search (Glover,
1977) tambin incluye aplicaciones de estas ideas para los mtodos de multi-start.
Bsicamente se trata de almacenar la informacin relativa a soluciones ya generadas y
utilizarla para la construccin de nuevas soluciones. Las estructuras de memoria reciente y
frecuente se introducen en este contexto. Diferentes aplicaciones se pueden encontrar en
Rochat y Taillard (1995) y Lokketangen y Glover (1996).
Una de las variantes ms populares de estos mtodos se denomina GRASP (Feo y Resende,
1995) y est obteniendo resultados excelentes en la resolucin de numerosos problemas
combinatorios. La prxima seccin describe en detalle estos mtodos.
La palabra GRASP proviene de las siglas de Greedy Randomized Adaptive Search Procedures
que en castellano sera algo as como: Procedimientos de Bsqueda basados en funciones
Greedy Aleatorizadas Adaptativas (que se adaptan). Veamos los elementos de este
procedimiento.
Se dice que el heurstico greedy se adapta porque en cada iteracin se actualizan los
beneficios obtenidos al aadir el elemento seleccionado a la solucin parcial. Es decir, la
evaluacin que se tenga de aadir un determinado elemento a la solucin en la iteracin j, no
coincidir necesariamente con la que se tenga en la iteracin j+1.
Al igual que ocurre en muchos mtodos, las soluciones generadas por la fase de construccin
de GRASP no suelen ser ptimos locales. Dado que la fase inicial no garantiza la optimalidad
local respecto a la estructura de entorno en la que se est trabajando (notar que hay
selecciones aleatorias), se aplica un procedimiento de bsqueda local como
Postprocesamiento para mejorar la solucin obtenida
Algoritmo GRASP
Mientras (Condicin de parada)
Fase Constructiva
Seleccionar una lista de elementos candidatos.
Considerar una Lista Restringida de los mejores Candidatos.
Seleccionar un elemento aleatoriamente de la Lista Restringida.
Fase de Mejora
Realizar un proceso de bsqueda local a partir de la solucin construida hasta
que no se pueda mejorar ms.
Actualizacin
Si la solucin obtenida mejora a la mejor almacenada, actualizarla.
El realizar muchas iteraciones GRASP es una forma de realizar un muestreo del espacio de
soluciones. Basndonos en las observaciones empricas, se ve que la distribucin de la
muestra generalmente tiene un valor en promedio que es inferior al obtenido por un
procedimiento determinista, sin embargo, la mejor de las soluciones encontradas
generalmente supera a la del procedimiento determinista con una alta probabilidad.
Se puede incluir una fase previa a la de construccin: una fase determinista con el objetivo
de ahorrar esfuerzo a la fase siguiente.
Si se conoce que ciertas subestructuras forman parte de una solucin ptima, stas pueden
ser el punto de partida de la fase constructiva.
Tal y como sealan Feo y Resende una de las caractersticas ms relevantes de GRASP es su
sencillez y facilidad de implementacin. Basta con fijar el tamao de la lista restringida de
candidatos y el nmero de iteraciones para determinar completamente el procedimiento. De
esta forma se pueden concentrar los esfuerzos en disear estructuras de datos para optimizar
la eficiencia del cdigo y proporcionar una gran rapidez al algoritmo, dado que ste es uno de
los objetivos principales del mtodo.
El enorme xito de este mtodo se puede constatar en la gran cantidad de aplicaciones que
han aparecido en los ltimos aos. Festa y Resende (2001) comentan cerca de 200 trabajos en
los que se aplica o desarrolla GRASP.
Por ltimo, hay que resaltar que los algoritmos basados en GRASP pueden ser mejorados
grandemente si se los combina con procedimientos provenientes de otras Metaheursticas,
como Rencadenamiento de trayectorias (Path Relinking) o Bsqueda en vecindades variables
(Variable neighborhood search)
La Bsqueda en Vecindades Variables (Variable Neighborhood Search, VNS por sus siglas) es
una metaheurstica de desarrollo reciente, propuesta por Hansen y Madlenovic para resolver
problemas de optimizacin combinatoria, cuya idea bsica es cambiar sistemticamente la
vecindad, por medio de un procedimiento aleatorio o determinstico, dentro de un
procedimiento de bsqueda local. Este cambio de vecindad puede favorecer enormemente la
eficiencia de los algoritmos pues diversifica la bsqueda y as la bsqueda no queda viciada por
algn sesgo en el tipo de vecindad seleccionada, por lo que VNS constituye una herramienta
simple y poderosa para mejorar la eficiencia de los algoritmos de bsqueda.
Con VNS se deben tener en cuenta estos tres principios a la hora de disear un algoritmo,
pudiendo efectuar los cambios de vecindad de manera determinista o estocstica.
FUNCIN OBJETIVO
Minimizar { }.
: [,] =makespan
(5) Una vez que el procesamiento inicia en un trabajo, se procede a completarlo sin
interrupcin (sin derechos preferentes).
Z: FUNCIN OBJETIVO
: PARMETRO VORAZ
() : Rango de elementos.
ANCHO= Rango x
1. x=0
3. Mientras c0 hacer.
4. =min {g(T)/ };
5. =mx { g(T)/ };
6. = { / g(s) [[ ]]}
7. Seleccionar aleatoriamente s ;
8. = {}
FUNCIONES DE SESGO
Un GRASP estndar usa una funcin de sesgo aleatoria. Otras funciones de sesgo tales
como sesgo lineal, sesgo logartmico, sesgo exponencial y sesgo polinomial pueden ser
usados en el algoritmo de GRASP. Sin embargo, cualquier distribucin de probabilidad
puede ser usada para sesgar la seleccin hacia ciertos candidatos en particular. En este
paper hemos considerado sesgo aleatorio para la ejecucin de GRASP.
3. Seleccionar n H;
4. H={y () /f(y)<f(x)}
5. FIN WHILE
6. FIN LOCAL
RESULTADOS NUMRICOS
TABLA 1
Mquinas
Trabajos 1 2 3 4 5
1 2 4 6 8 10
2 3 2 4 5 7
3 4 3 1 4 5
4 3 4 3 8 4
5 3 6 5 7 3
0 0 0 0 0
Ahora tomamos el trabajo 1 y calculamos el tiempo que tomar todas las mquinas
completarlo. Similarmente esto es calculado para todos los trabajos.
Trabajo 1
2 6 12 20 30
Trabajo 2
3 5 9 14 21
Trabajo 3
4 7 8 12 17
Trabajo 4
3 7 10 18 22
Trabajo 5
3 9 14 21 24
Si 0.28 elegir 2
Elegiremos el trabajo 3.
Trabajo (2 1)
5 9 15 23 33
Trabajo (2 3)
7 10 11 18 26
Trabajo (2 4)
6 10 13 22 26
Trabajo (2 5)
6 12 17 24 27
Mximo tiempo de terminacin= 33
Mnimo tiempo de terminacin= 26
Rango= 7
Cuando =0.5
Ancho =7(0.5)= 3.5
RCL= {26,29.5}
Trabajo (2 3)
7 10 11 18 26
Trabajo (2 3 1)
9 13 19 27 37
Trabajo (2 3 4)
10 14 17 26 30
Trabajo (2 3 5)
10 16 21 28 31
Rango= 37 -30 = 7
Con = 0.5
Ancho= 7*0.5= 3.5
RCL = {30, 33.5)
Los trabajos (2 3 4) y (2 3 5) caen en este rango.
Supongamos que se elige el trabajo (2 3 4)
Fijamos (2 3 4) y probamos sus combinaciones
TRABAJO (2 3 4)
10 14 17 26 30
TRABAJO (2 3 4 1)
12 18 24 34 44
TRABAJO (2 3 4 5)
13 20 25 33 36
Rango= 44-36= 8
Ancho=8*0.5= 4
RCL= {36,40}
El trabajo (2 3 4 5) cae en este rango
Elegimos el trabajo (2 3 4 5) y hacemos combinaciones.
TRABAJO (2 3 4 5)
13 20 25 33 36
TRABAJO (2 3 4 5 1)
15 24 31 41 51
Luego de esta construccin viene la fase de bsqueda local, que no est explicada aqu.
7. Bsqueda Tab
El mtodo tab es considerado, en general, como la metaheurstica ms eficiente para
resolver problemas de optimizacin combinatorios. Sin embargo la estructuracin de un
algoritmo basado en este mtodo puede tener asociada una complejidad grande. Es decir hay
que pesar la relacin eficiencia complejidad.
Los orgenes de la Bsqueda Tab (Tab Search, TS) pueden situarse en diversos trabajos
publicados a finales de los 70 (Glover, 1977). Oficialmente, el nombre y la metodologa fueron
introducidos posteriormente por Fred Glover (1989). Numerosas aplicaciones han aparecido
en la literatura, as como artculos y libros para difundir el conocimiento terico del
procedimiento (Glover and Laguna, 1997).
Para poder explorar regiones del espacio de bsqueda que seran dejadas de lado por el
procedimiento de bsqueda local, la bsqueda tab diversifica la bsqueda, modificando la
estructura de vecinos para cada solucin a medida que la bsqueda progresa. Las soluciones
admitidas para N (x), el nuevo vecindario, son determinadas mediante el uso de estructuras de
memoria. La bsqueda entonces progresa movindose iterativamente de una solucin x hacia
una solucin x en N (x)
TS es una tcnica para resolver problemas combinatorios de gran dificultad que est basada
en principios generales de Inteligencia Artificial (IA). En esencia es un metaheurstico que
puede ser utilizado para guiar cualquier procedimiento de bsqueda local en la bsqueda
agresiva del ptimo del problema. Por agresiva nos referimos a la estrategia de evitar que la
bsqueda quede atrapada en un ptimo local que no sea global. A tal efecto, TS toma de la
IA el concepto de memoria y lo implementa mediante estructuras simples con el objetivo de
dirigir la bsqueda teniendo en cuenta la historia de sta. Es decir, el procedimiento trata de
extraer informacin de lo sucedido y actuar en consecuencia. En este sentido puede decirse
que hay un cierto aprendizaje y que la bsqueda es inteligente. El principio de TS podra
resumirse como:
Es mejor una mala decisin basada en informacin que una buena decisin
al azar, ya que, en un sistema que emplea memoria, una mala eleccin
basada en una estrategia proporcionar claves tiles para continuar la
bsqueda. Una buena eleccin fruto del azar no proporcionar ninguna
informacin para posteriores acciones.
reducido N*(x) como aquellas soluciones disponibles del entorno de x. As, se considera que a
partir de x , slo las soluciones del entorno reducido son alcanzables.
N * ( x) N ( x)
N *(x) N (x) T
El objetivo principal de etiquetar las soluciones visitadas como tab es el de evitar que la
bsqueda se cicle. Por ello se considera que tras un cierto nmero de iteraciones la bsqueda
est en una regin distinta y puede liberarse del status tab (pertenencia a T) a las soluciones
antiguas. De esta forma se reduce el esfuerzo computacional de calcular el entorno reducido
en cada iteracin. En los orgenes de TS se sugeran listas de tamao pequeo, actualmente se
considera que las listas pueden ajustarse dinmicamente segn la estrategia que se est
utilizando.
Con los elementos descritos puede disearse un algoritmo bsico de TS para un problema
de optimizacin dado. Sin embargo, TS ofrece muchos ms elementos para construir
algoritmos realmente potentes y eficaces. A menudo, dichos elementos han sido ignorados en
muchas aplicaciones y actualmente la introduccin de estos en la comunidad cientfica
constituye un reto para los investigadores del rea.
Intensificacin
Examinar entornos de buenas soluciones.
Volver a regiones atractivas para explorarlas ms a fondo.
Diversificacin
Examinar regiones no visitadas.
Dirigir la bsqueda a regiones aparentemente malas.
Existen otros elementos ms sofisticados dentro de TS que, aunque poco probados, han
dado muy buenos resultados en algunos problemas. Entre ellos se pueden destacar:
Umbrales Tab: El procedimiento conocido como Tab Thresholding (TT) se propone para
aunar ideas que provienen de la Oscilacin Estratgica y de las Estrategias de Listas de
Candidatos en un marco sencillo que facilite su implementacin. El uso de la memoria es
implcito en el sentido que no hay una lista tab en donde anotar el status de los movimientos,
pero la estrategia de eleccin de los mismos previene el ciclado. TT utiliza elecciones
probabilsticas y umbrales en las listas de candidatos para implementar los principios de TS.
Laguna y Mart (1999) proponen el uso de Path Relinking (PR) en el contexto de GRASP,
aunque aqu su significado es diferente ya que las soluciones no han estado unidas por ningn
camino previo. As, una vez generada una coleccin de soluciones mediante las fases de
construccin y mejora de GRASP, se seleccionan parejas (o subconjuntos) de soluciones para
unirlas mediante PR. A partir de una solucin se realiza una bsqueda local para llegar a la otra
(o a una combinacin de las otras en el caso de subconjuntos).
7.2.1 Introduccin:
El algoritmo propuesto basado en TS utiliza la memoria a corto y largo plazo y hace uso de
la matriz de frecuencias que permite la exploracin de nuevas regiones liberando de esta
manera los movimientos sealados como tab.
Parmetros:
CiclosDiver: permite al algoritmo revisar el nmero de iteraciones en las que el ptimo local
no se ha actualizado, permitiendo la diversificacin para explorar nuevas regiones.
7.2.2 Algoritmo
4. El ptimo encontrado es ()
El mtodo funciona de manera iterativa. Una vez cumplido el criterio de parada, se evala
la solucin inicial y la resultante con el fin de observar la mejora, si el valor es inferior al inicial
se ha encontrado un nuevo valor mnimo.
CiclosDiver = 20
Se deben construir 3 tablas: La matriz de las secuencias (tablas 2 y 3), la matriz tab (tabla
4) y la matriz de frecuencias (tabla 5).
Por otro lado se construye la matriz de frecuencias (Tabla 5), en la que se ha marcado que
lo mejor factible es ubicar el nodo 1 en la posicin 2 y el nodo 2 en la posicin 1.
TABLA 6. Iteracin 2.
El criterio para ubicar el nodo en cierta posicin, ser la menor frecuencia registrada. Se
observa en la Tabla 8 que el nodo 1 tiene la menor frecuencia (0= en las posiciones 1, 6, 7, 8, 9
y 10, as que es buen candidato para ocupar la posicin 1. Anlogamente, el nodo 2 es buen
candidato para la posicin 3, el nodo 3 es buen candidato para la posicin 1, pero sta ya est
ocupada por lo que se situar en la posicin 5, el nodo 4 es buen candidato para la posicin 6,
el nodo 5 para la posicin 1, que ya est ocupada, por lo que se ubica en la posicin 2, y as
sucesivamente, as se genera la secuencia: {1, 5, 2, 8, 3, 4, 7, 6, 9, 10} con longitud 77.96, como
se observa en la Tabla 9.
El ptimo se encuentra en la iteracin 144, en el tour {5, 6, 9, 4, 10, 2, 8, 3, 7, 1, 5}, con una
longitud de 36.79, como se puede observar en la Tabla 10.
8. Recocido Simulado
8.1 Origen:
La tcnica heurstica del recocido simulado (RS), en ingls Simulated Anneling, est basada
en un algoritmo propuesto por Metropolis et al. (1953) en el marco de la termodinmica
estadstica, para simular el proceso de enfriamiento de un material (recocido). Kirkpatrick et al.
(1983) e independientemente Cerni (1985) establecieron una analoga entre el proceso de
recocido y el reto de resolver problemas de optimizacin combinatoria de gran escala. Desde
entonces el recocido simulado ha sido utilizado para resolver en forma exitosa una amplia
variedad de problemas de optimizacin combinatoria, convirtindose en una Metaheurstica
clsica. Debido a su sencillez de implementacin as como a los buenos resultados que iban
apareciendo, experiment un gran auge en la dcada de los 80.
E
p( E ) e kt , donde k es la constante de Boltzmann.
Kirpatrick y otros, pensaron que era posible establecer una analoga entre los parmetros
que intervienen en la simulacin termodinmica de Metrpolis y los que aparecen en los
mtodos de optimizacin local, tal y como muestra la tabla adjunta.
Termodinmica Optimizacin
Configuracin Solucin Posible
Configuracin Fundamental Solucin ptima
Energa de la Configuracin Costo de la Solucin
Para ello, establecen un paralelismo entre el proceso de las molculas de una sustancia que
van colocndose en los diferentes niveles energticos buscando un equilibrio, y las soluciones
visitadas por un procedimiento de bsqueda local. As pues, SA es un procedimiento basado
en bsqueda local en donde:
En cada iteracin se genera un nmero concreto de vecinos, que puede ser fijo para
toda la ejecucin o depender de la iteracin concreta
Cada vez que se genera un vecino, se aplica el criterio de aceptacin para ver si
sustituye a la solucin actual:
8.2 El algoritmo SA
La estrategia de SA es comenzar con una temperatura inicial alta, lo cual proporciona una
probabilidad tambin alta de aceptar un movimiento de no mejora. En cada iteracin se va
reduciendo la temperatura por medio de algn mecanismo de enfriamiento, y por lo tanto las
probabilidades son cada vez ms pequeas conforme avanza el procedimiento y nos
acercamos a la solucin ptima. De este modo, inicialmente se realiza una diversificacin de la
bsqueda sin controlar demasiado el costo de las soluciones visitadas. En iteraciones
posteriores resulta cada vez ms difcil el aceptar malos movimientos, y por lo tanto se
produce un descenso en el costo.
xt
1.0
0.8 T 20
T 10
0.6
T 5
0.4 T 1
T 0.5
0.2
d
1 2 3 4 5 6 7
Para disear un algoritmo a partir del esquema general anterior hay que determinar los
parmetros del sistema:
La Temperatura Inicial
- Se determina realizando una serie de pruebas para alcanzar una determinada fraccin de
movimientos aceptados.
La Velocidad de Enfriamiento
La longitud
- Proporcional al tamao esperado de ().
El instante en que la Secuencia de Enfriamiento finaliza (est congelada)
- cont = cont+1 cada vez que se completa una temperatura y el porcentaje de
movimientos aceptados es menor de MinPercent. cont=0 cuando se mejora la mejor
solucin almacenada.
EJERCICIO:
9. Mtodos Evolutivos
Los mtodos evolutivos estn basados en poblaciones de soluciones. A diferencia de los
mtodos vistos hasta ahora, en cada iteracin del algoritmo no se tiene una nica solucin sino
un conjunto de stas. Estos mtodos se basan en generar, seleccionar, combinar y reemplazar
un conjunto de soluciones. Dado que mantienen y manipulan un conjunto en lugar de una
nica solucin a lo largo de todo el proceso de bsqueda, suelen presentar tiempos de
computacin sensiblemente ms altos que los de otros metaheursticos. Este hecho se ve
agravado por la convergencia de la poblacin que requiere de un gran nmero de iteraciones
en el caso de los algoritmos genticos, tal y como se describe a continuacin.
Los Algoritmos Genticos (GA) fueron introducidos por John Holland en 1970 inspirndose
en el proceso observado en la evolucin natural de los seres vivos.
Aunque muchos aspectos estn todava por discernir, existen unos principios generales de
la evolucin biolgica ampliamente aceptados por la comunidad cientfica. Algunos de estos
son:
A tal efecto se introduce una funcin de evaluacin de los cromosomas, que llamaremos
calidad (fitness) y que est basada en la funcin objetivo del problema. Igualmente se
introduce un mecanismo de seleccin de manera que los cromosomas con mejor evaluacin
sean escogidos para reproducirse ms a menudo que los que la tienen peor.
Los algoritmos desarrollados por Holland inicialmente eran sencillos pero dieron buenos
resultados en problemas considerados difciles. Un primer esquema de un algoritmo gentico
se muestra en la Figura 24.
Seleccionar y reproducir
dos cromosomas
Sustituir cromosomas de la
poblacin por el hijo.
En los trabajos originales las soluciones se representaban por strings binarios, es decir,
listas de 1s y 0s. Este tipo de representaciones ha sido ampliamente utilizada incluso en
problemas en donde no es muy natural. En 1985, De Jong introduce la siguiente cuestin:
La poblacin inicial suele ser generada aleatoriamente. Sin embargo, ltimamente se estn
utilizando mtodos heursticos para generar soluciones iniciales de buena calidad. En este
caso, es importante garantizar la diversidad estructural de estas soluciones para tener una
representacin de la mayor parte de poblacin posible o al menos evitar la convergencia
prematura.
Uniforme: En cada bit se elige al azar un padre para que contribuya con su bit al del hijo,
mientras que el segundo hijo recibe el bit del otro padre.
PMX, SEX: Son operadores ms sofisticados fruto de mezclar y aleatorizar los anteriores.
Algoritmo Gentico
1. Generar soluciones Construir un conjunto de soluciones P con tamao PopSize
mediante generacin aleatoria.
2. Mejorar soluciones Aplicar un mtodo de bsqueda local a cada solucin del
conjunto P.
Mientras (nmero de evaluaciones < MaxEval )
3. Evaluacin Evaluar las soluciones en P y actualizar, si es necesario, la
mejor solucin almacenada.
4. Supervivencia Calcular la probabilidad de supervivencia basada en la
calidad de las soluciones. Segn dichas probabilidades seleccionar aleatoriamente
PopSize soluciones (con reemplazamiento) de P. Sea P el nuevo conjunto formado
por las soluciones seleccionadas (algunas pueden aparecer repetidas).
5. Combinacin Seleccionar una fraccin pc de soluciones de P para ser
combinadas. La seleccin es aleatoria y equi-probable para todos los elementos de
P. Los elementos seleccionados se emparejan al azar y, por cada pareja, se generan
dos descendientes que reemplazaran a los padres en P.
6. Mutacin Una fraccin pm de las soluciones de P se selecciona para
aplicar el operador de mutacin. La solucin resultante reemplaza a la original en P.
Parmetros habituales (pero no son los nicos posibles, ya que dependen de la aplicacin
concreta):
Poblacin: entre 50 y 100 cromosomas.
Longitud del cromosoma: depende del problema.
Generaciones: entre 20 y 1000.
Probabilidad (o porcentaje) de cruce: de 20% a 60% por cromosoma.
Probabilidad (o porcentaje) de mutacin: de 0.1% a 5% por gen.
Dado que el algoritmo gentico opera con una poblacin en cada iteracin, se espera que el
mtodo converja de modo que al final del proceso la poblacin sea muy similar, y en el infinito
se reduzca a un slo individuo.
En la prctica no se suelen respetar las condiciones vistas ya que son difciles de seguir y
probar, encontrndonos con que, en ocasiones los algoritmos genticos resuelven
satisfactoriamente un problema de optimizacin dado y otras se quedan muy alejados del
ptimo. Los estudiosos del tema han tratado de caracterizar lo que han denominado
problemas AG-fciles (aquellos en los que los AG proporcionan buenos resultados) y AG-
difciles con el objetivo de saber de antemano, al estudiar un nuevo problema, si los AG son
una buena eleccin para su resolucin.
Solver de Excel (Frontline Systems, Inc.) con un lmite de 100 restricciones y 200
variables
RiskOptimizer (Palisade Inc.) sin lmite aparente,
EJERCICIO:
PRIMER ALGORITMO:
SEGUNDO ALGORITMO:
OBSERVACIN: las fracciones se eligen tal que: pc + pm < 1 y n_cand < PopSize.
Al igual que los algoritmos genticos, el mtodo que nos ocupa se basa en mantener un
conjunto de soluciones y realizar combinaciones con stas; pero a diferencia de stos no est
fundamentado en la aleatorizacin sobre un conjunto relativamente grande de soluciones sino
en las elecciones sistemticas y estratgicas sobre un conjunto pequeo de stas. Como
ilustracin basta decir que los algoritmos genticos suelen considerar una poblacin de 100 o
ms soluciones mientras que en la bsqueda dispersa es habitual trabajar con un conjunto de
tan slo 10 soluciones.
La primera descripcin del mtodo fue publicada en 1977 por Fred Glover donde establece
los principios de la BD. En este primer artculo se determina que la BD realiza una exploracin
sistemtica sobre una serie de buenas soluciones llamadas conjunto de referencia. Los
siguientes comentarios resumen los principales aspectos de este trabajo:
En este trabajo el autor especifica que para trabajar con problemas con variables enteras,
binarias o que forman una permutacin, hay que disear mtodos especficos de combinacin
(notar que no tiene sentido hablar de combinacin lineal de dos permutaciones). Para ello se
introducen los mecanismos de combinacin basados en votos. En estos se definen reglas
mediante las que cada solucin vota para que sus caractersticas aparezcan en la solucin
que se est construyendo. Estos mtodos de votos han sido muy utilizados en las rutinas de
combinacin de los algoritmos de BD y parece que constituyen uno de las claves del xito de
estos mtodos. A continuacin mostramos un ejemplo sobre un problema de rutas de
vehculos introducido en Corbern et al. (2000) para ilustrarlos.
Dada una serie de localizaciones en donde hay que recoger a unos estudiantes, el problema
consiste en encontrar un conjunto de rutas de modo que cada una sea recorrida por un
autobs. A los efectos que aqu nos ocupan podemos omitir el resto de detalles y considerar
que tenemos dos soluciones del problema para ver cmo se combinan. Consideremos un
ejemplo con 10 localizaciones y dos soluciones (A y B) con dos rutas cada una:
Solucin A: A1 = { 4, 2, 7, 1 }, A2 = { 5, 10, 6, 9, 3, 8 }
Solucin B: B1 = { 2, 6, 8, 10, 9 }, B2 = { 3, 4, 7, 1, 5 }
Para poder combinar A y B, tendremos que asociar las rutas de cada una. Si consideramos
las dos asociaciones posibles (A1 con B1 y A2 con B2 , A1 con B2 y A2 con B1) y contamos el
nmero de elementos comunes, podemos tomar la que mayor nmero de coincidencias
presente. As, asociamos A2 con B1 y A1 con B2 ya que la primera tiene cuatro elementos en
comn (6, 8, 9 y 10), y la segunda tiene tres (4, 7 y 1), mientras que la otra asignacin presenta
1+2= 3 coincidencias. La nueva solucin (N1 y N2) se construye en n pasos, en los que una
localizacin se asigna a una ruta en cada paso. La siguiente tabla muestra el proceso.
6 (A2,B1) 10 6 N2 = { 2, 5, 6 } azar
7 (A1,B2) 1 1 N1 = { 4, 3, 7, 1 } igual
8 (A2,B1) 10 8 N2 = { 2, 5, 6, 10 } 10 antes 8
9 9 8 N2 = { 2, 5, 6, 10, 8 } 8 antes 9
10 9 9 N2 = { 2, 5, 6, 10, 8, 9 igual
}
En 1977 Glover publica una versin ms especfica del mtodo en donde se recogen y
simplifican muchas de las ideas expuestas en trabajos anteriores. Esta publicacin tuvo un
gran impacto en lo que a la difusin del mtodo se refiere y se ha quedado como la referencia
standard de la bsqueda dispersa. Numerosos investigadores comenzaron a aplicar la BD a la
resolucin de problemas de optimizacin obteniendo resultados de gran calidad. La siguiente
seccin describe esta versin del mtodo, actualizada segn implementaciones y desarrollos
posteriores.
Glover, Laguna y Mart (2000) estudian las implementaciones ms recientes del mtodo en
la resolucin de problemas de optimizacin combinatoria. Adems, muestran las conexiones
entre este mtodo y el denominado Re-encadenamiento de Trayectorias (Path relinking).
Desde un punto de vista espacial, el proceso de generar combinaciones lineales de un conjunto
de referencia de soluciones, puede ser visto como el generar caminos entre, y ms all, de
estas soluciones. Esto lleva a una concepcin ms amplia del significado de combinar que es la
introducida en el re-encadenamiento de trayectorias (RT).
RT se basa en el hecho de que entre dos soluciones se puede trazar un camino que las una,
de modo que las soluciones en dicho camino contengan atributos de ellas. Las soluciones
originales pueden haber sido generadas mediante un mtodo basado en una bsqueda local y
estar unidas por un camino, o haber sido generadas por otro mtodo y no estar unidas de
ningn modo; en cualquier caso, ahora generaremos un nuevo camino que las una. Las
caractersticas de dicho camino vendrn especificadas respecto de los atributos que son
aadidos o eliminados, o por los movimientos realizados para alcanzar una solucin desde la
otra. Esto constituye una extensin del concepto de combinacin en tanto que se obtienen
varias soluciones a partir de dos o mas originales.
2.1. Creacin. Iniciamos el conjunto de referencia con las b/2 mejores soluciones de P.
Las b/2 restantes se extraen de P por el criterio de mxima distancia con las ya
incluidas en el conjunto de referencia. Para ello debemos de definir previamente una
funcin de distancia en el problema.
El siguiente esquema muestra cmo actan los elementos descritos en un esquema bsico
del algoritmo.
Mientras (NuevaSolucin)
5. NuevaSolucion = FALSE
6. Generar los subconjuntos de R en los que haya al menos una nueva solucin.
que el punto 6 equivaldra a decir: Generar todas las parejas de soluciones de R en las que al
menos una de las dos sea nueva; donde por nueva entenderemos que haya entrado al
conjunto despus de realizar la ltima combinacin de todo R.
Notar que el algoritmo se detiene cuando al tratar de combinar vemos que no hay nuevos
elementos en el conjunto de referencia (la variable NuevaSolucin est en 0). Este algoritmo
puede ser anidado en un esquema global que permita reconstruir el conjunto de referencia
cuando ste ya ha sido explotado. As, si el lmite de tiempo (o evaluaciones) no se ha
excedido, una estrategia habitual es regenerar el conjunto de referencia dejando la mitad
superior (b/2 mejores) y eliminando la mitad inferior. Despus, se genera un conjunto P como
al comienzo del algoritmo, del que se extraen nicamente las b/2 soluciones ms diversas con
las ya existentes en R. As obtenemos un nuevo conjunto de referencia en el que mantenemos
las soluciones de calidad y renovamos las debidas a diversidad. Ahora se vuelve a combinar
como anteriormente sobre este conjunto de referencia (pasos 5 a 11). De este modo se
obtiene un esquema cclico indefinido al que hay que aadirle una variable de control para
detenerlo, tpicamente esta variable est en funcin del tiempo o del nmero de iteraciones
(evaluaciones de la funcin objetivo).
Desarrollo y Mejoras
c. Aplicar la rutina de mejora de forma selectiva. Las pruebas indican que el aplicar el
mtodo de mejora a todas las soluciones generadas y combinadas, no garantiza el
obtener mejores resultados finales. Establecer umbrales de calidad para no aplicar la
mejora a soluciones que difcilmente van a proporcionar la mejor solucin, es un gasto
innecesario de tiempo de computacin (Ugray et al., 2001). Por otro lado, al aplicar el
mtodo de mejora a todas las soluciones se acelera la convergencia de ste, lo cual
pude ser deseable si disponemos de poco tiempo de computacin, pero debemos de
evitarlo si queremos ejecutar el mtodo en un horizonte largo para obtener soluciones
de gran calidad.
Como conclusin podemos decir que la bsqueda dispersa es un mtodo evolutivo que se
encuentra en desarrollo. Sus orgenes se pueden situar en la dcada de los 70 y, aunque
menos conocida que los algoritmos genticos, se est aplicando en la resolucin de numerosos
problemas difciles de optimizacin.
EJERCICIO:
La evolucin diferencial (DE) fue originalmente diseada por Price y Storn en 1999 (Storn,
R., Price, K.: Differential evolution a simple and efficient adaptive scheme for global
optimization over continuous spaces, Technical Report 1999) para resolver problemas de
optimizacin contnuos, pero luego ha sido extendida para resolver problemas combinatorios
basados en permutaciones.
La DE fue desarrollada con el fin de satisfacer los tres requerimientos bsicos para que una
tcnica de optimizacin sea buena:
Por otro lado la DE ha demostrado ser un mtodo que se desempea muy bien en una
amplia gama de problemas de prueba, y es intrnsecamente paralelo ya que est basado en
una poblacin. La estrategia bsica emplea la diferencia de dos vectores de parmetros
seleccionados aleatoriamente como la fuente de variaciones aleatorias para un tercer vector
de parmetros.
Desde el punto de vista de la DE los problemas de optimizacin del mundo real pueden ser
clasificados en uno de los dos tipos siguientes:
2
2
(1 , 2 , , ) = (100(+1 2 ) + ( 1)2 ),
=0
min = { }
= 1, . . , ,
, = {1, , ,1 } + ,
()
, = 0, 1, 2, , 1
Las descripciones para las primeras dos variants mas prometedoras de DE, que se conocen
como DE2 y DE3, son las siguientes:
ESQUEMA DE2
Inicializacin: Como con todos los algoritmos evolutivos, DE trabaja con una poblacin de
soluciones, no con una solucin nica para el problema de optimizacin. La poblacin de la
generacin contiene vectores solucin llamados individuos de la poblacin y cada vector
representa una solucin potencial para el problema de optimizacin:
()
() = , = 1, 2, , ; = 1, ,
() ()
= {, } , = 1, 2, , ; = 1, ,
En orden a establecer un punto de inicio para la bsqueda del ptimo, la poblacin deber
ser inicializada. A menudo no hay ms conocimiento acerca de la ubicacin del ptimo global
que las cotas de las variables del problema. En ese caso, una manera natural para inicializar la
poblacin (0) (poblacin inicial) es sembrarla con valores aleatorios dentro de las
restricciones de acotamiento dadas:
(0) () () ()
(0) = {, } = + [0,1] ( ) , [1, ]; [1, ]
() ()
, [1, ]
Para este y otros esquemas, tres operadores son cruciales: mutacin, cruce y seleccin.
(+1) () () ()
, = 1, + (2, 3, )
()
3
() ()
() 1 () ()
2 (2 3 )
() () ()
= 1 + (2 3 )
()
para = , + 1 , , + 1
()
= {1 , 2 , , }; = { ()
( ) Si no
Donde representa la function modulo con modulo . Esto hace que una secuencia de
los elementos de son idnticos a los elementos de , mientras los otros elementos de
()
toman los valores originales de . Escoger un subgrupo de parmetros para mutacin es
similar al proceso de cruce de los algoritmos genticos. El ndice inicial es escogido
aleatoriamente en [0, 1], mientras que es escogido en [0, 1] con probabilidad
( = ) = () , donde [0.1] es la probabilidad de cruce, que es una variable de
control en el esquema DE2. La determinacin aleatoria de y se hace para cada vector de
prueba . Esta idea es representada en la siguiente figura con = 7, = 2 y = 3.
() () () ()
= 1 + (2 3 )
j=0 j=0 j=0
1 1 1
2 2 =2 2
3 3 =3 3
4 4 =4 4
5 5 5
6 6 6
Vector parmetro
con los parmetros
,={0,1,,1}
ESQUEMA DE3:
Bsicamente, el esquema DE3 trabaja de la misma manera que DE2, pero genera el vector
introduciendo una nueva variable de control :
() () () () ()
= + ( ) + (2 3 )
()
()
3 () ()
(2 3 )
()
()
2
() () ()
+ ( )
Tambin existen otras estrategias DE para generar el vector , cuya efectividad dpende del
tipo de problema para el cual son aplicadas. Estas estrategias pueden variar basadas en el
vector a ser perturbado, nmero de vectores diferencia consideradospara la perturbacin y
finalmente del tipo de cruce usado.
Los valores que estn por defecto para las opciones de DE en Mathematica se pueden
consultar con la opcin:
Options[NMinimize`DifferentialEvolution]
Estas opciones que estn establecidas por defecto (pero pueden ser cambiadas) son:
Una parte importante que se debe definir es el campo de restricciones, en el cual se debe
especificar, entre otras, la restriccin de integralidad de las variables. Para esto hay al menos
dos enfoques viables:
El primero es permitir que las variables tomen valores en los reales, pero usar
funciones de penalidad para empujarlas al campo de los enteros. Por ejemplo se
2
puede aadir para cada variable , una penalidad del tipo ( ()) ;
donde es una constante grande adecuada. NMinimize no usa este enfoque, pero
el usuario puede ponerlo de manera explcita usando la opcin PenaltyFunction.
El segundo mtodo (que es el que usa por defecto NMinimize, es redondear
explcitamente todas las variables de valor real antes de evaluarlas en la funcin
objetivo. La experiencia en el desempeo de esta funcin indica que es el enfoque
ms eficiente.
Esto todava no aborda el tema del cumplimiento del rango. Por ejemplo, supongamos que
estamos usando variables en el rango {1,,n} para construir una permutacin de n elementos.
Si un valor resbala fuera del rango el efecto podra ser muy malo, por ejemplo se podra colgar
la ejecucin o un resultado sin sentido, por lo tanto es importante en el cdigo hacer cumplir
cuidadosamente las cotas de las variables. La implementacin hace exactamente eso. SI una
variable es restringida a tomar valores entre una cota inferior y una cota superior (restriccin
rectangular), entonces el cdigo de NMinimize la forzar a caer dentro de las cotas, esto est
ya implementado y no necesita ser invocado por el usuario.
10.6.1 Ejemplos
Consideremos primero dos ejemplos simples para introducir la forma en que DE resuelve
los problemas de optimizacin:
El problema es hallar estas tripletas (supongamos que en un rango adecuado, por ejemplo los
nmeros enteros entre 1 y 25 que cumplen esto). Una forma de resolverlo es:
( 2 + 2 2 )2
Pero, usando el mtodo DE, cambiando aleatoriamente la semilla en cada corrida, podemos
obtener muchas tripletas pitagricas:
Quiet
2
a Table NMinimize x2 y2 z2 , x, y, z Integers, 1 x 25, 1 y 25, 1 z 25, x y , x, y, z ,
Method "DifferentialEvolution", RandomSeed RandomInteger 1000 , 10
TableForm DeleteDuplicates Cases a, 0., All, 2
El resultado es el siguiente:
7 24 25
9 12 15
5 12 13
8 15 17
12 16 20
3 4 5
6 8 10
0 4 50253; 1 , 2 , 3 , 4
a Table
2 2
NMinimize x1 5 x2 10 x3 25 x4 1 256 329 x1 x2 x3 x4 143 267 , Element x1, x2, x3, x4 , Integers ,
0 x1 143 267, 0 x2 143 267, 0 x3 125 632, 0 x4 50 253 , x1, x2, x3, x4 , MaxIterations 1000,
Method "DifferentialEvolution", RandomSeed RandomInteger 1000 , 10
DeleteDuplicates Cases a, 0., All, 2 TableForm
Empecemos con un caso sencillo, supongamos que tenemos que particionar el conjunto de
enteros del 1 al 100 en dos conjuntos de 50 elementos cada uno, de tal manera que la suma de
las races cuadradas de los nmeros de cada grupo sea lo ms cercana posible.
Hay varias maneras de expresar este problema con NMinimize, una forma es utilizando una
forma sencilla de elegir 50 elementos de un conjunto de 100: usamos 100 nmeros aleatorios
entre 0 y 1, tomamos sus posiciones relativas, que definen una permutacin de los nmeros 1,
2, , 100.
En este caso particular como los nmeros son todos del 1 al 100 los conjuntos {pIndices,
gIndices} y {s1, s2} coinciden, la misma idea aplica para la particin de cualquier conjunto en
un nmero par de elementos, y con pequeas modificaciones se puede efectuar la divisin en
un nmero impar o una divisin en subconjuntos de cardinalidades distintas.
Una vez que tenemos esta funcin para partir un conjunto en dos, construimos la funcin
objetivo, que podra ser el valor absoluto de la diferencia, o la suma de los cuadrados de las
diferencias (que es muy usado en las tcnicas de optimizacin que requieren
diferenciabilidad), en particular DE es un algoritmo de optimizacin libre de la derivada y por
tanto se puede utilizar el valor absoluto.
Ahora si, una vez construida la funcin objetivo podemos invocar a la DE para resolver
nuestro problema:
Aqu es conveniente poner otros valores a los parmetros, distintos de los que vienen por
defecto, la fase de postprocesamiento (PostProcess) la ponemos en falso porque casi siempre
la bsqueda de un ptimo local a partir de la configuracin actual ser improductiva y adems
tomar mucho tiempo porque DE est diseado para variables contnuas, as el tiempo
ahorrado lo podemos usar para incrementar el nmero de generaciones (MaxIterations) o el
tamao de cada generacin (NP o SearchPoints). Una pregunta razonable que surge es como
debemos poner el valor del parmetro CrossProbability, lo ms usado es ejecutando varias
veces el cdigo con pocas generaciones y de tamaos pequeos, hasta lograr detectar el mejor
valor.
SET PARTITIONNING VIA KNAPSACK: Otro enfoque para este problema es el siguiente:
Tomamos el conjunto completo y escogemos aleatoriamente nmeros 0 o 1 (0 indicar que
pertenece al un conjunto y 1 que pertenece al otro). Para que esto de una particin par se
debe imponer adems la restriccin que el tamao de cada subconjunto debe ser la mitad del
total.
EJERCICIO:
Por ejemplo en los siguientes datos se observan clientes numerados del 1 al 64, y en
subconjuntos la cobertura que se puede dar desde el subconjunto 1, 2, , 62, y deseamos
determinar el menor nmero de esos subconjuntos que cubran a todos los clientes.
Por ejemplo, encontremos mat[[4]], por otro lado es fcil verificar que podramos volver
fcilmente a la representacin anterior con:
Si hacemos el producto punto de este vector por la matriz, como un 1 en la fila columna
de la matriz significa que el subconjunto contiene al elemento , entonces el producto punto
del vector por la matriz da un vector cuyos elementos indican el nmero de veces que ese
elemento aparece en el recubrimiento primeros12. Es decir la restriccin que debemos
imponer es que este producto punto debe contener slo elementos mayores a cero.
primeros12.mat
4, 4, 4, 4, 5, 5, 5, 5, 4, 4, 4, 4, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
As, el cdigo para optimizar este problema de set covering ser el siguiente:
EJERCICIO:
Un bar tiene la capacidad de cubrir las necesidades de bebida de los habitantes tanto de su
barrio como de los barrios adyacentes a l, por
ejemplo un bar construido en el barrio 1 cubrir las
demandas de bebida de los barrios 1, 2, 3 y 5. Se
necesitan construir tantos bares como sean
necesarios para cubrir todas las necesidades de
bebida de todo ese sector, es decir que todos los
barrios estn atendidos por al menos un bar,
minimizando el nmero de bares a construir.
mat1 0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8 ,
1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6, 7 ,
2, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6, 5, 4, 5, 6 ,
3, 2, 1, 0, 1, 4, 3, 2, 1, 2, 5, 4, 3, 2, 3, 6, 5, 4, 3, 4, 7, 6, 5, 4, 5 ,
4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3, 8, 7, 6, 5, 4 ,
1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6, 3, 4, 5, 6, 7 ,
2, 1, 2, 3, 4, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5, 6 ,
3, 2, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5, 4, 3, 4, 5 ,
4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 4, 3, 2, 1, 2, 5, 4, 3, 2, 3, 6, 5, 4, 3, 4 ,
5, 4, 3, 2, 1, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 6, 5, 4, 3, 2, 7, 6, 5, 4, 3 ,
2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, 4, 5, 6 ,
3, 2, 3, 4, 5, 2, 1, 2, 3, 4, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4, 5 ,
4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4, 3, 2, 3, 4 ,
5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 4, 3, 2, 1, 2, 5, 4, 3, 2, 3 ,
6, 5, 4, 3, 2, 5, 4, 3, 2, 1, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 6, 5, 4, 3, 2 ,
3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 1, 2, 3, 4, 5 ,
4, 3, 4, 5, 6, 3, 2, 3, 4, 5, 2, 1, 2, 3, 4, 1, 0, 1, 2, 3, 2, 1, 2, 3, 4 ,
5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 2, 3, 2, 1, 2, 3 ,
6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 4, 3, 2, 1, 2 ,
7, 6, 5, 4, 3, 6, 5, 4, 3, 2, 5, 4, 3, 2, 1, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1 ,
4, 5, 6, 7, 8, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4 ,
5, 4, 5, 6, 7, 4, 3, 4, 5, 6, 3, 2, 3, 4, 5, 2, 1, 2, 3, 4, 1, 0, 1, 2, 3 ,
6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1, 2 ,
7, 6, 5, 4, 5, 6, 5, 4, 3, 4, 5, 4, 3, 2, 3, 4, 3, 2, 1, 2, 3, 2, 1, 0, 1 ,
8, 7, 6, 5, 4, 7, 6, 5, 4, 3, 6, 5, 4, 3, 2, 5, 4, 3, 2, 1, 4, 3, 2, 1, 0 ;
mat2 0, 3, 2, 0, 0, 10, 5, 0, 5, 2, 0, 0, 2, 0, 5, 3, 0, 1, 10, 0, 2, 1, 1, 1, 0 ,
3, 0, 4, 0, 10, 0, 0, 2, 2, 1, 5, 0, 0, 0, 0, 0, 1, 6, 1, 0, 2, 2, 5, 1, 10 ,
2, 4, 0, 3, 4, 5, 5, 5, 1, 4, 0, 4, 0, 4, 0, 3, 2, 5, 5, 2, 0, 0, 3, 1, 0 ,
0, 0, 3, 0, 0, 0, 2, 2, 0, 6, 2, 5, 2, 5, 1, 1, 1, 2, 2, 4, 2, 0, 2, 2, 5 ,
0, 10, 4, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 5, 0, 2, 1, 0, 2 ,
10, 0, 5, 0, 2, 0, 10, 10, 5, 10, 6, 0, 0, 10, 2, 10, 1, 5, 5, 2, 5, 0, 2, 0, 1 ,
5, 0, 5, 2, 0, 10, 0, 1, 3, 5, 0, 0, 2, 4, 5, 10, 6, 0, 5, 5, 5, 0, 5, 5, 0 ,
0, 2, 5, 2, 0, 10, 1, 0, 10, 2, 5, 2, 0, 3, 0, 0, 0, 4, 0, 5, 0, 5, 2, 2, 5 ,
5, 2, 1, 0, 0, 5, 3, 10, 0, 5, 6, 0, 1, 5, 5, 5, 2, 3, 5, 0, 2, 10, 10, 1, 5 ,
2, 1, 4, 6, 0, 10, 5, 2, 5, 0, 0, 1, 2, 1, 0, 0, 0, 0, 6, 6, 4, 5, 3, 2, 2 ,
0, 5, 0, 2, 0, 6, 0, 5, 6, 0, 0, 2, 0, 4, 2, 1, 0, 6, 2, 1, 5, 0, 0, 1, 5 ,
0, 0, 4, 5, 0, 0, 0, 2, 0, 1, 2, 0, 2, 1, 0, 3, 10, 0, 0, 4, 0, 0, 4, 2, 5 ,
2, 0, 0, 2, 0, 0, 2, 0, 1, 2, 0, 2, 0, 4, 5, 0, 1, 0, 5, 0, 0, 0, 5, 1, 1 ,
0, 0, 4, 5, 0, 10, 4, 3, 5, 1, 4, 1, 4, 0, 0, 0, 2, 2, 0, 2, 5, 0, 5, 2, 5 ,
5, 0, 0, 1, 2, 2, 5, 0, 5, 0, 2, 0, 5, 0, 0, 2, 0, 0, 0, 6, 3, 5, 0, 0, 5 ,
3, 0, 3, 1, 0, 10, 10, 0, 5, 0, 1, 3, 0, 0, 2, 0, 0, 5, 5, 1, 5, 2, 1, 2, 10 ,
0, 1, 2, 1, 0, 1, 6, 0, 2, 0, 0, 10, 1, 2, 0, 0, 0, 5, 2, 1, 1, 5, 6, 5, 5 ,
1, 6, 5, 2, 2, 5, 0, 4, 3, 0, 6, 0, 0, 2, 0, 5, 5, 0, 4, 0, 0, 0, 0, 5, 0 ,
10, 1, 5, 2, 0, 5, 5, 0, 5, 6, 2, 0, 5, 0, 0, 5, 2, 4, 0, 5, 4, 4, 5, 0, 2 ,
0, 0, 2, 4, 5, 2, 5, 5, 0, 6, 1, 4, 0, 2, 6, 1, 1, 0, 5, 0, 4, 4, 1, 0, 2 ,
2, 2, 0, 2, 0, 5, 5, 0, 2, 4, 5, 0, 0, 5, 3, 5, 1, 0, 4, 4, 0, 1, 0, 10, 1 ,
1, 2, 0, 0, 2, 0, 0, 5, 10, 5, 0, 0, 0, 0, 5, 2, 5, 0, 4, 4, 1, 0, 0, 0, 0 ,
1, 5, 3, 2, 1, 2, 5, 2, 10, 3, 0, 4, 5, 5, 0, 1, 6, 0, 5, 1, 0, 0, 0, 0, 0 ,
1, 1, 1, 2, 0, 0, 5, 2, 1, 2, 1, 2, 1, 2, 0, 2, 5, 5, 0, 0, 10, 0, 0, 0, 2 ,
0, 10, 0, 5, 2, 1, 0, 5, 5, 2, 5, 5, 1, 5, 5, 10, 5, 0, 2, 2, 1, 0, 0, 2, 0 ;
Primero definimos una funcin para permutar filas y columnas de una matriz (reordenamos
una matriz de acuerdo a una permutacin dada). Los pasos son:
Volvamos al problema QAP, para las matrices consideradas con una permutacin dada
debemos obtener el valor de la funcin objetivo:
Por ejemplo calculemos el valor que da la funcin objetivo para la configuracin inicial de
las matrices (es decir sin permutarlas), y luego con otra permutacin cualquiera (a propsito la
permutacin ptima para este problema est reportada en la literatura y es igual a: {5, 11, 20,
15, 22, 2, 25, 8, 9, 1, 18, 16, 3, 6, 19, 24, 21, 14, 7, 10, 17, 12, 4, 23, 13}
p 16, 11, 20, 15, 22, 2, 25, 8, 9, 18, 1, 5, 3, 6, 19, 24, 21, 14, 7, 10, 17, 12, 4, 23, 13 ;
fo Total Flatten mat1 permutaMatriz mat2, p
4270
p 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 ;
fo Total Flatten mat1 mat2
4838
Y el ptimo:
p 5, 11, 20, 15, 22, 2, 25, 8, 9, 1, 18, 16, 3, 6, 19, 24, 21, 14, 7, 10, 17, 12, 4, 23, 13 ;
fo Total Flatten mat1 permutaMatriz mat2, p
3744
Aqu resolvemos el QAP con DE ms el procedimiento de bsqueda local 2-Opt, es decir con
intercambios de parejas. El cdigo crea un valor aleatorio para decidir cundo usar un
intercambio si este resulta en una no mejora. Esto puede ser una buena manera de mantener
variacin en el conjunto de cromosomas.
Timing QAP4 mat1, mat2, .08, 400, 320, .4, 4, .4, False, True
EJERCICIO:
Aplicar DE para resolver el problema del agente viajero, note que el TSP es un problema de
permutacin, por lo tanto puede modificar el mtodo anterior para optimizar el TSP.
La metaheurstica Harmony Search fue introducida por primera vez por Zong Woo Geem (6)
en el ao 2001 como respuesta a la creciente necesidad de desarrollar algoritmos de
optimizacin para problemas de programacin no lineal que no requieran informacin
substancial sobre el gradiente de la funcin de objetivo. La filosofa de esta metaheurstica se
basa en el proceso musical para buscar un estado perfecto de la armona. La armona en la
msica es anloga con el vector de soluciones del problema de optimizacin, y el proceso de
mejora de los msicos es comparable con los esquemas de bsqueda local y global de las
tcnicas de optimizacin (7).
Las interpretaciones musicales tratan de encontrar una armona agradable guiados por un
patrn esttico, tal y como, los procesos de optimizacin buscan encontrar la solucin global a
un problema guiados por la funcin objetivo. El tono de cada instrumento musical determina
una calidad esttica, de igual forma que el valor de la funcin objetivo es determinado por el
conjunto de valores asignados a cada variable de decisin.
En las prcticas de los grupos musicales, cada miembro del grupo toca una nota
seleccionada al azar de un rango posible de opciones, haciendo todos juntos una armona
(Harmony Vector). Si la armona entonada es buena, la experiencia es recordada en la
memoria de cada miembro (Harmony Memory) y la posibilidad de entonar una mejor armona
se incrementa para la prxima vez. De manera similar, en optimizacin, cada variable de
decisin toma un valor seleccionado al azar dentro un intervalo posible, haciendo todas juntas
un vector solucin. Si todas las variables de decisin forman una buena solucin del problema,
el resultado es almacenado en la memoria de cada variable y la posibilidad de formar una
mejor solucin la prxima iteracin aumenta.
Cuando un msico mejora un tono, usualmente sigue una de las siguientes tres reglas:
Las tres reglas en el algoritmo son dirigidas de manera efectiva por medio de la utilizacin
de los siguientes parmetros:
Utilizando la harmony memory y las tres reglas mencionadas se puede crear una nueva
armona, la cual es anloga con encontrar una nueva solucin del problema de optimizacin. Si
la nueva armona es mejor que alguna de las que se encuentran almacenadas en la harmony
memory, sta reemplaza a la peor de todas las armonas almacenadas. Caso contrario, se crea
una nueva armona siguiendo el procedimiento descrito. Se repiten los pasos anteriores hasta
que el criterio de parada sea cumplido.
Paso 1
Se inicializan los parmetros del algoritmo:
= 0.9, = 10
= 0.5, = 100
Paso 2
Inicializar la harmony memory creando armonas aleatorias utilizando el siguiente
procedimiento:
= 1 =
= 1 =
= ~( , )
Paso 3
Crear una nueva armona considerando los parmetros del algoritmo y la
harmony memory. Para ello se utiliza el siguiente procedimiento:
= 1 =
~(0,1)
= ~(1, )
~(0,1)
= + ~(1,1)
= ~( , )
Paso 4
Comparar la nueva armona con la peor armona almacenada en la harmony
memory. Si es mejor que la que se tiene almacenada, reemplazar la peor
armona por .
Paso 5
Repetir los pasos 3 y 4 hasta que se alcance el criterio de parada establecido. La
mejor solucin almacenada en la harmony memory ser la solucin final
encontrada para el problema de optimizacin que se est resolviendo.
Desde su reaparicin en el ao 2005, algunas variantes han sido propuestas para mejorar el
rendimiento del algoritmo original desarrollado por Geem. Las variantes ms conocidas son:
La cual propone un mtodo adaptativo para ir actualizando algunos de los parmetros del
algoritmo. El modelizador slo necesita inicializar los parmetros PAR min , PAR max , Bwmin y
Bwmax y, a travs del mtodo propuesto, se irn calculando iteracin tras iteracin los valores
reales de PAR y Bw. La principal desventaja de este mtodo radica en que se necesita
inicializar los valores de Bwmin y Bwmax los cuales son muy dependientes del problema y
difciles de ajustar.
Las redes neuronales constituyen una floreciente tecnologa que puede ayudar muy
significativamente en una gran cantidad de aplicaciones. Son sistemas de clculo que se
asemejan las caractersticas biolgicas del cerebro, y estn siendo adaptadas para su uso en
una variedad de aplicaciones comerciales, militares y tecnolgicas, que van desde el
reconocimiento de patrones hasta la optimizacin y planificacin. En este captulo se mostrar
cmo las redes neuronales pueden ser utilizadas para manejar un tipo de complejos problemas
de tipo combinatorio.
A pesar de que el cerebro humano ya haba sido estudiado desde la Edad Media e incluso
antes, su estructura profunda n fue desvelada hasta finales del pasado siglo. En ese momento
los cientficos, en controversia, se dividan en reticularistas y neurologistas. Para los primeros
el cerebro es una glndula cuya secrecin se distribuye por todo el cuerpo por medio de las
fibras nerviosas.
Cuerpo (o soma)
Dendritas
Axn (o cilindro eje)
La sinapsis es la unin del axn con otras neuronas. Hay dos tipos de sinapsis. El primero se
llama sinapsis de excitacin, cuyo efecto es incrementar el potencial en la neurona destino. El
segundo tipo es el de sinapsis inhibitoria cuya misin es hacer decaer el potencial en la
neurona de destino. Esta descripcin de los componentes fundamentales del sistema nervioso
es bastante simplificada. De hecho, en la teora de redes neuronales, las neuronas se
consideran como cajas negras, y por tanto no se necesita una descripcin ms detallada de a
neurona. No obstante, no es posible comprender la capacidad del cerebro para realizar
funciones tan complejas como la percepcin visual o el control motriz si se permanece al nivel
de la neurona.
El primer modelo artificial de neurona establecido por McCulloch y Pitts {1943}. Este
modelo consista en un dispositivo no lineal de mltiples entradas con interconexiones con
peso. En este modelo las interconexiones afectadas por los pesos representaban las
dendritas; el cuerpo celular se representaba por una funcin no lineal; la neurona artificial
sumaba las entradas ya ponderadas, les aplicaba la funcin no lineal y transmita la salida.
Veamos un caso muy simple en el cual la neurona tiene dos entradas, representadas por un
vector x=(x1, x2). A los pesos para las interconexiones los llamaremos w1 y w2, y la funcin no
lineal es una funcin umbral g(x), cuyo valor umbral es , siendo la salida un escalar y. Esto se
puede representar como
y= g(= )
con
g(h)={
>
A pesar de su simplicidad, este modelo artificial puede resolver funciones booleanas. Por
ejemplo, esta simple red es capaz de resolver la funcin booleana OR;para valores booleanos
+1(cierto) y -1(falso),basta tomar los pesos w1=w2=1, y el umbral = 0.5.
y=g (= )
22.3 Arquitecturas
Una red neuronal artificial est formada por un conjunto de neuronas interconectadas
entre ellas. El modo en que se interconectan constituye la arquitectura de la red.
Hay varias arquitecturas y las ms comunes son las redes por capas, las redes recurrentes y
las redes de conexin lateral. Estas arquitecturas estn muy ligadas a la regla de aprendizaje
para adiestrar a la red. En este apartado se representan estas arquitecturas y en el siguiente
las correspondientes reglas de aprendizaje.
La estructura de una red neuronal de este tipo est dispuesta en capas. En estas redes cada
capa de neuronas recibe seales slo de las capas previas. Por esto se llaman redes feed-
forward o perceptrn. La primera red feed-forward fue presentad por Rosenblatt {1957}, y
tena una capa de entrada y una capa de salida constituida por un conjunto de unidad umbral.
La figura 4 ilustra la arquitectura del preceptrn. En la primera capa no se realiza clculo (capa
de entrada) y por este motivo se considera a esta red como de una capa.
La segunda clase de red por capas es la multicapa con fedd-forward, tambin denominada
perceptrn multicapa. En esta a clase, se tiene al menos una capa (las denominadas capas
ocultas) entre las de entrada y la salida. Cuando cada unidad de una capa se conecta a cada
En estas redes cada neurona se conecta a todas las neuronas de la red, incluso contigo
misma, lo que significas que se tienen bucles en la arquitectura de la red. Las entradas de una
neurona son las salidas del resto de las neuronas de la etapa previa. En estas redes es muy
importante la dinmica de las mismas. La salida de cada neurona se lllama estado de la
neurona, y el estado de la red quedar definido por el estado de cada neurona. La red es
estable cuando su estado permanece igual tras varias iteraciones.
En esta clase de redes, las neuronas se colocan en los nodos de un retculo dimensin 1 2
(aunque puede haber dimensiones mayores, no se suelen utilizar). La figura 7 ilustra un
ejemplo de una red de dimensin uno, conectada lateralmente y otra de dimensin 2. La red
de esta clase ms comn es la de Kohonen.
En la prctica, las reglas de aprendizaje especifican cmo adaptar los pesos sinpticos. Esta
adaptacin se realiza mediante una interaccin continua entre la red neuronal y el entorno.
entrenamiento (por ejemplo cuando el ndice de error sea menor del 1% ) dejan de variar los
pesos sinpticos y quedan fijados para las operaciones siguientes. A continuacin viene la fase
de generalizacin. Basndose en los pesos determinados en la fase de entrenamiento, la red
encontrar la salida adecuada, incluso aunque el supervisor no conozca dicha salida.
Los modelos conexionistas han atrado la atencin por su prometedora potencialidad como
mtodos heursticos para hallar soluciones aproximadas a complejos problemas de
optimizacin. En sus pioneros trabajos, Hopfield y Tank[1985] mostraron que las redes
neuronales artificiales pueden ofrecer buenas aproximaciones a la solucin del problema del
viajante,TSP. El principal resultado de este artculo fue mostrar la posibilidad de empleo de
redes neuronales artificiales para la resolucin de problemas, aunque desde el punto de vista
de lso investigadores de operaciones los resultados de este mtodo distaban de ser
convincentes. De hecho, el mtodo se aplicaba a problemas pequeos (el tamao del
problema variaba entre 10 y 30 ciudades). Despus de este artculo, hubo muchos intentos
para desarrollar algoritmos neuronales para solucionar ste y otros problemas dde
optimizacin.
BIBLIOGRAFA:
Campos V., Laguna M. y Mart R. (1999), Scatter Search for the Linear Ordering Problem,
New Ideas in Optimisation, D. Corne, M. Dorigo and F. Glover (Eds.), McGraw-Hill. 331-341.
Campos V., Laguna M. y Mart R. (2001) Context-Independent Scatter and Tab Search for
Permutation Problems, Technical report TR03-2001, Departamento de Estadstica e I.O.,
Universidad de Valencia.
Campos, V., F. Glover, M. Laguna and R. Mart (1999) An Experimental Evaluation of a
Scatter Search for the Linear Ordering Problem to appear in Journal of Global Optimization.
Corbern A., E. Fernndez, M. Laguna and R. Mart (2000), Heuristic Solutions to the
Problem of Routing School Buses with Multiple Objectives, Technical report TR08-2000,
Departamento de Estadstica e I.O., Universidad de Valencia.
Davis, L. (1996), Handbook of Genetic Algorithms, International Thomson Computer Press,
Londres.
Daz, A., Glover, F., Ghaziri, H.M., Gonzalez, J.L., Laguna, M, Moscato, P. y Tseng, F.T. (1996).
Optimizacin Heurstica y Redes Neuronales, Paraninfo, Madrid.
Feo, T. and Resende, M.G.C. (1989), A probabilistic heuristic for a computational difficult set
covering problems, Operations research letters, 8, 67-71.
Feo, T. and Resende, M.G.C. (1995), Greedy Randomized Adaptive Search Procedures,
Journal of Global Optimization, 2, 1-27.
Festa, P. and Resende, M.G.C. (2001), GRASP: An Annotated Bibliography, AT&T Labs
Research Tech. Report.
Fisher, M.L. (1980), Worst-Case Analysis of Heuristic Algorithms", Management Science,
26, pg. 1-17.
Glover, F. (1977) Heuristics for Integer Programming Using Surrogate Constraints,
Decision Sciences, Vol. 8, pp. 156-166.
Glover, F. (1986) Future Paths for Integer Programming and Links to Artifical Intelligence,
Computers and Operations Research , 13, 533.
Glover, F. (1989), Tab Search: Part I, ORSA Journal on Computing, 1, 190.
Glover, F. (1990), Tab Search: Part II, ORSA Journal on Computing, 1, 4.
Glover, F. (1998) A Template for Scatter Search and Path Relinking, in Artificial Evolution,
Lecture Notes in Computer Science 1363, J.-K. Hao, E. Lutton, E. Ronald, M. Schoenauer and
D. Snyers (Eds.), Springer-Verlag, pp. 13-54.
Glover, F., M. Laguna and R. Mart (1999) Scatter Search, to appear in Theory and
Applications of Evolutionary Computation: Recent Trends, A. Ghosh and S. Tsutsui (Eds.),
Springer-Verlag.
Glover, F., M. Laguna and R. Mart (2000), Fundamentals of Scatter Search and Path
Relinking, Control and Cybernetics, 29 (3), 653-684.
Glover, F., M. Laguna, E. Taillard and D. de Werra (1993), A users guide to Tab search,
Annals of Operations Research, 4, 3-28.
Glover, F.and Laguna, M. (1997), Tab Search, Ed. Kluwer, London.
Holland, J.H. (1992), Genetic Algorithms, Scientific American, 267, 66.
Johnson, D.S., Aragon, C.R., McGeoch, L.A. and Schevon, C. (1989), Optimization by
Simulated Annealing: An experimental evaluation; Part I, Graph Partitioning, Operations
Research 37.
Johnson, D.S., Aragon, C.R., McGeoch, L.A. and Schevon, C. (1991), Optimization by
Simulated Annealing: An experimental evaluation; Part II, Graph Coloring and Number
Partitioning, Operations Research 39.
Jnger, M., Reinelt, G. y Rinaldi, G. (1995), The Traveling Salesman Problem", En: Ball,
M.O., Magnanti, T.L., Monma, C.L. y Nemhauser, G.L. (eds.), Handbook in Operations
Research and Management Science, Vol. 7, Network Models, pg 225--330. North-
Holland, Amsterdam.
Kirkpatrick, S., Gelatt, C.D. and Vecchi, P.M. (1983), Optimization by simulated annealing,
Science, 220, 671-680
Laguna M. and Mart R. (2000) Experimental Testing of Advanced Scatter Search Designs
for Global Optimization of Multimodal Functions. Technical report TR11-2000,
Departamento de Estadstica e I.O., Universidad de Valencia.
Laguna M. and Mart R. (1999), GRASP and Path relinking for two layer straight-line
crossing minimization, INFORMS Journal on Computing, 11(1), 44-52.
Laguna M. and Mart R. (2002), The OptQuest Callable Library Optimization Software
Class Libraries, Voss and Woodruff (Eds.), 193-218,Kluwer.
Laporte, G. (1992), The Travelling Salesman Problem: An Overview of Exact and
Approximate Algorithms", European Journal of Operational Research, 59, pg. 231--247.
Lawler, E.L., Lenstra, J.K., Rinnooy Kan, A.H.G. y Shmoys, D.B. (eds.) (1985), The Traveling
Salesman Problem. A Guided Tour to Combinatorial Optimization, John Wiley and Sons,
Chichester.
Lin, S. y Kernighan, B.W. (1973), An Effective Heuristic Algorithm for the Traveling
Salesman Problem", Operations Research, 21, pg. 498--516.
Lokketangen, A. and Glover, F. (1996) Probabilistic move selection in Tab search for 0/1
mixed integer programming problems Meta-Heuristics: Theory and Practice, Kluwer, pp.
467-488.
Mart, R. (2000), MultiStart Methods to appear in Handbook on MetaHeuristics, Kluwer.
Michalewicz, Z. (1996), Genetic Algorithms + Data Structures = Evolution Programs, tercera
edicin, Springer Verlag.
Osman, I.H. and Kelly, J.P. (eds.) (1996), Meta-Heuristics: Theory and Applications, Kluwer
Academic, Boston.