09.05.2013 Views

TESIS-MAG-0201.pdf

TESIS-MAG-0201.pdf

TESIS-MAG-0201.pdf

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!