TESIS-MAG-0201.pdf
TESIS-MAG-0201.pdf
TESIS-MAG-0201.pdf
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
cli<br />
PONTIFICIA UNIVERSIDAD CATOLICA DE CHILE<br />
ESCUELA DE INGENIERIA<br />
UNA HERRAMIENTA PARA<br />
APOYAR EL DESARROLLO DE<br />
HEURÍSTICAS BASADA EN UNA<br />
METODOLOGÍA DE RESOLUCIÓN<br />
DE PROBLEMAS DE<br />
OPTIMIZACIÓN<br />
PATRICIO ANDRÉS RODRÍGUEZ VALDÉS<br />
Tesis para optar al grado de<br />
Magister en Ciencias de la Ingeniería<br />
Profesor Supervisor:<br />
MIGUEL NUSSBAUM V.<br />
Santiago de Chile, 1996
3<br />
PONTIFICIA UNWERSIDAD CATOLICA DE CHILE<br />
ESCUELA DE INGENIERIA<br />
Departamento de Ciencia de la Computación<br />
UNA HERRAMIENTA PARA APOYAR<br />
EL DESARROLLO DE HEURÍSTICAS<br />
BASADA EN UNA METODOLOGÍA DE<br />
RESOLUCIÓN DE PROBLEMAS DE<br />
OPTIMIZACIÓN<br />
PATRICIO ANDRÉS RODRÍGUEZ VALDÉS<br />
Tesis presentada a la Comisión integrada por los profesores:<br />
MIGUEL NUSSBAUM Y.<br />
LUIS CONTESSE B.<br />
SERGIO MATURANA V.<br />
ANDRÉS WEINTRAUB P.<br />
JUAN DE DIOS ORTUZAR S.<br />
Para completar las exigencias del grado<br />
de Magister en Ciencias de la Ingeniería<br />
Santiago de Chile, 1996
A mi Madre, quien me enseñó a<br />
perseguir mis sueños, y a mis,<br />
hermanos que me apoyaron mucho.
AGRADECIMIENTOS<br />
Quisiera agradecei el apoyo que tanto la Dirección de Investigación y<br />
Postgrado de la Pontificia Universidad Católica a través del fondo de apoyo a las Tesis<br />
de Magister y la Comisión Nacional de Investigación en Ciencia y Tecnología<br />
(CONTCYT) a través de su beca de postgrado y el programa de cooperación<br />
internacional dieron al desarrollo de esta tesis.<br />
Mi especial reconocimiento a Marcos Sepúlveda, quien fue el primero en<br />
confiar en mí y me abrió la puerta al mundo de la investigación, y a los profesores del<br />
departamento de Ciencia de la Computación Leopoldo Bertossi y Yadran Eterovic por<br />
apoyar mi postulación al programa de Magister.<br />
Agradezco a mis compañeros y amigos con quienes trabaje por tanto tiempo<br />
en el desarrollo de este proyecto : Rodrigo Baeza, Rodrigo Buzeta, Lioubov<br />
Dombrovskaia, Robert Fischer, Lorena Oliver, Rodrigo Sandoval, Hans Schróder y<br />
especialmente a Marcos Singer, quien lo hizo a través de la distancia. Mi<br />
agradecimiento también para Tania Bedrax por sus interesantes comentarios, aportes y<br />
discusiones aunque por encima de todo, le agradezco su fonna directa y honesta de ver<br />
la vida: Gracias, Tania.<br />
Finalmente quisiera agradecer en forma muy especial a mi profesor guía<br />
Miguel Nussbaum, estos cuatro años que me permitieron crecer como profesional y<br />
persona, además de aprender que hacer universidad no es sólo investigación, disciplina y<br />
conocimiento sino que también es amistad.<br />
Al terminar, siempre se tiene la terrible certeza de que alguien a quien se<br />
quiere y que en algún momento de nuestras vidas fue importante quedó postergado en<br />
algún rincón de nuestra mente. A todas esas personas mi más sincero reconocimiento y a<br />
la vez mis más sinceras disculpas.<br />
111
DEDICATORIA<br />
INDICE GENERAL<br />
AGRADECIMIENTOS...................... . .................... . ........................................ . ..............<br />
iNDICE DE TABLAS... ............................................................... . ................................. viii<br />
INDICE DE FIGURAS... ................................................................................................. ix<br />
RESUMEN......... . ..... . ........................ . ....................... . ................. . .................... . ... . ........... xi<br />
ABSTRACT.............................. .... .................... . .... . ........................................................ xii<br />
1. INTRODUCCIÓN ................................................................................................... 1<br />
1.1 Heurísticas ................... . ............................................................... . .................. 2<br />
1.1.1 Búsqueda local...............................................................................6<br />
1.1.2 Búsqueda global .......................................................................... .15<br />
1.2 El Problema..................................................................................................22<br />
1.3 Discusión......................................................................................................23<br />
1.4 Hipótesis de Trabajo.....................................................................................24<br />
U. EL PROCESO DE MODELACIÓN Y RESOLUCIÓN DE UN PROBLEMA DE<br />
OPTIMIIZACIÓN COMBINATORIAL................................................................ 27<br />
2.1 El proceso de Modelación. ........................ . ............................................ . ..... 27<br />
Pág.<br />
2.1.1 Entendimiento del problema........................................................ 28<br />
2.1.2 Construcción del modelo. ............................................................ 29<br />
2.1.3 Generación de datos..................................................................... 30<br />
2.2 El Proceso de Resolución ............. . .......................................... . .................... 30<br />
2.2.1 Conceptualización de la búsqueda ........... . .................... . .............. 35<br />
2.2.2 Defmición de operadores............................................................. 38<br />
2.2.3 Estrategia de control .................................................................... 39<br />
2.2.4 Ajuste de parámetros ................................................................... 41
2.3 Interrelación entre los Dos Procesos .43<br />
2.4 Requisitos de una Herramienta para el Desarrollo de Heurísticas...............45<br />
ifi. DISEÑO DE LA HERRAMIENTA. ..................................................................... 47<br />
3.1 La Vecindad y la Conceptualización del Problema......................................47<br />
3.1.1 El concepto de asociación .............................................. . ............. 49<br />
3.1.2 Álgebra de asociaciones...............................................................52<br />
3.2 Diseño del Algoritmo de Búsqueda ............................................................. 56<br />
3.2.1 Conceptos previos... ..................................................................... 56<br />
3.2.2 Algoritmo de búsqueda propuesto. .... . ......................................... 61<br />
IV. LA HERRAMIENTA DE APOYO AL DISEÑO DE HEURÍSTICAS DE<br />
BÚSQUEDALOCAL.. ........................................................... . ..... . ....................... 66<br />
4.1 LS-1 Un Lenguaje para Defmir Heurísticas de Búsqueda.........................66<br />
4.1.1 Bloque de conexión con la estructura de datos.. ..... . .................... 68<br />
4.1.2 Bloque de interrelación entre heurísticas.....................................69<br />
4.1.3 Bloque de defmición de asociación.............................................69<br />
4.1.4 Bloque de heurísticas contextuales . ............................................. 71<br />
4.2 Cómo Construir un Lenguaje Gráfico a Partir de LS-1................................74<br />
4.3 Búsqueda Paralela ........................................................ . ............................... 78<br />
4.3.1 RedesdePetri ..............................................................................78<br />
4.3.2 Especificación concurrente del grafo de vecindad ........... . ........... 80<br />
4.4 Implementación de la Herramienta ............................. . ................................ 83<br />
4.4.1 Criterios de detención. ........................................................... . ..... 85<br />
4.4.2 Criterios de aceptación ................................................................85<br />
4.4.3 Recorrido del grafo ................. . ......... . .......... . ............................... 86<br />
V.APLICACIONES ............... . .......... ... .......................................................................... 87<br />
5.1 Minimizar la Tardanza Ponderada en un Job Shop .............. . ....................... 87
5.1.1 Conceptualización del problema .88<br />
5.1.2 Definición de operadores............................................................. 96<br />
5.1.3 Estrategia de control .................................................................. 102<br />
5.1.4 Resultados ........... . ................................................................. . .... 104<br />
5.2 Industria Forestal.. ................................................................................ . ..... 111<br />
5.2.1 Conceptualización del problema................................................ 112<br />
5.2.2 Defmición de operadores.... ....................................................... 114<br />
5.2.3 Estrategia de Control ................................................................. 116<br />
5.2.4 Resultados .... . ...... . ..... . ..... .. ................... . ........ . ............................ 117<br />
VI . CONCLUSIONES .................................................................................................. 120<br />
6.1 Acerca de la Metodología Propuesta ................. ... ...................................... 120<br />
6.1.1 Ventajas ..................................................................................... 120<br />
6.1.2 Desventajas................................................................................ 120<br />
6.2 Acerca del Concepto de Cluster y Extensiones.......................................... 121<br />
6.2.1 Conceptos relacionados ...................................................... . ...... 121<br />
6 .2.2 Extensiones................................................................................ 122<br />
6.3 Conceptos de Búsqueda Introducidos ........................................................ 123<br />
6.3.1 Combinación de heurísticas....................................................... 123<br />
6.3.2 Equivalencia entre tipos de heurísticas...................................... 124<br />
6.3.3 Extensiones al concepto de estado ...................... . ...................... 124<br />
6.4 Acerca del Algoritmo de Búsqueda y la Herramienta Propuestos . ............ 125<br />
6.4.1 Estructura de la vecindad........................................................... 125<br />
6.4.2 Extensiones a la estructura de la vecindad ............................ . .... 127<br />
6.4.3 Búsqueda distribuida ................................................................. 127<br />
6.4.4 Desventajas .... . ..... . ................... . ....................................... . ......... 128<br />
6.5 Analogías con otras Áreas de Ciencia de la Computación ..................... . ... 129<br />
VII. TRABAJO FUTURO ................. . .......................................................... ... ............. 132
BIBLIOGRAFIA . 134<br />
ANEXOS.. .......................... ...................................................................................... 143<br />
ANEXO A PROPOSICIONES DEL ÁLGEBRA DE ASOCIACIONES.........144<br />
ANEXO B : GRAMÁTICA DEL GENERADOR DE CÓDIGO ............. . ......... 154<br />
ANEXO C HEURÍSTICAS PARA EL PROBLEMA FORESTAL.................158
INDICE DE TABLAS<br />
Tabla 2.1: Instancia de J41 ICm .....................................................................................30<br />
Tabla 4.1: Operadores de la defmición 4.1....................................................................70<br />
Tabla 5.1 : Instancia deJmIr,d3IZw7,. ..... . ........................................... . .......... . ........ . .... ...89<br />
Tabla 5.2 : Solución factible para J4Irj,4IEwj Tj.... ............ . ............................................. 91<br />
Tabla 5.3 : Puntos de partida para el algoritmo de tabu search ................................. ...105<br />
Tabla 5.4 : Resultados de tabu search con 100.000 iteraciones . .................................. 107<br />
Tabla 5.5 : Tabu search versus SB-TWT......................................................................108<br />
Tabla 5.6 : Resultados para parámetros distintos del algoritmo de tabu search. .......... 110<br />
Tabla 5.7 : Operadores defmidos para el problema de forestal. .................................... 116<br />
Tabla 5.8 : Resultados de las heurísticas desarrolladas para forestal. ........................... 118<br />
Tabla 5.9 : Soluciones comparables con la obtenida en [Schilkrut 93]........................119<br />
viii<br />
Pág.
INDICE DE FIGURAS<br />
Figura 1.1: Espacio de búsqueda de la heurística.............................................................3<br />
Figura 1.2 : Búsqueda global versus búsqueda local ................................ . ........................ 5<br />
Figura 1.3 : Espacio y superficie de búsqueda local......................................................... 6<br />
Figura 1.4 : Algoritmo de búsqueda local. ........................................................................ 7<br />
Figura 1.5 : Algoritmo de Tabu Search........................................................................... 11<br />
Figura 1.6 : Aparición de ciclos durante el proceso de búsqueda . .................................. 14<br />
Figura1.7 : Árbol de búsqueda. ...................................................................................... 15<br />
Figura 1.8 : Algoritmos de búsqueda en árboles ............. . ............................................... 16<br />
Figura 1.9 : Algoritmos de branch and bound y beam search ............................. . .......... 19<br />
Figura 1.10 : Branch and bound versus beam search. .................................................... 20<br />
Figura 2.1 : Etapas del proceso de modelación ...................................................... . ........ 27<br />
Figura 2.2 : El proceso de modelación como un proceso de instanciación ........... . ..... . ... 31<br />
Figura 2.3 : Etapas del proceso de resolución.. .... . .......................................................... 34<br />
Figura 2.4 : El proceso de resolución como un proceso de instanciación....................... 34<br />
Figura 2.5 : Desempeño de la heurística versus infonnación disponible ...................... .. 41<br />
Figura 3.1 : Aplicación de heurísticas ................................................. . .................... . ..... . 59<br />
Figura 3.2 : Heurísticas contextuales. ............................................................................. 60<br />
Figura 3.3 : Algoritmos a utilizar..... .................................................................. . ............ 63<br />
Figura 3.4 : Recorrido del grafo de heurísticas dependiendo del estado de la búsqueda.65<br />
Figura 3.5 : Algoritmo que ejecuta cada heurística ........................................... . ............. 65<br />
Figura 4.1: Estructura general del lenguaje....................................................................68<br />
ix<br />
Pág.
Figura 4.2 : Lista de bloques de asociación.....................................................................72<br />
Figura 4.3 : Operadores de perturbación ......... . ............................................................... 73<br />
Figura 4.4 : Diferencia entre los operadores de perturbación ......................................... 73<br />
Figura 4.5 : Vecindad representada por un grafo............................................................ 77<br />
Figura 4.6 : Ejemplo de vecindad representada por un grafo.......................................... 78<br />
Figura 4.7 : Ejemplo de una red de Petri ... . ..................................................................... 80<br />
Figura 4.8 : Representación de cada nodo para especificar una red de Petri .................. 81<br />
Figura 4.9 : Representación de una vecindad como una red de Petri.. .... .<br />
..... . .... .. ........... 82<br />
Figura 4.10: Sistemas implementado y propuesto..... .... . .................................. . ...... . ..... 84<br />
Figura 5.1 : Representación de grafo disyuntivo para JmIrj,4IEw1T ..<br />
..... . ............. . ......... 90<br />
Figura 5.2 : Representación de una solución factible en el grafo disyuntivo..................91<br />
Figura 5.3 : Arcos, operaciones y grafo crítico paraf4 Ir,d3iwT. ...................... . ......... 95<br />
Figura 5.4 : Resultado del operador del intercambio. .................................................<br />
. ... 97<br />
Figura 5.5 : Especificación de la heurística de tabu search para JmIrj, d»wjTj ............ 104<br />
Figura 6.1 : Integración entre búsqueda global y local.................................................. 123<br />
Figura 6.2 : El cálculo de la lista de candidatos como filtro de información..... ...... . .... 126
RESUMEN<br />
Existen distintas heurísticas genéricas para la optimización de problemas<br />
combinatoriales, las cuales pueden ser caracterizadas en dos grandes tipos : heurísticas<br />
de búsqueda local y de búsqueda global.<br />
En esta tesis se plantea una metodología para enfrentar la resolución de<br />
problemas combinatoriales. Gracias a ella y a otros conceptos introducidos en este<br />
trabajo, fue posible definir tanto un algoritmo de optimización basado en técnicas de<br />
búsqueda local como un lenguaje declarativo, denominado LS-!, con el cual especificar<br />
dicho algoritmo.<br />
La definición de este lenguaje permitió desarrollar una herramienta de apoyo<br />
que genera una implementación computacional de una heurística de optimización a<br />
partir de la especificación en LS-1 y la estructura de datos que representa el modelo del<br />
problema que se necesita resolver. Además de la metodología y la definición del<br />
lenguaje se presentan dos aplicaciones : una teórica y una práctica.<br />
La primera de ellas corresponde a la planificación de la producción de un<br />
taller de máquinas minimizando la tardanza total ponderada de los trabajos que allí se<br />
procesan, mientras que la segunda de ellas correspondió a la planificación del itinerario<br />
de camiones que transportan madera en empresas del sector forestal, minimizando los<br />
costos de operación.<br />
En ambos casos se obtuvieron soluciones de la misma calidad que utilizando<br />
heurísticas específicas. Los tiempos de cómputo en alcanzar la solución óptima usando<br />
las heurísticas desarrolladas con la herramienta fueron, en el peor de los casos, a lo más<br />
un orden de magnitud peores que el tiempo empleado por las heurísticas específicas. Lo<br />
anterior es un resultado aceptable considerando la simplicidad de las heurísticas<br />
desarrolladas con la herramienta.<br />
xl
ABSTRACT<br />
There are different generical heuristics to optimize combinatoria!<br />
problems. These heuristics can be classified into two types: local and global search<br />
heuristics.<br />
This thesis develops a framework to face the problem solving process for<br />
combinatoria! problems. This framework, along with other concepts introduced in<br />
this work, allowed us to define an optimization algoritbm based on local search<br />
techniques, as well as a declarative language, called LS- 1, which enables the analyst<br />
to specifj it.<br />
A tool which generates the computational implementation of an<br />
optimization heuristic based on a LS-1 specification and the data structure<br />
representing a model of the problem to be solved was also developed. This work<br />
presents two successful app!ications of the tool: one theorical, and the other practical.<br />
The first application corresponds to minimizing the total weighted<br />
tardiness in a job shop environment. The second one corresponds to the truck<br />
scheduling decisions in timber transport for minimizing the operational cost of forest<br />
industries.<br />
In both cases, the quality of the solution obtained by tailored heuristics<br />
and the ones produced using the tool are quite similar. The algorithms perform very<br />
well too, as demonstrated by the computationa! experience. Optimal so!utions were<br />
reached, in the worst case, in a computational time one order of magnitude greater<br />
than the time spent by tailored heuristics. This is an acceptable resu!t, considering the<br />
simplicity of the heuristics developed using the tool.<br />
xii
1. INTRODUCCIÓN<br />
Los problemas de optimización en el mundo actual tienen cabida debido a la<br />
necesidad que tienen las empresas de mejorar sus procesos productivos, administrativos<br />
o logísticos para ser más competitivas. Para ello es necesario construir un modelo que<br />
corresponde a una abstracción de la realidad que describe la parte del mundo que es<br />
necesario estudiar, el proceso que se desea mejorar.<br />
Un modelo de optimización defme el conjunto de soluciones que<br />
representan dicha realidad a través de variables y relaciones existentes entre ellas que<br />
definen restricciones. Sin embargo, dichas soluciones no son preferidas de igual forma,<br />
por lo que deben compararse entre sí a través de una función objetivo. En adelante<br />
supondremos sin perdida de generalidad, que los problemas que se están tratando de<br />
resolver son de minimización.<br />
forma:<br />
Un problema de optimización puede representarse en general de la siguiente<br />
minf(x) : x E X = flfl<br />
1<br />
(1.1)<br />
El conjunto X de soluciones que define el modelo constituye el espacio de<br />
búsqueda del problema y tratar de resolver el problema significa buscar dentro de<br />
dicho espacio la solución que minimice la función objetivo. Si las variables de decisión<br />
del problema son discretas, es decir, la solución es un conjunto o una secuencia de<br />
enteros u otros objetos, se dice que el problema es de tipo combinatorial [Reeves 931.<br />
En los problemas combinatoriales, el tamaño del espacio de búsqueda crece<br />
exponencialmente a medida que lo hace el tamaño del problema, por lo que su<br />
resolución óptima se complica enormemente. Muchos de ellos son problemas del tipo<br />
NP-hard [Garey 79], lo cual sugiere que es imposible obtener una solución óptima sin el<br />
uso de un algoritmo esencialmente enumerativo [Anderson 961.
Por lo tanto, en adelante utilizaremos el término heurística para referimos a<br />
aquellas técnicas que buscan buenas soluciones (es decir, cercanas al óptimo) con un<br />
costo computacional razonable aunque sin ser capaz de garantizar factibilidad u<br />
optimalidad, e incluso en muchos casos, de establecer cuán cerca de la optimalidad está<br />
una solución factible [Reeves 93].<br />
1.1 Heurísticas<br />
En la resolución de problemas de optimización definiremos como estado a<br />
una asignación de valores a un subconjunto de las variables de decisión del problema.<br />
La asignación otorga a cada variable x un valor en D, que corresponde al dominio de<br />
esa variable. Dicho conjunto de estados defmen el espacio de búsqueda de la<br />
heurística. Dentro de ese espacio podemos distinguir varios tipos de estados en base al<br />
espacio de búsqueda del problema.<br />
Defmición 1.1 : Estados completos e incompletos.<br />
Sean 1 = { 1, . . .,n} el conjunto de valores para los indices de las variables del<br />
problema y A (y) ç 1, el conjunto de variables asignadas para un estado y perteneciente al<br />
espacio de búsqueda de la heurística X17. Un estado y se dice que es completo, si es que<br />
A(y) = 1. Si A(y) c 1, se dice que el estado es incompleto•.<br />
Entre cada uno de dichos estados podemos distinguir entre estados factibles<br />
e infactibles. Los estados factibles en el caso de los estados completos, son aquellos que<br />
satisfacen las restricciones del problema, es decir, son soluciones del problema por lo<br />
que en adelante se usará el termino solución factible y estado completo factible<br />
indistintamente. Para el caso de los estados incompletos, son aquellos en los cuales la<br />
asignación parcial satisface las restricciones del problema. Por otra parte, los estados<br />
infactibles no satisfacen alguna de las restricciones del problema, lo cual puede ocurrir<br />
en tanto estados completos como incompletos.
La búsqueda se lleva acabo a través de la sucesiva aplicación de operadores<br />
sobre un estado inicial con el fm de encontrar el óptimo. En consecuencia, un operador<br />
defme cómo transformar un estado en otro.<br />
Giacias a los operadores, el conjunto de estados defme un grafo de<br />
búsqueda, que corresponde al grafo dirigido cuyos nodos son estados del espacio de<br />
búsqueda de la heurística y los arcos representan la aplicación de la operación sobre el<br />
nodo origen que produce el nodo destino del arco. Por lo tanto, existe una estrecha<br />
relación entre estado y operador. Los operadores deben ser capaces de generar todo el<br />
espacio de búsqueda relevante del problema, si no probablemente la heurística nunca<br />
alcance una buena solución si los estados para llegar a ellas no son alcanzables desde<br />
otros. Lo anterior defme la propiedad de conectividad que debe tener el grafo de<br />
búsqueda, es decir, que exista una secuencia fmita de perturbaciones que conduzcan al<br />
óptimo global del problema. El grafo de búsqueda conecta tanto estados completos<br />
como incompletos, tal como puede verse en la figura 1.1.<br />
Grifo de búsqueda definido<br />
por los operadores<br />
op.r(A.B)<br />
B<br />
-H n;<br />
Plano de estados<br />
complelo.<br />
.. . otuclones factible.<br />
Solución Inalcanzable por la<br />
estructura del grifo de búsqueda<br />
Figura 1.1: Espacio de búsqueda de la heurística.
Los problemas NP-hard son extremadamente dificiles tanto por el problema<br />
de la explosión combinatorial, como también porque carecen de propiedades como la de<br />
convexidad en los problemas cuadráticos, que permitan limitar el espacio en el cual<br />
realizar una búsqueda o al menos saber en qué dirección se encuentra el óptimo. La<br />
explosión combinatorial hace que el espacio de búsqueda del problema sea tan grande<br />
que sea impráctico realizar búsqueda exhaustiva.<br />
Si bien una heurística debe evitar recorrer exhaustivamente todo el espacio<br />
tampoco puede limitarse solamente a una región de él, ya que el óptimo puede<br />
encontrarse en cualquier parte. La heurística debe limitar el número de soluciones<br />
visitadas y a la vez asegurar una amplia cobertura del espacio con el fin de tener éxito.<br />
Eso implica viajar selectivamente a través del espacio de búsqueda descartando algunas<br />
regiones. La estrategia de control de la heurística, entonces, es el mecanismo que<br />
selecciona o descarta regiones del espacio de búsqueda según ciertos parámetros. Por<br />
parámetros se entiende a aquellos valores o políticas de manejo que en las estrategias<br />
de control dependen del problema que se está tratando y administran tanto cuánto<br />
esfuerzo computacional invertir en la búsqueda de la solución. Por políticas de manejo<br />
se entienden formas automáticas en que los parámetros se ajustan durante la búsqueda.<br />
En base a los tipos de estados del espacio de la heurística definido para el<br />
problema podemos distinguir dos tipos básicos de heurísticas. Las de búsqueda local<br />
(local search) [Gu 93, Reeves 93, Anderson 96, Pinedo 95a] y las de búsqueda global<br />
(global search) [Gu 94, Pinedo 95a]. En las heurísticas de búsqueda global la solución<br />
se construye incrementalmente desde cero, es decir, el algoritmo visita sucesivamente<br />
estados incompletos hasta llegar a un estado completo factible. En cambio, en las de<br />
búsqueda local se comienza con un estado completo factible y la búsqueda siempre<br />
visita estados de ese tipo. La diferencia en la forma de recorrer el espacio de búsqueda<br />
entre ambos tipos de heurísticas se muestra en la figura 1.2.<br />
4
Algoritmo ite búsqued. global<br />
Algoiltmo ite búsqu.d. local<br />
Figura 1.2 : Búsqueda global versus búsqueda local.<br />
En general, en búsqueda local sólo se visitan estados completos factibles,<br />
por lo que el grafo de búsqueda define un piano a los cuales pertenecen sólo estados<br />
completos. Si se agrega una tercera dimensión a las dos ya definidas anteriormente que<br />
corresponda a la función objetivo del problema, se creará una superficie de búsqueda<br />
[Sepúlveda 92, Anderson 96] que es la que el algoritmo debe construir iterativamente y<br />
visitar selectivamente (figura 1.3). Por lo tanto, dichos algoritmos trabajan con un<br />
subconjunto del espacio de búsqueda de la heurística correspondiente al grafo definido<br />
por los estados completos, por lo que la propiedad de conectividad debe cumplirse sólo<br />
en parte del grafo de búsqueda.<br />
Lo mismo puede decirse de los algoritmos búsqueda global. Si bien necesita<br />
tanto de estados completos como incompletos y no existe una analogía clara con el<br />
concepto de superficie de búsqueda, no requiere de los arcos que conectan estados<br />
completos entre sí.<br />
En las siguientes secciones detallaremos los principales algoritmos de estos<br />
tipos que existen para enfrentar problemas NP-hard.<br />
5
1.1.1 Búsqueda local<br />
Figura 1.3 : Espacio de y superficie de búsqueda local.<br />
Las heurísticas de búsqueda local ya han sido utilizadas con éxito en<br />
problemas combinatoriales [Reeves 93, Glover 95] con un rendimiento superior a<br />
métodos matemáticos tradicionales [Cabrera 941. Estos métodos se caracterizan por su<br />
generalidad, el ser iterativos [Glover 89, Sepúlveda 921 y que, en general, no garantizan<br />
la convergencia al óptimo.<br />
Sea x' un vector solución para el problema defmido en la ecuación 1.1 y<br />
P(m ,xk) una función de perturbación. Entonces un algoritmo de búsqueda local o de<br />
búsqueda por vecindad (neighborhood search) es el procedimiento iterativo que se<br />
describe en las figura 1 .4a.<br />
2.
a) procedure Local_Search(x)<br />
begin<br />
:= X"':= X E S<br />
b)<br />
7<br />
P(mi,)<br />
k:= O<br />
repeat<br />
A<br />
m:= argminfiy) (1) P(md)<br />
z<br />
Y.<br />
P(m,xk) (2)<br />
f (criterio_de_aceptación(z,x")) then<br />
begin<br />
k+l<br />
x :z<br />
f (J(xk+ I)< flxmei0D) then<br />
Xk+1<br />
Q<br />
end<br />
k:k+1<br />
until criterio_de_detencfrmn N(Y)<br />
end Local Search<br />
Figura 1.4 : Algoritmo de búsqueda local.<br />
La búsqueda comienza desde una solución inicial factible x 0, producida<br />
mediante otra heurística. La función de perturbación P, toma un estado completo<br />
factible y la transforma en otro dependiendo del vector de argumentos m (ver figura<br />
1 .4b). Al conjunto de todos los argumentos posibles para la función P(m,xk), con xk<br />
dado, se denomina vecindad [Glover 90b, Glover 95, Reeves 931 y se le denota como<br />
N(xk) . Cada elemento n perteneciente a N(xk) se conoce como movida y el algoritmo<br />
escoge la mejor movida dentro de la vecindad, la cual se determina a través de una<br />
función de evaluaciónf(m) como se indica el paso 1 del algoritmo de la figura l.4a.<br />
Notar que en el grafo de búsqueda la vecindad corresponden a todos aquellos puntos del<br />
espacio que son alcanzados desde la solución actual en un solo paso.<br />
Una vez escogida la mejor movida se ejecuta el cambio obteniéndose una<br />
solución candidata z (ver paso 2 de la figura 1 .4a), la cual se convierte en la siguiente<br />
solución sobre la cual se volverá a aplicar el método si se cumple un criterio de<br />
aceptación. El algoritmo se finaliza si el criterio de detención es alcanzado el que se<br />
7
asa principalmente en el tiempo de cómputo que se desea invertir y la mejor solución<br />
obtenida durante la búsqueda se entrega en me30..<br />
Los distintas implementaciones de estos métodos difieren tanto en los<br />
criterios de aceptación o en la forma de escoger la vecindad. Tabu search y simulated<br />
annealing, por ejemplo, difieren entre sí por el criterio de aceptación de dichos puntos<br />
[Pinedo 95a]. Esto último influye tanto en la eficacia como en la eficiencia del<br />
algoritmo, pues muchas veces es deseable aceptar como válido un punto que no<br />
representa una mejora desde el punto de vista de la función objetivo, principalmente<br />
porque eso ayuda a escapar de óptimos locales, problema que a menudo enfrentan este<br />
tipo de algoritmos [Battiti 94, Gu 941. Los algoritmos se detallan a continuación:<br />
a) Hill climbing<br />
Los algoritmos hill climbing se caracterizan por el criterio de aceptación que<br />
utilizan, pues admiten la solución candidata z si y sólo sif(z) :5f(x') [Sepúlveda 921. Eso<br />
significa que el algoritmo sólo acepta movidas que disminuyen la función objetivo, con<br />
lo cual el algoritmo queda atrapado en óptimos locales.<br />
b) Simulated annealing<br />
Otros algoritmos son los de simulated annealing [Kirkpatrick 83, Morton<br />
93, Reeves 93, Pinedo 95a], que utilizan un criterio de aceptación probabilístico que<br />
permite definir propiedades de convergencia basadas en la estructura de la vecindad.<br />
Lo primera característica que distingue a estos algoritmos, es la manera en<br />
que escogen la movida que dará origen a la solución candidata. Dicha movida se escoge<br />
de forma totalmente aleatoria, lo que equivaldría a que 1Cm asigne valores a las<br />
movidas extrayendo aleatoriamente valores del conjunto 1 1,. . . , IN(xk)I } no repetidos.<br />
8
La segunda característica es el criterio de aceptación que utiliza. A la<br />
solución candidata z se le asigna una probabilidad de ser aceptada 1 y que corresponde a<br />
Pk = min(1,<br />
))/T&) donde Tk es el factor de temperatura que depende de la<br />
iteración k. Si Uk es una instancia de una variable distribuida uniformemente en [0,1] y<br />
generada en la iteración k, entonces z se acepta si es que u < Pk.[Saab 911.<br />
La forma en que se actualiza Tk corresponde al denominado cooling<br />
schedule (o annealing schedule) que para asegurar la convergencia del método, debe<br />
generar una secuencia estrictamente positiva de valores T1, T2 , . . ., Tk tales que T1 ~: T2 2:<br />
.~<br />
Tk y hm Tk = O [Hayek 88, van Laarhoven 921.<br />
k-<br />
Sim ulated annealing se comporta como un algoritmo hill climbing si es que<br />
las soluciones candidatas son siempre mejores que las soluciones anteriores (es decir,<br />
f(x') > ... > f(xk)) . Aunque, el algoritmo permite también soluciones peores, con<br />
probabilidad Pk que disminuye a medida que el número de iteraciones aumenta. Con ello<br />
se escapa de óptimos locales y se evita el problema de que la búsqueda quede estancada<br />
en uno de dichos puntos.<br />
Otro algoritmo no determinístico es el denominado de Evolución<br />
Estocástica, que trata de ejecutar el mayor número de movidas en cada iteración en lugar<br />
de la única que ejecuta simulated annealing. La distribución con la cual se comparan las<br />
soluciones es uniforme en lugar de exponencial. No goza de la popularidad que tiene<br />
simulated annealing. Mayores detalles se encuentran en [Saab 91].<br />
c) Threshold accepting<br />
Esta estrategia es una versión determinística de simulated annealing, en la<br />
cual la solución candidata es aceptada si f(z) - f(xk) < fu, siendo i una constante no<br />
negativa conocida como umbral [Aarts 941. Al igual que en el caso del simulated
annealing el valor de dicha variable gradualmente es disminuida hasta hacerse cero<br />
hacia el fmal de la búsqueda.<br />
d) Multi-start iterative improvement<br />
Este tipo de estrategias de búsqueda local, consiste en un número de ciclos,<br />
en cada uno de los cuales un algoritmo hill climbing comienza de una solución factible<br />
generada aleatoriamente [Aarts 941. Cada vez que el algoritmo alcanza un óptimo local,<br />
un nuevo ciclo comienza. El proceso continúa hasta que se alcanza un cierto criterio de<br />
detención y el algoritmo retorna la mejor solución encontrada en alguno de los ciclos.<br />
e) Large-step optimization<br />
Un proceso de búsqueda de paso largo [Lourenço 951 también busca realizar<br />
un muestreo como el que se realiza en los algoritmos de mejora iterativa con múltiples<br />
puntos de partida. Pero, la diferencia fundamental con ese tipo de algoritmos es que<br />
cada ciclo comienza desde la última solución aceptada en vez de una solución generada<br />
aleatoriamente. Cada ciclo del algoritmo consiste en aplicar una "gran perturbación" a la<br />
solución obtenida en el ciclo anterior para "saltar" a otra región del espacio de<br />
búsqueda. El resultado del salto se post-optimiza utilizando un algoritmo de búsqueda<br />
local y esa nueva solución se compara con la que dio inicio al ciclo, aceptándose con un<br />
cierto criterio.<br />
Si el criterio con que se acepta esta nueva solución es hill climbing se habla<br />
de un método de optimización local de paso largo. Por otra parte si es simulated<br />
annealing se habla de un método de paso largo markoviano (large-step Markov<br />
chain). Y si el criterio puede aceptar cualquier solución, entonces se habla de una<br />
caminata al azar con paso largo (large-step random waik).<br />
El método de optimización local con paso largo puede verse como un<br />
muestreo sobre los óptimos locales del problema puesto que la perturbación cambiar la<br />
lo
egión del espacio de búsqueda en la cual el algoritmo se encuentra, mientras que el<br />
proceso de post-optimización busca el óptimo local de dicha región. Así, el algoritmo va<br />
visitando los óptimos de cada región hasta encontrar el óptimo global del problema.<br />
f) Tabusearch<br />
Otra estrategia es la conocida como tabu search [Glover 90b, Morton 93,<br />
Reeves 93, Battiti 94, Glover 951. El algoritmo básico se muestra en la figura 1 .5a que<br />
es una extensión que agrega estructuras de memoria al algoritmo básico de búsqueda<br />
local que se muestra en la figura 1 .5a.<br />
a) procedure Tabu_Search(x) - -<br />
begin<br />
x° :=x':=xe S<br />
Tø<br />
k : O<br />
repeal<br />
T:T-((pz)€ Ti
dependiendo del estado de la búsqueda 1 . Siempre se acepta la mejor movida obtenida de<br />
la vecindad.<br />
El problema de los óptimos locales se enfrenta a través de la utilización de<br />
una memoria en donde se almacena el cambio inverso al efectuado, en cada iteración,<br />
de forma de evitar volver a una solución ya visitada anteriormente. Dicha memoria se<br />
conoce como lista tabú y corresponde a T en el algoritmo de la figura 1 .5a. El método<br />
excluye de la lista de candidatos a aquellas movidas que pertenezcan a la lista tabú (ver<br />
figura 1 .5b). Dichos cambios no se prohiben para siempre, sino que dicha prohibición se<br />
limita a un cierto número de iteraciones (el cual se denomina largo de la lista tabú) o<br />
también se levanta si se cumple cierto criterio de aspiración.<br />
El criterio de aspiración de una movida es el umbral sobre el cual la<br />
movida deja estar prohibida, el cual puede estar en base a la función objetivo. Por<br />
ejemplo, el valor de la función objetivo hace que la movida deje de estar tabú si ésta<br />
produce un aumento en la función objetivo superior al del estado en que esa movida se<br />
prohibió.<br />
El método depende de que cada movida tenga un cambio inverso o se pueda<br />
descomponer en cambios más sencillos que si los tengan. Eso no siempre puede<br />
lograrse. La solución a este problema es que en vez de almacenar movidas en la lista<br />
tabú, lo que se almacena son soluciones ya visitadas. Como dicho enfoque puede tener<br />
un costo prohibitivo en cuanto a la utilización de recursos computacionales, se utilizan<br />
técnicas de hashing, con la cual se le asocia un número real (valor de hash) a una<br />
solución y dos de ellas se consideran iguales si es que poseen el mismo valor de hash<br />
[Woodruff 931.<br />
1 Ver definición 3.14.<br />
12
Como se mencionó al comienzo de la sección 1.1, la estrategia de control<br />
debe administrar el esfuerzo computacional del algoritmo evitando la búsqueda<br />
exhaustiva Esto defme un balance entre intensificar la búsqueda aquellas regiones más<br />
promisorias del espacio y diversificada de forma de visitar regiones no exploradas.<br />
Tabu Search propone formas de enfrentar este problema.<br />
En [Glover 90b] se define como estrategias de diversificación a aquellas<br />
que consisten en evitar introducir cambios en variables de la solución sobre las cuales se<br />
realizaron muchos cambios durante la búsqueda y guiarla sobre regiones inexploradas<br />
procurando realizar cambios sobre otras variables. Las estrategias de intensificación,<br />
por otro lado, reconocen que las variables de la solución que han sido manipuladas más<br />
por el sistema son en alguna medida "críticas" y sería importante concentrarse en lograr<br />
valores adecuados para ellas. También en [Glover 90b] se define también el concepto de<br />
oscilación estratégica, que consiste en inducir la exploración de nuevas regiones a<br />
través de cruzar o alejarse de ciertas fronteras que normalmente circunscriben el<br />
progreso del método. Dichas fronteras pueden representar aquellas de factibilidad e<br />
infactibilidad de la solución o de valores de la función objetivo alrededor de la cual la<br />
búsqueda tiende a rondar. La oscilación estratégica consiste, entonces, en el uso de<br />
restricciones direccionales y reglas de decisión (o penalidades) que son modificadas<br />
relativas a desviaciones de fronteras.<br />
La oscilación estratégica pretende solucionar un problema que ha mostrado<br />
tener el tabu search y que es la ocurrencia de ciclos. Un ciclo se produce cuando se<br />
vuelve a una solución ya antes visitada, como se muestra en la figura 1 .6a, en la cual n<br />
corresponde al largo del ciclo y corresponde al número de iteraciones después de las<br />
cuales una solución antes visitada vuelve a ser encontrada.<br />
13
a)<br />
Inicio del ciclo<br />
b)<br />
la =a a<br />
Figura 1.6 : Aparición de ciclos durante el proceso de búsqueda.<br />
El método de eliminación de inversos [Glover 90a, Dammeyer 91,<br />
Dammeyer 931 evita este problema eliminando de la lista tabú aquellos cambios que<br />
sean inversos entre sí, lo que reduce el número de elementos de ella como se muestra en<br />
la figura 1 .6b. Sin embargo, en [Battiti 941 se demuestra que dicho método no es<br />
suficiente y que los óptimos locales se comportan como atractores sobre los cuales la<br />
búsqueda queda atrapada. Cuando eso sucede propone que comience una fase de<br />
perturbación aleatoria hasta salir de dicha región.<br />
g) Genetic algorithms<br />
El enfoque genético [Goldberg 89, Reeves 93, Bean 94, Anderson 961.<br />
plantea que el proceso de búsqueda puede enfocarse como un proceso evolutivo. En<br />
dicho proceso existe un conjunto de soluciones la que se denomina población. Es decir,<br />
el algoritmo en vez de iterar con una solución como los demás algoritmos de búsqueda<br />
local, lo hace con un conjunto de ellas. El vector solución que corresponde a la<br />
codificación de la solución corresponde a un cromosoma, una variable específica dentro<br />
del vector se conoce como gen y al valor asignado a dicha variable se le denomina<br />
alelo.<br />
Los operadores de la búsqueda genética se distinguen del resto de los<br />
algoritmos de búsqueda local porque combinan soluciones entre sí para formar nuevas<br />
14
seleccionando genes e intercambiando alelos entre soluciones (operación conocida<br />
como crossover). Otros operadores perturban aleatoriamente la solución introduciendo<br />
cambios a los cromosomas (mutación). Aplicando las operaciones antes mencionadas se<br />
generan descendientes que se incorporan al conjunto original. De la nueva población<br />
sólo sobreviven las mejores soluciones, que se convierten en la siguiente generación<br />
sobre la cual se repite el método. La bondad de una solución se mide a través de una<br />
función de adaptación (fitness) que normalmente corresponde a la función objetivo.<br />
1.1.2 Búsqueda global<br />
Los algoritmos de búsqueda global se caracterizan, además de los tipos de<br />
estados que visitan por la estrategia de control que utilizan. En el grafo de soluciones<br />
incompletas, los operadores sólo instancian variables que no pertenecen al conjunto<br />
actual de variables asignadas. Por lo tanto, el grafo toma la forma de un árbol de<br />
búsqueda, como se muestra en la figura 1.7.<br />
Nivel<br />
(Número de vanables<br />
asignadas) (7") El número de hijos es la<br />
-<br />
cardinalidad del dominio de la<br />
" vanele que se asignara en el<br />
Figura 1.7 : Árbol de búsqueda.<br />
El nivel de un estado dentro de un árbol define tanto el número como qué<br />
variables han sido asignadas. En la terminología de árboles [Cormen 901 un estado se<br />
denomina nodo. Debido a la similitud de la representación con un árbol genealógico, los<br />
sucesores directos de un nodo se llaman hijos y los hijos de un mismo nodo se<br />
15
denominan hermanos. Si un hijo a su vez tiene descendientes constituye un subárbol,<br />
en caso contrario a dicho nodo se le denomina hoja. Por lo tanto, en un árbol de<br />
búsqueda las hojas son estados completos pertenecientes al espacio de la heurística y la<br />
raíz del árbol corresponde al estado de nivel 0, es decir, aquel estado donde no ha sido<br />
asignada ninguna variable.<br />
Los dos algoritmos principales 2 para recorrer árboles son los algoritmos de<br />
la figura 1.8. El primero de ellos (figura 1 .8a) se conoce como de búsqueda en anchura<br />
(breadthfirst search) y el segundo de ellos como búsqueda en profundidad (depthfirst<br />
search) [Cormen 90].<br />
a) procedure BFS(raíz, 2)<br />
begin<br />
Q:ø<br />
lnserter(raíz,Q)<br />
while (not Vacío(Q))<br />
u := Extraer (Q)<br />
for (w E Hijo (u))<br />
lnsertar(w, Q)<br />
end while<br />
end BFS<br />
b) procedure DFS(raíz, 1)<br />
begin<br />
dfs(raíz)<br />
endDFS<br />
procedure dfs(v)<br />
begin<br />
for (w E Hjo(v))<br />
dfs(w)<br />
enddfs<br />
Figura 1.8 : Algoritmos de búsqueda en árboles.<br />
Si el nivel de un nodo y es k el procedimiento HU0(v) genera un estado de<br />
nivel k+l. En el algoritmo de la figura 1 .8a, Q es una estructura de datos denominada<br />
cola que posee dos operaciones : Insertar(w, Q) y Extraer(w, Q) que ingresan y sacan un<br />
2 Estos algoritmos corresponde a la forma general de recorrer grafos y un árbol es sólo<br />
un caso particular de un grafo.
nodo w de la cola Q, respectivamente en orden ElFO (First Iii First Out). El algoritmo<br />
de la figura 1 .8b es recursivo, sin embargo, existen implementaciones iterativas que son<br />
más eficientes 3 .<br />
La diferencia entre ambos algoritmos es el orden en el cual se visitan los<br />
nodos. Si seguimos la numeración de los nodos del árbol de la figura 1.7, el algoritmo<br />
de búsqueda en anchura los visita en el orden natural, mientras que el otro lo haría en el<br />
orden 1,2,4,5,3,6,7. Este último algoritmo se denomina en profundidad porque primero<br />
visita todo el subárbol de un nodo antes de visitar al correspondiente hermano. Como<br />
para visitar a este último debe "ascender" por el árbol "retrocediendo" en la trayectoria<br />
seguida hasta ese instante, este algoritmo se conoce también como de backrracking<br />
[Morton 931.<br />
Los algoritmos basados en representación de árbol se han utilizado en las<br />
áreas de Investigación Operativa e Inteligencia Artificial con distintos propósitos. A<br />
continuación describiremos algunos algoritmos en el contexto de estas dos áreas.<br />
a) Investigación operativa<br />
La naturaleza combinatorial de los problemas de planificación y la<br />
existencia de restricciones de precedencia entre tareas, capacidad de los dispositivos y<br />
condiciones de borde [Adler 93, Pinedo 95a] han posibilitado el desarrollo de técnicas<br />
de Investigación Operativa que abordan esta problemática. Cada una de ellas resulta<br />
apropiada para un cierto tipo de problemas [Pinedo 92, Nussbaum 93] y entre estas<br />
técnicas se destacan: Reglas de Despacho [Morton 93, Pinedo 95a], Branch and Bound<br />
[Morton 93, Pinedo 95a] y Beam Search [Morton 93, Pinedo 95a]. Una categonzación<br />
Dichas implementaciones iterativas utilizan en vez de una cola, un stack que procesa<br />
los nodos en orden LIFO (Las: In First Out).<br />
17
de las heurísticas desarrolladas en el ámbito de la Investigación Operativa se encuentra<br />
en {Zanakis 89].<br />
Las reglas de despacho son heurísticas que permiten ordenar cada nivel del<br />
árbol de búsqueda a través de indices que otorgan al nodo una prioridad para la<br />
asignación. El algoritmo elige en cada nivel el nodo que tenga más alta prioridad, lo<br />
cual equivale a que el procedimiento Hzjo(v) en el algoritmo dfs de la figura 1 .8b sólo<br />
retorne aquel estado sucesor del siguiente nivel con la más alta prioridad defmida por el<br />
índice.<br />
El algoritmo de Branch and Bound como su nombre lo indica, ramiflca el<br />
árbol de búsqueda de manera inteligente. Para ello, utiliza una estimación de la cota<br />
inferior (lower bound) de la función objetivo en el nodo que está siendo analizado.<br />
Gracias a esta estimación, el algoritmo visita ordenadamente de menor a mayor los<br />
nodos según el valor de dicha estimación. Además el algoritmo establece un criterio de<br />
poda que evita visitar el subárbol de ciertos nodos. Esos criterios pueden ser los<br />
denominados resultados de dominio o criterios de eliminación [Morton 93, Pinedo<br />
95a], que son ciertas propiedades matemáticas que caracterizan a la solución óptima y<br />
que ayudan a eliminar aquellas que no lo son.<br />
La versión BFS del algoritmo de branch and bound se muestra en la figura<br />
1 .9a. La cola Q está priorizada, lo cual quiere decir que la función Min(Q) retorna el<br />
nodo con el menor valor de prioridad, que en este caso es el valor de la cota inferior del<br />
nodo. Si dos o más nodos poseen la misma prioridad se establece una regla de<br />
desempate. Por otra parte si el criterio de poda de un nodo se cumple dicho nodo no se<br />
ingresa en la cola. En la versión DES, por otra parte la invocación recursiva es ordenada<br />
por la prioridad de los hijos del nodo, estableciendo también cual se invoca primero en<br />
con una regla de desempate en caso necesario. Nuevamente no se invoca recursivamente<br />
el procedimiento si es que el criterio de poda se cumple. En ambos algoritmos se<br />
18
denomina subproblemas activos a aquellos nodos que no han sido podados ni sus<br />
sucesores generados (que en la versión BES del algoritmo corresponden al conjunto Q)<br />
a) procedure Branch&Bound(raíz, 7)<br />
begin<br />
Q:0<br />
Q Q u (raíz)<br />
while (x',---ø)<br />
u :Min(Q)<br />
Q:Q-{u}<br />
f(nivel(u) = n) then x *:= u<br />
else<br />
for (w E Hjo(u))<br />
begin<br />
l:Cota_lnferior(w)<br />
if (criterio_poda(w, 1)) then<br />
Q:=Qu{(w,1)}<br />
end<br />
end while<br />
end Branch&Bound<br />
b) procedure Beam_Search(raiz, 1)<br />
begin<br />
:= ø<br />
: Q' L) {raíz}<br />
k O<br />
while (k # n)<br />
Q2: 0<br />
for (u E Q'))<br />
for (y E 1-4jo (u))<br />
a := evaluación_heurística (y)<br />
Q2 := Q2 u {(v,a)}<br />
Q2 := Minb(Q2)<br />
for (w E Q2))<br />
jf (criterio_poda(w)) then<br />
: Q, u {w}<br />
k k+ 1<br />
end while<br />
end BeamSearch<br />
Figura 1.9 : Algoritmos de branch and bound y beam search.<br />
Los algoritmos de Beam Search (figura 1 .9b) evalúan una rama<br />
heurísticamente con lo cual estiman el valor de la mejor hoja que cuelga de ese nodo. La<br />
estimación se realiza asignando el resto de las variables del estado por medio de, por<br />
ejemplo, una regla de despacho. La evaluación se aplica sobre los hijos de un conjunto<br />
de nodos del mismo nivel, de los cuales se eligen los b mejores. En el algoritmo de la<br />
figura 1 .9b, el procedimiento Minb(Q) retorna los b mejores valores del conjunto Q. Este<br />
proceso puede realizarse también en dos pasos : en el primero de ellos se escogen los k<br />
mejores nodos (con k> b) evaluados con una heurística h 1 . En el siguiente paso, los k<br />
19
nodos se evalúan con una heurística h2 de los cuales se escogen los b mejores. Las<br />
heurísticas h1 y h2 se diferencian por la precisión y tiempo de cómputo involucrado,<br />
siendo h1 más "barata" que h2. Al número de nodos k escogidos en la primera etapa se le<br />
conoce como flhter width mientras que al número b se conoce como beam width.<br />
Luego el algoritmo genera el siguiente nivel de los b nodos escogidos<br />
anteriormente, sobre los cuales se repite el proceso hasta que se alcance el nivel máximo<br />
de profundidad del árbol. Lo anterior diferencia a los algoritmos de branch and bound<br />
de los de beam search, porque mientras los primeros saltan por distintos nodos del árbol<br />
de búsqueda cambiando incluso de nivel, los segundos siempre descienden por el árbol<br />
sin ningún tipo de backiracking, como puede verse gráficamente en el esquema de la<br />
figura 1.10, en la cual el árbol de la izquierda muestra el recorrido de un algoritmo de<br />
branch and bound, mientras que el de la derecha el de uno de beam search con beam<br />
width de 2.<br />
1111•NI<br />
Figura 1.10 Branch and bound versus beam search<br />
b) Inteligencia artificial<br />
En Inteligencia Artificial se ha desarrollado una amplia investigación en los<br />
denominados problemas de satisfacción de restricciones (Constraint-Satisfaction<br />
Problems, más conocidos como CSP) Kumar 92, Raghunathan 92]. Un problema de<br />
20
satisfacción de restricciones consiste en un conjunto de variables { xj, X2,..., x}, un<br />
conjunto de dominios {dj,d2,..., d} para dichas variables y un conjunto de restricciones<br />
entre la variables [Kumar 921. El objetivo del problema consiste en asignar para cada<br />
variable un valor de su dominio de forma de que todas las restricciones se satisfagan. En<br />
CSP, los problemas se representan por medio de un grafo, donde los nodos representan<br />
las variables y los arcos representan restricciones entre los arcos. Los problemas de<br />
scheduling pueden ser vistos como casos especiales de CSP [Kumar 921. Es interesante<br />
destacar, por lo tanto, la similitud de los enfoques que se utilizan tanto en esta área<br />
como en la de Investigación Operativa.<br />
La principal técnica de resolución de CSP es el backrracking (ver figura<br />
1 .8b), sin embargo, dicho método en la mayoría de los casos tiene un costo prohibitivo<br />
por su ineficiencia , puesto que se visita en forma exhaustiva el espacio de búsqueda<br />
[Sosic 94]. Diversas técnicas se han introducido para mejorar dicha búsqueda [Kumar<br />
92], entre las cuales se incluyen propagación de restricciones, mantenimiento de<br />
consistencia (o backtracking inteligente) y ordenamiento de variables.<br />
El ordenamiento de variables considera tanto heurísticas de ordenamiento<br />
que escogen en qué orden asignar las variables y cómo priorizar los valores que cada<br />
variable puede tomar lo cual ha demostrado un sustancial impacto en la reducción de la<br />
complejidad de la búsqueda usando backtracking [Kumar 92]. Basta recordar del<br />
comienzo de esta sección, que un nivel queda definido tanto por el número de variables<br />
como por cuáles variables están asignadas. Por lo tanto, si el problema tiene n variables<br />
existen nl maneras de definir un árbol de búsqueda y a lo más dix d2 x . . .x d nodos<br />
dentro del árbol. El ordenamiento de variables genera el siguiente nivel dentro del árbol<br />
de búsqueda aprovechando la estructura del problema de forma de disminuir el tamaño<br />
del espacio de búsqueda. Algunas de estas heurísticas son : instanciar primero las<br />
variables cuyo dominio se haya reducido por la propagación de restricciones, instanciar<br />
21
aquellas que participan en el mayor número de restricciones o instanciar aquellas<br />
variables que transforman el grafo que representa el problema en un árbol.<br />
1.2 El Problema<br />
Como ya se estableció al comienzo de este capítulo, el primer paso para<br />
tratar de mejorar los procesos que ocurren en la empresa de hoy es el de entender la<br />
realidad para plasmarla en un modelo. Lo anterior significa llevar un acabo un proceso<br />
de abstracción, ojalá de forma sistemática.<br />
Existe una metodología para enfrentar la modelación de problemas de<br />
optimización [Murphy 891. Dicha metodología fue definida en un principio para<br />
problemas de programación lineal, pero también puede extenderse a problemas<br />
combinatoriales [Ghidini 93, Levys 93]. Dicho proceso puede enfrentarse con la ayuda<br />
de un lenguaje declarativo y gráfico que abstraiga del lenguaje particular en que se desea<br />
modelar el problema [Singer 92, Levys 93, Dombrovskaia 95]. En el caso de la<br />
programación lineal, esto es posible dado que existe una gran cantidad de lenguajes para<br />
modelar dichos problemas de optimización como por ejemplo gLPS [Collaud 94] y<br />
AMPL [Fourer 931.<br />
En el ámbito del desarrollo de heurísticas, por otra parte, no existen<br />
lenguajes que permitan realizar esto. Un esfuerzo por automatizar programas para un<br />
problema particular se da en [Smith 931. También, para el caso de los problemas de<br />
transporte se han desarrollado intentos para producir programas a partir de<br />
especificaciones [Smith 90], pero no como una metodología general para los problemas<br />
combinatoriales. En [Solotorevsky 94] se describe un lenguaje que permite modelar<br />
problemas de asignación de recursos y también resolverlos, aunque los mismos autores<br />
señalan que el lenguaje especifica un modelo que debe ser resuelto y, por ejemplo, dos<br />
motores pueden resolver esa misma especificación de manera distinta. En [Pinedo 931 se<br />
describe un ambiente para la generación de heurísticas, específicamente orientado a<br />
22
úsqueda global y a problemas de scheduling, pero no existe una conceptualización del<br />
proceso de desarrollo de heurísticas.<br />
Por lo tanto, el desarrollo de heurísticas se ve dificultado porque no existen<br />
herramientas que apoyen el proceso de resolución.<br />
1.3 Discusión<br />
Sin embargo, como se mostró durante todo el subcapítulo 1.1, existen<br />
heurísticas genéricas para problemas combinatoriales. En ese mismo subcapítulo se<br />
mostró como el concepto de espacio de búsqueda de la heurística permite describir<br />
los principales algoritmos para enfrentar problemas combinatoriales bajo un mismo<br />
enfoque.<br />
Gracias a que las heurísticas han sido puestas bajo el mismo enfoque, se<br />
puede llevar a cabo un proceso de abstracción, similar al que existe para la modelación<br />
para desarrollar heurísticas para problemas combinatoriales. Llevar a cabo ese proceso<br />
de abstracción permitiría generar una metodología para enfrentar el proceso de<br />
resolución de problemas de optimización combinatorial, lo cual quiere decir que la<br />
definición del espacio de búsqueda de la heurística a partir del modelo del problema es<br />
muy importante, porque sobre ella se pueden utilizar las estrategias generales<br />
anteriormente expuestas.<br />
Una vez que se cuente con una metodología que guíe el proceso de<br />
resolución, se podrá construir un lenguaje que la apoye haciendo uso de técnicas de<br />
resolución como las antes descritas. Dicho lenguaje debiera también ayudar a<br />
conceptualizar y formalizar el conocimiento que los diseñadores tienen de la resolución<br />
de los problemas. Al estar formalizado, dicho conocimiento se puede encapsular y<br />
estaría disponible en forma de subrutinas que ese mismo diseñador (u otros) puede(n)<br />
reutilizar. Si bien las heurísticas descritas por el usuario pueden conducir a puntos de no<br />
23
mejora [Glover 891, el conocimiento que el usuario logre interactuando con su<br />
problema, le permitirá escribir heurísticas cada vez mejores (utilizando cabalmente las<br />
herramientas provistas) evitando dicho inconveniente.<br />
Los resultados de aplicación de metaheurísticas de búsqueda local señalan el<br />
éxito de una implementación particular, sin embargo, el concepto de búsqueda se<br />
mantiene sin mayores modificaciones [Glover 95]. Dada esta gran sistematicidad, la<br />
búsqueda local es el gran candidato sobre el cual desarrollar una metodología de<br />
desarrollo de heurísticas (que sin embargo, debiera ser extensible a las heurísticas de<br />
búsqueda global) y un esquema bastante promisorio para el cual construir una<br />
herramienta que la apoye. Además la búsqueda local puede considerarse como un<br />
procedimiento de post-optimización de soluciones producidas con otros algoritmos<br />
[Hoon Lee 93, Gendreu 92, Pinedo 95b].<br />
Las ventajas de la búsqueda local son que asigna todas las variables en el<br />
espacio con lo cual se reduce el crecimiento exponencial de éste [Gu 941, problema que<br />
si tiene el backtracking [Sosic 941. También que busca mejorar dentro la vecindad<br />
probando mejoras. Lo anterior hace lo relativamente eficiente y con un número<br />
polinomial de entradas. Sin embargo, la principal desventaja es que el método puede<br />
caer en óptimos locales, pero como ya se vio eso puede ser subsanado. Dicha técnica<br />
también se ha extendido al ámbito de los problemas de satisfacción de restricciones<br />
[Sosic 941.<br />
1.4 Hipótesis de Trabajo<br />
Gracias a que se defmió en este capítulo una forma de describir dichas<br />
técnicas, es posible definir una metodología de desarrollo de heurísticas. Sobre ella se<br />
podrá diseñar e implementar un sistema que permita formalizar un tipo de búsqueda a<br />
través de una especificación declarativa, es decir, crear un lenguaje que otorgue<br />
herramientas que permitan al diseñador definir cómo realizar la búsqueda, y producir un<br />
24
programa computacional a partir de dicha especificación para la resolución de<br />
problemas combinatoriales.<br />
La búsqueda local es un enfoque bastante poderoso para enfrentar los<br />
problemas NP-hard. Ha demostrado ser una metaestrategia exitosa y además tiene la<br />
ventaja de permitir incorporar conocimiento estructural {Anderson 961. Por lo tanto, la<br />
herramienta propuesta será diseñada para apoyar para el desarrollo de heurísticas de<br />
búsqueda local.<br />
Por lo tanto, dado lo que ha señalado anteriormente, esta tesis pretende<br />
formalizar una metodología de desarrollo de heurísticas para problemas del tipo<br />
combinatorial y apoyarla a través de una herramienta que haga uso de un lenguaje<br />
declarativo. Dicha herramienta posibilitará la formalización del conocimiento de<br />
resolución a través de un lenguaje de búsqueda y a la vez, su encapsulación de forma<br />
que esté a disposición de otros diseñadores, en forma de reutilización del código de un<br />
programa computacional.<br />
Se ejemplificará el uso de la metodología y cómo la herramienta definida la<br />
apoya a través del desarrollo de una heurística para dos problemas específicos. El primer<br />
problema es una aplicación teórica como es el caso del job-shop scheduling y el<br />
segundo es una aplicación práctica que corresponde a un problema de la industria<br />
forestal chilena [Schilkrut 93, Schróder 96]. Para otorgar mayor flexibilidad a la<br />
herramienta, ésta debe permitir la interconexión con la estructura de datos que<br />
representará el problema la cual cambia dependiendo del mismo, en vez de mantener<br />
una representación genérica como las herramientas de apoyo a la modelación<br />
desarrolladas en [Singer 92, Ghidini 93, Melero 941. Bajo una arquitectura como la<br />
descrita, el lenguaje deberá ser compatible además con el ambiente de desarrollo de<br />
algoritmos propuesto en [Pinedo 93].<br />
25
Esta tesis esta estructurada como sigue. En el capítulo N°2 se propondrá una<br />
metodología para el desarrollo de heurísticas mientras que en el capítulo N°3 se<br />
discutirá el diseño de la herramienta de apoyo. En el capítulo N°4 se discutirá la<br />
implementación de la herramienta y en el capítulo N°5 se desarrollarán heurísticas para<br />
los problemas antes mencionados, finalizando con las conclusiones y el trabajo futuro<br />
en los dos últimos capítulos.<br />
26
II. EL PROCESO DE MODELACIÓN Y RESOLUCIÓN DE UN<br />
PROBLEMA DE OPTIMIZACIÓN COMBINATORIAL<br />
2.1 El proceso de Modelación.<br />
El proceso de modelación de un problema de optimización tiene como<br />
objetivo lograr describir aquella parte del mundo, que es de interés estudiar o trabajar<br />
con ella. La modelación es un proceso de abstracción, ya que consiste en examinar<br />
selectivamente ciertos aspectos de la realidad. El resultado de este proceso es un modelo<br />
que define en forma declarativa, qué se entiende por una solución al problema de<br />
optimización que se plantea y cómo se comparan dichas soluciones entre sí, tal como se<br />
explicó en la sección 1.1.<br />
Como se mencionó en el capítulo N°1, existe una metodología para<br />
enfrentar el proceso de modelación, la que consiste en seguir una serie de pasos (figura<br />
2.1) los cuales describiremos a través de un ejemplo. En adelante en esta tesis se<br />
utilizará la flotación para problemas de scheduling propuesta en [Lawler 931<br />
Entendimiento del J Construcción del _________ Generación de<br />
Problema Modelo Datos<br />
1 __<br />
.1<br />
Componentes del<br />
Definición del<br />
Instancia del<br />
Modelo Problema Problema<br />
Figura 2.1 Etapas en el proceso de modelación<br />
27
2.1.1 Entendimiento del problema<br />
El entendimiento del problema consiste en identificar los componentes<br />
del modelo, es decir, reconocer todos los procesos relevantes, restricciones y objetivos<br />
que defmen el problema. Los componentes del modelo no requieren de una<br />
especificación formal para ser descritos y toda la primera etapa del proceso de<br />
modelación (generalmente la más complicada) consiste en su identificación.<br />
Ejemplo 2.1: Job Shop schedulingproblem (JSSP): JmIIC<br />
Un problema de Job Shop consiste en un conjunto de máquinas y un<br />
conjunto de trabajos. Cada trabajo consiste en una secuencia fija de operaciones, que<br />
debe ser ejecutada en orden preestablecido. Cada operación se lleva a cabo en una<br />
máquina determinada, la cual sólo puede procesar una operación a la vez. Cada<br />
operación toma una cantidad preestablecida de tiempo en realizarse (tiempo de<br />
proceso) y sólo puede comenzar cuando la precedente, en la cadena de operaciones<br />
del trabajo, haya terminado. El proceso de la operación en cada máquina no puede<br />
interrumpirse. Se debe establecer cuál es el secuenciamiento de las operaciones en<br />
cada máquina de forma de minimizar el tiempo que toma en operar el sistema, es<br />
decir, el tiempo en el cual el último trabajo termina de procesarse (makespan) U.<br />
Como podemos observar del ejemplo anterior, los trabajos, operaciones y<br />
máquinas definen los componentes o entidades básicas del modelo [Dombrovskaia 951.<br />
Dichas entidades poseen atributos ya que por ejemplo, los trabajos poseen una secuencia<br />
de operaciones y cada operación tiene asociada una duración y una máquina en la cual<br />
debe realizarse. Además se defme la interrelación entre los distintos componentes y la<br />
función objetivo, es decir, cuanto es el tiempo de operación del sistema dada una<br />
solución del problema.<br />
28
2.1.2 Construcción del modelo.<br />
La segunda etapa de la modelación es la construcción del modelo en la cual<br />
todo lo anterior se formaliza en un lenguaje específico, con lo cual el problema genérico<br />
queda defmido. La formalización en cuestión permite describir todos los problemas de<br />
este tipo incluyendo aquel que se quiere representar para posteriormente resolver.<br />
Ejemplo 2.2: Modelo matemático de JmPIC,,, [Adams 88, Pinedo 95a]<br />
s. a<br />
min Cm<br />
y,1 ~t p,1 V(i,j) -<br />
-<br />
(k,j) E A (2.1)<br />
Cmaxy,j~:P,j V(i,j) E 0 (2.2)<br />
Y ,jY ,1 2~PiIV Y'l,jkPy V (i,l), (i,j) e E,, Vi EM (2.3)<br />
y, -¿ 1 0 V(ij) E 0 (2.4)<br />
Donde Cm es el makespan, J = {1, .... n} es el conjunto de trabajos, M =<br />
(1.....m} es el conjunto de máquinas y O = {1, .... N} es el conjunto de operaciones (ij),<br />
donde ¡ pertenece a Myj a J. A es el conjunto de pares de operaciones restringidas por<br />
las relaciones de precedencia de las operaciones en cada trabajo y E,, el conjunto de<br />
pares de operaciones que se programan en la máquina i, que no pueden programarse al<br />
mismo tiempo. Finalmente, p,j es el tiempo de proceso fijo de la operación (ij) e y,1 el<br />
tiempo en que comienza dicha operación U<br />
En el ejemplo anterior, se representó el problema de job shop sin tener que<br />
especificar el número de máquinas, las secuencia de operaciones o los tiempos de<br />
procesamiento de los trabajos, con lo cual se describen todos los problemas del mismo<br />
tipo. Como se puede ver también, la ecuación 2.1 no es más que la formalización de que<br />
29
la relación de precedencia entre las operaciones de cada trabajo, la ecuación 2.2 defme<br />
que el makespan es el mayor tiempo de procesamiento y la ecuación 2.3 establece que<br />
entre dos operaciones programadas en una misma máquina, una precede a la otra.<br />
Entonces, un secuenciamiento de operaciones que no cumple estas restricciones no es<br />
una solución factible para un problema de job shop.<br />
2.1.3 Generación de datos.<br />
La última etapa del proceso de modelación corresponde a la generación de<br />
datos en la cual se instancia el problema genérico que hasta ahora ha sido modelado en<br />
el problema particular que se necesita representar. Con esta etapa fmaliza la defmición<br />
del espacio de búsqueda del problema de optimización que se modeló.<br />
Ejemplo 2.3 Instancia de un problema de Job Shop : J4IICmax con 3 trabajos y 4<br />
máquinas [Pinedo 95a]<br />
Tabla 2.1 Instancia de J4IICmax<br />
Trabajo Secuencia de operaciones Tiempos de procesamiento<br />
1 1,2,3 P1]10,P2I8,P3I4<br />
2 2,1,4,2 P22 8, P12 3 , P42 5 , P32 6<br />
3 1,2,4 P13 4, P23 7, P433<br />
2.2 El Proceso de Resolución<br />
El proceso de modelación anteriormente descrito, puede verse como un<br />
proceso de instanciación (ver figura 2.2) a la usanza de la modelación orientada al<br />
objeto [Rumbaugh 91, Collins 951. En la etapa de construcción del modelo se escoge un<br />
lenguaje en el cual describir el modelo. Una vez escogido, existe un conjunto de<br />
modelaciones alternativas que representan el mismo problema y la construcción del<br />
Lii
modelo fmaliza cuando se escoge una, la cual defme el problema. Por último, la etapa<br />
de generación de datos corresponde a identificar una instancia particular dentro del<br />
conjunto de problemas definidos por el problema genérico.<br />
:4<br />
y<br />
Conjunto de fcrmuIscones Initincli cje se<br />
pwa el poblsins deles modst<br />
(.tntácttcamente<br />
dlfer.n:)<br />
Cømpcn.nteSd e<br />
EsCOg& eenguie donde<br />
00<br />
':<br />
0:0<br />
0<br />
0000<br />
00<br />
00 0<br />
Es10<br />
EnndrHnto<br />
dsProbtsms GIOIIScj6ndSDOS<br />
Conutrucctdn del Modso<br />
Figura 2.2 El proceso de modelación como un proceso de instanciación.<br />
El modelo de un problema describe el espacio de soluciones factibles. Sin<br />
embargo, la descripción que entrega el modelo por sí sola no dice cómo encontrar la<br />
solución óptima del problema, es decir, cómo resolverlo. Por lo tanto, es necesario<br />
establecer una manera de buscar una buena solución para el problema a través de una<br />
heurística.<br />
Los diseñadores humanos, cuando encaran un problema dificil, a menudo<br />
proceden asociando e integrando características que ellos perciben como relacionadas al<br />
proceso de resolución. Sin embargo, la gente a menudo prefiere organizar tanto los datos<br />
del problema como los métodos para resolverlo en una manera jerárquica. Cuando es<br />
posible, descomponen el problema en subproblemas y resuelven esos. Cuando no lo es,<br />
entonces una estrategia común es formar grupos de atributos de la solución tal que el<br />
espacio de búsqueda puede ser reducido y un nivel más alto de interrelaciones puede ser<br />
descubierto y explotado [Woodruff 941. Lo anterior motiva las siguientes defmiciones.<br />
31
Defmición 2.1: Cluster.<br />
Sea L{ 1 ..... d} el conjunto de índices de los dominios involucrados en el<br />
problema, F subconjunto de L y DF el producto cartesiano de los dominios de las<br />
variables cuyos índices pertenecen a F. Sea ço(w,y) la condición que define a un<br />
subconjunto Q de DF y R(F,w,y) una función que asocia a cada elemento de Q, un<br />
elemento de G. Por último, sea y un estado perteneciente al espacio de búsqueda de la<br />
heurística Xj,. Si g = { G1.....G} define una cierta partición de dominio G, tal que:<br />
a) GnG3 =ø, Vi:#j, coniJ E {1,...,p}<br />
b) G1uG2u ... uG=G<br />
Entonces, se define como cluster a la tupla e(y)=(F,R,G,g,) que<br />
corresponde al conjunto de elementos de DF que pertenecen a Q. Al conjunto F, se le<br />
denomina atributos de la solución. A la tupla B(y) =(F, ço) que define los atributos con la<br />
cual se caracteriza el estado se denomina componente de la resolución U.<br />
El concepto de cluster permite definir un conjunto de atributos de la<br />
solución a través del conjunto de índices F. Dicho conjunto agrupa componentes del<br />
modelo del problema defmiendo un vector. Nótese además que el dominio G no tiene<br />
porqué ser acotado o unidimensional.<br />
Definición 2.2 : Subcluster.<br />
Utilizando los conceptos que ya se introdujeron en la definición 2.1,<br />
entenderemos como subclusters de e)=(F,R,G,g, (p) a los conjuntos e(yj)={ W E Q<br />
R(F,w,y) E G1 } conf e { 1,.. .,p} y Q(w,y)= { w e DF<br />
(w,y,)} U.<br />
Los vectores que pertenecen al cluster se agrupan en categorías gracias a la<br />
partición g, del recorrido de la función R. Dichas categorías permiten establecer una<br />
clasificación adicional de los elementos del cluster, cada una de las cuales corresponde a<br />
32
un subcluster. La necesidad de establecer precedencia tanto entre subclusters y los<br />
elementos que pertenecen a dichos subconj untos motiva las siguientes defmiciones.<br />
Defmición 2.3 : Regla de precedencia de un cluster.<br />
Se llama regla de precedencia de un cluster a H(e,y), con e(y)=<br />
(F,R,G,g, (p) a aquella heurística que permite construir un grafo de precedencia entre los<br />
subclusters e(yi) conf c= { 1, ..<br />
Definición 2.4 : Regla de prioridad de un subcluster.<br />
Se llama regla de prioridad a h(yj), con e(y)= (F,R,G,g,(P) a aquella<br />
heurística que asigna un orden entre los elementos que pertenecen a un subcluster (yj)<br />
dependiente del subcluster y del estado E.<br />
Las últimas dos defmiciones permiten comparar los grupos de elementos<br />
que los clusters definen y además diferenciarlos dentro del subcluster. Con ello se busca<br />
defmir, en base a las propiedades estructurales del problema, índices que permitan<br />
seleccionar eficazmente qué estados visitar en base a atributos de la solución que les<br />
otorgan ciertas propiedades con respecto a la búsqueda.<br />
Defmiremos proceso de resolución como el procedimiento cuyo objetivo es<br />
construir una heurística para el problema de optimización definido. Notar que dada la<br />
definición de heurística introducida en 1.1, el proceso involucra consideraciones de<br />
eficiencia y eficacia del método. El proceso de resolución (figura 2.3) puede enfrentarse<br />
en etapas, estableciendo una analogía con el proceso de modelación. Este proceso se<br />
realiza en base a un modelo previamente existente del problema.<br />
33
Conceptualizaclón : Definición de J Estrategia de<br />
de la búsqueda Operadores Control<br />
1<br />
Iheuristica<br />
.——r--.—--;—..—..—.-.<br />
Componentes de la Heurística genérica<br />
Resolución para el problema<br />
Figura 2.3 : Etapas del proceso de resolución<br />
Una heurística tiene asociada un espacio de búsqueda, operadores y una<br />
estrategia de control. Por lo cual, el proceso de resolución también puede verse como un<br />
proceso de instanciación en la cual se escoge en el espacio de las heurísticas, una entre<br />
aquellas que se pueden definir en base a los clusters. Ello implica defmir el grafo de<br />
búsqueda de la heurística y diseñar una estrategia de control. La estrategia de control<br />
define parámetros que hay que ajustar, lo cual corresponde a un proceso de búsqueda en<br />
el espacio de los parámetros. Dicho proceso se muestra en la figura 2.4.<br />
proceso de resolución.<br />
e- COnc.ptualeeción de la bi$queda<br />
Espacio de las heuristicas<br />
Espacio de los<br />
parlm.tsos<br />
DefInir componentes de le<br />
resolución y clusiers Instancia de la<br />
__, Definioión de<br />
G.nónca<br />
0<br />
Heurictica<br />
Figura 2.4 : El proceso de resolución como un proceso de instanciación.<br />
A continuación analizaremos más en detalle cada una de las etapas del<br />
34
2.2.1 Conceptualización de la búsqueda<br />
Para construir un algoritmo de búsqueda, el primer paso a seguir es el de<br />
defmir los atributos de la solución que caracterizarán los estados del espacio de<br />
búsqueda y en qué forma. A esa etapa la denominaremos conceptualización de la<br />
búsqueda, y corresponde a definición de los componentes de la resolución y a la<br />
especificación de los clusters.<br />
Ejemplo 2.4 : Componentes de resolución para JmIICm.<br />
Para el Job Shop las variables de decisión corresponden al secuenciamiento<br />
de las operaciones dentro de las máquinas y se han defmido como componentes de la<br />
resolución a distintos subconjuntos de operaciones. En [van Laarhoven 92] se define el<br />
concepto de operaciones críticas 4, que son aquellas operaciones que determinan el<br />
makespan y que también es utilizado en otros algoritmos [Taillard 94, Lourenço 95].<br />
Por otra parte, en [Dell'Amico 931 se define el concepto de operaciones adyacentes,<br />
que es cuando en dos operaciones críticas el término del procesamiento de la primera<br />
coincide con el inicio del procesamiento de la segunda. En ft4owicki 931 se define el<br />
concepto de bloque que es la máxima secuencia de operaciones criticas que son<br />
procesadas en la misma máquina. Por otro lado, [Adams 881 en su procedimiento de<br />
shfting bottleneck define el concepto de máquina crítica más conocida en la literatura<br />
como bottleneck J.<br />
Conceptualicemos a través de las definiciones ya introducidas los<br />
algoritmos propuestos en [Adams 88] y [van Laarhoven 921 para este problema. Para el<br />
En la representación de grafo disyuntivo del job shop [Roy 64] las operaciones críticas<br />
definen un camino desde el origen al nodo final cuyo largo determina el makespan. Dicho camino se<br />
conoce como camino crítico.<br />
35
problema del job shop los dominios relevantes del problema son los conjuntos J, My O<br />
(ver ejemplo 2.2) que defmen L, segin la defmición 2.1, como el conjunto {1,2,3}. Sea<br />
r, el instante en el cual la operación w comienza y d el instante en el cual dicha<br />
operación termina de acuerdo al estado factible y.<br />
Para [Adams 881 se defme un cluster con F=(3} que corresponde a O, el<br />
dominio de las operaciones. La condición q(w,y) retorna verdadero sólo si la operación<br />
w no ha sido asignada en el estado y, la función R(F,w,y) entrega la máquina en la cual<br />
la operación w es procesada y G corresponde a M, el conjunto de máquinas. La partición<br />
g corresponde a una máquina dentro de G, por lo que cada subcluster es el conjunto de<br />
operaciones que se procesan en una máquina dada. Si bien, este conjunto sólo restringe<br />
el dominio sobre el cual está definido a aquellas operaciones no asignadas, establece una<br />
regla de precedencia entre los subclusters. Dado que cada subcluster defme un problema<br />
de una máquina, la regla de precedencia H(e,y) corresponde a una heurística que asigna<br />
las operaciones tratándolo como un problema 11 rj 1 L,,, y utiliza el valor final de la<br />
función objetivo como prioridad para el subcluster. Como cada subcluster representa<br />
una máquina, la regla de precedencia entrega una medida de cuán crítica es la máquina y<br />
sobre todo cual de ellas debiera escogerse primero para asignarse.<br />
En cambio, para [van Laarhoven 921 se define un cluster con el mismo<br />
conjunto F, G y R(F,w,y) que en [Adams 88], pero con Q(w,y) = { w c= O 1 r + Pw d<br />
O). Dicho cluster defme el conjunto de operaciones críticas. La partición g corresponde<br />
a cada máquina por lo que un subcluster corresponde a las operaciones críticas que se<br />
procesan en una máquina dada. Cada elemento dentro del cluster tiene igual importancia<br />
por lo que no se defmen ni reglas de precedencia ni de prioridad.<br />
Es muy importante destacar que estos clusters están definidos en base a<br />
tipos distintos de estados. En [Adams 881, el cluster esta defmido sobre un estado<br />
incompleto mientras que en [van Laarhoven 921 lo está para un estado completo.<br />
36
En el algoritmo de shfting bottleneck [Adams 881, cada subcluster define un<br />
subproblema y una precedencia entre ellos que es utilizada por el algoritmo para<br />
seleccionar el siguiente subproblema a resolver. En el procedimiento de búsqueda local<br />
de [van Laarhoven 921, los cluster permiten distinguir entre aquellas movidas que<br />
significarán un cambio en la función objetivo del problema. Ya que las operaciones<br />
críticas definen el makespan del problema, tratar de reordenar dichas operaciones<br />
significará un cambio en la función objetivo que no se produciría al manipular otras<br />
operaciones. En [Adams 881 se define también en la fase de reoptimización un segundo<br />
cluster de la misma forma que la anterior, pero esta vez sobre las operaciones asignadas.<br />
Por lo tanto, en ambos algoritmos se introduce una noción de preferencia<br />
acerca de cuál es el siguiente estado dentro del espacio de búsqueda que visitar. En<br />
shfting bottleneck se prefieren los estados de siguiente nivel 5 que consideran a las<br />
operaciones de la máquina crítica como siguientes variables a asignar. En el algoritmo<br />
de [van Laarhoven 921 se prefieren los estados que corresponden al resultado de una<br />
perturbación de una operación crítica.<br />
Entonces, de acuerdo a todo lo que se ha visto en esta sección, la<br />
conceptualización de la búsqueda permite seleccionar eficazmente qué estados visitar en<br />
base a atributos de la solución que les otorgan ciertas propiedades con respecto a la<br />
búsqueda. Los clusters en el caso de la búsqueda global permiten subdividir el problema<br />
y definir el orden en que ellos serán resueltos. Por otra parte si consideramos la<br />
búsqueda local como un proceso de postoptimización, los cluster permiten identificar<br />
las aquellas partes de la solución que necesitan de arreglo [Pinedo 95b].<br />
El concepto de nivel fue introducido en la sección 1.1.2.<br />
37
2.2.2 Definición de operadores<br />
El siguiente paso en el proceso de resolución es la definición de<br />
operadores. En esta etapa se define el grafo de búsqueda de la heurística, estableciendo<br />
qué operadores aplicar sobre qué variables de la solución. Naturalmente, y como se<br />
explicó en la sección anterior, los clusters identifican aquellos componentes de la<br />
resolución que serán modificados o asignados a través de los operadores, dependiendo<br />
de que tipo de heurística se trate.<br />
Ejemplo 2.5 Operadores de perturbación para fmi Cm.<br />
En [van Laarhoven 921 bajo el concepto de operación crítica se defme un<br />
operador que intercambia el orden que dos operaciones se procesan en una máquina. En<br />
[Dell'Amico 931 se maneja el mismo concepto de bloque que en [Nowicki 931, pero<br />
restringiendo la defmición sólo a aquellos que están compuestos de operaciones<br />
adyacentes. Con ello defme una perturbación que consiste en mover una operación ya<br />
sea al comienzo o al final del bloque. En [Nowicki 93] se perturban todos los bloques<br />
que pertenecen a un camino critico intercambiando las operaciones del principio y del<br />
fmal del bloque J.<br />
En la sección anterior, se mostró gracias a los clusters como la heurística de<br />
shzfting bottleneck, establece cierta preferencia en la generación de los próximos estados<br />
a visitar dentro de la búsqueda. Sin embargo, no se mencionó específicamente como<br />
dichos estados son generados. El operador que se aplica en dicho caso es la misma<br />
heurística que otorga la precedencia al subcluster.<br />
Es muy importante que al defmir tanto operadores como componentes de la<br />
resolución, ellos permitan construir perturbaciones que cumplan con la propiedad de<br />
conectividad, como en el caso de las perturbaciones del ejemplo 2.5 [van Laarhoven 92,<br />
Dell'Amico 93, Nowicki 931. Sin embargo, pese a lo deseable que es dicha propiedad, el<br />
38
producir soluciones infactibles puede ayudar a salir de óptimos locales [Gendreu 941. En<br />
el caso de las heurísticas de búsqueda local, los operadores definen la vecindad para el<br />
problema específico que se esta tratando de resolver. La definición de las componentes<br />
de la resolución ayuda entonces a restringir el tamaño de la vecindad, aunque también<br />
hay criterios estadísticos con lo que se puede lograr lo mismo [Sepúlveda 921.<br />
Para un mismo problema pueden definirse también, distintos tipos de<br />
vecindades a partir de los mismos componentes de la resolución. Ya se vio en el<br />
ejemplo 2.5 que en base al concepto de camino crítico podían definirse distintas<br />
perturbaciones y por tanto distintas vecindades.<br />
2.2.3 Estrategia de control<br />
En etapas anteriores se defmió tanto el espacio de búsqueda como la forma<br />
de construir una nueva solución, pero aún no se ha defmido la estrategia de control que<br />
guiará la búsqueda.<br />
Dicha estrategia debe elegirse de acuerdo al conocimiento de resolución<br />
disponible que son, generalmente propiedades matemáticas acerca de la estructura del<br />
problema. En búsqueda local, estrategias como tabu search, simulated annealing,<br />
stochastic evolution [Saab 911 y genetic algorithms son estrategias generales que se<br />
adecuan más cuando se tiene poca información acerca de ellos. Para heurísticas<br />
especificas (tailored heuristics) es necesario diseñar la estrategia de control más<br />
apropiada, como acontece con la estrategia de asignación con reoptimización propuesta<br />
en [Adams 88]. Para búsqueda global existen estrategias generales como branch and<br />
bound ofiltered beam search.<br />
Ejemplo 2.6 : Estructuras de control para JmI ICmax .<br />
En [Aarts 941 se realiza un estudio comparativo de varias estrategias de<br />
búsqueda local (multistart iterative improvement, simulated annealing, threshold
accepting y generic algorithms) para problemas de job shop. Se demuestra que algunas<br />
de ellas son más eficientes que otras a pesar de que utilizan los mismos operadores. En<br />
[Applegate 911 se realiza una comparación similar, pero para heurísticas específicas<br />
proponiendo mejoras para algoritmos basados en branch and bound y sh(fiing<br />
bottleneck. En [van Laarhoven 92] se plantea que utilizar heurísticas contra la estructura<br />
combmatorial del problema no produce algoritmos más eficaces, sino que más<br />
eficientes, y el utilizar simulated annealing, compensa los largos tiempos de ejecución<br />
requeridos al no necesitar involucrarse con la estructura del problema.<br />
En [Anderson 961 se comprueba la eficacia de los algoritmos de búsqueda<br />
local para problemas de scheduling, pero nuevamente las heurísticas específicas<br />
muestran una menor desviación promedio relativa con respecto a los valores óptimos<br />
conocidos. Sin embargo existen algoritmos principalmente basados en tabu search, que<br />
muestran comportamientos de eficiencia muy similares a las heurísticas específicas C.<br />
La estrategia de control debe considerar también la (in)conveniencia de<br />
aceptar soluciones infactibles. Para el ruteo de vehículos, en [Gendreu 94] propone una<br />
heurística basada en tabu search la cual se permite soluciones i.nfactibles, pero se<br />
establece una estrategia de control que penaliza la violación de las restricciones en la<br />
función objetivo, de forma de reconducir la búsqueda por soluciones factibles.<br />
La eficiencia de las heurísticas aumenta en la medida que se incorpora en<br />
ellas propiedades estructurales del problema, por lo cual existe un balance entre el<br />
esfuerzo computacional que se emplea en obtener una solución y su calidad [Anderson<br />
961. Lo anterior se puede esquematizar en la figura 2.5a basada en una similar que se<br />
encuentra en [Zweben 921.<br />
40
a'<br />
CopflSCÉOflSl p<br />
d. ¡.<br />
CO.toI*OClSdo<br />
poeobn ¡<br />
kÑnl.I.1<br />
¿1<br />
/<br />
s. d. no<br />
1<br />
b)<br />
E.fu.fzØ p<br />
I*SPCÓI ds<br />
,fclón .. d.I ..p d. - Ir,formscóii mecl d .$pacio da aUaq...d.<br />
Figura 2.5 Desempeño de la heurística versus infonnación disponible.<br />
El uso de información estructural del problema hace que una heurística<br />
específica tenga un desempeño más eficiente. Por otro lado, una heurística genérica que<br />
quiera obtener dicha información estructural durante la búsqueda debe pagar el costo en<br />
eficiencia que ello implica. La suma de ambas curvas se muestra en la figura 2.5b, y<br />
como puede verse, existe un punto de equilibrio. Por lo tanto, la información estructural<br />
del problema que se incorpora a través de los componentes de la resolución y la<br />
adecuada elección de la estrategia de control que guíe la búsqueda repercute en el<br />
desempeño de la misma.<br />
2.2.4 Ajuste de parámetros<br />
Las estrategias de control de la heurística que se han escogido para resolver<br />
el problema defmen un conjunto de parámetros que dependen del problema que se esté<br />
resolviendo. El ajuste de dichos parámetros, entonces es la última etapa del proceso de<br />
resolución y consiste en calibrar los parámetros de la heurística, para su mejor<br />
desempeño. Esto tiene que ver con el tiempo limitado que se dispone para ajustar<br />
parámetros. Si la heurística se necesita para resolver muchas instancias de un problema<br />
es necesario tener ciertos aspectos de la estructura de control "fijos", pero con cierta<br />
garantía de que permiten un desempeño aceptable.<br />
41
Es posible encontrar valores o rangos de valores entre los cuales los<br />
parámetros pueden variar manteniendo cierto nivel de eficiencia. Para ello es necesario<br />
realizar un estudio empírico con varias instancias del problema de forma de descubrir<br />
rangos de valores o incluso políticas de manejo. Sin embargo, es posible realizar este<br />
mismo esfuerzo sólo para la instancia particular que se está resolviendo.<br />
Ejemplo 2.7 : Parámetros para distintas estrategias de control.<br />
Para el job shop, en [Taillard 941 se establece una expresión para el largo de<br />
las listas tabú basada en el número de máquinas y de trabajos del problema basado en<br />
estudios empíricos, por lo que el largo de la lista tabú puede considerarse un parámetro<br />
dependiente del problema genérico. En [Hajek 881 y en [van Laarhoven 92] se<br />
establecen formas de descender la temperatura en el Simulated Annealing basados en las<br />
propiedades convergencia del método, sin embargo, la temperatura inicial con la cual se<br />
comienza la búsqueda sigue siendo un parámetro que hay que ajustar y para el cual<br />
también puede realizarse un estudio práctico. Otro ejemplo es el ajuste de los<br />
parámetros de la regla de despacho A TC (Ápparent Tardiness Cost) usada para<br />
problemas de job shop, parámetros que se determinan tomando en cuenta información<br />
sobre la instancia específica del problema [Pinedo 95a] U.<br />
Las estrategias generales proveen sus propios parámetros para controlar la<br />
búsqueda, por ejemplo, en tabu search el largo de la lista es un parámetro, aunque<br />
empíricamente un largo de siete ha demostrado ser exitoso en distintos tipos de<br />
problemas [Glover 90b]. En general, en búsqueda local el tamaño de la vecindad<br />
también puede considerarse un parámetro si los operadores definidos son demasiado<br />
sencillos [Sepúlveda 92]. La calidad de la solución depende de cuánto tiempo la<br />
heurística se ejecute, que es un parámetro dependiente de la instancia del problema ya<br />
sea en la forma explícita de máximo tiempo o de máximo número de iteraciones. En<br />
búsqueda global un ejemplo del ajuste de parámetros es elegir la combinación de beam<br />
42
width y filter width más adecuado para un problema en que se va a usar beam search.<br />
Variar estos parámetros pennite controlar el tiempo de ejecución, como también<br />
manipular la calidad de la solución debido a que el beam width tiene directa relación<br />
con la intensificación y diversificación en la búsqueda.<br />
Con esta etapa concluye el proceso de resolución. Los operadores, la<br />
estrategia de control y los parámetros dependientes del problema genérico definen una<br />
heurística genérica para el problema que se está analizando. La instancia del problema<br />
permite definir los elementos todavía indeterminados, con lo cual se obtiene una<br />
heurística particular.<br />
Si el diseñador no esta satisfecho con el desempeño de la heurística, puede<br />
utilizar otra estrategia de control que, como se vio en la sección anterior, depende del<br />
problema. No debe desecharla a priori, porque no posee una instancia de la heurística<br />
que resolver hasta el final esta etapa y además tiene que asegurarse que no se trata de un<br />
problema de parámetros mal definidos. Si aún no está satisfecho, la fuente del problema<br />
puede encontrarse en la defmición de los operadores y el proceso de resolución puede<br />
considerarse un ciclo evolutivo. No se considera la etapa de conceptualización del<br />
problema como parte de este ciclo, porque si el problema estuviera ahí, significa que la<br />
resolución está mal conceptualizada, lo que equivale a recomenzar el proceso.<br />
2.3 Interrelación entre tos Dos Procesos.<br />
Anteriormente se planteó que los diseñadores organizan la información del<br />
problema y de la resolución de manera jerárquica, buscando formar grupos de atributos<br />
de la solución [Woodruff 941. Por otro parte, se afirma lo mismo con respecto de<br />
quiénes tienen los problemas en la empresa [Dombrovskaia 951. Según dicho trabajo,<br />
ellos entienden los problemas de una forma operacional, es decir, en términos de<br />
objetos del dominio en el cual se mueven. Por lo tanto, tanto los componentes del<br />
43
modelo como los de la resolución tratan de dar cuenta del mundo que define el<br />
problema que se trata de resolver.<br />
Como las entidades que describen ese mundo tienen jerarquías, atributos e<br />
interrelaciones entre sí, se puede utilizar un enfoque de orientación a objetos para<br />
representar los componentes del modelo [Singer 92, Levys 93, Melero 94,<br />
Dombrovskaia 951. Lo mismo se puede hacer con los componentes de la resolución.<br />
Aunque el enfoque anterior permite enfrentar la definición del espacio de<br />
búsqueda, no existe software genérico para la optimización combinatorial debido a la<br />
fuerte interdependencia que existe entre el método de representación y los métodos de<br />
resolución, cosa que no ocurren en la programación lineal o no-lineal continua [Coullard<br />
95].<br />
Sin embargo, ambas metodologías (tanto la de modelación como la de<br />
resolución) permiten especificar requisitos para dicha estructura de datos. Siguiendo el<br />
análisis orientado objetos [Rumbaugh 91, Collins 951, cada componente permite<br />
identificar objetos y clases. La interrelación entre los componentes permite identificar<br />
asociaciones entre los objetos. La jerarquía que se da entre los componentes permite<br />
diferenciar objetos de atributos y qué clase de objetos corresponden a subtipos de otra.<br />
Finalmente, la semántica propia de cada componente define los métodos que le están<br />
asociados, aparte de aquellos que le sirven de interfaz con el resto de las clases.<br />
Todo lo anterior implica que la estructura de datos depende tanto del<br />
problema como de la forma en que este se quiera resolver, ya que los componentes de la<br />
resolución son también parte integral de la estructura. Utilizar orientación a objetos es<br />
muy importante, debido a que el ocultamiento de información de este enfoque permite<br />
construir interfaces de conexión entre la estructura de datos que representa al problema<br />
y la estrategia de control de la heurística.<br />
44
La importancia de este resultado es evidente dado que en [Dombrovskaia<br />
95], se demuestra lo interrelacionado que están la orientación a objetos y el enfoque<br />
basado en conocimiento que es la forma en la cual los expertos entienden la realidad.<br />
Dicho enfoque es la base para construir la herramienta que apoya el proceso de<br />
modelación de problema de programación lineal. Eso significa que se puede desarrollar,<br />
para el proceso de resolución, una herramienta del mismo tipo ya que dicho proceso<br />
calza de la misma forma con dichos enfoques.<br />
2.4 Requisitos de una Herramienta para el Desarrollo de Heurísticas<br />
Con lo que se ha discutido en secciones anteriores, entre los requisitos que<br />
debieran considerarse para desarrollar una herramienta están<br />
a) Apoyar el ciclo de refmamiento de la heurística que existe entre las etapas de<br />
defmición de operadores y ajuste de parámetros, permitiendo al diseñador elegir entre<br />
distintos mecanismos de control y modificar los parámetros.<br />
b) Si bien el desarrollo de una heurística se puede sistematizar y abordar con una<br />
metodología, no por ello deja de ser un proceso complejo. Producir código<br />
computacional a partir de la especificación del diseñador de forma de que el<br />
conocimiento que exista en ella pueda ser reutilizado por otras personas por medio de<br />
dicho programa, no es solamente deseable sino también necesario.<br />
c) La existencia de metaestrategias permite apoyar el desarrollo de heurísticas al estar<br />
previamente implementadas. Ello permite reutilizar conocimiento y evita al<br />
diseñador tener que llegar al bajo nivel de la implementación de la heurística, cosa<br />
que ya tuvo que hacer para implementar la estructura de datos. Ello le permitiría<br />
ahorrar una gran cantidad de esfuerzo en la implementación que puede invertir en<br />
mejorar la heurística.<br />
d) Dado que la estructura de datos es dependiente del problema y de la heurística, la<br />
herramienta debe ser lo suficientemente flexible para permitir definir una interfaz con<br />
la cual conectar la herramienta.<br />
45
e) Aprovechar la orientación a objetos en la implementación, que tiene las ventajas que<br />
se mencionaron en la sección anterior.<br />
46
III. DISEÑO DE LA HERRAMIENTA.<br />
Como se especiflcu en la introducción de esta tesis, el objetivo es diseñar<br />
una herramienta de desarrollo de heurísticas de búsqueda local para problemas<br />
combinatoriales. Haciendo uso de la metodología y conceptos propuestos en el capítulo<br />
anterior se diseñará una herramienta que permita apoyarlos. Ello significa otorgar al<br />
diseñador un lenguaje que en base a la conceptualización del problema le permita<br />
especificar la vecindad del problema, por un lado y diseñar una estructura de control lo<br />
suficientemente flexible para desarrollar distintos tipos de búsqueda local por otro.<br />
En este capítulo entonces, se responderá a las preguntas de cómo buscar, y<br />
cuál es el conocimiento que el diseñador debe especificar. Ambas preguntas están<br />
estrechamente interrelacionadas, ya que el cómo buscar depende de la información que<br />
se tenga disponible como también se mencionó en el capítulo anterior.<br />
3.1 La Vecindad y la Conceptualización del Problema.<br />
Un algoritmo de búsqueda local queda determinado si para las estructuras de<br />
control que se mencionaron en el capítulo 1, se define tanto la vecindad como los<br />
criterios de aceptación y detención. Por defmir la vecindad se entenderá especificar la<br />
tupla V(x)= (P(m,x),C(x), j(m)) que implica un operador, una forma de calcular la lista<br />
de candidatos y una forma con la cual obtener la mejor movida.<br />
Como se introdujo en la sección 1.1.1, una movida corresponde al vector de<br />
argumentos para la función de perturbación P(m,xk). Ello significa que el tamaño de la<br />
vecindad 1<br />
vector m.<br />
V(xk) 1 queda determinado por la cantidad de combinaciones posibles para el<br />
47
Ejemplo 3.1 : Movida.<br />
Para el problema de job shop, en [van Laarhoven 921 se define un operador<br />
de intercambio (swap) que cambia el orden de secuenciamiento de las operaciones<br />
críticas. Los argumentos para el operador son dos operaciones críticas que se procesan<br />
en la misma máquina y una movida queda defmida por el par ordenado de dichas<br />
operaciones J.<br />
De acuerdo al modelo del JSSP introducido en el ejemplo 2.2, se tiene para<br />
la movida del ejemplo 3.1 que 1<br />
V(xk) les menor o igual que N(N-l)/2 que son todas las<br />
combinaciones posibles de movidas, con lo cual el tamaño de la vecindad 6 es 00). En<br />
general, si el ancho del vector m es t y D i es el dominio del argumento m i del vector con<br />
l entonces el tamaño de la vecindad es 0(N9. Ello significa que el<br />
N = 1t' D,<br />
tamaño de la vecindad crece en la medida que el problema lo hace y evaluar todos las<br />
soluciones que se construyen a partir de dicha vecindad puede llegar a ser prohibitivo.<br />
Varias estrategias pueden adoptarse para manejar este inconveniente. La<br />
primera de ellas es construir operadores más complejos de forma de reducir el tamaño<br />
de la vecindad [Nowicki 931. La segunda es la utilización de funciones de evaluación.<br />
Dichas funciones se utilizan para evaluar la movida, construyendo en base a ella una<br />
cota inferior de la función objetivo sin tener que ejecutar el cambio realmente<br />
[Dell'Amico 931, de la misma manera que lo hacen los algoritmos de branch and bound<br />
o bien utilizando heurísticas [Glover 90b]. Finalmente, otra alternativa es escoger un<br />
subconjunto de la vecindad con un cierto criterio estadístico [Sepúlveda 921.<br />
6 Recordar que una expresión g(n) se dice que es O(f('n)) si hm g( n )/f( n)<br />
mientras que otra expresión h(n) se dice o(í(n)) si es que hm h( n )/f( n) = 0 [Gu 93].<br />
n -+ co<br />
48<br />
2: O,
Las primera alternativa queda a cargo del diseñador, por lo que no se puede<br />
hacer mucho al respecto, sin embargo, las últimas dos pueden verse como restricciones<br />
de la vecindad. Como se definió en la sección 1.1.1, al subconj unto C(xk) de N(x)<br />
producido con algiin criterio se le conoce como lista de candidatos.<br />
Se definirá a continuación cómo representar y manipular las listas de<br />
candidatos, lo cual establecerá qué conocimiento es necesario para definirlas.<br />
3.1.1 El concepto de asociación<br />
De acuerdo a la defmición 2.1, un componente de la resolución B(y) =(F, ,)<br />
defme un conjunto de elementos que caracterizan un estado dentro del grafo de la<br />
búsqueda y los operadores perturban la solución en base a dichos componentes. En el<br />
caso de la búsqueda local, eso significa que cada argumento del vector de movida m es<br />
un componente de la resolución.<br />
Definición 3.1: Encabezado, andad y caracterización.<br />
Sea c = {C3 (y)} un conjunto de q clusters definidos para el problema<br />
con •(y)= (,R,G,g1,ço) y I(y)I= p» Sea 1{1,...,q} el conjunto de indices de los<br />
clusters del conjunto e. Entonces, si 7 =(si, . .4v) con Jj E T denominaremos a 7<br />
encabezado y al ancho m de dicho vector andad. Adicionalmente, se llamará al<br />
conjunto una caracterización del problema U.<br />
Un encabezado corresponde a una selección de clusters de la caracterización<br />
del problema. Eso significa que la posición i-ésima dentro del encabezado tiene un<br />
dominio, el del cluster correspondiente. Los conceptos anteriores permiten introducir la<br />
siguiente definición.<br />
49
Definición 3.2 Indexación y lista de argumentos.<br />
Sean 57 un encabezado y e una caracterización de acuerdo a la definición<br />
3.1. Sea Z) { 1,..., p} una indexación del cluster e3 en el cual ¡ € ?.'j corresponde al<br />
subcluster e(y.i). Sea D7 el producto cartesiano de las mdexaciones asociadas a los<br />
clusters cuyos índices pertenecen a 57, es decir, V = [[ D. Entonces al vector v€<br />
se le denominará lista de argumentos U.<br />
En el caso del ejemplo 3.1 y utilizando la nomenclatura del modelo defmido<br />
en el ejemplo 2.2, podemos caracterizar este problema con único cluster<br />
e =( (3 } , R1 (F, w,y) w, G1 =Q,gi Q, r1 + Pw d, l = 0) donde Q corresponde al conjunto<br />
dominio de R tal como se estableció en la definición 2.1. Este cluster corresponde a las<br />
operaciones críticas del problema. Como R1 es la identidad, un subcluster corresponde a<br />
una operación crítica. Suponiendo que el número de dichas operaciones sea p, la<br />
indexación del cluster según la definición 3.2 corresponde a 2)i={ 1,.. .pi }. Si se define<br />
=( 1,1) como encabezado, entonces una lista de argumentos corresponde a un vector<br />
que pertenezca a VIxVI. Notar que con ello se ha definido el vector m para la movida<br />
del ejemplo 3.1.<br />
Definición 3.3 : Asociación.<br />
De acuerdo a la definición 3.2, sea y una lista de argumentos de andad m<br />
sobre un encabezado 7 defmido en base a una caracterización e. Sean «v,y) una<br />
condición que relaciona los subclusters y, con i= 1, . . .,m. Entonces se llamará<br />
asociación a la tupla (7C0) que defme el conjunto 4(y){v E 97 1 Ø(v,y) }. Notar<br />
que si la andad de la lista es uno la asociación .4(Ç,I), donde 1 es una condición que<br />
siempre es verdadera, corresponde a una indexación. A este tipo de asociaciones se les<br />
denominará asociación atómica U.<br />
50
Es necesario recordar que gracias a la indexación, una asociación<br />
corresponde a un conjunto de vectores de números naturales y cada coordenada del<br />
vector corresponde a un cluster específico definido por el encabezado y el valor de dicha<br />
coordenada refiere a un subcluster en particular.<br />
Si bien hemos defmido una lista de argumentos para la movida del ejemplo<br />
3.1 se debe notar que, no toda lista es una movida. Esto es porque el operador de<br />
intercambio exige que las operaciones que se entregan como argumento se procesen en<br />
la misma máquina. Por lo tanto, la vecindad corresponde a un subconjunto de las listas<br />
de argumentos. Si se defme la condición $('v,y)((Máquina(v i)—Máquina(v 2)) A<br />
(v1
Entonces, una lista de candidatos corresponde a listas de argumentos que<br />
pertenecen a una asociación. La asociación puede ser una condición sobre los atributos o<br />
la interrelación entre los componentes de la resolución. Por lo tanto, la lista de<br />
candidatos C(x) queda especificada por una asociación. Para ella se especifican los<br />
elementos establecidos en la defmición 3.3, que son los que permiten incorporar<br />
conocimiento estructural del problema. Con ello se ha logrado una forma de definir el<br />
concepto de lista de candidatos e identificar el conocimiento que el diseñador debe<br />
entregar para especificarla. Sólo resta buscar una forma apropiada de manipularlas y con<br />
ello concluir la defmición de la vecindad del problema.<br />
3.1.2 Algebra de asociaciones.<br />
Ya que una indexación y una asociación atómica corresponden al mismo<br />
conjunto, se puede ver la definición de una lista de candidatos como la composición de<br />
operaciones sobre asociaciones atómicas. Si la movida corresponde a un vector m de<br />
ancho t, como ya se mencionó, la asociación resultante debe tener un encabezado de<br />
andad t consistente con la defmición de argumentos del vector m. Siendo el tamaño de<br />
la vecindad O(7), las operaciones deben además permitir descartar elementos de forma<br />
apropiada. Para ello se introducirán las siguientes operaciones sobre asociaciones, que<br />
defmen un álgebra de asociaciones.<br />
Definición 3.4 : Restricción.<br />
Sea 4(y)-(7,e, çti) una asociación de acuerdo a la defmición 3.3. Se define la<br />
operación de restricción como p.(4) =(2 0 A2)•.<br />
La restricción permite eliminar listas de argumentos de una cierta asociación<br />
al introducir una nueva condición que deben satisfacer. La condición X establece una<br />
analogía con el concepto de criterio de eliminación introducido en la sección 1.1.2.<br />
52
asociaciones.<br />
Los siguientes conceptos permitirán defmir la operación de producto entre<br />
Defmición 3.5 : Concatenación y desplazamiento.<br />
Sean j)(j, . . .,i,,) y Z—(j, .4) dos encabezados definidos sobre una<br />
. .<br />
caracterización del problema. Entonces, se defme la operación de concatenación de<br />
encabezados como:<br />
Defmición 3.6 : Ventana.<br />
Sean w — (w i , .<br />
. .,w)<br />
4)•.<br />
mi<br />
una lista de argumentos defmida en base a un encabezado<br />
j). Entonces siempre que t ~: p+k se defme como ventana de desplazamiento k<br />
y tamaftop a la operación:<br />
w,,)) (wk +1,...,wk+p)•.<br />
La operación de concatenación de encabezados construye un encabezado<br />
que corresponde a colocar los encabezados que recibe como argumentos uno junto al<br />
otro, y permitirá definir cual es el encabezado del producto de dos asociaciones.<br />
Defmición 3.7 : Producto.<br />
Si y)=(, Ø) es una asociación de andad m y '(y)=(1,e,2) es otra<br />
asociación de anidad n de acuerdo a la defmición 3.3. Se defme la operación de<br />
producto entre asociaciones como x(, )=(209,, Ø('Oo,m(W))A 2(am,n(w)), donde w es<br />
la lista de argumentos defmida por el encabezado
Sean ,=(74)' con i=l . n asociaciones de distinta andad y w una lista<br />
de argumentos defmida en base a. La operación de producto n-aria se define como:<br />
fJ 1.4 i®?2® ... ®?n,e,2i(0 om1 (W))A4 0 mm (w))A ... Ao (2(w))) E.<br />
El desplazamiento introducido en la definición 3.6, permite realizar el and<br />
lógico entre las condiciones al ampliar la lista que compone la asociación. La operación<br />
de producto es muy importante debido a que la sucesiva aplicación de este operador es<br />
la única forma de construir una asociación de andad t a partir asociaciones atómicas.<br />
Definición 3.8 : Unión.<br />
A continuación se definirán las tradicionales operaciones de conjuntos.<br />
Sean 4(y)=(e0) y (y)=(?2) asociaciones de acuerdo a la definición<br />
3.3. Se defme la operación de unión como u(,4,')=(7,e,çbv2). Sean ,4=q) con<br />
i=1.....n asociaciones con igual encabezado y andad, entonces la operación de unión n-<br />
aria se define como:<br />
Definición 3.9 : Intersección<br />
U<br />
Sean y)(?,Ø) y (y)(2) asociaciones de acuerdo a la defmición<br />
3.3. Se defme la operación de intersección como n()(7e, ØAI). Sean<br />
con i1,.. .,n asociaciones con igual encabezado y andad, entonces la operación de<br />
intersección n-aria se define como:<br />
= (AØ2A ... A) a.<br />
54
Defmición 3.10 : Diferencia<br />
Sean (y)=(7,?,Ø) y (y)=(7e'U asociaciones de acuerdo a la definición<br />
3.3. Se define la operación diferencia como -()=(,q<br />
Los operadores de conjuntos permiten comparar asociaciones del mismo<br />
encabezado entre sí. Las operaciones de unión e intersección permiten construir una<br />
asociación cuyas listas posean o compartan ciertas características distintas. Una<br />
asociación puede ser listas de argumentos no deseados en la asociación fmal. La<br />
operación de diferencia en dicho caso, permite construir una asociación que no posea<br />
dichas listas.<br />
Por último, el concepto de asociación no tendría ninguna utilidad si no<br />
permitiese incorporar operadores que asignen un cierto valor a cada lista de argumentos,<br />
que son los que se defmen a continuación.<br />
Definición 3.11: Prioridad.<br />
Se define como evaluación al procedimiento (v) que le asocia a cada lista<br />
de argumentos y un número real r•.<br />
Cada subcluster, según la definición 2.4 permite defmir una regla de<br />
prioridad. Es fácil darse cuenta entonces, que en el caso de tratarse de una asociación de<br />
andad uno la prioridad corresponde a un caso particular de dicha regla para el<br />
subcluster.<br />
Finalmente la siguiente operación permite restringir una asociación por los<br />
valores de la función de evaluación.<br />
E.<br />
55
Defmición 112 Restricción valuada.<br />
Sea ,4(y)=(,e, Ø) una asociación de acuerdo a la defmición 3.3. Se defme la<br />
operación de restricción valuada como =(7,é0 AO), donde O es una<br />
condición sobre los valores que entrega la función de evaluación U.<br />
Todo lo anterior, especifica una forma de manipular y evaluar las<br />
asociaciones con lo cual concluye la defmición de la vecindad del problema, al<br />
especificarse la tupla V(x).<br />
Las operaciones definidas anteriormente que se utilizarán en la<br />
implementación del lenguaje que utiliza la herramienta, poseen algunas propiedades<br />
interesantes. La composición de la operación de restricción es conmutativa (Proposición<br />
3.1), además dicha operación distribuye sobre la unión e intersección (Proposición 3.5).<br />
Por otra parte las operaciones de unión e intersección son asociativas y conmutativas<br />
(Proposición 3.2 y 3.3), mientras que el producto de asociaciones es sólo asociativo<br />
(Proposición 3.4).<br />
Las demostraciones de estas propiedades se encuentran en el anexo A.<br />
3.2 Diseño del Algoritmo de Búsqueda<br />
Teniendo ya una forma con la cual crear y manipular una lista de candidatos<br />
es necesario defmir una estrategia de control que permita emplear dicha definición para<br />
construir una heurística de búsqueda.<br />
3.2.1 Conceptos previos<br />
En el capítulo N°1, se mostraron varias estructuras de control para<br />
heurísticas de búsqueda local. Simulated annealing, tabu search y threshold accepting<br />
son algoritmos que se concentran en la estrategia de cómo producir el siguiente estado<br />
56
del espacio de búsqueda e introducir mecanismos de control para conducirla. De dichas<br />
estrategias sólo tabu search defme explícitamente los conceptos de intensificación y<br />
diversificación. Por otra parte, los algoritmos de multi-start iterative improvement y<br />
large-step optimization conducen un muestreo sobre el espacio de búsqueda que es<br />
aleatorio en el primer caso y sobre los óptimos locales en el caso de la optimización<br />
local con paso largo. Lo anterior significa que la misma heurística es aplicada<br />
iterativamente sobre puntos distintos del espacio de búsqueda.<br />
En los métodos de optimización local con paso largo el rendimiento del<br />
algoritmo varía significativamente al cambiar la heurística de búsqueda local que post-<br />
optimiza la solución [Lourenço 951. Un algoritmo de simulated annealing tiene un<br />
mejor rendimiento que uno hill climbing, porque es capaz de lograr una mejor solución<br />
dentro de la región que esta siendo analizada aunque con un esfuerzo computacional<br />
mayor [Lourenço 951.<br />
Por otro lado, en un área de la Inteligencia Artificial conocida como<br />
Planning [Flendler 90], el objetivo es lograr un aspecto final o estado final de la<br />
representación del mundo, la cual corresponde al dominio de aplicación. Ello se<br />
consigue por medio de la aplicación de ciertas acciones sobre el estado actual del<br />
dominio de aplicación a partir de un estado inicial. Como se describe en [Hendler 901, si<br />
bien ha sufrido variaciones, el esquema básico para caracterizar acciones corresponde a<br />
las precondiciones y los efectos de una acción. Las descripción de un estado en un<br />
planner se realiza con fórmulas de la lógica de predicados. Los efectos de una acción se<br />
realiza a través de añadir o eliminar fórmulas al descriptor del estado, es decir, se<br />
especifica la regla de como cambia el mundo. Dicha actualización se produce cuando se<br />
cumple una precondición de la acción, es decir, se realiza un cambio en el estado del<br />
mundo cuando se hace verdadera la fórmula descrita en la precondición.<br />
57
Las heurísticas que buscan intensificar, diversificar y el uso de restricciones<br />
direccionales en oscilación estratégica dependen de variables que cambian dependiendo<br />
de la historia de la búsqueda 7 [Glover 90]. Una asignación a dichas variables<br />
corresponde a un estado de la búsqueda.<br />
Haciendo uso de la terminología anteriormente descrita, la acción que el<br />
sistema ejecutará para introducir la oscilación estratégica depende del estado actual de la<br />
búsqueda, la cual debe ejecutarse si la precondición que la define se cumple. El<br />
resultado de la acción guia la búsqueda intensificando o diversificando, pero también<br />
debe tener como efecto el producir un nuevo estado de la búsqueda para poder continuar<br />
ejecutando acciones. En base al estado de la búsqueda también se pueden incorporar<br />
elementos que permitan controlar otros aspectos de la estructura de control de la<br />
heurística. Uno de ellos es el de los parámetros de la búsqueda ya que se pueden<br />
construir políticas de manejo que los varíen dependiendo de la historia de la búsqueda.<br />
En el capítulo N°2 se analizó cómo el desempeño de la heurística depende<br />
de la información estructural y como los mismos componentes de la resolución<br />
permiten definir múltiples vecindades. Dichas vecindades pueden entonces activarse<br />
dinámicamente dependiendo de los valores de las variables de estado de la búsqueda<br />
para producir la intensificación, diversificación y oscilación estratégica. A dichas<br />
vecindades las denominaremos vecindades contextuales.<br />
El uso de la vecindad contextual permite utilizar el mismo enfoque de<br />
búsqueda para llevar a cabo la diversificación al utilizar, por ejemplo, otro tipo de<br />
Como se explicó en la sección 1.1.1, las estrategias de intensificación se concentran en<br />
las variables más "manipuladas" por la heurística durante la búsqueda. Eso se conoce por la historia<br />
de la misma, que es una memoria que se actualiza dependiendo de los estados visitados por la<br />
heurística. Lo mismo se aplica a las estrategias de diversificación.<br />
58
perturbación. Ello también permite implementar la intensificación utilizando una<br />
estructura de vecindad más compleja. Si existiera un lenguaje para especificar la<br />
vecindad, estos dos hechos permitirían desarrollar todos los conceptos anteriores en el<br />
mismo esquema, sin necesidad de implementar estructuras de control adicionales para la<br />
búsqueda.<br />
Una vecindad corresponde una iteración del algoritmo de búsqueda local<br />
que se defmió en la figura 1 .4a. Por lo tanto, es natural extender el concepto de vecindad<br />
contextual al de heurística contextual, si se ejecuta más de una iteración. Una<br />
heurística contextual es una heurística de búsqueda local, pero que se activa cuando se<br />
cumple cierta precondición. Adicionalmente, a la forma en que las variables de estado<br />
de la solución se actualizan la denominaremos efecto.<br />
Los algoritmos de multi-start iterative improvement y large-step<br />
optimization pueden describirse con el esquema de la figura 3.1 a. En él, se representa la<br />
sucesiva aplicación de la heurística h sobre las solución generadas por la perturbación P.<br />
En el caso de la mejora iterativa con múltiples comienzos, la perturbación P<br />
simplemente ignora la solución anterior y genera otra aleatoriamente, mientras que en el<br />
otro procedimiento constituye el "paso" del algoritmo.<br />
x I<br />
IP Ii P<br />
la .dó, gsn~ p<br />
Figura 3.1 : Aplicación de heurísticas.<br />
59
Los algoritmos ya mencionados poseen una forma primitiva de afrontar el<br />
proceso de oscilación estratégica. El procedimiento de búsqueda local puede verse como<br />
un procedimiento de intensificación sobre la región del espacio que está siendo<br />
explorada, mientras que el salto a otra región corresponde al proceso de diversificación.<br />
Los conceptos anteriormente descritos permiten generalizar estos algoritmos<br />
reemplazando la única heurística por un grafo de heurísticas, en el cual cada nodo<br />
corresponde a una heurística contextual como se muestra en la figura 3.1 b. El grafo<br />
define la precedencia con la cual las heurísticas contextuales son ejecutadas y un ciclo<br />
corresponde a recorrer completamente el grafo. La heurística contextual corresponde a<br />
un nodo del grafo y se muestra en la figura 3.2a, mientras que como se interrelacionan<br />
entre sí, se muestra en la figura 3.2b.<br />
Heurusbca<br />
Precondiaón .<br />
NO bJ Ç. NO<br />
En lo que resta del capítulo se formalizará el algoritmo de búsqueda que la<br />
herramienta implementará y la forma en que ella incorpora conocimiento estructural.<br />
3.2.2 Algoritmo de búsqueda propuesto.<br />
En esta sección se formalizarán los conceptos introducidos en la sección<br />
previa, lo cual permitirá construir el algoritmo de búsqueda y establecer qué<br />
conocimiento adicional se requiere para especificarlo completamente.<br />
Defmición 3.13 : Heurística de búsqueda local.<br />
Sean V(x) = (P(z,x),C(x), j(m)) la tupla que especiflca la vecindad para el<br />
problema, 8H el criterio de detención y aH el de aceptación de la heurística.<br />
Adicionalmente se definirá una función A(x") que calcula la caracterización del<br />
problema ¿ = {é1(xk )} y una función que ajusta parámetros. Entonces una<br />
heurística de búsqueda local corresponde a la tupla H(x)=(V, 5H, cxg,A,9V•.<br />
Lo anterior quiere decir que dada una estructura de control para la búsqueda<br />
local, la heurística queda determinada por la tupla de la definición 3.13. En adelante<br />
consideraremos la estructura de control como la que se describió en la figura 1 .5a,<br />
puesto que los algoritmos a), b) y c) descritos en la sección 1.1.1 corresponden a un caso<br />
particular de un algoritmo de tabu search. Por otra parte, anteriormente se introdujo el<br />
concepto de heurística contextual. A continuación, se definirá con mayor precisión<br />
dicho concepto.<br />
Definición 3.14. : Estado de la búsqueda, heurística contextual, precondición y<br />
efecto.<br />
Sea s un vector de variables (s1 ,. • ., s,,) que representa el estado del sistema,<br />
al que se denominará estado de la búsqueda. Sea f'(s) es una condición que el estado s<br />
61
debe cumplir y I(s) genera el estado s ' . Entonces se define heurística contextual<br />
como a la tupla Hc(x,$)=(1H,2). La condición 's) se denomma precondición y la<br />
función E(s) se conoce como efectos.<br />
La historia del proceso es el conjunto de estados de la búsqueda visitados<br />
por el algoritmo y corresponde a la sucesión de estados L, ={s 0, s1,..., sk} a la cual se le<br />
denominará bitácora de la búsqueda.<br />
Definición 3.15 : Grafo de heurísticas.<br />
Se defme como grafo de heurística GH N,bA), al grafo dirigido y<br />
acíclico compuesto por un conjunto de nodos N, cada uno de los cuales corresponde a<br />
una heurística contextual H(x,$) según la definición 3.13 y un conjunto de arcos<br />
A{(u,w) 1 U,V E N} que unen dichos nodos defmiendo la precedencia entre heurísticas<br />
contextuales•.<br />
La bitácora se genera por la aplicación del efecto sobre el estado actual de la<br />
búsqueda, por lo tanto, depende del orden en que los nodos hayan sido visitados.<br />
Defmición 3.16 : Heurísticas sucesoras.<br />
Sean GH —(N,A) un grafo de heurística, s un estado de la búsqueda y Hc(x,$)<br />
una heurística contextual perteneciente al conjunto de nodos Nif, entonces al conjunto<br />
Suc(s,Hc) = {u = (VH,) E N 13 (Hc,u) E A A í'('s)) se le denominará de heurísticas<br />
sucesoras U.<br />
Por lo tanto, dado un grafo de heurísticas GH =(NH,AH), un estado inicial de<br />
la búsqueda s y una solución inicial factible x, el algoritmo consiste en generar una<br />
sucesión finita de soluciones Xk{X, x1,..., xk} a partir de la bitácora de la búsqueda<br />
62
a) procediere Optimizar(G,xs)<br />
begin<br />
T 0<br />
k : n : q:= O<br />
so s<br />
repeal<br />
H:= h0<br />
repeat<br />
x € X<br />
begin<br />
f (tf()) ¡hen<br />
begin<br />
H(x'', x"', T, k)<br />
s'' EWS 9)<br />
q :q+ 1<br />
end<br />
Fi h € Suc(s,H)<br />
end<br />
unu! Suc(s',H) = Ø<br />
n := n + 1<br />
end<br />
unu! ((n = mex_iteraciones_ma yores<br />
y<br />
end Optimizar<br />
b) procediere Oplimizar(G.s.$)<br />
begin<br />
T : 0<br />
k n := q : O<br />
5' 5<br />
repea!<br />
H h,<br />
r<br />
yflhlO!: = 54crn.l<br />
repea!<br />
begin<br />
5 E X<br />
P,,,(s"'"')<br />
:f (P,,(s')) ¡he,,<br />
begin<br />
ff(x'", x'°', T,k)<br />
,VI = (s )<br />
q :q+l<br />
end<br />
H:= h E Suc(s',H)<br />
end<br />
un1ilSuc(s,I-!) = 0<br />
1! (no! ao (f'')) ¡he,,<br />
begin<br />
T :7''<br />
:=<br />
end<br />
cisc<br />
begin<br />
if (x'' ><br />
:<br />
end<br />
n : n + 1<br />
end<br />
unu! ((ti = mex iteraciones mayores<br />
y<br />
end Optimizar<br />
Figura 3.3 Algoritmos a utilizar.<br />
El algoritmo principal de búsqueda se muestra en la figura 3.3a. En ella se<br />
muestra como se va ejecutando el grafo de heurísticas. En la figura 3.3b, en cambio, se<br />
muestra la generalización de los algoritmos de paso largo. Cada ciclo corresponde a la<br />
ejecución de una perturbación Pg/oba!(X) que se post-optimiza ejecutando el grafo de<br />
heurísticas.<br />
63
Ello significa visitar de acuerdo a la topología del grafo cada uno de sus<br />
nodos. Cada vez que se visita un nodo de una heurística H se verifica si la precondición<br />
f'g se cumple. Si lo hace, se ejecuta la heurística hasta que se satisface el criterio de<br />
detención 6H y posteriormente, se ejecuta el efecto E11 de la heurística. Si la<br />
precondición no se cumple, entonces se repite el algoritmo con el próximo nodo que<br />
deba visitarse. A un recorrido completo del grafo se le denominará iteración mayor.<br />
Dado a que cada heurística H, posee su propia perturbación P11(m,x), no es<br />
posible utilizar una lista tabú basada en atributos de las movidas por lo disímiles que<br />
pueden ser estas entre sí. Por lo tanto, el algoritmo utiliza una lista tabú global que<br />
almacena las codificaciones de un subconjunto de las soluciones visitadas<br />
anteriormente. Dicha codificación está basada en el concepto de hash [Woodruff 931<br />
introducido en la sección 1.1 .1 y depende del problema que se esté analizando. La<br />
información de la lista es compartida y actualizada por todas las heurísticas de manera<br />
de evitar caer en ciclos.<br />
Si el criterio de aceptación global aG del algoritmo no se cumple se vuelve<br />
tanto a la solución del ciclo anterior como al estado de la lista tabú previo a ejecutar el<br />
grafo. Esto último debido a que cada nodo durante el recorrido elimina y agrega<br />
soluciones (figura 3.3b). Sin embargo, no se recupera el estado de la búsqueda. Esto es<br />
debido a que éste puede y debe mantener información acerca del desempeño de las<br />
heurísticas, por lo que dicha información generará una secuencia de nodos a visitar<br />
dentro del grafo distinta a la que causó que la solución no fuera aceptada en el paso<br />
anterior, como se muestra en la figura 3.4a y 3.4b. Finalmente la ejecución termina si es<br />
que se satisface el criterio de detención global &<br />
64
Sq<br />
5qt h2<br />
Figura 3.4 : Recorrido del grafo dependiendo del estado de la búsqueda.<br />
procedure H(f', f°'T,k)<br />
begin<br />
repeal<br />
begin<br />
e = A(x'', x °', T,k, Iargo_lista_tabu)<br />
T: T-{(xi) E Ti 1< k )<br />
x N (e T)<br />
f (aq (,f1I)) then<br />
begin<br />
x''<br />
T:= Tu {(z k+ lergo_IIsta_tabu}}<br />
if (jfr1)< flx'')) then x 1°' :<br />
end<br />
Q(x0, T.k. 1.rgo_llstajabu)<br />
k := k+ 1<br />
end<br />
UntÉ! YH (xrI)<br />
endH<br />
Figura 3.5 : Algoritmo que ejecuta cada heurística.<br />
La figura 3.5 describe el algoritmo que ejecuta cada heurística. La función A<br />
calcula en cada iteración de la heurística la correspondiente caracterización del<br />
problema (ver defmiciones 3.1 y 3.13). Del mismo modo, el la función 11 actualiza<br />
parámetros u otras variables relevantes para la búsqueda El conocimiento estructural del<br />
problema se incorpora principalmente en la función Nj.]r(x), que corresponde a la<br />
defmición de la lista de candidatos en base a los conceptos introducidos en el<br />
subcapitulo anterior.
IV. LA HERRAMIENTA DE APOYO AL DISEÑO DE HEURÍSTICAS<br />
DE BÚSQUEDA LOCAL.<br />
Gracias a todos los conceptos defmidos en el capítulo anterior, se estableció<br />
cuál es el conocimiento que un diseñador necesita especificar para construir una<br />
heurística basada en búsqueda local y cómo buscar.<br />
El diseñador necesita definir el grafo de heurísticas, lo cual implica defmir<br />
cada heurística contextual Hc(x,$)=(FJ-f,2), donde H corresponde a la heurística de<br />
búsqueda local H(x)(V,6H,aH,A,Q). Para definir la vecindad de cada una de ellas, se<br />
expresa el conocimiento estructural en base a asociaciones, condiciones y funciones de<br />
evaluación sobre una caracterización del problema 8 .<br />
Sin embargo todavía se necesita dar un par de pasos más para lograr el<br />
objetivo de implementar una herramienta que apoye el desarrollo de heurísticas. Dicho<br />
paso es definir cómo expresar estructuradamente el conocimiento anteriormente<br />
descrito.<br />
4.1 LS-! : Un Lenguaje para Definir Heurísticas de Búsqueda<br />
El conocimiento que es necesario incorporar y los requisitos definidos en el<br />
subcapítulo 2.4 pueden ser estructurados en dos partes:<br />
a) Conexión con la estructura de datos defmida por el diseñador : corresponde a<br />
establecer cuales son los métodos de la estructura de datos que representa el modelo<br />
del problema que corresponden a la función objetivo y a la caracterización del<br />
problema.<br />
Ver definición 3.1.<br />
M.
) Definición del grafo de heurísticas : Con respecto al algoritmo de la figura 3.3a, la<br />
defmición del grafo comprende la especificación de Pgjobal(X), & y crG y la<br />
defmición de cada nodo Hc(x,$) = ( 1) y H(x)=(V, 8H, aH A, f 2)<br />
La especificación de dicho conocimiento se realizará a través del lenguaje de<br />
búsqueda local (LS- 1), el cual se ha defmido en 4 bloques : el bloque de conexión con la<br />
estructura de datos, el bloque de interrelación entre heurísticas, el bloque de defmición<br />
de una heurística contextual y el bloque de defmición de asociación.<br />
Cada uno de dichos bloques captura parte del conocimiento que el diseñador<br />
necesita especificar. El bloque de conexión captura el conocimiento referente a la<br />
interfaz con la estructura de datos del problema, mientras que los restantes bloques<br />
jerarquizan la información necesaria para especificar el grafo de la heurística.<br />
Cada bloque está compuesto por una serie de palabras reservadas o<br />
primitivas que son las instrucciones que el lenguaje provee. En cada bloque existe un<br />
orden preestablecido para la ocurrencia de dichas palabras y también dicho orden existe<br />
entre los bloques. Ese orden defme la gramática del lenguaje cuya estructura general se<br />
muestra en la figura 4.1. Para revisarla en mayor detalle, se recomienda consultar el<br />
anexo B.<br />
67
sokition<br />
objective<br />
______<br />
1<br />
Interfaz de Conexión<br />
con la estructura de<br />
include<br />
hash<br />
/<br />
datos<br />
domoki piecond : 'P<br />
domei<br />
begn,<br />
global stop<br />
pe,tuiD: = (III::)-<br />
Postefec:= E<br />
befoi:=A<br />
after o<br />
Ch L:<br />
O<br />
global accept := acJ<br />
end dfs/bfs<br />
Interrelaclón entre<br />
heuristicas<br />
stop:=5 joi7(A, ... Z)<br />
unn(A,..., Z)<br />
subset(A)<br />
intersec(A..., Z)<br />
peuImakeall<br />
accept a<br />
diff(a,b)<br />
Definición de<br />
asociación<br />
Definición de heuristica<br />
contextual<br />
Figura 4.1: Estructura general del lenguaje.<br />
E'<br />
En la siguientes secciones se comentará el uso de las palabras reservadas en<br />
el contexto de cada bloque.<br />
4.1.1 Bloque de conexión con la estructura de datos.<br />
En este bloque, las primitivas del lenguaje permiten establecer qué métodos<br />
del objeto construido por el usuario corresponden a ciertos aspectos del conocimiento<br />
que el diseñador debe proveer como son la función objetivo y la caracterización del<br />
problema.<br />
68
La palabra reservada solution establece cuál es el nombre que tendrá la<br />
estructura de datos que representa una solución factible del problema y los archivos que<br />
contienen esa defmición se indica con la palabra clave include. La función objetivo se<br />
define por medio de la primitiva objective y la función de codificación de la solución<br />
para el uso de tabu Search se especifica a través de la primitiva hash. Al mismo tiempo<br />
la primitiva domain defme la cardinalidad de cada uno de los elementos de la<br />
caracterización del problema.<br />
4.1.2 Bloque de interrelación entre heurísticas.<br />
En este bloque se especifica el grafo de la heurística y como se lleva cabo el<br />
algoritmo de large-step generalizado que se defmió en la sección 3.2.2.<br />
La primitiva global stop permite definir el criterio de detención global 83<br />
de la búsqueda y también permite incorporar código para especificar, por ejemplo,<br />
resultados de eliminación. Las primitivas perturb y global accept permiten definir<br />
Pglobal(X) y aG respectivamente por lo que deben especificarse juntas.<br />
Además este bloque esta compuesto por una lista de bloques de heurísticas<br />
contextuales cada uno de los cuales define un algoritmo de búsqueda local con sus<br />
respectivas precondiciones y efectos.<br />
4.1.3 Bloque de definición de asociación<br />
En este bloque las primitivas del lenguaje definen la vecindad en base a<br />
asociaciones, condiciones y funciones de evaluación. En la defmición de la vecindad<br />
intervienen las primitivas join, union, intersec, diff, subset, max, min y random que<br />
se conocen como operadores de vecindad. Estos operadores pueden clasificarse en dos<br />
tipos : operadores de lista y operadores de valuación.
Los operadores de lista están basados en el álgebra de asociaciones defmidas<br />
en la sección 3.1.2 y permiten manipular las listas de argumentos para crear la lista de<br />
candidatos, como se defme a continuación.<br />
Definición 4.1: Operadores de lista.<br />
de asociaciones. U.<br />
En la tabla 4.1, se muestran los operadores y la equivalencia con el álgebra<br />
Tabla 4.1: Operadoresde la defmición 4.1.<br />
Nombre Operación Equivalencia<br />
,4) ([]"<br />
Reunión join(Á41 ,,. . . ,.4)<br />
Unión union(241 ,42,.. (U1,4i<br />
Intersección intersec(,1, 1 . .<br />
Diferencia diff(Z,,1 1 ,.42) P1(.41 4)<br />
Subconjunto subset(Á,,4) p2(,4)<br />
Notar que los operadores de lista sólo restringen una asociación o amplían la<br />
lista de argumentos que la defme. Eso significa que estos operadores sólo ven las<br />
asociaciones con respecto a las condiciones que ellas deben satisfacer en relación a la<br />
estructura del problema.<br />
Es necesario entonces establecer lo mismo con respecto a la evaluación que<br />
pueda tener una lista de argumentos, que la puede hacer más o menos atractiva como<br />
movida o argumento de ella. Para ello se definen los operadores de valuación:<br />
70
Defmición 4.2 : Operadores de valuación.<br />
Se defme como operador máximo al operador max(J,k,,1) equivalente<br />
ay f0 (.4). donde 0(v) =maxk(v) entrega verdadero si r pertenece a los k mayores<br />
valores que entrega la función j(v). Del mismo modo, el operador mínimo<br />
min( , k,.4) equivale a y (.4), donde 0(v) =mink(v) entrega verdadero si r pertenece a<br />
los k menores valores. Si k(v ) es un valor aleatorio con una distribución uniforme en<br />
[1 , ], entonces se define el operador random(k4) como max( ,- , k,4)•.<br />
En esta sección para mayor claridad en la exposición, se simplificó un poco<br />
la sintaxis de los operadores de lista, pues ellos son de la forma:<br />
op_Iista(2,a in A, b in B, . . .z in Z)<br />
Donde A, B, . . .,Z corresponden al nombre de una asociación definida<br />
anteriormente en otro bloque de vecindad. Las variables a,b, . . ., z son listas de<br />
argumentos pertenecientes a las asociaciones anteriores que permiten defmir la<br />
condición A. El bloque de asociación tiene la forma:<br />
asociación.<br />
nombre_asoc := op_vaI(fk(op_Iista(2, a in A, b in B, . .z in Z)))<br />
De esta manera, nombre_asoc puede ser utilizado por otro bloque de<br />
4.1.4 Bloque de heurísticas contextuales.<br />
Este bloque defme un nodo del grafo de heurísticas. La primitiva precond<br />
define la precondición '?de la heurística contextual mientras que postejec defme el<br />
efecto I. Además, en cada iteración de la heurística de búsqueda local se calcula la<br />
caracterización del problema a través de la función A. Los métodos que implementan<br />
71
ese cálculo deben indicarse de alguna forma, lo cual se logra utilizando la primitiva<br />
before. Por otro lado, la primitiva after permite definir la función ) que ajusta<br />
parámetros de la estructura de control.<br />
El criterio de detención C5H se defme a través de la palabra reservada stop y<br />
mientras que el criterio de aceptación aH se especiflca a través de la primitiva accept.<br />
Dentro de este bloque se especifica una lista de bloques de asociación. Esa<br />
lista construye la vecindad al componer varios de los operadores de lista y valuación<br />
para construir una lista de candidatos como se muestra en la figura 4.2.<br />
asoc_1 := op_val(f_1,k_1(op_lista(,._1,a in A, b in B, .. .z fr, Z)))<br />
asoc_2 : op_val(f_2,k_2(op_lista(.%_2,a in A, b in 8,.. .z in Z)))<br />
asoc_n op_val (f_ .n, k_n(op_lista(._n, a in A, b in 8,.. .z in Z)))<br />
Figura 4.2 : Lista de bloques de asociación.<br />
Para terminar de defmir la heurística contextual solo resta especificar la<br />
forma de aplicar el operador de perturbación P(m,x) y escoger el siguiente estado del<br />
espacio de búsqueda. Para ello se escoge una de las primitivas que escogen el siguiente<br />
estado del espacio de búsqueda perturb o makeall sobre una de las asociaciones<br />
definidas en la lista de bloques.<br />
Defmición 4.3 : Operadores que escogen el siguiente estado.<br />
Se defme como operador de evaluación de vecindad al procedimiento<br />
perturb(,P, como el algoritmo de la figura 4.3a. El operador de cambio total<br />
72
corresponde al procedimiento makeall(] , P,,1) definido en la figura 4.3b. En ambas<br />
figuras la función C( ) que calcula la asociación 4 de acuerdo a la especificación<br />
realizada en los bloques de asociación U.<br />
Ambos operadores definen la función NH, que se utiliza en el algoritmo que<br />
ejecuta cada heurística, según la figura 3.5. La diferencia entre ambos operadores se<br />
muestra en la figura 4.4.<br />
II-<br />
a) procedure T)<br />
begin<br />
for (me ,)<br />
begin<br />
:= P(mx<br />
end<br />
return best<br />
end N11<br />
If(jz)
4.2 Cómo Construir un Lenguaje Gráfico a Partir de LS-1.<br />
Como se mostró en la figura 4.2, la lista de candidatos que especificada por<br />
una lista de bloques de asociaciones. Sin embargo para que dicha definición tenga<br />
sentido tienen que cumplirse tres propiedades.<br />
Propiedad 4. 1 : La especificación no debe contener deadlocks.<br />
En un bloque que esté en la posición ¡ de la lista la asociación sólo puede<br />
recibir como argumentos a aquellas que hayan sido definidas en los bloques] con] < i.<br />
.<br />
De no ser así, será imposible calcular la lista de candidatos porque existirá<br />
un ciclo entre dos asociaciones puesto que una es argumento de la otra y viceversa.<br />
Propiedad 4.2 : La especificación no contiene bloques irrelevantes.<br />
Una asociación definida en un bloque i debe ser invocada como argumento<br />
por alguna asociación defmida en un bloque], conj> iU<br />
Si esta propiedad no se cumpliera significa que la asociación defmida en<br />
dicho bloque es irrelevante y por lo tanto puede ser eliminada.<br />
Propiedad 4.3:<br />
cambio de estado.<br />
La asociación defmida en el último bloque es el argumento al operador de<br />
Si existen n bloques y un bloque i (i < n) es el argumento del operador de<br />
cambio de estado todos los demás bloques] (con]t> n) son irrelevantes por la propiedad<br />
4.1.<br />
74
Gracias a estas propiedades, es posible definir una forma de representar<br />
gráficamente la vecindad de la heurística contextual. Para lo cual se introducirán los<br />
siguientes conceptos.<br />
Definición 4.4 : Nivel de un nodo.<br />
Un nodo intermedio se dice de nivel 1+1 si es que todo arco que lo apunta<br />
corresponde a un nodo de niveijU<br />
Defmición 4.5 : Nodo inicial.<br />
Sea 4i una asociación atómica sobre una caracterización e de acuerdo a la<br />
defmición 3.3, cuyo encabezado ? corresponde a i, con i=l, . . .,q. Se definirá como nodo<br />
inicial al nodo representado por la tapia n = Aj. Estos nodos tienen nivel OU.<br />
Un nodo inicial corresponde a un cluster dentro de la caracterización del<br />
problema y corresponde a la asociación más simple a partir de las cuales se puede<br />
aplicar operaciones de lista y de valuación.<br />
Definición 4.6 : Nodo intermedio.<br />
Sean L una operación de lista de argumento Á. y V una operación de<br />
valuación de argumentosJ(v) yj. Sea k la andad de la operación de lista. Defmiremos<br />
como nodo intermedio a un nodo representado por la tapia n'=(L,2,k, V, f(v),j)•.<br />
Defmición 4.7 Nodo final.<br />
Sea K una operación de cambio de estado de parámetros P y ]'(v). Se<br />
llamará nodo final al nodo representado por la tupla t/=(K,P, 7)•.<br />
75
Un nodo intermedio defme un bloque de asociaciones en el lenguaje,<br />
mientras que un nodo final define la operación de cambio de estado. La especificación<br />
gráfica corresponde a defmir un grafo de nodos iniciales, intermedios y final que<br />
satisfaga las propiedades 4.1 a 4.3 y que calcule una asociación de la andad de la<br />
movida.<br />
Defmición 4.8: Grafo de vecindad.<br />
Sea N5 = { n t ,..., n } el conjunto de nodos iniciales, N' un conjunto de nodos<br />
intermedios y i/un nodo final. Sean pos(u, y) la posición que ocupa la operación defmida<br />
por el nodo u como argumento de la operación y y path(u,v) un predicado que devuelve<br />
verdadero si es que existe un camino entre el nodo u y el nodo y. Sea N=NuNu(n) y<br />
A{(u,v)} un conjunto de arcos con u e (N3uM), y e Y y arg(v) una función que<br />
retorna el número de arcos que inciden en un nodo y. Entonces se defme como grafo de<br />
la vecindad al grafo acíclico y dirigido G=(N,A) que satisface que:<br />
• ze(JVuN t) 1<br />
(z,/) e A A _,we(NS uN 1)<br />
: (w,d)eA.<br />
Vn eN1 3u E NV E IV path(u,v)Apath(v,z)<br />
• Vm=(L,2,k,V,j(v)j)eNarg(m)=kU.<br />
Los nodos representan la aplicación de los operadores de vecindad. Cada<br />
arco incidente representa un argumento para el operador, por lo que dependiendo de su<br />
tipo, se puede chequear si el número de argumentos es correcto o no. Por ejemplo, un<br />
nodo que represente una operación diff sólo tendrá dos arcos incidentes. Los arcos que<br />
salen de este tipo de nodos representan el resultado de la operación.<br />
En la representación gráfica, cada uno de los nodos tendrá asociado un icono<br />
al cual el diseñador especificará los atributos que señalan las tuplas de las definiciones<br />
4.5 a 4.7. En el caso de los nodos iniciales eso no es necesario porque son los elementos<br />
básicos sobre los cuales construir y por lo tanto se suponen preexistentes. El arco<br />
76
incidente hacia el nodo fmal representa la operación de perturbación y por eso solo<br />
existe uno. La forma general del grafo que define de la vecindad puede verse en la<br />
figura 4.5.<br />
:<br />
Nivel O Nivel 1 Nivel j-2 Nivel j-1 Nivel i<br />
AsoOaaones atOmicas<br />
Ejemplo 4.1: Grafo de vecindad.<br />
Listad.<br />
cda1os<br />
Figura 4.5 : Vecindad representada por un grafo<br />
En la figura 4.6b se muestra como se representa en un grafo la vecindad<br />
representada en la figura 4.6a, donde A, B, C y D son asociaciones atómicas. Por<br />
convención, colocaremos a la izquierda de las figuras las asociaciones atómicas y a la<br />
derecha el nodo que representa la vecindad, con una letra P o M para distinguir si la<br />
nueva solución de construye a través de una operación perturb o una makeall. Se<br />
prescindió de especificar las funciones de restricción y valuación por motivos de<br />
claridad de la figura (.<br />
77
a)<br />
asocl in(ersec(a in A, b in 8)<br />
asoc_2 union(x in asoc_1, c in C, d ir, d)<br />
pei?urb(asoc_2)<br />
4.3 Búsqueda Paralela<br />
Figura 4.6 Ejemplo de vecindad representada por un grafo<br />
b)<br />
El uso de la representación anterior no solamente es importante porque<br />
permite implementar una interfaz de usuario para defmir vecindades, sino que también<br />
permite especificar la vecindad como un sistema concurrente. Eso es sumamente<br />
importante ya que es posible construir un sistema que genere un algoritmo de búsqueda<br />
paralela basado en el análisis de la especificación gráfica. Un algoritmo de búsqueda<br />
paralela utiliza más de una CPU para realizar su misión lo que puede ser especialmente<br />
necesario en el caso de instancias de problemas de gran tamaño., o defmiciones de<br />
clusters muy complejas.<br />
4.3.1 Redes de Petri<br />
Un sistema concurrente se puede especificar a través de una red de Petri<br />
[Ghezzi 91]. Una red de ese tipo modela la ejecución de eventos o acciones que deben<br />
realizarse cuando se cumplen ciertas condiciones. Si pensamos en que cada evento<br />
ocurre gracias a un proceso, entonces una red de Petri permite modelar tanto el<br />
paralelismo como el sincronismo de los procesos en un sistema. Los procesos pueden<br />
existir tanto en un sistema monoprocesador como en uno distribuido, de ahí la<br />
importancia de la modelación. Por lo tanto, para mostrar que la definición de la<br />
vecindad especifica un sistema distribuido basta mostrar que puede transformarse en<br />
una red de Petri.<br />
78
Una red de ese tipo es un grafo que queda defmido a través de un conjunto<br />
de lugares, de transiciones, de flechas y un estado inicial. Una transición representa, en<br />
general, la realización de un transacción de algún tipo. Lugares y transiciones se unen<br />
por flechas que determinan que lugares pertenecen a que transiciones. Cada lugar<br />
almacena un número preestablecido de tokens y se denomina lugares de entrada de<br />
una transición a aquellos nodos que poseen arcos que inciden en el que representa a la<br />
transición. Los lugares de salida, en cambio, son aquellos nodos en los cuales incide un<br />
arco desde la misma transición.<br />
Una transición se habilita, es decir, puede ejecutarse, si en cada lugar de<br />
entrada de la transición existe por lo menos un token. La transición se ejecuta<br />
eliminando un token de cada lugar de entrada y poniendo uno en cada lugar de salida. Si<br />
un lugar de entrada pertenece a más de una transición, entonces la red es no<br />
determinística, puesto que más de una transición puede quedar habilitada a la vez. Para<br />
resolver este problema es posible asociar a cada transición cierta prioridad. La prioridad<br />
determina el orden en el cual dos transacciones son disparadas si es que están<br />
habilitadas al mismo tiempo. Finalmente se defme un estado de la red, asignando<br />
inicialmente tokens a cada lugar.<br />
Ejemplo 4.2 Red de Petri.<br />
Si se representa una transacción con cuadrados y cada lugar con círculos la<br />
figura 4.5 representa una red de Petri donde, por ejemplo, L3 y L4 son lugares de entrada<br />
para la transición T3, mientras que L1 y L3 son lugares de salida para la misma<br />
transición. Notar que si L3, L4 y L5 tienen un token cada uno, quedan habilitadas tanto<br />
T3 como T4 y la elección de cualquiera de ellas para ejecutarse es totalmente aleatoria.<br />
El estado inicial de la red queda determinada con las fichas negras en cada lugar, cada<br />
una de las cuales corresponde a un token I.<br />
79
m<br />
Figura 4.7 : Ejemplo de una red de Petri.<br />
4.3.2 Especificación concurrente del grafo de vecindad<br />
El grafo que representa la vecindad será transformado en una red de Petri a<br />
través de 2 pasos. El primero de ellos tomará cada nodo del grafo de la vecindad y lo<br />
transformará en una red de Petri básica y la interconexión entre los lugares y<br />
transiciones de ellas determina la red completa. El segundo, corresponde a un proceso<br />
de refinamiento, el cual permite detallar aún más los nodos que representan operaciones<br />
de vecindad, de forma de incrementar el paralelismo y limitar el sincronismo.<br />
El primer paso se lleva a cabo de la siguiente forma. Cada nodo del grafo de<br />
la vecindad que represente una asociación atómica se reemplaza por la red que se<br />
muestra en la figura 4.8a y los demás (incluyendo el nodo final de perturbación) por la<br />
que se describe en la figura 4.8b, que posee tantos lugares de entradas como arcos<br />
incidentes en el nodo del grafo original. Las transiciones representan la ejecución de la<br />
operación propiamente tal y los lugares de entrada representan que los argumentos de la<br />
operación ya han sido previamente calculados, razón por la cual las asociaciones<br />
atómicas están siempre habilitadas.<br />
Con esta transformación, cada arco que unía dos nodos en el grafo de la<br />
vecindad, ahora une la transición correspondiente al primer nodo con un único lugar de<br />
entrada del segundo. De esta manera también queda descrito el estado inicial de la red,<br />
80
ya que en cada lugar de entrada de las asociaciones atómicas existe un token. La red<br />
resultante no puede tener ciclos, ya que el grafo de le da origen es acíclico. La<br />
construcción también asegura que la red es determinística, puesto que un lugar de<br />
entrada no pertenece a más de una transición, por lo que nunca se tendrá que escoger<br />
cuál se ejecuta primero.<br />
Si una transición tiene más de un lugar de salida hay acceso simultáneo a la<br />
información que dicha transición produce y competencia de recursos entre las<br />
transiciones que quedan habilitadas. El número de tokens en cada lugar siempre es uno,<br />
por la forma en que se defmió la red. Una transición con varios lugares de entrada puede<br />
tener tokens en varios de ellos, pero la transición debe esperar que se terminen de<br />
ejecutar otras para empezar a ejecutarse.<br />
Las propiedades de las operaciones de producto, unión e intersección del<br />
álgebra de asociaciones que se demuestran en el anexo B permiten descomponer los<br />
nodos intermedios de k argumentos en nodos de menos argumentos con ello, se puede<br />
comenzar el cálculo de la operación con las transiciones que primero se completen e<br />
incrementar el paralelismo.<br />
Figura 4.8 : Representación de cada nodo para especificar una red de Petri.<br />
Entonces, el segundo paso de la transformación es subdividir las<br />
transiciones que provienen de nodos intermedios del grafo de vecindad de forma de<br />
81
incrementar el paralelismo con el cual la red puede ejecutarse. Por ejemplo, en la figura<br />
4.8c se muestra una transición proveniente de una operación join con 3 asociaciones<br />
como argumentos, y en la figura 4.8d como esa operación se puede descomponer. La<br />
propiedad de asociatividad que dicha operación posee hace que dicha descomposición<br />
también sea equivalente a la de la figura 4.8e.<br />
Ejemplo 4.3 Descomposición de una red que representa una vecindad.<br />
En la figura 4.9a, se puede ver como la vecindad defmida en el ejemplo 4.1<br />
queda especificada a través de una red de Petri, utilizando la primera etapa del proceso<br />
de transformación. Las transiciones de las asociaciones atómicas están siempre<br />
habilitadas por la definición anterior. Como la intersección habilita la ejecución de la<br />
unión, el proceso completo debe esperar hasta que el otro se finalice. Aplicando la<br />
segunda etapa, como se muestra en la figura 4.9b, la unión se calcula ahora de forma<br />
asociativa, por lo que la unión de C y D puede calcularse en forma paralela con la<br />
intersección entre A y B y el proceso de unión total sólo debe esperar el resultado de la<br />
intersección para completarse U.<br />
Figura 4.9 Representación de una vecindad como una red de Petri.<br />
Sin embargo, las mismas propiedades que permiten descomponer la red<br />
hacen que dicha descomposición no sea única, lo cual dificulta la automatización de<br />
dicho proceso. Una vez finalizada la descomposición, se obtiene un modelo que<br />
82
describe la vecindad como un sistema concurrente. Cada vez que se calcula la vecindad,<br />
el estado inicial corresponde al defmido por la transformación, donde existe un token<br />
por cada lugar de entrada de una asociación atómica.<br />
Finalmente, hay que destacar que si bien el modelo de defmición de<br />
vecindad permite especificar un sistema concurrente, el cuando utilizar mecanismos de<br />
paralelización depende de la instancia del problema que se esté resolviendo, como de la<br />
complejidad de la defmición de las asociaciones. El calcular la vecindad mediante un<br />
sistema distribuido tiene el overhead del intercambio de los mensajes, por lo tanto, si el<br />
tiempo en calcular una asociación es menor que el que toma intercambiar mensajes no<br />
vale la pena utilizar dicho sistema. Además el manejo de la consistencia entre los<br />
distintos procesos también es un problema, por lo que el esfuerzo de paralelizar el<br />
cálculo debe evaluarse acuciosamente.<br />
4.4 Implementación de la Herramienta<br />
Hasta ahora se ha defmido en este capítulo cómo establecer una<br />
especificación estructurada del conocimiento necesario para del desarrollo de heurísticas<br />
de búsqueda. Todavía resta procesar dicha especificación para producir automática el<br />
programa computacional que implemente el algoritmo descrito en la figura 3.3 del<br />
capítulo anterior.<br />
La herramienta consiste en un compilador que toma la especificación escrita<br />
en lenguaje LS-1 y genera a partir de ella el código computacional en algún lenguaje de<br />
programación que implementa las heurísticas defmida por el diseñador. La aplicación se<br />
genera compilando dicho código. La implementación de este prototipo no incorpora<br />
capacidades de paralelización del algoritmo de búsqueda. Todo el proceso se<br />
esquematiza en la figura 4.1Oa.<br />
83
al<br />
Dts&lador<br />
Códgo Reprcnaco Acaonoa fi<br />
Cócágo C++ y<br />
compóoón<br />
b)<br />
Ot 1<br />
I—DIbuÍ005,11<br />
bujos<br />
Cóg<br />
lador<br />
LS- 1 ______ l<br />
CódigoC<br />
compd.<br />
Programado<br />
i<br />
Local Search ea,vhj ____<br />
RcprcscntacI ón1<br />
co tddProblana)<br />
Cócigo C++<br />
Figura 4.10 : Sistemas implementado y propuesto.<br />
Para la implementación computacional tanto de esta herramienta como del<br />
programa que implementa la búsqueda, se decidió utilizar el enfoque de orientación a<br />
objetos por las razones que se explicaron en las secciones 2.3 y 2.4. Dentro de los<br />
lenguajes que utilizan este enfoque, se decidió usar C++ porque:<br />
a) Es un lenguaje cuya ejecución ha demostrado ser eficiente en cuanto al desempeño<br />
comparado con otros lenguajes que no poseen orientación al objeto.<br />
b) La existencia de distintas implementaciones de este lenguaje en distintas<br />
arquitecturas permite, tomando los resguardos necesarios, escribir un código<br />
computacional que sea portable. Esto quiere decir que el mismo código puede<br />
compilarse y comportarse de la misma manera en esas distintas arquitecturas.<br />
Lo anterior, significa que el diseñador también debe implementar la<br />
estructura de datos que representa el problema utilizando este lenguaje.<br />
La herramienta implementada gracias a los conceptos definidos en 4.2<br />
también puede incorporar un ambiente gráfico como el descrito en [Pinedo 931. Para<br />
ello bastará agregar un editor gráfico. Dicho editor es la fachada del sistema en la cual el<br />
diseñador especifica las heurísticas a través de acciones gráficas. El editor por su parte,<br />
provee respuesta al usuario mediante el despliegue de los dibujos que son consecuencia<br />
84
de dichas acciones gráficas. La interrelación de los componentes antiguos del sistema<br />
con este nuevo elemento se especifican en la figura 4.1 Ob.<br />
El compilador esta implementado de forma tal que el diseñador puede omitir<br />
parte de la información en la especificación. En el caso del bloque de asociaciones, el<br />
diseñador puede omitir las condiciones para los operadores de listas. Del mismo modo,<br />
puede omitir el uso de los operadores de valuación. El diseñador debe expresar las<br />
condiciones y funciones de valuación en forma de código en C++.<br />
En el caso del bloque de heurística contextual, se pueden omitir la<br />
precondición y el efecto. Lo mismo puede hacerse con la función ? en cuyo caso el<br />
intérprete asume que su utilizará la función objetivo para evaluar la vecindad.<br />
La herramienta permite especificar algunos elementos de la búsqueda en<br />
forma estándar. Dichos elementos son:<br />
4.4.1 Criterios de detención.<br />
Los criterios estándar utilizar para terminar el proceso de búsqueda pueden<br />
ser para el algoritmo completo o para cada heurística contextual. En el caso del<br />
algoritmo completo, el criterio es en base al número de iteraciones mayores que el<br />
algoritmo ejecuta. En el caso de las heurísticas contextuales cada una de ellas termina ya<br />
sea por el número de iteraciones que ella ejecuta, el tiempo que se lleva ejecutando o el<br />
número de iteraciones que la heurística lleva sin encontrar una mejor solución. En<br />
ambos casos, el usuario puede agregar condiciones en forma de código en C++.<br />
4.4.2 Criterios de aceptación<br />
Los criterios de aceptación que la herramienta provee en forma estándar son<br />
Simulated annealing y hill climbing. Para el simulated annealing, se definió un cooling<br />
schedule logarítmico, el cual ha mostrado buenos resultados tanto de convergencia<br />
85
[Hajek 881 como de eficacia [van Laarhoven 92]. Dicho schedule se muestra en la<br />
ecuación 4.1, donde k representa el número de la iteración actual y ro la temperatura<br />
inicial que debe ser ajustada.<br />
1092(1 + k)<br />
86<br />
(4.1)<br />
El diseñador sólo debe especificar como parámetro inicial r0. Gracias a las<br />
propiedades que dicho parámetro debe poseer para garantizar convergencia y que se<br />
demuestran en [Hajek 881 se definió un a forma de corregir la estimación inicial del<br />
diseñador automáticamente. Para ello se estima l'o en base a la diferencia en valor<br />
absoluto entre el peor y el mejor valor encontrados hasta el momento.<br />
4.4.3 Recorrido del grafo<br />
Se entregan dos maneras de recorrer el grafo de heurísticas que<br />
corresponden a la búsqueda DFS y BFS.
V. APLICACIONES<br />
5.1 Minimizar la Tardanza Ponderada en un Job Shop<br />
Como pudo verse en el capítulo N°2, se han propuesto muchos algoritmos<br />
para resolver el problema del Job Shop. El makespan, que mide el tiempo en que opera<br />
el taller, es una de las funciones más utilizadas en lo que este problema se refiere, sin<br />
embargo, en este trabajo se utilizará la tardanza ponderada total (total weighted<br />
tardiness) que es la suma ponderada de los tardanza de los trabajos. Recordemos que la<br />
tardanza total ponderada [Pinedo 951 se defme como:<br />
T1 = wmax(O,C -d i ) (5.1)<br />
Donde C es el tiempo en el cual el trabajo j termina de procesarse, d el<br />
tiempo donde dicho trabajo debe entregarse listo al cliente y w es la multa ($/unidad de<br />
tiempo) por atraso. Adicionalmente los trabajos ingresarán en un determinado instante<br />
de tiempo fijo r al sistema. Por lo tanto el problema corresponde a Jm 1 rj, d3 1 EwT.<br />
Esta función objetivo es sumamente importante por las implicaciones<br />
económicas que ella tiene, porque si bien el makespan minimiza el costo de operación<br />
del taller, lo verdaderamente importante es orientar el sistema productivo a la<br />
satisfacción del cliente. Como muchas veces no es posible entregarle a todos los<br />
productos a tiempo, se necesita minimizar el costo del retraso en la entrega.<br />
En lo restante de este capítulo se utilizará la flotación para el problema del<br />
job shop introducida en el ejemplo 2.2.<br />
87
5.1.1 Conceptuahzación del problema<br />
a) Representación del Problema.<br />
Para representar el problema JmIIC,,,<br />
se utiliza el grafo disyuntivo<br />
planteado en [Roy 641. Dicha representación consiste en defmir un grafo dirigido y<br />
acíclico cuyos nodos corresponden a las operaciones y los arcos representan tanto la<br />
secuencia de pasos para construir cada trabajo, como el orden en que las operaciones se<br />
procesan en cada máquina. Resolver el problema significa encontrar una asignación de<br />
arcos que minimice el camino más largo desde el nodo origen al nodo destino del grafo<br />
lo que corresponde en el problema original al makespan.<br />
Para representar JmIr1,dIwT se utilizará el mismo grafo al que se le<br />
agregan nuevos nodos sumideros para el cálculo de la nueva función objetivo.<br />
Definición 5.1: Grafo disjuntivo para .Jm Irj djIEwjTj<br />
La mayor parte de la flotación fue introducida en el ejemplo 2.2.<br />
• Sea J,, el trabajo al que pertenece la operación y, M la máquina que atiende a la<br />
operación y y - la relación binaria que descompone al conjunto O en las cadenas de<br />
operaciones que constituyen cada trabajo [van Laarhoven 921.<br />
• Sea V= O u {S, S1,..., S} donde S y {Sk}k& corresponden a operaciones ficticias<br />
que denotan el nodo fuente y los nodos sumideros del grafo.<br />
• Sea A = {(v,w)I v,w EO AV-*W }u{(S,w)IwO,—vEO :v—*w }U{(V,Sk) VEO, Jk,<br />
—wEO :v—w, k=1.....n}. El primer conjunto representa las operaciones<br />
consecutivas del mismo trabajo y el largo de un arco (v,w) está dado por el tiempo de<br />
procesamiento Pv de la operación y. El segundo conjunto corresponde a los arcos que<br />
unen el nodo origen con la primera operación en la secuencia de cada trabajo y el<br />
largo de un arco corresponde al primer instante de tiempo en que dicha operación<br />
está disponible (release time). El tercer conjunto une la última operación de la<br />
88
secuencia de cada trabajo con el nodo sumidero de dicho trabajo. El largo del arco<br />
corresponde nuevamente al tiempo de procesamiento Pv de la operación y.<br />
. Sea E {(v,w) 1<br />
procesan en una misma máquina.<br />
M=M} los arcos no dirigidos que conectan las operaciones que se<br />
Al conjunto de arcos A se le denominará arcos conjuntivos, mientras al<br />
conjunto E se le denominará arcos disyuntivos. Entonces el modelo de grafo disyuntivo<br />
se define como G=(J'ÇA,E)U.<br />
Ejemplo 5.1 : Grafo disjuntivo paraf4 Ir,dj vjT3<br />
En la tabla 5.1 se muestran los datos para una instancia de Jm Iii,4IwT,<br />
con 4 trabajos y 4 máquinas, en ella se encuentran el peso o prioridad que tiene cada<br />
trabajo, el instante en que el trabajo está disponible para comenzar su procesamiento y<br />
cuando debe estar listo. En la figura 5.1, se representa parcialmente el grafo disyuntivo<br />
para este problema. En el dibujo, solo se representan solo los arcos no dirigidos<br />
correspondientes a la máquina 3 U.<br />
Tabla 5.1 : Instancia de Jmfr,,dj wTj<br />
Trabajo w, r, d1 Secuencia de Tiempos de<br />
Máquinas procesamiento<br />
1 3 0 25 1,2,3,4 P111°,P213,P316,P414<br />
2 2 7 25 2,1,3 P227,P128,P323<br />
3 1 8 21 4,1,2 P435,P131,P237<br />
4 1 5 26 1,4,2,3 P142,2444,2245,P346<br />
89
=a.. 7 3<br />
42,4 3,4 S,<br />
Figura 5.1: Representación de grafo disyuntivo para J4Ir,d1Jw1T.<br />
Una solución para este problema consiste en a asignar orientación a cada<br />
arco disyuntivo que une dos operaciones que se procesan en la misma máquina, de esta<br />
forma los arcos disyuntivos representan la precedencia que tienen en el procesamiento<br />
los distintos trabajos.<br />
Definición 5.2 : Fecha de inicio de una operación, fecha de términación de un<br />
trabajo, makespan.y tardanza ponderada total<br />
Sea G un grafo que representa una solución factible y L(u,v) el camino más<br />
largo entre los nodos u y y de dicho grafo. Se defme la fecha de inicio de una operación<br />
w como rL(S,w), la fecha de término de un trabajo 1 por C1 =L (S.S), mientras que el<br />
makespan está defmido por C = max(C)U.<br />
l5j:In<br />
Una solución factible corresponde a una asignación de la orientación de los<br />
arcos disyuntivos que produce un grafo acíclico, puesto que en caso contrario el camino<br />
más largo entre dos nodos que pertenecen al ciclo, de acuerdo a la defmición 5.2, sería<br />
infinito.<br />
wi
Ejemplo 5.2 : Solución factible para J4 IdjIwTj.<br />
La tabla 5.2 corresponde a una solución factible para el problema del<br />
ejemplo 5.1. Los arcos disyuntivos para las máquinas 1 y 3 en esta solución se muestran<br />
en la figura 5.2a U.<br />
S5.<br />
55<br />
..(zi)<br />
Tabla 5.2 : Solución factible para J4Ir,djIZwT.<br />
Máquina Orden de procesamiento<br />
/ .<br />
1.3 2.3<br />
4.4 )<br />
« 2.4 3.4<br />
¡55_5-<br />
2 (2,2),(2, 1 ),(2,4),(2,3)<br />
3 (3,1),(3,2),(3,4)<br />
4 (4,3),(4,4),(4,1) iJ<br />
..<br />
( ø"®\<br />
.. j 4.3 1.3 2.3<br />
/_•5<br />
s )<br />
1.4 4.4 24 • 3.4 • s 1<br />
Figura 5.2 : Representación de una solución factible en el grafo disyuntivo.<br />
Como puede observarse de la figura 5 .2a, la representación de grafo genera<br />
una serie de arcos disyuntivos redundantes. Si se eliminan dichos arcos [van Laarhoven<br />
92, Taillard 941 entonces cada nodo del grafo tiene a lo más 2 predecesores y 2<br />
sucesores, excepto los nodos que representan operaciones ficticias. La figura 5.2b<br />
muestra la solución factible del ejemplo 5.2, sin arcos redundantes.<br />
Defmición 5.3 Grafos redundantes y no redundantes,<br />
91
Sea x una solución factible. Si E. corresponde a la asignación de arcos<br />
disyuntivos para dicha solución que contiene arcos redundantes, mientras que E no los<br />
posee, entonces para cada solución factible se definen 2 grafos : = ( y, A u EJ<br />
yD =(V,AuE)U.<br />
Es fácil darse cuenta que para cualquier solución factible x y cualquier par<br />
de nodos u,v LD (u, y) = L D (u, y), Entonces, en ambos grafos tanto la fecha de inicio de<br />
una operación como la terminación de un trabajo tienen el mismo valor. Por lo tanto,<br />
para una misma solución factible en ambos grafos la función objetivo tiene el mismo<br />
valor.<br />
Si PJ (si existe) es la operación que pertenece al trabajo J, que precede a u,<br />
mientras que PM (si existe) corresponde a la operación de procesada en la máquina M<br />
justo antes de y. Entonces para cada operación w, en el grafo D se cumplen trivialmente<br />
las siguientes identidades<br />
r = max(rPM +pPM,rPJ +ppj ) (5.2)<br />
L D (w,S J )=max(L D (SM W ,S J ),L D (SJ W ,S f ))+pW (5.3)<br />
Lo anterior permite construir un algoritmo que calcula la función objetivo en<br />
0(N) [van Laarhoven 92, Taillard 941, donde N corresponde al número de operaciones<br />
del problema.<br />
b) Definición de los componentes de la resolución y clusters.<br />
Para construir una heurística de búsqueda local para este problema se debe<br />
defmir los componentes de la resolución que caracterizarán cada solución factible del<br />
problema. Con ello se podrán defmir los cluster que constituyen la caracterización del<br />
problema según la definición 3.1. Para ello se introducirán nuevos conceptos:<br />
92
Definición 5.4 : Fecha de término y tardanza relativas de una operación.<br />
Se defme como la fecha de entrega (due time) de la operación w, con<br />
respecto al trabajoj como d1 = d1 - L(w,S)+ p conj=1,...,n. Dado lo anterior, se<br />
defme como tardanza de una operación w con respecto a un trabajoj como:<br />
T =max(O,r+p—d)•.<br />
Notar que la defmición anterior sólo tiene sentido si es que existe un camino<br />
entre el nodo w y el nodo sumidero del trabajo j. Si ese camino no existe, entonces la<br />
fecha de entrega y tardanza relativas no están definidas.<br />
Lema 5.1.•<br />
Sea x una solución factible de JmIr,4IwT1 representada por el grafo<br />
disyuntivo no redundante D. Si T corresponde a la tardanza del trabajo j, entonces<br />
T=max{T).<br />
w&<br />
Demostración:<br />
Para cada trabajo j se puede dividir el conjunto O en dos subconjuntos<br />
disjuntos. El conjunto P de todas las operaciones que están en el(los) camino(s) de D<br />
que determinan Cj y PC el conjunto de las operaciones que no pertenece(n) a dicho(s)<br />
camino(s).<br />
i) Si WEP entonces se cumple trivialmente, gracias a las identidades 5.2, 5.3 y a la<br />
definición 5.2 que:<br />
L D (S,w)+L D (w,S J )=C) y r =C —L D (w,S J ) (5.4)<br />
Aplicando las ecuaciones 5.4 y la defmición 5.4 se tiene que<br />
93
ji) Si WEPC, entonces:<br />
= max(O, r,, +p» - d) = max(O, C. - L D (w, S3) + p, - d. + LD (w, S. ) - pJ<br />
= max(O, r +pw - d) = max(O, C1 -<br />
Por lo tanto si WEP, entonces T' = T.<br />
d.) = T1<br />
L D (S,w)+ L 0 (w,S)
grafo formado por operaciones y arcos críticos. A cada camino que determina C se le<br />
denominará camino crítico U.<br />
a) b)<br />
2 1 3 1 4 1 S<br />
Figura 5.3 : Arcos, operaciones y grafo crítico para J4<br />
En la figura 5.3a se muestra el grafo crítico para la solución factible del<br />
ejemplo 5.2. El grafo crítico representa una cadena de dependencia entre las operaciones<br />
que determina la terminación de cada trabajo. Es muy importante determinar esa cadena<br />
de dependencia porque cambiar el orden del secuenciamiento de las máquinas no solo<br />
afecta los trabajos a los cuales dichas operaciones pertenecen, sino que a todas las<br />
operaciones que pertenecen a la cadena.<br />
Se debe notar también que el grafo crítico está compuesto tanto por arcos<br />
conjuntivos como por disyuntivos y dada la representación del problema sólo es posible<br />
cambiar estos últimos. En la figura 5.3b se muestra el mismo grafo crítico de la figura<br />
5.3a, pero se han destacado los arcos disyuntivos del grafo. Sobre estos arcos se<br />
concentrará el esfuerzo de la búsqueda para producir una solución factible.<br />
:<br />
J3,4<br />
95
La caracterización de este problema e' corresponde a un único cluster<br />
defmido como el conjunto de todas los arcos disyuntivos w E E,, que pertenecen al grafo<br />
crítico. Si se defmen los dominios relevantes del problema como O, el conjunto de<br />
operaciones, A el conjunto de arcos conjuntivos y E,, el conjunto de arcos disyuntivos no<br />
redundantes para una solución y dada.<br />
Formalmente, el único cluster del problema ej(y)= (Fj,Rj,Gj,gj,(pj) está<br />
definido por Fj={3}, que corresponde al índice del conjunto de operaciones O, R<br />
corresponde a la función identidad y la partición gj=Q, donde:<br />
Q(w,y) {wE E,, I,i(wy)}={w=(u,v)E E,, 1 : TJ = T,,j = Tvj > Ot r u+pu rv }<br />
Por lo tanto, el único componente de la resolución que se utilizará para<br />
construir heurísticas para este problema corresponde al concepto de arco crítico.<br />
5.1.2 Definición de operadores<br />
Las variables de decisión para una solución factible de JmPr,d3Iw1T fueron<br />
caracterizadas por el concepto de arco crítico. Ahora corresponde defmir un operador<br />
que aplicar sobre dichas variables.<br />
Como se explicó anteriormente, el grafo crítico al que pertenecen estos arcos<br />
definen una cadena de precedencia que determina la fecha de terminación de cada<br />
trabajo y por lo tanto si este trabajo se retrasa o no. Entonces, es fácil intuir que si se<br />
cambia un arco crítico es posible también cambiar las fechas de terminación y por lo<br />
tanto mejorar la función objetivo del problema.<br />
Definición 5.6 : Operador de intercambio<br />
Sea x una solución factible para JmIr,djIwT y D el grafo disyuntivo no<br />
redundante que la representa. Sea (u,v) un arco disyuntivo y sean PM la operación que<br />
96
precede a u en la máquina M y SM la operación que sigue a y en la máquina M si es<br />
que ambas operaciones existen, antes de la perturbación. Entonces se defme como<br />
operación de intercambio la siguiente perturbación del grafo D:<br />
E = & -{(u,v),(PMu),(v,SM)} u {(PMv),(v,u), (u,SM)}<br />
Si Pm y/o Sm v no existen, entonces se eliminan de la operación defmida<br />
anteriormente los arcos que la(s) involucra(n). Esta operación produce como resultado el<br />
grafo no redundante D=(V,A LI Ej). La operación de intercambio define como invertir<br />
un arco del grafo D (figura 5.4)U.<br />
defmido:<br />
Lema 5.2<br />
antes:<br />
después: TSMV<br />
Figura 5.4 : Resultado del operador del intercambio.<br />
A continuación se demostrarán las propiedades que tiene el operador antes<br />
Aplicar la operación de intercambio sobre un arco crítico de una solución<br />
factible x representada por el grafo no redundante D siempre produce una nueva<br />
solución factible.<br />
97
Demostración:<br />
Sea (v,w) un arco crítico de D según la defmición 5.5 y sea L) ), el grafo la<br />
resultante de invertir dicho arco.<br />
Supongamos que D tiene un ciclo. Dado que x es una solución factible<br />
entonces el grafo D es acíclico. Por lo tanto, el ciclo sólo pudo provenir de invertir el<br />
arco (v,w). Entonces existe en D. un camino v,x,y,.. .,w el cual también existe en D. Por<br />
la definición 5.1, el largo del arco (v,w) es el mismo que el de (v,x) y el ciclo mínimo en<br />
D se produce con un camino v,x,w. En L), por lo anterior, r es al menos r + Pv+ Px lo<br />
cual es estrictamente mayor que r + Pv.<br />
Según la defmición 5.5, el arco (v,w) no sería critico, lo cual implica una<br />
contradicción que se produjo al suponer que el grafo era cíclico D y y que la solución y<br />
era infactible.<br />
Otra manera de ver lo mismo es a través de la tardanza relativa de la<br />
operación. Por la definición 5.5, para todo trabajoj para los cuales las operaciones y y w<br />
son críticas d, 1 = d + p .La existencia de la secuencia de operaciones v,x,y, .. .,w que<br />
causa el ciclo hace que d > d +<br />
El Lema 5.2 estable que el concepto de arco crítico no sólo permite<br />
caracterizar las variables de decisión del problema, sino que además permite generar<br />
siempre a través de la perturbación defmida una solución factible.<br />
Lema 5.3<br />
Sea x una solución factible de JmIr»dwT y X el conjunto de mínimos<br />
globales para dicho problema. Si xX 01 e YEX O,L,I es un mínimo global arbitrario,<br />
entonces el conjunto K(y) defmido como:<br />
98
Demostración.<br />
K(y)={e=(v,w) E El e es crítico A (w,v)€ E,, es no vacío.<br />
}<br />
El lema equivale a que si K(y) es vacío entonces xEX01. Por lo tanto, se<br />
debe analizar la defmición bajo que condiciones el conjunto es vacío.<br />
i) E no tiene caminos críticos<br />
Si & no tiene arcos críticos, entonces todos los arcos de ese tipo pertenecen<br />
al conjunto A de arcos conjuntivos, por lo tanto en D se tiene que<br />
C, =p ,, + r, = C7m .<br />
¿ eM<br />
En general se tiene que para todo trabajoj:<br />
C 2: C7m (5.8)<br />
Restándole a cada miembro de la inecuación 5.8 la fecha de entrega<br />
respectiva y aplicando el operador max, se tiene que:<br />
max(O,C —<br />
d):-~.max(O,C7<br />
m —<br />
di )<br />
(5.9)<br />
Notar que la inecuación 5.8 se hace igualdad solo cuando C :5 d..<br />
Sumando y multiplicando las inecuaciones correspondientes a cada trabajo por su<br />
respectiva importancia, de 5.9 se obtiene<br />
w.max(O,C -<br />
Como 7, = w,max(O, C, -<br />
d w 1 max(O,C7m - d.)<br />
d ) entonces T' =Z wmax(O, C' -<br />
una cota inferior para la tardanza total ponderada, con lo cual evidentemente XEXOI.<br />
99<br />
(5.10)<br />
d, ) es
ji) Todo e=(w,v) o E, y es crítico:<br />
Lo anterior quiere decir que todo arco (v,w) € E, que es crítico pertenece a<br />
Sea P el conjunto de arcos críticos que pertenecen a E y sea R el conjunto de arcos<br />
críticos que pertenecen a Ey . Gracias a los conceptos introducidos anteriormente se<br />
sabe el conjunto R es el mismo también para E.<br />
Sean TÇ y 7,' la tardanza de un trabajo j en las soluciones determinadas<br />
por los conjuntos P y R respectivamente, calculada de acuerdo al lema 5.1. Debido a que<br />
R corresponde a una solución óptima necesariamente se cumple que:<br />
w7w.T" (5.11)<br />
Supongamos que existe en R un arco crítico disyuntivo (u,z) que no<br />
pertenece a P. Debido a la defmición 5.5 y al lema 5.1, dicho arco determina el tiempo<br />
de terminación y la tardanza para cada trabajo para el cual es crítico. Sea Q el conjunto<br />
de trabajos para los cuales dicho arco es crítico. Puesto que P c R, y por el lema 5.1 se<br />
cumple que:<br />
VjEJ-Q: TPTR (5.12)<br />
Pero para los trabajos j pertenecientes a Q, existe una operación extra en el<br />
camino crítico de dichos trabajos, de duración no negativa, por lo que + p= C y<br />
se tiene que<br />
VJEQ. T
101<br />
< ) w.T' (5.14)<br />
J 1<br />
Lo cual contradice que R pertenezca a una solución óptima. Por lo tanto,<br />
PR, lo que implica que x€X0 ,U<br />
El lema 5.3 establece que la "desviación" que existe entre una solución<br />
cualquiera y una solución óptima puede ser medida a través del conjunto K(y), lo cual<br />
además permite establecer el siguiente teorema:<br />
Teorema 5.1 . Conectividad del operador de intercambio de arcos críticos.<br />
Para cada solución factible x no óptima de Jmjr,djIZwjTj es posible construir<br />
una secuencia fmita de soluciones factibles x °,x', . . .,x ' que conduzca a partir de x a un<br />
óptimo global del problema sólo invirtiendo arcos críticos.<br />
Demostración: (Basada en [van Laarhoven 92]).<br />
Sea M(y) {(v,w) eE (w,v) e y i(y)(v,w) e K,, (('w,v) e k Y } De<br />
las definiciones anteriores y de K(y) se desprende que K(y) c M) c<br />
1. x° = x<br />
La secuencia se construye como sigue<br />
2. x" se obtiene invirtiendo un arco crítico e e (y) de E , X (y), lo cual produce una<br />
nueva solución representada por un grafo D. que es factible según el lema 5.2.<br />
Si 1 MT, (y) 1 > 0, entonces 1 M+ (')<br />
M ()I -1[van Laarhoven 921. Por<br />
lo tanto usando k1 M(y)I se tiene que (y)I = O y dado que K) ç M(y)<br />
c Mx y) entonces K. (y) = 0. Por el lema 5.3, se tiene que XkEXOPI.
102<br />
El Teorema 5.1 establece que desde cualquier solución factible es posible<br />
llegar a un óptimo global del problema. Esto establece la propiedad de conectividad<br />
necesaria para definir una heurística de búsqueda tal como se señaló en el capítulo N°1.<br />
Gracias a los resultados de convergencia asintótica en probabilidad que se muestran en<br />
[van Laarhoven 92] es posible establecer gracias al teorema 5.1 que existe un algoritmo<br />
que converge al óptimo global del problema.<br />
5.1.3 Estrategia de control<br />
Tabu search ha sido una estrategia que ha demostrado excelentes resultados<br />
para JmIICm, tal como se demuestra en [Dell Amico 93] y [Taillard 941. Por lo tanto,<br />
se especificó un algoritmo de este tipo para Jmr,d3JwTj.<br />
a) Funcionalidad necesaria en la representación<br />
Gracias a lo conceptos establecidos en la sección anterior se defmió un<br />
objeto en C++ que implementa el grafo disyuntivo. Dicha estructura provee los métodos<br />
necesarios para computar el cluster para el problema, calcular la función objetivo,<br />
perturbar la solución utilizando una movida y codificar una solución tal como exige la<br />
interfaz de conexión que defme el lenguaje LS-1.<br />
El cluster corresponde al conjunto de arcos críticos de una solución dada, tal<br />
como se defmió anteriormente, por lo que debiera ser calculado cada vez que una<br />
solución se modifica. La función objetivo se calcula en 0(N) modificando levemente el<br />
algoritmo que calcula el makespan en el grafo que representa .JmjIC,,,. El algoritmo<br />
realiza una búsqueda dfs (ver capítulo N°1) del grafo comenzando con el nodo fuente y<br />
actualizando el inicio de cada operación de acuerdo a las identidades 5.2 y 5.3. El<br />
mismo algoritmo puede utilizarse para calcular las fechas de entrega relativas de cada<br />
operación, pero esta vez comenzando de los nodos sumideros de cada trabajos y<br />
recorriendo el grafo "hacia atrás".
Por ora parte, las solución se codifican utilizando la siguiente expresión:<br />
103<br />
zici (5.14)<br />
Donde z, . . .,z corresponde a secuencia seudo-aleatoria de enteros y C3<br />
corresponde a los tiempos de terminación de cada trabajo. Como los valores que la<br />
expresión 5.14 arroja pueden llegar a ser muy grandes, se divide por una constante y la<br />
codificación corresponde al resto de división [Woodruff 931. Con ello se puede asegurar<br />
que la codificación ocupe una cantidad mínima y fija de memoria.<br />
b) Especificación de la estructura de control<br />
Los componentes básicos de un algoritmo de tabu search y que lenguaje<br />
LS-1 permite defmir son la lista de candidatos y la función de evaluación de una<br />
movida. La lista de candidatos se calcula a partir de cada uno de los elementos del<br />
cluster y la función de evaluación corresponde a la función objetivo que se calcula a<br />
partir de la representación disyuntiva. Adicionalmente es posible incorporar gracias a<br />
flexibilidad que entrega el lenguaje, políticas de manejo para la lista tabú.<br />
Es sumamente importante tomar algún criterio con respecto al tamaño de<br />
lista de candidatos y a los elementos que pertenecen a ella, ya que evaluar<br />
completamente la vecindad tiene un costo.<br />
Antes de cada iteración se calcula el cluster que originará la lista de<br />
candidatos. Del cluster se extraen solamente cinco arcos críticos cuya perturbación se<br />
calcula de acuerdo a la función objetivo del problema. Después de cada iteración se<br />
actualizan los largos de la lista tabú con la misma política que se utiliza en [Dell Amico<br />
93]. Dicha política consiste en aumentar el tamaño de la lista si es que la solución<br />
encontrada empeora (con respecto a la iteración previa), disminuirlo si la solución<br />
encontrada empeora (con respecto a la iteración previa) y definirla en uno si el
algoritmo encontró la mejor solución (hasta ese instante). La especificación completa se<br />
muestra en ¡a figura 5.5.<br />
.o1ut,on GrapO .noed.<br />
obj.otiv. :- mm $so1utxon.Get_Weighted_Tardinesa$ O<br />
inolud. - $ #ifndef GP.APH<br />
*include "graph.h"<br />
#endit $<br />
\ Función objetivo<br />
b&.h 5 aolution.Encodefl$<br />
Accesoacadasubcluster<br />
dan job : $ aolution.Get_itumber Jobs(l$ ¡<br />
da.n cr3.ticai.operation :<br />
Numero de iteraciones mayores<br />
Largo inicial de la lista tabu<br />
1 Máximo tupo de ejecución, máximo número de<br />
iteraciones, máximo de iteraciones sin mejora<br />
1 criti.cia1_Aro. 10000 , 1000010000 1 Calcuaantes deejecutar la iteración<br />
el clutter de arcos críticos<br />
b.for. - Cluster - current. reedback J<br />
Código de usuano para el<br />
aft.r - $ delete Cluster ( manejodclalistatabú<br />
II Setting tOe tabo list ajee,<br />
it (curr_coet < cost_previoua_iter) 1<br />
it (tabulenqth > min_length)<br />
tabu_length- -;<br />
else<br />
it (tabu_iength < max_iength)<br />
tabu_length++;<br />
itcurr_coat -- mm_coatI<br />
tsbu_length - 1;<br />
tabuList->Reaize (total_iterationa, tabu_length(<br />
ceatprevioua_iter - curr_coat; $<br />
I oandidat._]i.t - reades 5 join (x: oritieal_op.ration) 1<br />
p.rturb (moya in candidate_liat) \._.___j Definición de la lista de candidatos:<br />
solution. Swap(Cluater->Job From(move[1J<br />
Cluster-> Step rrom(move(1]i};<br />
iaccspt :- $ TRUE si<br />
•nd \_..... Se acepta siempre el mejor de la vecindad<br />
Se escogen aleatoriamente 5 arcos críticos<br />
Función de perturbación<br />
104<br />
Figura 5.5 : Especificación de la heurística de tabu search para JmIr,dw17, en<br />
5.1.4 Resultados<br />
LS-!.<br />
Dado que para la tardanza ponderada no existe una batería de instancias<br />
como si la hay para el caso del makespan, en [Pinedo 961 se define una forma de generar<br />
ponderadores y fechas de entrega a partir de los instancias de prueba que existen para
JmJjCm. Las instancias así generadas reciben la misma denominación que las<br />
instancias que les dan origen.<br />
105<br />
Para esta batería de prueba, se escogieron 18 instancias cada una de las<br />
cuales cuenta con 10 máquinas y 10 trabajos. Los resultados obtenidos por el algoritmo<br />
de tabu search se compararán con los resultados obtenidos por la heurística desarrollada<br />
en [Pinedo 961.<br />
a) Puntos de partida<br />
Para cada instancia se generaron tres puntos de partida utilizando tres<br />
heurísticas de búsqueda global que se detallan en [Baeza 961. Todos las heurísticas<br />
fueron ejecutadas en una estación de trabajo DEC3000/300L.<br />
La tabla 5.3 muestra los resultados de las tres heurísticas obtenidos para<br />
cada instancia del problema. La primera columna corresponde a la denominación de la<br />
instancia del problema y la segunda (titulada "mejor") corresponde al mejor valor<br />
encontrado hasta la fecha para dicha instancia {Pinedo 961. Los siguientes pares de<br />
columnas, encabezadas como "heu-i" y "tiempo-i" indican el valor de la tardanza<br />
ponderada de la solución y el tiempo (en segundos) empleado por la heurística i-ésima<br />
(con ¡ = 1,2,3) en producirla, respectivamente.<br />
Tabla 5.3 : Puntos de partida para el algoritmo de tabu search.<br />
Instancia mejor heu- 1 tiempo- 1 heu-2 tiempo-2 1 heu-3 tiempo-3<br />
ABZ5 69 969 26 1338 56 1966 131<br />
ABZ6 0 336 25 403 57 220 130<br />
LA16 166 1249 26 1122 55 1486 129<br />
LA17 260 687 25 1878 44 2281 126<br />
LA18 34 917 25 1031 47 546 134<br />
LA19 23 2360 25 1658 72 1158 137<br />
LA20 0 811 25 797 41 1806 131<br />
MT10 394 4692 25 IF 2678 45 3840 132
ORB1 1098 3226 26 4261 45 4154 131<br />
ORB2 292 2412 24 1831 60 3465 127<br />
ORB3 918 7430 25 5277 49 9238 131<br />
ORB4 358 4294 25 4562 61 4090 132<br />
ORB5 405 9430 24 5475 63 4654 134<br />
ORB6 426 4732 25 3474 45 7352 132<br />
ORB7 50 1149 25 597 70 612 130<br />
ORB8 1023 4467 25 4089 36 6552 131<br />
ORB9 297 3776 25 2552 38 4264 133<br />
ORB10 424 6378 24 4716 55 5800 127<br />
de los mejores valores.<br />
106<br />
Como se desprende de la tabla las soluciones se encuentran bastante lejanas<br />
b) Resultados de la heurística implementada<br />
Para probar la eficacia del algoritmo se ejecutó por 100.000 iteraciones. Para<br />
cada instancia se utilizaron los tres distintos puntos de partida, ejecutándose en total 54<br />
corridas del algoritmo utilizando la misma estación de trabajo. Los mejores resultados<br />
obtenidos se muestran en la tabla 5.4.<br />
Nuevamente, la primera columna de la tabla indica la instancia del<br />
problema. La columna "punto de partida" corresponde al valor inicial con el cual el<br />
algoritmo de tabu search comenzó la búsqueda. La columna "mejor valor" corresponde<br />
al mejor valor conocido de la instancia (tal como aparece en la tabla 5.3) que se ha<br />
incluido para propósitos de comparación. Finalmente, las columnas "mejor tabu search"<br />
y "tiempo mejor" corresponden al mejor valor encontrado por el algoritmo y al tiempo<br />
(en segundos) en cual se alcanzó, respectivamente. El tiempo empleado en encontrar el<br />
mejor valor incluye el tiempo que toma la generación de la solución inicial.
Tabla 5.4 : Resultados de tabu search con 100.000 iteraciones.<br />
Instancia PuntD<br />
Partida<br />
Mejor<br />
Valor<br />
Mejor<br />
Tabu<br />
search<br />
Tiempo<br />
Mejor<br />
ABZ5 1338 69 69 1993<br />
ABZ6 336 0 0 26<br />
LA16 1249 166 166 731<br />
LA17 687 260 260 90<br />
LA18 1031 34 34 1696<br />
LA19 1158 23 21 956<br />
LA20 811 0 1 96<br />
MT10 4692 394 394 5180<br />
ORB1 4261 1098 1252 11282<br />
ORB2 3465 292 292 1642<br />
ORB3 7430 918 1004 22312<br />
ORB4 4562 358 358 12133<br />
ORBS 5475 405 482 4116<br />
ORB6 3474 426 516 7773<br />
ORB7 597 50 50 249<br />
ORB8 6652 1023 1087 6489<br />
ORB9 2552 297 344 8157<br />
ORB10 6378 424 474 2081<br />
Como se desprende de la tabla 5.4, en 9 de los 18 instancias se alcanza el<br />
mejor valor conocido y en una de ellas (LA 19) este valor es superado. En el resto de las<br />
instancias los valores son cercanos al mejor valor conocido, aunque es necesario un<br />
mayor esfuerzo de cómputo para alcanzarlos.<br />
Sin embargo, dado que en la práctica se tiene un tiempo limitado para<br />
ejecutar una heurística es necesario comparar el algoritmo con otra heurística, para sacar<br />
conclusiones acerca de la calidad de la soluciones que se producen. Dicha heurística<br />
corresponde al algoritmo denominado SB-TWT [Pinedo 961, que consiste en aplicar los<br />
107
conceptos de bottleneck en el job shop con la tardanza ponderada y utiliza una estrategia<br />
de control basada en backtracking.<br />
108<br />
Para propósito de la comparación se corrió el algoritmo de tabu search por<br />
sólo 10.000 iteraciones y ambas heurísticas se corrieron en una estación de trabajo<br />
DEC3000/300L. Nuevamente los tiempos se miden en segundos, y en caso del tabu<br />
search incluyen la generación de la solución inicial. Los mejores resultados obtenidos<br />
para cada instancia se muestran en la tabla 5.5, que sigue la nomenclatura de las<br />
anteriores tablas de resultados.<br />
Tabla 5.5 Tabu search versus SB-TWT 9 .<br />
Instancia mejor tabu tiempo SB-TWT Tiempo<br />
search mejor<br />
SB-TWT<br />
ABZ5 75 317 75 142<br />
ABZ6 0* 26 0* 8<br />
LA16 166* 735 280 151<br />
LA17<br />
LA18<br />
260*<br />
36<br />
92<br />
507<br />
264<br />
34*<br />
25<br />
99<br />
LA19 1 21* 963 1 48 83<br />
LA20 1 98 1 56<br />
MT1O 603 1115 548 5<br />
ORB1 1606 495 1454 99<br />
ORB2 324 - 807 423 67<br />
ORB3 1098 _1576 1244 41<br />
ORB4 820 _1664 358* 123<br />
ORB5 516 _1221 540 130<br />
ORB6 581 _1251 715 93<br />
ORB7 50* 249 153 242<br />
ORB8 1519 330 1650 130<br />
ORB9 379 727 395 84<br />
ORB10 588 514 589 176<br />
Con un (*) se indica que se alcanzó el mejor valor conocido para la instancia.
109<br />
La conclusión inmediata que se obtiene es que para obtener resultados de<br />
una calidad similar a los que alcanza SB-TWT, el algoritmo de tabu search<br />
implementado debe invertir un orden de magnitud más de tiempo en la búsqueda. Ese es<br />
el costo que debe pagar por no involucrarse tanto en la estructura del problema, cosa que<br />
si hace y explota el algoritmo SB-TWT.<br />
Dependiendo de la solución que con que comienza, el algoritmo se demora<br />
más o menos en acercarse al mejor valor conocido de la instancia. Los resultados<br />
experimentales demuestran que no necesariamente los mejores puntos de partida (en<br />
cuanto a valor de la función objetivo) producen los mejores resultados finales. De los<br />
mejores resultados obtenidos, en 9 de ellos la heurística 2 fue la utilizada para generar el<br />
punto de partida, mientras que la heurística 3 dio origen al punto inicial en 6<br />
oportunidades. Los restantes puntos fueron generados por la heurística 1.<br />
c) Ajuste de Parámetros<br />
El algoritmo tiene dos parámetros que pueden considerarse fundamentales y<br />
ellos son el tamaño de la vecindad y el largo inicial de las listas tabú. El ajuste de<br />
parámetros consistió entonces en determinar que sucede con dichos factores.<br />
De las tablas 5.4 y 5.5 se concluye que 10.000 iteraciones es un esfuerzo de<br />
cómputo razonable que permite alcanzar soluciones del mismo orden de magnitud del<br />
óptimo. Por lo tanto, el ajuste de parámetros se realizó con dicha base.<br />
A partir de la especificación de la figura 5.5, se crearon 4 heurísticas<br />
adicionales. Las primera heurística (par- 1) usó como tamaño de la lista de candidatos<br />
10, mientras que la segunda (par-2) disminuyó el tamaño a 3. Las restantes dos tuvieron
que ver con el tamaño máximo de la lista tabú. Una (par-3) disminuyó a 10 dicho<br />
tamaño mientras que la otra (par-4) lo aumentó a 30.<br />
110<br />
Cada uno de dichas heurísticas se ejecutó a partir de los 3 puntos de partida<br />
anteriormente mencionados, comparándose los mejores resultados obtenidos para cada<br />
una de ellas con los resultados de la tabla 5.5.<br />
La experiencia computacional demostró que en general la variación de<br />
parámetros en general mostró pocas mejoras. La heurística par-1 no mostró mejoras de<br />
ningún tipo con respecto al algoritmo original. Las heurística par-2 (al igual que par-3)<br />
sólo encontró mejores en 4 instancias y sólo en 2 de ellas en mejor tiempo. Finalmente,<br />
la heurística que mostró mayores progresos fue par-4 que encontró mejores soluciones<br />
en 7 de las instancias, con un mejor tiempo en 3 de ellas.<br />
Todas estas mejoras se dieron en un grupo particular de las instancias, cuyos<br />
resultados aparecen en la tabla 5.6. Ello significa los parámetros analizados afectan de<br />
manera distinta a cada instancia del problema. Ajustar dichos parámetros sólo tendrá<br />
sentido si se dispone de tiempo suficiente para hacerlo, en caso contrario, la heurística<br />
deberá ejecutarse con un ajuste "general".<br />
Tabla 5.6 Resultados para parámetros distintos del algoritmo de tabu search.<br />
Instancia Original Tiempo Par-2 Tiempo Par-3 Tiempo Par-4 TiempoPa<br />
Mejor Par-2 Par-3 r-4<br />
MT10 603 1115 551 566 5561 961 568 1101<br />
ORB1 1606 495 1819 321 1565 1003 1309 951<br />
ORB2 324 807 292* 858 324 832 3221 671<br />
ORB3 1098 1576 1009 1210 1129 1634 1295 1669<br />
ORB4 820 1664 821 1417 546 1089 594 1314<br />
ORB8<br />
ORB9<br />
ORB10<br />
1519<br />
3791<br />
588 1<br />
330<br />
727 1<br />
5 1 41<br />
1366<br />
4151<br />
6471<br />
1285<br />
1386<br />
73211<br />
1604<br />
417<br />
458<br />
2080<br />
1227<br />
6331<br />
1466<br />
352<br />
5241<br />
2248<br />
1504<br />
956
5.2 Industria Forestal<br />
El problema de la ifldustria forestal [Schilkrut 931 puede describirse como<br />
sigue. Existe un conjunto de nodos de origen, que corresponden a puntos de tala de<br />
madera y nodos de destinos que corresponden a aserraderos, plantas de celulosa,<br />
canchas de trozado o puertos de embarque. Cada nodo de origen produce una cierta<br />
cantidad de madera durante el día, en un cierto horario, acumulando una existencia que<br />
constituye la oferta o disponibilidad de madera de dicho punto de tala. Por otra parte, los<br />
nodos de destino demandan madera. Se debe, entonces, satisfacer la demanda de madera<br />
de los puntos de destino, distribuyendo la oferta de los puntos de origen. Para ello se<br />
utilizan camiones de distintas capacidades, cada uno de los cuales es adecuado para<br />
transportar ciertos tipos madera, que realizan viajes origen-destino para satisfacer la<br />
demanda. Eso toma cierto tiempo que depende del par origen-destino visitado y de si el<br />
camión viaja cargado o descargado, pero que es independiente del tipo de camión.<br />
Cada nodo (tanto de origen como de destino) posee un horario de apertura y<br />
cierre, un tiempo fijo de carga (o descarga) y colas en las cuales los camiones esperan<br />
ser atendidos. Ya que cada camión tiene asociado un costo de operación que depende de<br />
si está viajando cargado, descargado o esperando en un nodo' °, se requiere generar un<br />
plan para cada camión que minimice el costo de la planificación diaria satisfaciendo<br />
toda la demanda.<br />
En la modelación anterior, una solución se considera infactible si es que un<br />
camión es programado para llegar a un nodo después de que este ha cerrado o es<br />
programado para viajar a un nodo hacia el cual no hay camino. Lo mismo acontece si es<br />
que no hay existencia en el nodo de origen cuando llega el turno del camión para ser<br />
tarifa de espera en cola.<br />
O El tiempo que toma la carga o descarga propiamente tal, se considera dentro de la<br />
111
atendido. En cambio, cuando un camión entra a un nodo, pero este cierra mientras el<br />
camión espera su turno de atención el camión es atendido y la solución continúa siendo<br />
factible.<br />
5.2.1 Conceptualización del problema<br />
a) Representación del problema<br />
112<br />
La descripción anterior plantea los componentes básicos del modelo de<br />
forestal. Tal como se señaló en la sección 2.2, en la etapa de definición del modelo se<br />
escoge el lenguaje con el cual describir el modelo. En [Schilkrut 93] se utilizó el<br />
lenguaje matemático y en [Levys 93] se utilizó un lenguaje gráfico genérico para<br />
describir el mismo modelo.<br />
En [Schróder 96] se definió una tercera alternativa la cual corresponde a<br />
construir un modelo procedural del problema. Eso quiere decir que basado en los<br />
componentes del modelo se construye un programa computacional que simula la<br />
operación del sistema en la realidad. Para propósitos de comparación, los mismos<br />
supuestos de que se realizaron en [Schilkrut 931 para la modelación se utilizaron en la<br />
representación implementada en [Schrder 961.<br />
Si bien simular la realidad tiene la ventaja de hacer más entendible el<br />
modelo y al mismo tiempo se tiene una implementación computacional con la cual<br />
tratar de resolver el problema, también ocurre que las restricciones del problema no<br />
aparecen explícitamente en la representación, lo que dificulta el análisis de las<br />
propiedades estructurales del mismo. Al carecer de las herramientas de análisis que<br />
provee una especificación declarativa, no se puede garantizar propiedades como las de<br />
conectividad de los operadores defmidos.<br />
Pero, por otra parte, en un modelo procedural la dependencia lógica de<br />
variables es mucho más fuerte que en un modelo matemático, lo cual es una ventaja
cuando se defmen los operadores, ya que las variables se actualizan de forma automática<br />
cuando se ejecuta la simulación.<br />
b) Defmición de componentes de la resolución y clusters<br />
113<br />
Sea C el conjunto de camiones, O el conjunto de nodos de origen, D el<br />
conjunto de nodos de destino y T el conjunto de tipos de madera en el problema de la<br />
forestal. En base a esos dominios básicos defmiremos los siguientes conceptos.<br />
Defmición 5.7 : Tarea y plan.<br />
Se entenderá por tarea a carga que tiene que transportar un camión de un<br />
nodo de origen a un nodo de destino de forma de satisfacer la demanda del nodo<br />
destino. La carga de madera es de un cierto tipo y es igual a la capacidad del camión.<br />
Por lo tanto, las actividades que el camión realiza quedan descritas por la secuencia de<br />
tareas que realiza cada camión, la que se denominará plan del camión.<br />
Dado que un algoritmo de búsqueda local comienza de una solución inicial<br />
factible, ya existe un grupo de conjunto de tareas asignadas a cada camión, las cuales<br />
son realizadas en un cierto orden. La caracterización del problema deberá terminar<br />
formas de cambiar esa asignación de forma de introducir cambios a la función objetivo.<br />
Sea T el conjunto de tareas que existen en el problema. El dominio relevante para este<br />
problema será defmido como los conjuntos C, O, D y T.<br />
Para este problema se definirán 4 clusters :<br />
e1(y)=(FÍ,R,,G<br />
I,g,(p) para<br />
¡=1,.. .,4. El primer cluster corresponde a Fj={1,2,3,4}, los índices de camiones, los<br />
nodos de origen, de destino respectivamente y los tipos de madera, R 1 asocia a cada w<br />
un elemento del conjunto C que corresponde al camión que realiza esa tarea y gi =C, y<br />
Q está definido como:<br />
Qj(w,y){w EDpI ço(w,y)} = {w=(c,u,v,t) EDF I Viaje(c,u,v)}
114<br />
Donde Viaje(c, u, y) es un predicado que indica si existe un viaje realizado<br />
por el camión c entre el nodo de origen u y el de destino y. Cada subcluster, en este caso<br />
corresponde al conjunto de tareas asignadas a un camión.<br />
El segundo subcluster se defmirá de la misma forma, excepto porque la<br />
función R2 corresponde a la función identidad, y g2 =Q. Lo último quiere decir que e2(Y)<br />
corresponde al conjunto de tareas y en este caso cada tarea es a su vez un subcluster.<br />
Finalmente, el tercer y cuarto cluster corresponden al conjunto de nodos de<br />
origen y destino respectivamente. Es decir, F3{2} y F4=(3). Tanto R3 y R 4<br />
corresponden a la función identidad y 93 y 94 al conjunto Q defmido en cada caso.<br />
5.2.2 Definición de operadores<br />
Para este problema se hizo un análisis intuitivo, en lugar del formal<br />
realizado en el caso de la aplicación anterior, de los factores que pueden introducir<br />
cambios en la función objetivo. A continuación analizaremos algunos de ellos, con el fin<br />
de definir operadores de perturbación.<br />
a) Espera inicial de un camión<br />
Como se señaló anteriormente, cada camión tiene asociado un costo de<br />
espera. Por lo tanto, si un camión comienza su operación muy temprano y debe esperar<br />
ser atendido en un nodo de origen, es posible ahorrarse ese costo si es que se retrasa el<br />
inicio del plan del camión.<br />
b) Desequilibrio de tareas realizadas por cada camión<br />
Cada camión tiene un tiempo total de espera correspondiente a la suma de<br />
los tiempos en que espera ser atendido en cada nodo que visita. Pueden existir camiones<br />
que tienen asignados una gran cantidad de tareas, mientras que Otros están subutilizados.<br />
Entonces, el costo asociado a esa espera de un camión puede disminuirse si es que se
traspasan algunas de las tareas a otros, y al equilibrar el número de tareas entre los<br />
distintos camiones se tiene más holgura para planificarlos.<br />
c) Orden en el cual se ejecutan las tareas dentro del plan<br />
115<br />
Los costos de espera de un camión quedan determinados por el instante de<br />
tiempo en que el camión llega al nodo origen y destino de la tarea. Si se llega antes o<br />
después a esos nodos habrá un número distinto de camiones esperando ser atendidos lo<br />
que variará el tiempo y por tanto el costo de espera. Por lo tanto, atrasar o adelantar una<br />
tarea dentro del plan de un camión producirá cambios en la función objetivo.<br />
d) Congestión de nodos<br />
Tanto los nodos de origen como los de destino poseen horarios de<br />
congestión producto de la planificación de los camiones. Para evitar ese problema,<br />
deben escogerse alternativas para la carga o descarga de los camiones que están<br />
planificados de forma de disminuir los tiempos y costos de espera de los camiones en<br />
los nodos y por ende de la planificación.<br />
En base a los factores anteriormente analizados, en {Schróder 961 se<br />
defmieron los siguientes operadores, los cuales se muestran en la tabla 5.7. En los<br />
operadores definidos en dicha tabla, un camión corresponde al cluster C21, una tarea<br />
corresponde al cluster e2 y un nodo puede ser un cluster e3 O (4.
Tabla 5.7 : Operadores definidos para el problema de forestal.<br />
Nombre Funcionalidad<br />
retrasar_inicio plan(a) Retrasa el comienzo del plan del camión a tantos<br />
minutos como éste espera en el primer nodo de origen<br />
del plan.<br />
equilibra_tareas (a, b) Si el camión a tiene más tareas que el camión b, elimina<br />
la primera tarea del camión a y la inserta al fmal del plan<br />
del camión b hasta que ambos tengan el mismo número<br />
de tareas (o difieran en una unidad)<br />
equilibra_tiempos(a, b) Si el tiempo de operación del camión a es mayor que el<br />
del camión b traspasa tareas del camión a al b (de la<br />
misma forma que el operador anterior) hasta que los<br />
tiempos de operación del camión a sean menores que el<br />
delb.<br />
adelanta tarea camion(a,b) Adelanta un lugar el orden que ocupa la tarea b dentro<br />
del plan del camión a.<br />
atrasatarea_camion(a,b) Atrasa en un lugar el orden que ocupa la tarea b dentro<br />
del plan del camión a.<br />
descarga_nodo(x) Toma el último camión que entró al nodo x y lo asigna<br />
al fmal de la cola en un nodo alternativo.<br />
cambia_origen_tarea(a,b) Busca el primer origen del plan del camión a que sea<br />
compatible con el origen b y lo reemplaza.<br />
5.2.3 Estrategia de Control<br />
a) Funcionalidad necesaria para la representación<br />
Al igual que en el caso de la aplicación desarrollada anteriormente, fue<br />
necesario implementar una codificación para cada solución factible. Un plan tiene<br />
asociado un costo total de espera, un costo total de viaje cargado y un costo total de<br />
viaje descargado. La codificación corresponde a la suma ponderada de esos costos, y<br />
cada ponderador corresponde a un número generado en forma seudo-aleatoria.<br />
b) Especificación de la estructura de control<br />
A partir de los operadores defmidos en la tabla 5.7, se construyeron 7<br />
heurísticas. El objetivo que persiguen dichas heurísticas corresponden a los que se<br />
116
señalaron en la sección 5.2.2. La estructura de control en todas ellas utiliza una lista tabú<br />
de tamaño fijo, con un criterio de aceptación probabilistico. Dichas heurísticas se<br />
muestran en el anexo C.<br />
5.2.4 Resultados<br />
en [Schilkrut 931.<br />
a) Puntos de partida<br />
117<br />
Las heurísticas se desarrollaron para la instancia del problema real descrito<br />
El punto de partida para las heurísticas de búsqueda local, al igual que en el<br />
caso de la minimización de la tardanza ponderada, fue generada gracias a una heurística<br />
de búsqueda global. Dicha heurística que se muestra en [Baeza 961 y genera una<br />
solución inicial en una estación de trabajo DEC3000/300L cuyo valor es de 2.613.580<br />
en 313 segundos.<br />
b) Resultado de las heurísticas implementadas y ajuste de parámetros<br />
En primer lugar se ejecutaron las 7 heurísticas básicas y luego en base a<br />
ellas, se definieron algoritmos con grafos de búsqueda de 2, 3 y 4 heurísticas<br />
contextuales. Antes de combinar las heurísticas, se realizó un proceso de ajuste de<br />
parámetros que calibró el esfuerzo de cómputo de la heurística y el tamaño de las<br />
distintas listas de candidatos.<br />
En las heurísticas con 2 nodos en el grafo se probó la reducción en la espera<br />
inicial en combinación con las otras heurísticas. En el caso de 3 nodos se probó además<br />
de la reducción de la espera, equilibrar los tiempos y las tareas de los camiones.<br />
Finalmente, para 4 nodos se dejaron fijos los operadores de cambio de origen y descarga<br />
de nodos. Todas estas formas de combinar heurísticas se deben a un estudio empírico<br />
que incluye la topología del grafo y el recorrido de éste [Schróder 961.
118<br />
Los mejores resultados de las distintas heurísticas desarrolladas utilizando el<br />
lenguaje LS-1 se muestran en la tabla 5.8. Los resultados se obtuvieron en una estación<br />
de trabajo DEC3000/300L y el tiempo se midió en segundos, incluyendo el tiempo de<br />
generación de la solución inicial. La columna combinación grafo en el caso de las<br />
heurísticas simples corresponde al número con el cual se designa la heurística. En el<br />
caso de las heurísticas compuestas, corresponde a la combinación de heurísticas simples<br />
que genera el grafo.<br />
Tabla 5.8 Resultados de las heurísticas desarrolladas para forestal.<br />
Heurística Combinación Mejor Tiempo<br />
grafo Encontrado Mejor<br />
Reducción espera 1 2.613.270 321<br />
Equilibrio tareas 2 2.613.580 313<br />
Equilibrio tiempos 3 2.611.820 484<br />
Atraso de tareas 4 2.611.660 324<br />
Adelanto de tareas 5 2.613.580 313<br />
Descarganodos 6 2.592.110 370<br />
Cambio origen 7 2.247.820 18487<br />
Combinación 1 7-4-1-6 2.139.650 13663<br />
Cbinación 2<br />
Lc=----binación<br />
3<br />
7-2-1-6<br />
7-5-4-6<br />
2.147.610<br />
2.437.960<br />
19581<br />
1320<br />
La solución para planificación de los camiones obtenida en {Schilkrut 931,<br />
utilizando técnicas y heurísticas de programación matemática tiene un valor de<br />
2.469.159, simulada en el sistema implementado en [Schróder 961.<br />
Es evidente que las primeras 6 heurísticas no producen mejoras<br />
significativas de la solución inicial. Ello se explica por las características de la solución<br />
que se genera mediante el algoritmo de búsqueda global. Con dicha heurística se<br />
generan soluciones que casi no poseen tiempos de espera en los nodos de destino, por lo
que es muy dificil mejorarlas con dichos operadores, que se concentran en dicho factor.<br />
Lo mismo aconteció con la combinación de heurísticas que incluyeron esos operadores.<br />
Eso no sucedió con el operador de cambio de nodos de origen que si produce mejoras<br />
significativas.<br />
119<br />
En la tabla 5.9 se muestran los tiempos que demoran las heurísticas que<br />
incluyen el operador de cambio de origen en encontrar una solución comparable a la<br />
obtenida en [Schilkrut 93]. El tiempo de cómputo se mide en segundos e incluye la el<br />
tiempo de generación de la solución inicial.<br />
Tabla 5.9: Soluciones comparables con la obtenida en [Schilkrut 931.<br />
Heurística Valor Tiempo<br />
Cambio origen 2.460.910 797<br />
Combinación 1 2.454.590 1208<br />
Combinación 2 2.454.590 1258<br />
Combinación 3 2.454.590 1198
VI. CONCLUSIONES<br />
6.1 Acerca de la Metodología Propuesta<br />
6.1.1 Ventajas<br />
Durante esta tesis se desarrolló una metodología con la cual enfrentar el<br />
desarrollo de heurísticas para un problema de optimización. Ella obliga al diseñador a<br />
conceptualizar la resolución del problema, a través del uso de la noción de<br />
componente de la resolución que es el ingrediente principal con el cual se desarrollan las<br />
heurísticas y del cual depende su desempeño. Con ello, el diseñador caracteriza los<br />
estados del espacio de búsqueda de la heurística a través de los clusters, define<br />
operadores y escoge/diseña una estrategia de control en base a ellos.<br />
De la misma forma en que el concepto de componente del modelo permite<br />
construir herramientas para apoyar el proceso de la modelación [Levys 93,<br />
Dombrovskaia 951 el concepto de componente de la resolución y el de cluster permiten<br />
construir herramientas que apoyen el proceso de resolución de un cierto tipo de<br />
problemas y heurísticas, como se mostró anteriormente.<br />
6.1.2 Desventajas<br />
Si bien la metodología propuesta es la base con la cual se desarrolló una<br />
herramienta para apoyar el desarrollo de heurísticas, todavía son necesarios mayores<br />
estudios acerca de como emplearla. En esta tesis se mostraron ejemplos todavía<br />
sencillos y la metodología no ha mostrado toda la potencialidad que tiene para el<br />
desarrollo de heurísticas en modelos de problemas combinatoriales más complejos, en<br />
los cuales el concepto de cluster puede ser explotado para subdividir los mismos.<br />
120
6.2 Acerca del Concepto de Cluster y Extensiones<br />
6.2.1 Conceptos relacionados<br />
El concepto de cluster tiene su origen en el ámbito de la modelación de<br />
problemas en el área de investigación operativa [Rogers 911. En dicho contexto, los<br />
clusters agrupan variables de decisión y restricciones para crear un modelo agregado del<br />
modelo original de un problema. Este modelo agregado se resuelve y los resultados se<br />
interpretan en el modelo original a través de un proceso de desagregación. Con ello se<br />
busca enfrentar el balance que existe entre el costo computacional de resolver el modelo<br />
y la exactitud de la solución ya que se maneja apropiadamente el tamaño de un<br />
problema. Sin embargo, la agregación no se lleva a efecto para subdividir el problema o<br />
caracterizar una solución factible.<br />
En el ámbito de los problemas combinatoriales y las heurísticas de búsqueda<br />
local, en [Woodruff 941 se define el concepto de chunk que corresponde a un<br />
subconjunto de las variables del problema. Dichas variables definen un conjunto de<br />
atributos de la solución, sobre la cual se construye una valoración de la misma. Dicha<br />
valoración se utiliza para definir el concepto de distancia" entre dos soluciones. Si dos<br />
soluciones son cercanas, entonces pertenecen a una misma región del espacio de<br />
búsqueda.<br />
Si bien los algoritmos de tabu search introducen mecanismos para evitar<br />
volver a óptimos locales, estos últimos se comportan como "atractores" y la búsqueda<br />
queda circunscrita a la región del espacio de búsqueda dominada por dicho atractor<br />
[Battiti 941. El algoritmo de reactive tabu search [Battiti 941 introduce una fase de<br />
perturbación aleatoria para escapar de la influencia del atractor. La noción de distancia<br />
En el sentido de "similaridad".<br />
121
definida en [Woodruff 94] permite establecer un test estadístico para la dócima de que<br />
dos soluciones pertenezcan a una misma región del espacio de búsqueda. Con ello se<br />
puede modificar el algoritmo anteriormente descrito, como se muestra en [Woodruff<br />
95].<br />
122<br />
Un chunk define además los atributos a través de los cuales una solución<br />
puede ser codificada e incluso proporcionar la codificación a través de la función de<br />
valoración. Sin embargo, un chunk no defme cuáles son aquellas partes de la solución<br />
susceptibles de ser modificas o asignadas, por lo que tampoco captura el concepto<br />
definido en esta tesis.<br />
6.2.2 Extensiones<br />
De acuerdo a la defmición 2.1, un cluster corresponde a la tupla<br />
e(y)=(F,R,G,g, ç). Dado a que los resultados de la función R y la condición ço dependen<br />
del estado y € Xh en cada iteración de una heurística dicho estado cambia, entonces, el<br />
conjunto de elementos que pertenecen a un cluster (y a cada subcluster) varían a lo largo<br />
de la búsqueda. Sin embargo, la defmición del cluster es esencialmente estática, porque<br />
no varía con la búsqueda.<br />
Sin embargo, es posible extender el concepto de cluster por ejemplo a<br />
(v)=(F,R,G,g,ço(sk)). Ello significa que la cardinalidad del cluster aumenta o<br />
disminuye adicionalmente a lo que lo haría dependiendo sólo del estado y €<br />
Lo anterior trae como consecuencia que la intensificación o diversificación<br />
de la heurística (ver capítulo N°1) puede ser administrada también por la definición de<br />
los componentes de la resolución. La diversificación se introduce al "relajar" la<br />
condición çp del cluster, permitiendo introducir nuevos valores. La intensificación se<br />
obtiene a la inversa, al "endurecer" dicha condición.
123<br />
Por lo tanto, el concepto de cluster todavía puede ser refmado y extendido<br />
incorporando nuevos elementos a la búsqueda sin salirse de la metodología original.<br />
6.3 Conceptos de Búsqueda Introducidos<br />
6.3.1 Combinación de heurísticas<br />
El concepto de estado (definición 1.1) introducido en esta tesis permitió<br />
caracterizar los algoritmos de búsqueda global y local. Tradicionalmente las heurísticas<br />
de búsqueda global se habían utilizado para generar una buena solución inicial factible<br />
para el problema y las de búsqueda local para post-optimizar dicha solución como se<br />
muestra en la figura 1.2. El concepto de grafo de búsqueda por otro parte permite<br />
establecer una forma natural con la cual combinar técnicas de búsqueda local y<br />
búsqueda global, como se muestra en la figura 6.1.<br />
Figura 6.1: Integración entre búsqueda global y local.<br />
La combinación de estas técnicas se logra con la apropiada defmición de los<br />
operadores sobre un estado del espacio. La estrategia de control debe establecer cuando<br />
aplicar operadores de búsqueda global y cuando los de búsqueda local.
6.3.2 Equivalencia entre tipos de heurísticas<br />
El concepto de completidad e incompletidad de un estado permite establecer<br />
interesantes analogías entre las heurísticas de búsqueda definidas en el capítulo N°1, al<br />
intercambiar el rol de estados completos e incompletos.<br />
Por ejemplo, en la figura 1.9 se muestran los algoritmos de branch and<br />
bound y beam search. Ambos manejan un conjunto de subproblemas activos, sobre la<br />
cual se escogerá el siguiente estado a visitar. Si se considera a ese conjunto como una<br />
población de estados, dichas heurísticas se pueden considerar un caso particular de los<br />
algoritmos genéticos en el cual la cota inferior o la función de evaluación es la medida<br />
de adaptación. Las mutaciones que se aplican, escogen genes y les asignan alelos.<br />
Tabu search también se considera un caso particular de los algoritmos<br />
genéticos [Pinedo 95a], por lo que también es posible realizar la misma analogía<br />
anterior. En ese caso, el conjunto de subproblemas activos se construye generando la<br />
vecindad de cada uno de los subproblemas, la cual está constituida por los hijos de un<br />
nodo.<br />
Esta "dualidad" es muy importante porque permite abordar la búsqueda<br />
global y local bajo un mismo enfoque. Eso significa que una herramienta como la<br />
propuesta en esta tesis podría utilizarse para desarrollar tanto heurísticas de búsqueda<br />
global como local. Además lo establecido en la sección anterior, abre la posibilidad de<br />
asistir el desarrollo de algoritmos híbridos que combinen técnicas de búsqueda local y<br />
global.<br />
6.3.3 Extensiones al concepto de estado<br />
El concepto de estado definido en esta tesis se restringió a un subconjunto<br />
de las variables de decisión del problema. Sin embargo es posible extender dicho<br />
concepto.<br />
124
125<br />
En [Gu 941 se propone que cualquier componente relacionado con un<br />
problema de búsqueda dado forma una nueva clase de espacio de búsqueda. Para un<br />
problema dado, se defme el espacio de variables, el espacio de valores, el espacio de<br />
restricciones, el espacio objetivo, el espacio de los parámetros y otros espacios<br />
constituyendo un multiespacio. Durante el proceso de búsqueda, un algoritmo de<br />
multiespacio no solo realiza cambios en el espacio de los valores sino que trepa a través<br />
de otros espacios y dinámicamente reconstruye las estructuras del problema que están<br />
relacionadas a las variables, restricciones, objetivos y otras componentes de un<br />
problema de búsqueda dado. Sólo en el último momento de la búsqueda la estructura<br />
reconstruida es reemplazada por la estructura original, y la asignación fmal de valores<br />
representa la solución al problema original.<br />
Por otra parte, los estados no tienen porque limitarse variables sino que<br />
también pueden ser heurísticas [Storer 92]. Eso quiere decir que la búsqueda no tiene<br />
porque limitarse a encontrar la mejor solución, sino que también puede focalizarse a<br />
encontrar la mejor combinación de heurísticas dentro de un cierto conjunto de ellas. En<br />
[Piramuthu 941 realiza un intento similar, a través de un algoritmo de clasificación.<br />
Todo lo anterior significa que se puede considerar dentro de un estado del<br />
espacio de búsqueda de la heurística todo aquello que sea relevante para la resolución<br />
del problema, lo que permite una enorme flexibilidad para el diseño de heurísticas. Las<br />
posibilidades están, entonces limitadas sólo por la creatividad de los diseñadores.<br />
6.4 Acerca del Algoritmo de Búsqueda y la Herramienta Propuestos.<br />
6.4.1 Estructura de la vecindad.<br />
En primer lugar, si bien la idea de evaluar parcialmente los elementos que<br />
pertenecen a una movida no es original [Glover 951 si lo es la forma estándar de defmir<br />
vecindades propuesta en esta tesis a través del álgebra introducida en el capítulo N°3.
Dicha forma es la que defme qué conocimiento estructural del problema incorporar para<br />
especificar la vecindad y cómo representarlo. A la vez, define cómo calcular la<br />
vecindad, lo que establece formas de implementarla.<br />
126<br />
El esquema de evaluación y selección parcial de los argumentos que definen<br />
la movida permite ir calculando la vecindad llevando a cabo un proceso de filtro.<br />
Tomando como referencia la figura 6.2, podemos ver que en la medida que se desplaza<br />
hacia el nodo fmal del grafo (y que corresponde a la lista de candidatos) la complejidad<br />
y costo de las funciones de valuación puede aumentar de manera que la "acuciosidad"<br />
de la estimación de la bondad de la movida crece en la medida que ya se han descartado<br />
un número importante de elementos. Con todo lo anterior, se reducir en forma eficaz el<br />
tamaño de la vecindad, escogiendo al mismo tiempo elementos que produzcan mejores<br />
movidas.<br />
Esftzoccmptac*ona<br />
[} Ek<br />
Ftro cje nivel 1 FItIO de rvel 2 Fttro de nivel n-1 Filtro de rel n<br />
NV<br />
Lta is de<br />
candidatos<br />
Figura 6.2 : El cálculo de la lista de candidatos como filtro de información.<br />
En segundo lugar, el esquema agrega versatilidad a la búsqueda. Con un<br />
esquema como el que se propuso los tamaños de las listas de candidatos "parciales"
podrían variar dinámicamente en el transcurso de la búsqueda y tiene la ventaja también<br />
de permitir defmir la bondad de una movida con respecto a más de un evaluador a través<br />
de operaciones como la intersección de asociaciones.<br />
6.4.2 Extensiones a la estructura de la vecindad.<br />
127<br />
La definición de la vecindad, al igual que la de cluster es estática. En cada<br />
iteración de la heurística a la que dicha vecindad pertenece, la lista de candidatos se<br />
calcula siempre de la misma forma. Las funciones de valuación de las asociaciones son<br />
estáticas, es decir, a una misma lista de argumentos se le asociará el mismo valor<br />
independientemente de la historia de la búsqueda.<br />
Una extensión que tiene que ver más con la estructura de control del<br />
algoritmo general que de la vecindad es la de incorporar retroalimentación a los<br />
evaluadores de las asociaciones con respecto a las movidas que producen. De esta forma<br />
la vecindad no sólo se alimenta "hacia adelante" con la información que recibe de los<br />
niveles inferiores sino que además se alimentaría "hacia atrás" para ajustar tanto los<br />
tamaños como las funciones de evaluación respecto a la región del espacio de búsqueda<br />
que se está visitando.<br />
6.4.3 Búsqueda distribuida<br />
El modelo de la vecindad que se planteó en esta tesis permite construir una<br />
especificación paralela para calcularla. El modelo de redes de Petri, adicionalmente,<br />
entrega herramientas de análisis para dichas especificaciones.<br />
Al grafo de heurísticas defmido en la sección 3.2.2 también se le puede<br />
aplicar una transformación similar a la realizada al grafo de la vecindad de forma de<br />
obtener una especificación distribuida.
128<br />
El trabajo realizado en esta tesis es la base para construir además de un<br />
generador de heurísticas, una plataforma de búsqueda distribuida la que incorpora todo<br />
el conocimiento estructural del problema relevante por medio de los conceptos definidos<br />
en esta tesis, y que actúe de forma casi trasparente frente al diseñador.<br />
Lo anterior implicaría desarrollar un paralelismo de 2 niveles. Uno a nivel<br />
de la vecindad de cada heurística de búsqueda global y otro a nivel del conjunto de<br />
heurísticas que constituye el grafo.<br />
6.4.4 Desventajas<br />
Las secciones 6.4.1 a 6.4.3 señalan que el algoritmo general de búsqueda y<br />
la representación de la vecindad no limitan la potencialidad del usuario en el diseño de<br />
heurísticas. Sin embargo esta gran flexibilidad es también la gran debilidad de la<br />
herramienta.<br />
La flexibilidad antes mencionada actualmente se entrega al diseñador por<br />
medio de la posibilidad de incorporar código en C++. Ello significa por una parte que el<br />
diseñador debe tener conocimientos de programación. Por otro lado, en el código<br />
generado se hicieron ciertos supuestos relativos al uso de procedimientos o funciones<br />
que necesariamente el diseñador debe conocer a la hora de incorporar código en la<br />
herramienta. Finalmente, a pesar que el código que genera la herramienta está<br />
debidamente indentado y comentado, nunca es fácil familiarizarse con el código escrito<br />
por otra persona.<br />
Todo lo anterior hace que el diseñador tenga que pagar cierto costo para<br />
utilizar todas las potencialidades que entrega la herramienta. Sin embargo, la ventaja de<br />
tener un código probado y tener que seguir unos requisitos mínimos en la interfaz de<br />
conexión con la estructura de datos y en el uso de procedimientos y funciones contra
tener que implementar todo desde cero, hace que invertir un poco de esfuerzo en<br />
familiarizarse con esos requisitos valga la pena.<br />
129<br />
Otro inconveniente que presenta la arquitectura del sistema es que ésta<br />
obliga a implementar una estructura de datos que represente el problema. Dicha<br />
estructura debe, además de contener al modelo, proveer mecanismos para la defmición,<br />
creación, actualización y eliminación de los clusters. Todo lo anterior significa que esa<br />
estructura de datos no es "portable" para ser utilizada por otros métodos de resolución,<br />
los cuales pueden ser otros paquetes como CPLEX.<br />
Por otro lado, aún queda mucho por hacer en el ámbito de la interfaz<br />
humano-computador del sistema, en la que pueden utilizarse los elementos definidos en<br />
el capítulo N°4 relativos a la definición de vecindades y grafo de heurísticas, por lo que<br />
muchos de estos inconvenientes pueden ser superados con el tiempo.<br />
Con respecto al lenguaje de programación utilizado, C++ se puede<br />
considerar un lenguaje que no es demasiado popular en el ámbito de la investigación<br />
operativa . Ello significa que los modelos de muchos de dichos problemas no están<br />
escritos en dicho lenguaje sino en otros como FORTRAN. Sin embargo como puede<br />
verse, esos problemas son problemas "operativos" más que conceptuales y pueden ser<br />
subsanados.<br />
6.5 Analogías con otras Áreas de Ciencia de la Computación<br />
La manipulación propuesta de los componentes de la resolución permite<br />
realizar analogías con otros procesos de modelación, especialmente provenientes del<br />
área de ciencia de la computación. Específicamente en el área de las bases de datos,<br />
existe un proceso de abstracción similar al que se realiza en investigación operativa.<br />
Dicho proceso de modelación identifica en el mundo real "objetos<br />
distinguibles" (entidades), las características que los identifican (atributos) y las
interdependencia entre los objetos (relaciones). Todos estos elementos son el<br />
equivalente a los componentes del modelo en el área de investigación operativa. Todos<br />
estos componentes también pueden expresarse en un lenguaje adecuado, que en el caso<br />
de las bases de datos corresponde a un meta-modelo gráfico denominado modelo<br />
entidad-relación [Date 93].<br />
130<br />
Dicho modelo, al igual que el análisis orientado a objetos, defme cuál es la<br />
asociación semántica de los datos. Lo que en el área de bases de datos se conoce como<br />
modelo de datos, que define la representación de la realidad. Esto equivale a la etapa de<br />
construcción del modelo en el área de investigación operativa.<br />
Por otra parte, también existe un modelo para representar la información en<br />
la base de datos, el cual corresponde al modelo relacional [Date 931. En él, cada<br />
entidad o relación del modelo entidad-relación se traduce en una "tabla" (o relación), la<br />
cual mantiene la información de los elementos del mundo real que respondan a la<br />
definición de la entidad a la cual pertenece dicha tabla. Manipulando esas tablas<br />
mediante ciertas operaciones es posible "navegar" sobre la información en la base de<br />
datos para realizar consultas y así obtener la información requerida. Dicho conjunto de<br />
operaciones sobre las tablas constituye un álgebra, denominada relacional [Date 93].<br />
Todos estos modelos son los que permiten la implementación de los<br />
sistemas administradores de bases de datos (SABD) en la práctica. La conceptualización<br />
de la información que entrega el modelo relacional es la que permite definir un lenguaje<br />
de consulta, es decir, una herramienta que utiliza cierto formalismo basado en el álgebra<br />
relacional, para especificar qué y cómo buscar dentro de la base de datos. Dicho<br />
lenguaje es el conocido como SQL, ampliamente utilizado en la actualidad en las bases<br />
de datos relacionales. La utilización del álgebra relacional también permite garantizar<br />
que una expresión en el lenguaje de consulta es equivalente a otra, pero más sencilla y
por tanto menos costosa de ejecutar, lo que permite "optimizar" consultas en forma<br />
transparente al usuario.<br />
131<br />
En consecuencia, podemos establecer una analogía entre los conceptos<br />
existentes en las bases de datos y los defmidos en esta tesis. El concepto de<br />
caracterización del problema tiene como análogo el concepto de modelo de datos, ya<br />
que define cuales son los elementos del modelo y su interrelación con respecto al<br />
proceso de búsqueda. El concepto de asociación defmido en esta tesis tiene como<br />
homólogo al de tabla del modelo relacional, mientras que el álgebra de asociaciones es<br />
el equivalente del álgebra relacional.<br />
Finalmente, el lenguaje LS-1 es el equivalente del SQL y es la forma como<br />
se obtienen del sistema de información (que está encapsulado en la estructura de datos<br />
que representa el problema) los datos relevantes para llevar acabo el proceso de<br />
búsqueda.
VII. TRABAJO FUTURO<br />
La analogía que existe entre el álgebra relacional y el álgebra de<br />
asociaciones es muy importante ya que permitirían utilizar las técnicas de optimización<br />
de consultas utilizadas en el área de bases de datos. Ello permitiría optimizar el código<br />
generado por la especificación entregada por el usuario y producir programas más<br />
rápidos.<br />
Otra área de investigación que sería interesante analizar la constituye la<br />
implementación de la búsqueda paralela. Los conceptos defmidos permiten construir la<br />
especificación paralela en forma trasparente al usuario, entregándole una poderosa<br />
herramienta de búsqueda.<br />
La búsqueda paralela también permite definir teorías interesantes de<br />
explorar. Se puede conceptualizar el sistema distribuido como un "ecosistema" de<br />
procesos donde las distintas heurísticas compiten (luchan entre sí por lograr acceso a<br />
recursos escasos como son las CPU del sistema distribuido), se adaptan (algunas de<br />
ellas se comportan mejor o peor dependiendo de la instancia del problema), sobreviven<br />
y mueren (tienen mejor o peor desempeño). Todo el sistema anterior (de búsqueda<br />
paralela y que encuentra las mejores heurísticas de un conjunto dado) puede utilizarse<br />
para la implementación de agentes inteligentes que "vivan" en la red de una empresa y<br />
se activen cuando llega una orden para a1gin producto y rápidamente busquen en<br />
tiempo real la mejor solución posible dado el conocimiento que se encuentre<br />
encapsulado en las bases de heurísticas que ellas posean.<br />
En esta tesis se propuso una metodología para enfrentar los procesos de<br />
diversificación e intensificación en un algoritmo de búsqueda local a través de los<br />
estados de la búsqueda y el grafo de heurísticas. Además, de acuerdo a lo expuesto en<br />
6.3.2, esto es también extensible a heurísticas de búsqueda global.<br />
132
133<br />
Dicha metodología combina distintas vecindades por "alternación", es decir,<br />
se escoge entre las heurísticas disponibles según el estado de la búsqueda alternando la<br />
ejecución de las mismas. Sin embargo, el diseñador es quien debe decidir cuál es el<br />
conjunto de variables que defme el estado de la búsqueda y las precondiciones y efectos<br />
de cada heurística.<br />
En el ámbito de machine learning se han realizado intentos que buscan<br />
encontrar la mejor regla de despacho para un problema por medio de algoritmos de<br />
clasificación [Piramuthu 94]. Dicho trabajo concluye que el desempeño y la regla<br />
dependen del estado de la búsqueda. Como el estado de la búsqueda cambia<br />
continuamente, parece natural utilizar un enfoque que adaptivamente utilice diferentes<br />
heurísticas en varios puntos a través del tiempo. Un intento similar se realiza en<br />
[Chaturvedi 92]. Los algoritmos de clasificación permitirían entonces, a través de un<br />
estudio empírico, la posibilidad de descubrir cuales son las mejores estructuras de<br />
vecindades para una instancia de un tipo de problema. Eso permitiría al sistema<br />
descubrir cual es la más apropiada topología para un grupo de heurísticas dado, en vez<br />
de solo conformarse con la especificación del usuario.
Ie1ii r.<br />
[Aarts 941 AARTS, E. H. L., VAN LAARHOVEN, P. J. M, LENSTRA, J.K. y<br />
ULDER, N.L.J. (1994) A computational study of local search algorithms for<br />
job shop scheduling. ORSA Journal on Computing, Vol. 6, 118-125.<br />
[Adams 881 ADAMS, J., BALAS, E., y ZAWACK D. (1988) The shifting bottleneck<br />
procedure forjob shop scheduling. Management Science, Vol. 34, 391-401.<br />
[Adler 931 ADLER, L., FRAIMAN, N., KERN, R., KOBACKER, E., PINEDO, M.,<br />
PLOTNTCOFF, J.C. y WU T-P. (1993) BPSS: A scheduling system for the<br />
packaging industry. Operations Research, Vol. 41, 64 1-648.<br />
[Anderson 961 ANDERSON, E.J. y GLASS, C.E (1995) Applications of local search in<br />
machine scheduling. Preprint 0R56. Faculty of Mathematical Studies.<br />
University of Southamptom (por aparecer en Local Search m Combinatorial<br />
Optimization, editado por Wiley)<br />
{Applegate 911 APPLEGATE, D. y COOK, W. (1991) A computational study of the<br />
job-shop scheduling problem. ORSA Journal on Computing, Vol. 3, 118-<br />
125.<br />
[Baeza 961 BAEZA, R. (1996) Diseño de un Ambiente Gráfico para un Generador<br />
de Heurísticas orientado a la Búsqueda Global. Tesis de Magister,<br />
Departamento de Ciencia de la Computación, Pontificia Universidad<br />
Católica de Chile.<br />
[Battiti 941 BATTITI, R. y TECCHIOLLI G.(1994) The reactive tabu search. ORSA<br />
Journal on Computing, Vol. 6, 126-140.<br />
134
[Bean 941 BEAN, J. C. (1994) Genetic algorithms and randoms keys for sequencing and<br />
optimization. ORSA Journal on Computing, Vol. 6, 154-160.<br />
[Cabrera 941 CABRERA, J. (1994) Modelación y Optimización Basada en<br />
135<br />
Conocimiento: Una Comparación con el Enfoque Clásico. Memoria de<br />
Título, Departamento de Ciencias de la Computación, Universidad de Chile.<br />
[Chaturvedi 921 CHATURVEDI, A. y NAZARETH, D. (1992) Investigating the<br />
effectiveness of conditional classification : an application to manufacturing<br />
scheduling. IEEE Transactions on Engineering Management Vol. 41,<br />
183-193.<br />
[Collaud 941 COLLAUD, G. y PASQUIER-BOLTUCK, J. (1994) gLPS: A graphical<br />
tool for the defmition and manipulation of linear problem. European<br />
Journal of Operational Research, Vol. 72, 277-286.<br />
[Collins 951 COLLINS, D. (1995) Designinng Object-Oriented User Interfaces.<br />
Benjamin/Cummins, Redwood.<br />
[Cormen 901 CORMEN, T.H., LEISSERSON, D.S y RIVEST, R. (1990) Introduction<br />
to Atgorithms. Mc Graw-HiIl, Nueva York.<br />
[Coullard 951 COULLARD, C. y FOURER, R. (1995). Interdependence of methods and<br />
representations in design of Software for combinatoria! optimization. Joint<br />
Workshop on Artificial Intelligence and Operations Research,<br />
Timberline, 6-10 Junio, Oregon.<br />
[Dammeyer 911 DAMMEYER, F., FORST, P. y VOSS, S. (1991) On cancellation<br />
methods of tabu search. ORSA Journal on Computing, Vol. 3, 262-265.
[Dammeyer 931 DAMMEYER, F. y VOSS, S. (1993) Dynamic tabu list management<br />
136<br />
using the reverse elimination method. Annais of Operations Research, Vol.<br />
41, 31-46.<br />
[Date 93] DATE, C. J. (1993) Introducción a los Sistemas de Bases de Datos,<br />
Volumen 1, 5ta edición, Addison-Wesley Iberoamericana,Wilmington.<br />
[Dell'Amico 93] DELL'AMTCO,M. y TRUBIAN, M.(1993) Appymg tabu search to<br />
the job-shop scheduling problem. Annais of Operations Research, Vol. 41,<br />
23 1-252.<br />
[Dombrovskaia 951 DOMBROVSKAIA, L., RODRÍGUEZ, P. y NUSSBAUM, M.<br />
(1995). Knowledge based modeling tool for linear programming.<br />
Proceedings of XV Conference of the Chilean Computer Science<br />
Society, Noviembre 1-3, 1995, Anca, Chile.<br />
[Fourer 931 FOURER, R., GAY, D.M. y KERNIGHAN, B. W. (1993) AmpI: a<br />
modeling language for mathematical programming, The Scientific Press,<br />
San Francisco.<br />
[Garey 79] GAREY, M.R. y JOHNSON, D.S (1979) Computers and Intractability: a<br />
Guide to NP-completeness. Freeman and Company, San Francisco.<br />
[Ghezzi 91] GFIEZZI, C., JAZAYERI, M. y MANDRIOLI, D. (1991) Fundamentals of<br />
Software Engineering. Prentice-Hall International Editions, Nueva Jersey.<br />
[Ghidini 93] GHIDINI, R. (1993) VISIPLAN: Un Paso más Allá de los Paradigmas<br />
de Modelación Tradicional. Tesis de Magister, Departamento de Ciencia de<br />
la Computación, Pontificia Universidad Católica de Chile.
[Gendreau 92] GENDREAU, M., HERTZ, A. y LAPORTE, G. (1992) New insertion<br />
137<br />
and postoptimization procedures for the travelling salesman problem.<br />
Operations Research Vol. 40, 1086-1093.<br />
[Gendreau 941 GENDREAU, M., HERTZ, A. y LAPORTE, G. (1994) A tabu search<br />
heuristic for the vehicle routing problem. Management Science Vol. 40,<br />
1276- 1290.<br />
[Glover 891 GLOVER, F. y GREENBERG, H. J. (1989) New approaches for heuristic<br />
search: a bilateral linkage with artificial intelligence. European Journal of<br />
Operational Research, Vol. 39, 119-130.<br />
[Glover 90a] GLOVER, F. (1990) Tabu search: part II, ORSA Journal on Computing,<br />
Vol. 2, 4-32.<br />
[Glover 90b] GLOVER, F. (1990) Tabu search: a tutorial. Interfaces, Vol. 20, 74-84.<br />
[Glover 951 GLOVER, F. (1995) Tabu search fundamentais and uses. Technical Report.<br />
Graduate School of Bussiness. University of Colorado at Boulder.<br />
[Goldberg 891 GOLDBERG, D. E. (1989) Genetic Algorithms in Search,<br />
Optimization and Machine Learning. Addison-Wesley, Reading.<br />
[Gu 931 GU, J. (1994) Local search for satisfiability (SAT) problem. IEEE<br />
Transaction on Systems, Man and Cybernetics Vol. 23, 1108-1129.<br />
[Gu 94] GU, J. (1994) Global optimization for satisfiability (SAT) problem. IEEE<br />
Transaction on Knowledge and Data Engineering Vol. 6, 361-38 1.<br />
[Hajek 88] HAJEK, B. (1988) Cooling schedules for optimal annealing. Mathematics<br />
of Operations Research Vol. 13, 311-329.
[Hendler 901 HENDLER, J., TATE, A. y DRUMMOND, M. (1990) Al planning:<br />
system and techniques. Al Magazine, Vol. 11, 6 1-77.<br />
[Hoon Lee 91] HOON LEE, Y. H., BHASKARAN,K. y P1NEDO, M. (1993) A<br />
138<br />
heuristic to minimize the total weighted tardiness with sequence-dependent<br />
setups. Technical Report. Department of Industrial Engineering and<br />
Operational Research, Columbia University, Nueva York.<br />
[Kirkpatrick 831 KIRKPATRICK, S., GELATT, J. R., y VECCHI, M.P. (1983)<br />
Optimization by Simulated Annealing. Science 220, 671-680.<br />
[Kumar 921 KUMAR,V., Algorithms for constraint-satisfaction problems: a survey. Al<br />
Magazine, Vol. 13, 32-44.<br />
[Lawler 93] LAWLER, E. L., LENSTRA, J.K., RNNOOY KAN, A. H. G y SHMOYS,<br />
D.B. (1993) Sequencing and scheduling: algorithms and complexity. En S.S<br />
Graves, A.h.g Rinnooy Kan y P.Zipkin (eds.), Handbooks in Operations<br />
Research and Management Science. North-Holland, Nueva York.<br />
[Levys 93] LEVYS, P. (1993) Modelación Basada en Conocimiento para Resolver<br />
Problemas de Planificación y Asignación de Recursos. Tesis de Magister,<br />
Departamento de Ciencia de la Computación, Pontificia Universidad<br />
Católica de Chile.<br />
[Lourenço 95] LOURENÇO, H.. (1995) Job shop scheduling : computational study of<br />
local search optimization methods. European Journal of Operational<br />
Research, Vol. 83, 347-364.<br />
[Melero 941 MELERO, M. (1994) Rediseño y Programación de la Base de<br />
Conocimiento de Visiplan. Memoria de Título, Departamento de Ciencia de<br />
la Computación, Pontificia Universidad Católica de Chile.
[Morton 93] MORTON, T.E y PENTICO, D.(1993) Heuristic Scheduling Systems.<br />
Wiley, NuevaYork.<br />
[Murphy 891 MIJRPHY, F.H. y STOFIR E.A. (1989) Composition rules for building<br />
139<br />
linear programrning modeis from components modeis. Management<br />
Science, Vol. 38. 996-1012.<br />
[Nowicki 93] NOWICKI, E. y SMUTNTCKI, C. (1993) A fast taboo search algorithm<br />
for the job shop problem. Preprint 8/93, Instytut Cybernetyki Technicznej,<br />
Politnechniki Wrowclawskiej, Wroclaw.<br />
[Nussbaum 931 NUSSBAUM, M. y PARRA E. (1993) A production scheduling system.<br />
ORSA Journal on Computing, Vol. 5, 168-181.<br />
[Pinedo 921 P1NEDO, M. (1992) Scheduling. En G. Saivendy (ed.), Handbook ¡ti<br />
Industrial Engineering, Wiley, Nueva York.<br />
[Pinedo 931 PINEDO, M. y SINGER, M.(1993) Algorithm generation environment:<br />
Report One. Department of Industrial Engineering and Operational Research,<br />
Columbia University, Nueva York.<br />
[Pinedo 95a] PINEDO, M. (1995) Scheduling: Theory, Algorithms and Systems.<br />
Prentice-Hall, Nueva York.<br />
[Pinedo 95b] PINEDO, M. y SINGER, M. (1995) A cluster neighborhood search for the<br />
job shop problem. Working Paper. Department of Industrial Engineering and<br />
Operational Research, Columbia University, Nueva York.<br />
[Pinedo 961 PINEDO, M. y SINGER, M. (1996) A shifting bottleneck heuristic for<br />
minimizing the total weighted tardiness in a job shop. Working Paper.<br />
Department of Industrial Engineering and Operational Research, Columbia<br />
University, Nueva York.
[Piramuthu 941 PIRAMUTH1J, S. RAMAN, N. y SHAW, M. J. (1994) Learning-based<br />
140<br />
scheduling in a flexible manufacturing flow une. IEEE Transactions on<br />
Engineering Management Vol. 41, 172-182.<br />
[Raghunathan 921 RAGHUNATHAN, S. (1992) A planning aid: an intelligent modeling<br />
system for planning problems based on constraint satisfaction. IEEE<br />
Transaction on Knowledge and Data Engineering Vol. 4, 3 17-335.<br />
[Reeves 931 REEVES, C (Ed) (1993) Modern Heuristic Techniques for<br />
Combinatorial Problems. Wiley, Nueva York.<br />
[Rogers 91] ROGERS, D.F., PLANTE, R.D., WONG, R.T. y EVANS, J.R. (1991)<br />
Agregation and desagregation techniques and methodology in optimization.<br />
Operation Research, Vol. 39, 553-582.<br />
[Roy 641 ROY, B. AND SUSSMANN, B. (1965) Les problémes dórdonnancement avec<br />
constraints disjontives, Note DS N° 9 bis, SEMA, Paris.<br />
[Rumbaugh 911 RUMBAUGH, J., BLAHA, M. PREMERLANI., W., EDDY, F y<br />
LORENSEN, W. (1991) Object-Oriented Modeling and Design. Prentice-<br />
Hall, Nueva York.<br />
[Saab 91] SAAB, Y.G. y RAO, V. B. (1991) Combinatorial optimization by sthocastic<br />
evolution. IEEE Transactions on Computer-Aided Design, Vol 10, 525-<br />
535.<br />
[Schrider 961 SCHIRÓDER, H. (1996) ModeLación y Optimización de un Problema<br />
de Transporte Forestal, Utilizando Técnicas Basadas en Conocimiento.<br />
Memoria de Título, Departamento de Ciencias de la Computación,<br />
Universidad de Chile.
[Schilkrut 931 SCHILKRUT, A.(1993). Desarrollo de Modelos Matemáticos<br />
141<br />
Aplicados al Transporte en el Sector Forestal. Memoria de Título,<br />
Departamento de Ciencias de la Computación, Universidad de Chile.<br />
[Sepúlveda 921 SEPULVEDA, M. (1992) SAM :Una Herramienta para Resolver<br />
Problemas de Planificación y Asignación de Recursos. Tesis de Magister,<br />
Departamento de Ciencia de la Computación, Pontificia Universidad<br />
Católica de Chile.<br />
[Singer 921 SINGER, M. (1992) Una Shell para la Definición de Sistemas de<br />
Planificación Basados en Conocimiento. Tesis de Magister, Departamento<br />
de Ciencia de la Computación, Pontificia Universidad Católica de Chile.<br />
[Smith 90] SMITH, D.R (1990) KIDS: A semiautomatic program development system.<br />
IEEE Transactions on Software Engineering, Vol. 16, 1029-1043.<br />
[Smith 931 SMITH, D.R y PARRA., E. (1993) Transformational approach to<br />
transportation scheduling. Technical Report. Kestrel Institute, Palo Alto.<br />
[Sosic 941 SOSIC, R. y GU, J. (1994). Efficient local search with conflict minimization:<br />
a case study of the n-queens problem. IEEE Transactions on Knowledge<br />
and Data Engineering, Vol. 6, 66 1-668.<br />
[Solotorevsky 941 SOLOTOREVSKY G. , GUDES, E. y MEISELS, A. (1994). RAPS:<br />
A rule-based languaje for specifying resource allocation and time-tabling<br />
problem. IEEE Transactions on knowledge and Data Engineering, Vol.<br />
6,681-697.<br />
[Storer 92] STORER, R., WU, D. y VACCARI R. (1992) New search spaces for<br />
sequencing problems with applications to job shop scheduling. Management<br />
Science, Vol. 38, 1495-1509.
[Taillard 941 TAILLARD, E.D. (1994) Parallel tabu search techniques for job shop<br />
scheduling problem. ORSA Journal on Computing, Vol. 6, 108-117.<br />
[van Laarhoven 92] VAN LAARHOVEN, P.J.M., AARTS, E.H.L. y LENSTRA J.K.<br />
142<br />
(1992) Job shop scheduling by simulated annealing. øperations Research,<br />
Vol. 40, 113-125.<br />
[Woodruff 931 WOODRUFF, D.L. y ZEMEL, E. (1993). Hashing vectors for tabu<br />
search. Annais of Operations Research, Vol. 41, 123-127.<br />
[Woodruff 941 WOODRUFF, D.L. (1994). Proposal for chunking and tabu search.<br />
Technical Report, Graduate School of Management. University of California<br />
at Davis.<br />
[Woodruff 951 WOODRUFF, D.L. (1995). Chunking applied to reactive tabu Search.<br />
Working Paper, Graduate School of Management. University of California at<br />
Davis.<br />
[Zanakis 891 ZANAKIS, S.R., EVANS, J.R., y VAZACOUPOLOS, A.A. (1989)<br />
Heuristics methods and applications: a categorized survey. European<br />
Journal of Operational Research Vol. 43, 88-110.<br />
[Zweben 921 ZWEBEN, M., DAVIS, E., DAUN, B., DRASCHER, E., DEALE, M. y<br />
ESKEY, M. (1992). Learning to improve constraint-based scheduling.<br />
Artificial Intelligence Vol. 58, 27 1-296.
ANEXOS<br />
143
ANEXO A: PROPOSICIONES DEL ÁLGEBRA DE ASOCIACIONES<br />
144
Proposición 3. 1 : Conmutatividad de la composición de la operación de restricción<br />
145<br />
Sea 1=(7e,0) una asociación de acuerdo a la definición 3.3 y sea<br />
PA ° p2 (.4) = p, (p (.4)) la composición de restricciones. Entonces:<br />
Demostración:<br />
PA, ° P2 2 ° . .. °PA,( ,4 ) = PAAA 2 A ... AA,(.4 )<br />
Por inducción en el largo n de la composición<br />
a) Caso atómico : (n2)<br />
Aplicando sucesivamente la definición de composición se tiene que:<br />
PA, °PÁ, (,1) = (5 7,e,(A22)A2I)<br />
(3.1)<br />
Utilizando la asociatividad de la operación and lógica y la definición 3.4 en<br />
la ecuación 3.1 obtenemos<br />
b) Paso inductivo:<br />
PA, ° PA 2 (4) = (7,e4A(X1AX2)) = PAA2 2 C4 )<br />
Hipótesis de inducción : PA, oPA 0•••°PA (.4)— PA IAAZA ... AA,,(,4)Vn
3.4 fmalmente se tiene:<br />
Corolario.•<br />
Demostración.•<br />
E.<br />
146<br />
(p1) = P2A...A. (.4)) = P2 A...A2 ((7 e, 0 A (3.3)<br />
Aplicando la definición 3.4 sucesivamente, esta vez sobre 3.3 se llega a:<br />
p1 0 ... op2 (,4)=(7,e,4A2 1 A(2, A2,A ... A2)) (34)<br />
Aplicando la conmutatividad y asociatividad del and lógico en la ecuación<br />
pÁo ... op2 (.4)=(7,e,4A2 1 A2.,A ... A2 A2 1)p2 ^ 2<br />
La composición de restricciones es conmutativa.<br />
Se desprende de la proposición anterior y la conmutatividad del and lógico<br />
Proposición 3.2 : Asociatividad de las operaciones de unión e intersección.<br />
Demostración.<br />
Las operaciones de unión e intersección son asociativas.<br />
Se demostrará solamente para la unión, por inducción en el número n de<br />
argumentos. El caso de la intersección es análogo.<br />
a) Caso atómico : (n=3)
147<br />
Sean 0) ¡=1,2,3 asociaciones según la definición 3.3. Aplicando<br />
sucesivamente la definición 3.8 y la asociatividad del operador or lógico, se obtiene la<br />
siguiente serie de ecuaciones que permite demostrar el caso atómico:<br />
(.41 uu=(71vØ2)u(7,Ø3)<br />
(,li<br />
(/11 u/1)u42=(?e, 01v(v 03»<br />
(,41 u,12)u4=,11 u(,42u/13)<br />
b) Paso inductivo : (n=k)<br />
La hipótesis de inducción : 41u(,42 u... (/1,u ,1)) = «,41 u ,1)...) u ,1,)<br />
u,1,, Vn:!~k .Por demostrar : .41 u(42 u... (,4,u ,1,+i)) = ((,li u .42)...) u 4,) u ,l,,+i<br />
Sea/Iu(,42u...(/1flu4,?+J))=,41u 9 (3.5)<br />
Dado que E tiene largo n=k, por hipótesis de inducción se tiene que.<br />
'='12 u(... (4u 4+)) = ((/12 u 43) u .. . u/1,) u (3.6)<br />
Reemplazando 3.6 en 3.5 se obtiene:<br />
,41 uÇ42u... (4u/1+1))=/11 u(((42u43)u...u4)u/1+1) (3.7)<br />
Sea V = ((/12 u ,43) u. .<br />
se obtiene de 3.7 la siguiente expresión<br />
. u4) y dado que se la hipótesis se cumple para /c3,<br />
41 uÇ42 u... 1))=/11 u(Du,4 + 1)=(,41 u)u4+ 1 (3.8)<br />
Reemplazando la defmición de y en 3.8 se obtiene:
,li U(, 2LJ... u(((u,)u ... u,1,))u,1,,+1 (3.9)<br />
Sea 1E =(((,4 u ,) u... u4), por lo tanto 3.9 equivale a:<br />
Dado que 5 tiene largo n=k- 1, por hipótesis de inducción.<br />
148<br />
(3.10)<br />
6=(Ç42 u ,) u ... u4,) = 42 u(,... (,4u ,1,,)) (3.11)<br />
Reemplazando la definición equivalente de S según 3.11 en 3.10 se obtiene:<br />
/11 u(42u... (4u4+1))=(,41 u(#u(.43 ... (,1.iu4))))u,9+1 (3.12)<br />
Sea 9= ,4 u(4 u(,3... (.4, i u ,4))), por lo tanto la ecuación 3.12 equivale a<br />
Puesto que 9 también satisface la hipótesis de inducción, se tiene.<br />
(3.13)<br />
9='1 442u(,4... (4.1u4)))=((,1 u,f) ... ) u,1)u,f,, (3.14)<br />
Reemplazando la definición de 9 obtenida en 3.14 en 3.13 se tiene:<br />
,41 u,42u... (.4u,+1))=((,41 u,4 )...)u%,)u , + 1<br />
Proposición 3.3 : Conmutatividad de las operaciones de unión e intersección.<br />
Demostración.<br />
Las operaciones de unión e intersección son conmutativas.<br />
Lo anterior significa que si A=(41,.. .,4,. . .,.4) es un conjunto de<br />
asociaciones y B'° es una permutación del conjunto A. Entonces:<br />
U I B P = ( 2' e4, vR V ... V4B ) Vp1,...,n!
149<br />
Pero dado que la operación or lógica es asociativa y conmutativa, si se<br />
reemplaza B i por el respectivo 4 , se tiene que aplicando las propiedades del operador or<br />
lógico se tiene que:<br />
U I BIP = (7 ,e , 4A v 4A v...v4A ) Vp1,...,n!<br />
Por lo tanto, Vp=l .....ni U1 A. = U1 Bf lo cual es la definición de la<br />
conmutatividad. La demostración de la conmutatividad de la intersección es totalmente<br />
análoga U.<br />
Lema 3.1:<br />
Demostración:<br />
La concatenación de encabezados es asociativa.<br />
La demostración se realiza por inducción en el número de argumentos sobre<br />
los cuales se aplica la operación de concatenación. Dado que el paso inductivo tiene la<br />
misma forma que la que se realizó para la proposición 3.2. sólo se demostrará el caso<br />
atómico.<br />
a) Lado izquierdo:<br />
Sean 9(ji,. . .,), R=(1,. . . ,6) yI=(ei,. . .,e) tres encabezados.<br />
Por demostrar: (9)®4 =<br />
()®4&i,...,/m,i.....4n)4(zi,...,n+n)ø4 (3.15)<br />
Aplicando la definición 3.5 sobre la ecuación 3.15 se tiene que<br />
= (i..... Zm+n,él, . . . , p) (/ .. .,61,eI .....4v,) (3.16)
) Lado derecho:<br />
Si se aplica la definición 3.5 esta vez sobre la ecuación 3.17 se tiene que<br />
(3.17)<br />
9(R4)= (5i , ... ,lm , qi ..... 9n+p)=(5I ......ím,i,...,6,,éi (3.18)<br />
De las ecuaciones 3.16 y 3.18 se desprende que ()®4 = (®4) que<br />
corresponde al caso atómicoU.<br />
Proposición 3.4.<br />
Demostración:<br />
El producto de asociaciones es asociativo<br />
Por inducción en el número de argumentos. El paso inductivo se demuestra<br />
de la misma forma que en el caso de la asociatividad de la unión y del producto, así que<br />
se demostrará solo el caso atómico<br />
Sean 9',. . . ,Im) , R=(1,. . . ,) y I=(é1 ,. . . 4,) tres encabezados y 41 =(57, e 0)'<br />
,=(ze,2) y 43=(4,e,p) 3 asociaciones de acuerdo a la definición 3.3. Los vectores<br />
que pertenecen a cada una de las asociaciones se denotarán de la misma forma que los<br />
encabezados. Se necesita demostrar que .4 x(.42x,13) = (.41 x,42)x,13 .<br />
a) Lado izquierdo:<br />
Aplicando la definición 3.7, se tiene la siguiente ecuación:<br />
41x(,42x43) (9,e,0) x(R4,e,Á(oo(w'))<br />
150<br />
A p(crnp(w'))) (3.19)
151<br />
Donde w '=(wi. al vector<br />
resultante del producto de las asociaciones '42 y 43. Entonces, debido a la definición 3.6<br />
se tiene o(w')= (4 .....61) y o,(w')= (t .....<br />
Sea y(w ') = 2(00,n(W' ))Ap(ap(W')), entonces volviendo a aplicar la<br />
definición 3.7 sobre la ecuación 3.19 se obtiene<br />
,4 x(,42x,42)= (9 ® (I(00m(W2)) A 7(CTm, n,p(W 2))) (3.20)<br />
Donde w2=(w1,. . . ) Wm,Wm+1, .. .,Wm+n,Wm+n+1 .. .,Wm+n+p) es el vector que<br />
pertenece a la asociación resultante del producto de las tres asociaciones y corresponde a<br />
(1i .....;mI.....6,,ti ,...,4,).<br />
Pero gracias a la definición 3.6, podemos ver que ?(0m, n+p(w2))=y(w'). Con<br />
lo cual, gracias a la asociatividad de la concatenación de encabezados y que<br />
(' . . .,4) y o,,(w')= (('.....é) de la ecuación 3.20 se tiene que:<br />
b) Lado derecho:<br />
'4I4,42x'13)= (52 ® ®4,é, ø(ii .....In,) A2(4, .. .,4)Ae1,. . .,4)) (3.21)<br />
Aplicando la definición 3.7, se tiene la siguiente ecuación<br />
(.4i x,42)x,4 (0b,n,(W 3)) A 2 (0mn(W 3))) X (4,e,q) (3.22)<br />
Donde w3 =(wi, . . ., Wm, Wm+ 1 ..... Wn,+) (ji, . . .. .,4,).corresponde al<br />
vector resultante del producto de las asociaciones 4 y ,42. Entonces, debido a la<br />
definición 3.6 se tiene Uü,m(W 3)= (ji, . . ., im) y 0 m n( w 3)(i, . . . 4,).<br />
Sea cw 3)00 m (1Y 3))A2(o m (w 3)), entonces volviendo a aplicar la<br />
definición 3.7 sobre la ecuación 3.22 se obtiene
(1 xi)x'4: ((90 104,e, 00,m+n(W4)) A ÇL*:CYm+n,p(W 4)))<br />
152<br />
(3.23)<br />
Donde w4 = (w1 ..... Wm, Wm+ 1'. . . , Wm+n, Wm+n+ 1,... Wm+n+p) es el vector que<br />
pertenece a la asociación resultante del producto de las tres asociaciones y corresponde a<br />
Pero, gracias a la definición 3.6, podemos ver que oO,m+n(W4))—W3). Con<br />
lo cual, gracias a la asociatividad de la concatenación de encabezados y que<br />
,...,,,) y Om.n(W5(i ..... )<br />
,11x(,42x.43)= (9rR4,e,<br />
De las ecuaciones 3.21 y 3.24 se obtiene<br />
de la ecuación ix se tiene que:<br />
(3.24)<br />
Proposición 3.5 : Distribución de la operación de restricción sobre la unión e<br />
intersección.<br />
intersección.<br />
Demostración:<br />
La operación de restricción distribuye sobre las operaciones de unión e<br />
Se demostrará el caso de la unión ya que para el caso de intersección se<br />
demuestra de la misma manera.<br />
Se necesita demostrar que: R (U ') = U t.<br />
Sean '=(?,e,Øt) i=1, . . .,n asociaciones según la definición 3.3. Por las<br />
defmiciones 3.4 y 3.8 se tiene que:
se tiene<br />
R(U14)<br />
v41v ... v4))=(7,e,(41 v4v ... v4)AX)<br />
(3.25)<br />
Utilizando la distributividad del and sobre el or lógicos en la ecuación 3.25<br />
R(U17)=(7,e,(<br />
1\ X)V@2 AX)v ... v( AX)) (3.26)<br />
Usando la definición 3.8 sobre la ecuación 3.26, se logra que<br />
(U ') = U Px('41), que es lo que se quería demostrar.R<br />
153
ANEXO B GRAMÁTICA DEL GENERADOR DE CÓDIGO<br />
154
parsing header _BEGIN paraxneters neigh_stop bigperturb<br />
neighborlist neighaccept END searchtype<br />
header solution objective include files hashfunction<br />
domaindef<br />
search type<br />
bigperturb<br />
neigh_stop<br />
neigh_accept<br />
1 DFS<br />
1 Is<br />
1<br />
PERTURB ASSIGN body<br />
1 GLOBAL stoperiteria<br />
1 GLOBAL acceptbody<br />
solution :SOLtJTION ASSIGN IDENTIFIER nextsolution<br />
nextsolution<br />
1 _ENCODE<br />
objective : _OBJECTIVE ASSIGN funcobj body<br />
include files : INCLtJDE ASSIGN body<br />
hash_function : FlASH ASSIGN body<br />
funcobj MAX<br />
¡ MIN<br />
domaindef domain<br />
1 domaindef domain<br />
domain : _DOMAIN IDENTIFIER DEF body<br />
neighbor_list neighborhood<br />
neighborhood IDENTIFIER parameters precondition<br />
post condition before after stoperiteria<br />
parameters<br />
paraml±st<br />
paramlist<br />
param -NUMEER<br />
precondition<br />
post condition<br />
param<br />
1 param COMA pa ram list<br />
PRECOND ASSIGN body<br />
POSTEJEC ASSIGN body<br />
155
efore<br />
after<br />
stop_cr±teria<br />
acceptcriteria<br />
1<br />
1<br />
1<br />
BEFORE _ASSIGN body<br />
AFTER ASSIGN body<br />
_STOP ASSIGN body<br />
acceptbody<br />
accept_body : _ACCEPT next accept code<br />
1 ACCEPT _ASSIGN body<br />
nextaccept : HILL<br />
SA N(JMBER nextannealing<br />
next anriealing<br />
candidates<br />
1 NUMBER<br />
1 list candidates<br />
list : IDENTIFIER ASSIGN attributes<br />
operator<br />
operator opername OPEN var list CLOSE code dispatch rule<br />
1 SUBSET OPEN variable dec CLOSE<br />
body dispatch rule<br />
DIFF OPEN variable COMA variable CLOSE<br />
code dispatch rule<br />
opername JOIN<br />
1 UNION<br />
1 INTERSEC<br />
code<br />
dispatch rule<br />
attributes<br />
nextattribute<br />
1 body<br />
sense : MIN<br />
SORT body<br />
1 sense nextattribute<br />
RANDOM sense nextattribute<br />
1 RANDOM next_attribute<br />
NUMBER<br />
varlist : variable dec<br />
1 variable dec COMA varlist<br />
156
variable dec variable<br />
varin<br />
vardef<br />
variable IDENTIFIER<br />
varin : IDENTIFIER IN IDENTIFIER<br />
var_def : IDENTIFIER DEF IDENTIFIER<br />
body _CODE<br />
changes : _PERTURB OPEN var in CLOSE body code<br />
1 M.KEALL OPEN var in CLOSE body<br />
157
ANEXO C : HEURÍSTICAS PARA EL PROBLEMA FORESTAL<br />
158
159<br />
A continuación se muestran las 6 heurísticas básicas defmidas para el<br />
problema de la forestal. En las especificaciones, camion se refiere a los subclusters de<br />
C2l , con tarea se refiere a los subclusters de e2 y con nodo se refiere a los subclusters de<br />
e3 y é4.Para una mayor claridad se omitieron en cada heurística las instrucciones que<br />
definen la interfaz con la estructura de datos del problema.<br />
a) Reducción de espera inicial<br />
Esta heurística define una lista de candidatos con los camiones que poseen<br />
las mayores esperas en el nodo de origen. Luego procede a atrasar la partida de los<br />
camiones correspondientes. El criterio de aceptación es probabilístico.<br />
reduccion espera inicial 100,10,500<br />
lista : maz 140 join( i camion)<br />
eort<br />
$ priority = solution.espera inicial plan(lista[lJ);$<br />
perturb(x in lista)<br />
$ solution.retrasar inicio plan(x{1]); $<br />
accept annealing 5000<br />
b) Equilibra tareas<br />
Selecciona aquellos camiones que tienen las mayores y menores cantidades<br />
de tareas asignadas, luego equilibra la cantidad de tareas entre camiones del mismo tipo.<br />
En este caso el algoritmo sólo acepta una solución si es que está es mejor la encontrada<br />
en la iteración anterior.<br />
equilibra tareas 100,12,500<br />
listal := max 160 join( i camion<br />
$ solution.num tareas camion(i)>0 $<br />
aort<br />
$ priority = solution.num tareas camion(listal[1]); $<br />
lista2 :- min 160 join( j camion<br />
$ solution . num tareas camion (j ) >0 $<br />
sort<br />
$ priority = solution.num tareas camion(lista2[l]); $<br />
final := join (camiona in listal, camionb in lista2)<br />
finail :- siibset ( tupla in final<br />
$ finall[1]
perturb(tupla in finail)<br />
$ solution.equilibratareas(tupla[11, tupla[2]); $<br />
accept hill<br />
c) Equilibra tiempos<br />
Hace fo mismo que la heurística anterior, pero selecciona los camiones que<br />
tengan mayores tiempos de espera totales. Se traspasan tareas entre camiones del mismo<br />
tipo. El traspaso se detiene antes de que la estimación del tiempo total en camión de<br />
origen sea mayor que el de destino del traspaso. Nuevamente el criterio de aceptación de<br />
la nueva solución es probabilísitico.<br />
equilibra tiempos de espera 10000, 10, 10000<br />
listal := max 50 join( i cainion<br />
$<br />
solution. num tareas cainion (i) >0 &&<br />
solution. total espera (i) >0<br />
$<br />
sort<br />
$ priority = solution.totalespera(listal[1]); $<br />
lista2 := min 50 join( j camion )<br />
$<br />
solution.num tareas camion(j)>0 &&<br />
solution. total_espera (j ) >0<br />
$<br />
sort<br />
$ priority = solution.totalespera(lista2[1]); $<br />
final :- join (camion_a in listal, camionb in lista2)<br />
finall := subset ( tupla in final<br />
$ finallf1J
corresponde a los atrasos de dichas tareas en los planes de los respectivos camiones. El<br />
criterio de aceptación es probabilístico.<br />
atrasa tarea mas larga 120, 3, 30<br />
lista := join( camion_a: camion, tarea_a: tarea<br />
$<br />
tarea a==solution. ret tarea_max_espera (camion_a) & &<br />
solution.retmax_espera(canüona)>0<br />
8<br />
prturb(tup1a in lista)<br />
$ solution.atrasa tarea camion(tuplaLl], tupla[2]); $<br />
accept annealing 2000<br />
e) Adelantar tareas<br />
tareas.<br />
161<br />
Igual que el caso anterior, salvo que el operador de perturbación adelanta las<br />
adelanta_tarea_mas_larga 100,3, 100<br />
lista := join( camiona: camion, tarea_a: tarea<br />
$<br />
tarea_a == solution.ret tarea max espera (camiona)<br />
&&<br />
solution. ret max_espera (camion a) >0<br />
$<br />
perturb(tupla in lista)<br />
$ solution.adelanta tarea camion(tupla[1], tupla[2]); $<br />
accept annealing 5000<br />
O Descongestión de nodos<br />
En los horarios de congestión de los nodos es posible enviar al último<br />
camión en la cola a otro nodo. Eso implica que la tarea que iba a realizar dicho camión<br />
es reconstruida con un nodo de origen o de destino alternativo al original. La heurística<br />
construye una lista de candidatos con los nodos que posean una alternativa para<br />
reconstruir la tarea del último camión y el cambio consiste en aplicar la tarea alternativa.
descarganodos 300,60,20<br />
lista := join( nodo_a: nodo<br />
$ solution.descarganodoposible(nodoa)==TRUE $<br />
perturb(tupla in lista)<br />
$ solution.descarga nodo (tupla[l]); $<br />
accept axnea1ing 40000<br />
g) Cambio de origenes<br />
Es posible disminuir los costos de los viajes o de la espera de los<br />
camiones buscando nodos alternativos para satisfacer la demanda de los destinos. La<br />
heurística selecciona un conjunto de camiones y busca nodos de origen alternativos<br />
para planificarlos.<br />
cambia origen tarea 20000,20000,20000<br />
lista : join( i : camion, j: origen)<br />
perturb(x in lista)<br />
$ solution.cambia origen tarea(x[lj,x[2]);$<br />
accept annealing 20000<br />
162