metaheuristica de busqueda tabu (tabu search) (1) (1)

15
AbstractThis paper presents the Metaheuristics optimization algorithm Tabu search with a practical application example. The article describes the operation of tabu search algorithm and its application in solving problems as travelling salesman problem, Single machine scheduling setup time and the vehicle routing problem with time windows. Finally an algorithm in Matlab® published by an author of free distribution is presented. Index Terms— Algorithm, Metaheuristics, Single machine scheduling setup time, Tabu search, Traveling salesman problem and Vechicle routing problem. I. INTRODUCCIÓN La abundancia de problemas de optimización de alto grado de dificultad en el mundo real, ha sido una de las causas principales por la que en las últimas décadas se ha desarrollado un número considerable de técnicas heurísticas, que permiten obtener al menos un resultado sub-óptimo en un período de tiempo relativamente corto en problemas que resultaría impráctico resolver mediante "fuerza bruta". [1] Es por esto que en la década de los 80, Fred Glover desarrolló una heurística para tratar de resolver problemas de cubierta no lineal, llamada Búsqueda Tabú, la cual da a conocer en su mismo artículo donde introdujo el término Metaheurística. Los principios fundamentales de este algoritmo de búsqueda fueron publicados en una serie de artículos de finales de los años 80 y principios de los 90 y finalmente unificados en el libro Tabu Search en 1997. Las técnicas heurísticas más conocidas hoy en día no hacen más que adaptar ideas conocidas desde hace mucho tiempo en otras disciplinas. Por ejemplo, los algoritmos genéticos emulan los mecanismos de la evolución; los métodos de flujo de redes se fundamentan en ideas de la electricidad y la hidráulica, y el "recocido simulado" se basa en un proceso físico de la industria metalúrgica. Similarmente, la técnica conocida como búsqueda tabú se basa en ciertos conceptos tomados de la Inteligencia Artificial y se utiliza como una Metaheurística (o una heurística de "alto nivel") para resolver problemas de optimización combinatoria. [1] Por otra parte, el termino Metaheurística se refiere a estrategias generales para el diseño de procedimientos heurísticos inteligentes, es decir, las Metaheurísticas son el resultado de aplicar la estrategia general de la Inteligencia Artificial en el área de las heurísticas. Además, las Metaheurísticas se configuran como un elemento propio de la Inteligencia Artificial ya que pueden integrarse con otras herramientas para actuar como un sistema experto y facilitar su uso genérico a la vez que mejorar su rendimiento. Siguiendo las pautas marcadas por las Metaheurísticas es posible obtener algoritmos con un alto rendimiento para la toma asistida de decisiones. Las situaciones que surgen en circunstancias reales precisan, dada la gran complejidad y el número de variables a tener en cuenta, la utilización de herramientas informáticas en el análisis del problema para determinar rápidamente propuestas de alta calidad. En estas ocasiones es de gran importancia contar con un procedimiento capaz de explorar de forma METAHEURISTICA BÚSQUEDA TABÚ (TABU SEARCH) De La Cruz, Nafeth., Landázury, Fernando. [email protected] , [email protected] Universidad del Norte 1

Upload: fernando-landazury-lemus

Post on 23-Sep-2015

25 views

Category:

Documents


0 download

DESCRIPTION

Articulo academico de presentación de búsqueda tabú

TRANSCRIPT

1

[footnoteRef:1] [1: ]

METAHEURISTICA BSQUEDA TAB (TABU SEARCH)De La Cruz, Nafeth., Landzury, [email protected], [email protected] Universidad del NorteAbstract This paper presents the Metaheuristics optimization algorithm Tabu search with a practical application example. The article describes the operation of tabu search algorithm and its application in solving problems as travelling salesman problem, Single machine scheduling setup time and the vehicle routing problem with time windows. Finally an algorithm in Matlab published by an author of free distribution is presented.

Index Terms Algorithm, Metaheuristics, Single machine scheduling setup time, Tabu search, Traveling salesman problem and Vechicle routing problem.

INTRODUCCINLa abundancia de problemas de optimizacin de alto grado de dificultad en el mundo real, ha sido una de las causas principales por la que en las ltimas dcadas se ha desarrollado un nmero considerable de tcnicas heursticas, que permiten obtener al menos un resultado sub-ptimo en un perodo de tiempo relativamente corto en problemas que resultara imprctico resolver mediante "fuerza bruta". [1]

Es por esto que en la dcada de los 80, Fred Glover desarroll una heurstica para tratar de resolver problemas de cubierta no lineal, llamada Bsqueda Tab, la cual da a conocer en su mismo artculo donde introdujo el trmino Metaheurstica. Los principios fundamentales de este algoritmo de bsqueda fueron publicados en una serie de artculos de finales de los aos 80 y principios de los 90 y finalmente unificados en el libro Tabu Search en 1997.

Las tcnicas heursticas ms conocidas hoy en da no hacen ms que adaptar ideas conocidas desde hace mucho tiempo en otras disciplinas. Por ejemplo, los algoritmos genticos emulan los mecanismos de la evolucin; los mtodos de flujo de redes se fundamentan en ideas de la electricidad y la hidrulica, y el "recocido simulado" se basa en un proceso fsico de la industria metalrgica. Similarmente, la tcnica conocida como bsqueda tab se basa en ciertos conceptos tomados de la Inteligencia Artificial y se utiliza como una Metaheurstica (o una heurstica de "alto nivel") para resolver problemas de optimizacin combinatoria. [1]

Por otra parte, el termino Metaheurstica se refiere a estrategias generales para el diseo de procedimientos heursticos inteligentes, es decir, las Metaheursticas son el resultado de aplicar la estrategia general de la Inteligencia Artificial en el rea de las heursticas. Adems, las Metaheursticas se configuran como un elemento propio de la Inteligencia Artificial ya que pueden integrarse con otras herramientas para actuar como un sistema experto y facilitar su uso genrico a la vez que mejorar su rendimiento. Siguiendo las pautas marcadas por las Metaheursticas es posible obtener algoritmos con un alto rendimiento para la toma asistida de decisiones. Las situaciones que surgen en circunstancias reales precisan, dada la gran complejidad y el nmero de variables a tener en cuenta, la utilizacin de herramientas informticas en el anlisis del problema para determinar rpidamente propuestas de alta calidad. En estas ocasiones es de gran importancia contar con un procedimiento capaz de explorar de forma eficiente el espacio de soluciones alternativas para seleccionar una que alcance las mximas cotas posibles en los objetivos propuestos. Ante la ausencia de un procedimiento exacto que permita obtener en todas las circunstancias una solucin ptima en tiempo razonable es importante contar con un algoritmo heurstico que aporte una alternativa con una alta confianza de que es la mejor solucin posible o est muy prxima a serlo. [2]

La bsqueda tab puede verse como una Metaheurstica que se superpone a una tcnica de bsqueda y que trata de evitar que dicha tcnica caiga en ptimos locales prohibiendo ciertos movimientos. Tambin puede entenderse como una Metaheurstica que gua un procedimiento heurstico de bsqueda local en la bsqueda del ptimo global. Su filosofa se basa en derivar y explotar una coleccin de estrategias inteligentes para la resolucin de problemas, basadas en procedimientos implcitos y explcitos de aprendizaje [3]. El problema de este algoritmo es que se puede quedar atrapado en ptimos locales, por lo cual se debe considerar la posibilidad de avanzar segn pasos que no mejoren la solucin, con esto el riesgo de repetir soluciones aumenta, por lo tanto la solucin es utilizar memoria para descartar los ya visitados.

El propsito de clasificar ciertos movimientos como prohibidos (o "tab") es para evitar que se caiga en ciclos durante la bsqueda. Debido a esto, Glover sugiere como nombre alternativo para su mtodo, el de bsqueda con "inhibicin dbil", ya que los movimientos que se consideran prohibidos constituyen generalmente una pequea fraccin del total de movimientos disponibles, y un movimiento pierde su status de prohibido despus de un perodo de tiempo relativamente corto, volvindose despus nuevamente accesible. [1]

Ms particularmente, la bsqueda tab est basada en la premisa de que para clasificar un procedimiento de resolucin como inteligente, es necesario que este incorpore memoria adaptativa y exploracin responsiva. La memoria adaptativa en bsqueda tab permite la implementacin de procedimientos capaces de realizar la bsqueda en el espacio de soluciones eficaz y eficientemente. Dado que las decisiones locales estn por tanto guiadas por informacin obtenida a lo largo del proceso de bsqueda, la bsqueda tab contrasta con diseos que por contra confan en procesos semialeatorios, que implementan una forma de muestreo. La memoria adaptativa tambin contrasta con los tpicos diseos de memoria rgidos tales como las estrategias de ramificacin y acotacin. [3]

El nfasis en la exploracin responsiva considerada en la bsqueda tab deriva de la suposicin de que una mala eleccin estratgica puede proporcionar ms informacin que una buena eleccin realizada al azar, dado que una eleccin estratgica mala puede proporcionar pistas tiles sobre como guiar la bsqueda hacia zonas prometedoras. Por lo tanto, la exploracin responsiva integra los principios bsicos de la bsqueda inteligente; explota las caractersticas de las soluciones buenas a la vez que explora nuevas regiones prometedoras.USOS FRECUENTES DE LA BUSQUEDA TABUDesde que se dio a conocer a finales de los 80 y comienzo de los 90 por Fred Glover, la Bsqueda Tab ha tenido innumerables aplicaciones en diferentes reas de la investigacin de operaciones. Las aplicaciones ms frecuentes que se encuentran en la literatura se pueden clasificar en las siguientes categoras segn Glover [4]:

- Planificacin (por ejemplo: planificacin de horarios, de mquinas, de fuerza de trabajo, etc.)- Diseo (por ejemplo: diseo de topologas de redes, planeacin de espacios arquitectnicos, de redes tolerantes a errores, etc.)- Lgica e Inteligencia Artificial (por ejemplo: reconocimiento de patrones y caracteres, integridad de datos, diseo de redes neuronales, lgica probabilstica, etc.)- Tecnologa (por ejemplo: inversin ssmica, distribucin de potencia elctrica, construccin de estaciones espaciales, exploracin de yacimientos petrolferos, diseo estructural, etc.)- Telecomunicaciones (por ejemplo: asignacin de rutas, planeacin de descuentos a clientes, redes ptimas sncronas, arquitecturas inmunes a fallas, etc.)- Produccin, inventario e inversin (por ejemplo: manufactura flexible, seleccin de partes, planeacin de inventarios, etc.)- Localizacin y asignacin (por ejemplo: flujo de mltiples productos bsicos, asignacin cuadrtica, etc.)- Ruteo (por ejemplo: ruteo de vehculos, de flotas mixtas, el problema del agente viajero, etc.)- Optimizacin de grficas (por ejemplo: divisin de grafos, coloreado de grafos, etc.)- Problemas de optimizacin combinatoria en general (por ejemplo, programacin cero-uno, programacin no lineal y no convexa, optimizacin entera mixta, etc.)En general, esta tcnica ha tenido mucho xito en problemas de optimizacin combinatoria que pueden expresarse en la forma de una grfica o una red de flujos. Glover [5] afirma haber resuelto con este mtodo problemas que involucran entre uno y cuatro millones de variables en menos de media hora, usando slo una computadora personal, y obteniendo resultados que se encuentran dentro del 98% de lmite superior de optimalidad. Tan slidos resultados la hacen ver como una tcnica de bsqueda muy prometedora dentro de la investigacin de operaciones, y a la cual se le sigue dando mltiples usos y combinaciones con otras Metaheursticas conocidas como hbridas. FUNCIONAMIENTO DEL ALGORITMO

Una enfoque general del algoritmo de bsqueda tab es[6]:

Notacin S, la solucin Inicial. S*, la mejor solucin hallada. f* Valor de S*. N(S), el vecindario de S. el subconjunto admisible de N(S)Suponga que se desea minimizar una funcin sobre algn dominio y se aplica la versin mejor mejora de la bsqueda tab, que corresponde a la versin en la cual se opta en cada iteracin el mejor movimiento disponible.

1. Inicializacin Escoge (Construye) una solucin inicial S0.Inicia S= S0, f*=f (S0), S*= S0, T=

2. BsquedaMientras el criterio de terminacin no sea satisfecho hacer: Selecciona S con el argmin [f(S)]; S Si f(S) < f*, entonces selecciona f*:=f(S), S*:= ; Guardar como Tab el movimiento en T (borrar la entrada ms antigua si es necesario); Iterar el algoritmoEl esquema general del algoritmo de bsqueda Tab plantea la adopcin de mtodos de bsqueda local, o en otras palabras, exploracin de un vecindario de soluciones para la obtencin de ptimos locales.

Supngase un espacio de soluciones como el contemplado en la Ilustracin 1 Universo de soluciones, el algoritmo bsqueda tab parte de una solucin inicial, que se encuentra en un vecindario de soluciones (el vecindario de soluciones son todas y cada una de las soluciones dentro del valo) y con el uso de mtodos o heursticas de bsqueda local se busca probar las posibles soluciones del vecindario (soluciones dentro del ovalo), encontrando de esta manera un ptimo local para el vecindario de soluciones.

Ilustracin 1 Universo de solucionesPARAMETROS DE DISCUSIONEl principal inconveniente de las bsquedas locales, es que en general, suministran soluciones localmente ptimas que pueden estar muy alejadas de la solucin ptima global[7]. Para el algoritmo bsqueda tab, la calidad de la solucin inicial juega un factor significativo, dado que la baja calidad de la solucin inicial, puede ocasionar la bsqueda de un ptimo local muy alejado del ptimo global. Por lo anterior existen muchos mtodos para la construccin de una solucin inicial. Algunos que involucran desde heursticas simples, como la del vecino ms cercano o insercin ms prxima, a otras ms complejas como el uso de la meta heurstica Grasp (Greedy randomized adaptative search procedure) un mtodo multi-arranque (mtodos que generan soluciones iniciales y las mejoran) de bsqueda miope (busca sesgada) aleatorizado y adaptativo, que asegura soluciones iniciales (combinado con bsqueda tab) que permitan conseguir ptimos locales ms cercanos al ptimo global.

La heurstica de bsqueda local es otro factor significativo en la solucin del algoritmo de bsqueda tab, al igual que la solucin inicial existen diversas heursticas y el nivel de complejidad de ests influyen en la calidad de las soluciones del vecindario o la posibilidad de acceder a otros vecindarios de soluciones. Uno de los algoritmos ms usados es el algoritmo k-opt que consiste en mover k secuencias de las soluciones de modo que se puedan probar otras soluciones del vecindario[8]. El uso de heursticas ms complejas involucra a algunas como GENI o US, las cuales han sido diseadas para el problema del agente viajero y son utilizadas para problemas de ruteo.

Uno de los elementos fundamentales de esta meta heurstica es la lista tab, la cual simula de manera artificial la memoria humana, mediante una lista que es empleada en el almacenamiento de las caractersticas de los movimientos aceptados, de modo que estas caractersticas sean clasificadas como tab en prximas iteraciones del algoritmo.

En lo que respecta a la lista tab el algoritmo consiste en tres estrategias: Estrategia de olvido, estrategia de liberacin y la estrategia de intensificacin.

La estrategia de olvido, controla las entradas a la lista tab y es empleada para evitar problemas cclicos previniendo de visitar soluciones ya exploradas en iteraciones anteriores, clasificndolas como tab. Idealmente, la lista tab debera recordar todas y cada una de las soluciones, empero, realizar esta labor requiere un alto esfuerzo computacional, para lo que una alternativa para este problema es la de recordar no visitar soluciones visitas durante Ts iteraciones previniendo la escogencia de movimiento que represente reversin de cualquier solucin tomada durante la secuencias de las ltimas Ts iteraciones y alejando la bsqueda de todas las soluciones de las Ts iteraciones. Las Ts iteraciones son llamadas comnmente el tamao de la lista tab. En un tamao de lista muy pequeo la probabilidad de encontrarse en un una bsqueda cclica es alta, si el tamao de la lista es muy grande la bsqueda puede estar siendo alejada de vecindarios con buenas soluciones antes de que sean exploradas.

No obstante, la condicin tab de una solucin puede ser violada mediante el criterio de aspiracin, el cual es usado para liberar soluciones tab con la suficiente calidad y que pueden prevenir un ciclo. El criterio de aspiracin tiene un rol de gua en el proceso de bsqueda, la estrategia de olvido tienen un rol restrictivo del espacio de bsqueda para el algoritmo. Una solucin es aceptada como nueva solucin inicial si las restricciones tab son cumplidas. Sin embargo, una solucin tab es asumida aceptable si el criterio de aspiracin aplica de manera independiente[9]. En otras palabras una solucin tab podr ser aceptada si y solo s la solucin tab es mejor que la mejor solucin obtenida de manera global por las iteraciones del algoritmo, llamado este tipo de criterio de aspiracin tiempo-dependiente. Un criterio de aspiracin tiempo-independiente es la aceptacin de una solucin tab cuando las soluciones de una iteracin se encuentran truncadas (todas las soluciones de una iteracin son tab). El uso apropiado de los criterios de aspiracin pueden ser significativo para permitir que la bsqueda tab alcance su mayor desempeo.[9]

Por otro lado, la estrategia de liberacin es usada para decidir las salidas de la lista tab. La estrategia borra las restricciones tab de las soluciones para que puedan ser consideradas en iteraciones en adelante de la bsqueda. Los atributos de una solucin tab permanecen en la lista tab una duracin de Ts iteraciones. Una solucin es considerada admisible si sus atributos no son tab o pasan el criterio de aspiracin.

La estrategia de intensificacin utiliza funciones de memoria a mediano y largo plazo. La idea detrs del concepto de una bsqueda intensa es lo que una mente humana probablemente hara, buscar con mayor atencin las porciones del espacio de bsqueda que parezca prometedor de manera que se asegure las mejores soluciones en esas reas o vecindarios de bsqueda; un humano regular parara la bsqueda normal para intensificar la bsqueda en las combinaciones que parezcan promisorias. Esta estrategia opera creando una sub lista de una seleccin de un nmero de movimientos generados durante la ejecucin del algoritmo. Se cataloga como una estrategia de aprendizaje de largo plazo que busca nuevas soluciones que exhiban similar desempeo a las de las mejores soluciones. Esto se logra a travs de restringir movimientos a soluciones de menor desempeo.

Tal y como se ha descrito hasta el momento, el algoritmo podra ser corrido, tericamente, de manera infinita, en la prctica, la bsqueda tiene que ser terminada en un en el tiempo que haga factible la obtencin, de si bien no el ptimo global, una muy buena solucin. La culminacin del algoritmo se realiza a travs de un criterio de terminacin, el cual suspende el procedimiento luego de:

La existencia de un nmero especificado de iteraciones, Determinacin de un nmero preciso de iteraciones que deban pasar de forma consecutiva, desde que fuera hallada la mejor solucin. EL objetivo alcance un valor pre-especificado.

APLICACIONESLa Metaheurstica de Bsqueda Tab, es til para resolver problemas frecuentes en el rea de ingeniera, como lo son el Problema del agente viajero, Secuenciacin con tiempos de alistamiento y Ruteo de vehculos con ventanas de tiempo. Cada uno de estos problemas se plantea a continuacin:Problema del agente viajeroEl problema del agente viajero o TSP pos sus siglas en ingls (Travelling Salesmen Problem), consiste en un agente de ventas que debe visitar n sitios o ciudades, pasando una sola vez por cada uno de estos, excepto del inicial, al cual debe volver. Este es uno de los problemas ms famosos y complejos de las ciencias computacionales y ha sido abordado por varias ramas de la ingeniera y por distintas razones, su principal aplicacin es la del ruteo desde distintas perspectivas, ya sea un proceso que lleva una secuencia especfica o una distribucin de carcter logstico en la que intervienen elementos del transporte, buscando la mejor ruta posible con criterios de economa en distancia o en costo. Proveer soluciones contribuye a mejorar tareas y procesos en distintos mbitos, cientficos e industriales, proponiendo alternativas para el mejor uso de los recursos. De acuerdo con De los Cobos et al. [10], se define el problema del agente viajero, dado un entero y las distancias entre cada par de las n ciudades, estas distancias se da por medio de la matriz de dimensin , donde dij es un entero mayor o igual a cero. Un recorrido es una trayectoria que visita todas las ciudades exactamente una vez. El problema consiste en encontrar un recorrido con longitud total mnima.Una permutacin cclica representa un recorrido, si se interpreta como la ciudad despus de la ciudad . As, el costo del recorrido de un punto a otro es:

Ciudad12n

1

2

n

La resolucin de este tipo de problemas a travs del algoritmo de optimizacin de bsqueda tab, parte a travs de la tabla anterior. Se busca una solucin inicial y se ejecuta el algoritmo de bsqueda a partir de la solucin inicial. Es comn que la construccin de esta tabla las distancias de un punto a otro sean distancias euclidianas o distancias de Manhattan. Las distancias euclidianas son las menores distancias de un punto a otro, geomtricamente son las curvas que representan la distancia entre dos puntos. Las distancias de Manhattan son las distancias entre dos puntos pero cruzando por el camino construido para esos puntos. En una ciudad, la distancia de Manhattan representan las distancias de las calles necesarias para llegar de un punto i a uno j. Las distancia euclidiana en el mismo ejemplo representan las distancias entre el mismo punto i a otro j, sin tener en cuenta los obstculos que hacen inviable transportarse de manera directa esa distancia.

Es normal encontrar en este tipo de problema que el costo, la distancia o el tiempo representado en la tabla sea el mismo al ir de una ciudad i a una j y viceversa.Problema de Ruteo de Vehculos con Ventanas de Tiempo.

Este problema es una variante de VRP conocida como Problema de Ruteo de Vehculos con Ventanas de Tiempo Parciales (Vehicle Routing Problem with Time Windows, VRPTW).

A continuacin se definen los parmetros del problema en cuestin:

En el problema VRPTW tenemos un conjunto de clientes , que residen en ubicaciones diferentes. Utilizamos el 0 para denotar la ubicacin del depsito, con lo cual es el conjunto de ubicaciones consideradas por el problema. A cada par de clientes donde , se le asocia un costo de viaje y un tiempo de viaje . Cada cliente tiene una demanda . El conjunto define la matriz de costos del problema. La matriz de costos satisface la desigualdad triangular si y solo si . En nuestro caso, las instancias del problema definen las ubicaciones de los clientes como puntos en el plano y por lo tanto se definen los costos de viaje como la distancia euclidiana entre los puntos. La matriz de costos resultante es simtrica y satisface la desigualdad triangular.

El conjunto de camiones o vehculos homogneos se denota , siendo la capacidad de cada vehculo. En algunas variantes del problema la cantidad de vehculos es una variable a minimizar.

Ventana de Tiempo: Cada cliente i tiene una ventana de tiempo o simplemente ventana, es decir, un intervalo donde y representan los horarios de comienzo y el fin del abastecimiento del cliente . Un vehculo puede arribar a la ubicacin del cliente antes de , pero el abastecimiento no puede comenzar hasta el horario de apertura de la ventana de tiempo . Un vehculo no puede arribar al cliente despus de la finalizacin de la ventana de tiempo . El depsito tambin tiene una ventana de tiempo , donde representa el horario en que los vehculos salen del depsito y representa el horario en que los vehculos deben retornar al depsito.

Aunque existen diversas adaptaciones del algoritmo bsqueda tab al problema del ruteo de vehculos con ventanas de tiempo una adaptacin prctica consiste en los siguientes pasos.1. Utilizacin de la heurstica de barrido o sweep. En la cual se forman clster o se aglomeran vrtices del grafo en subgrupos. Estos se forman girando una semirrecta con el origen en el depsito hasta que se cumpla la capacidad de vehculos y demanda.2. Luego se utiliza la Metaheurstica bsqueda tab para encontrar la ruta adecuada entre nodos para cada vehculo.Otro enfoque sugiere la adaptacin del algoritmo a uno conocido como ruta tab (Taburoute) el cual posee las siguientes componentes adicionales;1. Una solucin S es un conjunto de m rutas R1,, Rm donde cada vrtice vi, salvo el depsito, pertenece a un nica ruta.2. La existencia de dos funciones objetivos una F1(S) = tij. Donde tij es el tiempo para ir de la ciudad i a la j. F2(S) = F1(S)+max{0,(qi)-(Q)}+max{0,[(tij+ti)-L}.3. Criterio de aspiracin: Un movimiento de la lista tab es aceptado si la solucin que produce es factible y es mejor que el valor de F1 mejor encontrado o no es factible y mejora el valor de F24. Al inicio de cada iteracin se elige un cierto de nmero de ciudades al azar. Siendo que una ciudad se inserta en otra ruta solo si ella est en una de sus k vecinos ms prximos, o en una ruta vaca si hace falta crear una nueva ruta.Problema de Secuenciacin de Tareas con tiempos de alistamiento

El problema a discutir es la programacin de n trabajos en una sola mquina, donde el objetivo es minimizar la tardanza total ponderada, con secuencias que dependen del tiempo de preparacin. La mquina es capaz de manejar exactamente un trabajo u operacin en cualquier momento dado, y cada uno de tales trabajos u operaciones deben terminar el proceso una vez se haya iniciado (es decir, el modelo es no preferente). Las nicas decisiones que s que podrn ser tomadas son acerca de la secuencia y el tiempo de liberacin de las ordenes de trabajo orden u operaciones desde la entrada a la cola hasta la fuente de salida.

La mquina procesa los trabajos de uno en uno en serie, el recurso est disponible el intervalo de programacin de a , los n trabajos de operaciones llegaran durante el intervalo, el trabajo tiene un tiempo de procesamiento , un tiempo de alistamiento , y una fecha de vencimiento , la secuencia depender de la configuracin representada por una matriz de la funcin objetivo es reducir al mnimo el total de la tardanza ponderada.

El retraso" del trabajo es la cantidad de tiempo (positivo o negativo) por que la terminacin de actividad excede su vencimiento, . La tardanza se define como el retraso rectificado, , es decir; el retraso de trabajo si es positivo. Si el retraso de trabajo no es positivo, la tardanza es el cero: . La tardanza refleja el hecho de que en muchas situaciones, las penalizaciones y otros gastos sern asociados slo con el retraso positivo. La tardanza mnima ponderada es un objetivo til, pero los problemas que usan este objetivo son muy complejos para solucionar exactamente.

En este problema se debe considerar las permutaciones de los n trabajos para encontrar la secuencia ptima. Sin embargo, hasta para problemas de tamao modesto, la enumeracin completa no es computacionalmente factible ya que esto requiere la evaluacin de n secuencias. [11]

Un sin nmero de enfoques han sido sugeridos para la solucin de este problema sin realizar una enumeracin explcita. Held, Karp y Lawler presentaron formulaciones de programacin dinmica, que requieren el examen 2n de subconjuntos posible de los n Trabajos. A pesar de ser mucho ms eficiente que una enumeracin completa, este mtodo sigue siendo computacionalmente imposible para los problemas de tamao modesto. En las ltimas dcadas se han desarrollado varias tcnicas, por ejemplo las normas-OPT que llegaron a finales del 1970 y principios del 1980, mientras que la dinmica de cuello de botella comenz a principios del 1980. Nuevos mtodos matemticos han ido apareciendo, como la bsqueda en haz, recocido simulado, algoritmo gentico, bsqueda tab y otros mtodos.

Desde la ptica del algoritmo la resolucin de este tipo de problemas es similar a la del problema del agente viajero, sin embargo una diferencia particular es que las distancias en la tabla de informacin para este caso tiempo, no hay reversibilidad o proporcionalidad por lo tanto el tiempo que toma cambiar una tarea i a una j no es el mismo que al de una tarea j a una i.desarrollo en matlab

Para el desarrollo del algoritmo de bsqueda Tab en Matlab, se utiliz un cdigo desarrollado por Steve [12], el cual est planteado para resolver el Problema del Agente Viajero. Este algoritmo consta de una matriz d, la cual representa la matriz de costos o distancia del problema a la cual tambin se le conoce como matriz de adyacencia.

Los criterios de terminacin del algoritmo son los que se muestran a continuacin: Cuando se alcancel el nmero mximo de iteraciones posibles. Cuando despus de 10000 iteraciones la mejor solucin encontrada aun no mejore.Por otro lado, el tamao de la lista tab est definido por el entero de la raz cuadrada de siendo , (cabe resaltar que el algoritmo supone matrices simtricas). Para ver el cdigo dirjase al Anexo 1.EJEMPLO PRCTICOPa ya es una compaa de la ciudad dedicada a como ellos lo describen servicios domicilios varios. La compaa pone a disposicin de los clientes motociclistas que deben recibir documentos, encomiendas o recibos bancarios por parte de los clientes y deben realizar las encomiendas o consignaciones pendientes que el cliente no puede realizar. Una unidad de negocio de la organizacin corresponde a el pago de obligaciones bancarias a nivel corporativo, para lo cual los recibos y el dinero de las transacciones es recogido por un mensajero de la compaa y luego es llevado a la central para ser clasificadas las cuentas y ser repartidas a un mensajero destinado a un banco a la vez.

El mensajero encargado de recibir las consignaciones empieza su da laboral en la compaa donde debe reportar su entrada y luego debe visitar las 12 corporaciones adscritas al servicio especial ofrecido por la compaa y al final debe regresar con las transacciones bancarias solicitadas. Se desea conocer una ruta que disminuya la distancia total recorrida por el mensajero, que ayude a disminuir los costos de transporte.

Utilizando el algoritmo de bsqueda tab se propone una secuencia que disminuya la distancia. Los parmetros de bsqueda son los siguientes: Bsqueda de una solucin inicial mediante la heurstica del vecino ms cercano La heurstica de prueba es 2-opt de movimientos adyacentes, El tamao de la lista tab es 5 El criterio de aspiracin es si y solo si se aceptara una respuesta tab si la solucin de esa respuesta es mejor que la mejor respuesta obtenida en las iteraciones anteriores. El criterio de terminacin del algoritmo, es un nmero de iteraciones igual a 8 sin mejora.La tabla de distancias se muestra a continuacin

12345678910111213

1-4291026202622101817282

24-9522301717231273017

3299-6112756142013326

41056-25130132014112415

526221125-1810234111710

620302711-7217251625

7261753087-15272152930

8221761310215-4424924

9102314202317274-291520

1018122014422142-101315

111771311115524910-3014

1228303241716299151330-9

132172615102530242015149-

Haciendo uso de la heurstica del vecino ms cercano obtenemos la ruta:

1-13-12-3-4-6-5-8-9-10-11-7-2-1 F.O. 74

12345678910111213

1-4291026202622101817282

24-9522301717231273017

3299-6112756142013326

41056-25130132014112415

526221125-1810234111710

620302711-7217251625

7261753087-15272152930

8221761310215-4424924

9102314202317274-291520

1018122014422142-101315

111771311115524910-3014

1228303241716299151330-9

132172615102530242015149-

Haciendo uso del algoritmo bsqueda tab obtenemos en la primera iteracin:

F.O

112133465891011721123

1133#465891011721109

113124365891011721121

113123645891011721119

11312345689101172190

11312346859101172194

11312346598101172189

11312346581091172173

11312346589111072197

11312346589107112175

112133465891011271147

Ntese que por las condiciones del problema el ciclo comienza en 1 y termina en 1. Luego de 8 iteraciones adicionales el criterio de terminacin se activa y obtenemos que el algoritmo mejoro la solucin inicial en su 1er iteracin, siendo la secuencia la siguiente:

1-13-12-3-4-6-5-8-10-9-11-7-2-1 F.O. 73

VIII. CONCLUSIONES

A lo largo de estas pginas se ha intentado proporcionar un panorama muy general de la llamada bsqueda tab, aunque debido a su infinidad de variantes, el contenido de este artculo dista mucho de ser un tratamiento exhaustivo del tema, pero las referencias bibliogrficas proporcionadas debern ser un buen punto de partida para el lector interesado en aprender ms sobre esta rea.

Por otra Parte, la Metaheuristica de Bsqueda Tab representa un procedimiento que es capaz de explorar un universo de soluciones, encontrando una solucin que si bien no representa el ptimo global, si es aproximado o est muy prximo a serlo. Los Algoritmos de Bsqueda Tab son de gran utilidad en problemas donde la cantidad de variables son considerables, ya que tienen la capacidad de encontrar en un tiempo razonable, soluciones aproximadas a la ptima. La filosofa de este no es compleja, solamente necesita para su implementacin el contexto del problema y la historia del proceso. Adems, es flexible y puede ser aplicado a cualquier problema combinatorio en el que se defina con claridad y precisin los elementos que intervienen, como por ejemplo el problema del agente viajero, secuenciacin con tiempo de alistamiento y ruteo de vehculos con ventanas de tiempo.

REFERENCIAS

[1]C. Coello, Busqueda Tabu: Evitando lo Prohibido. vol. 49, 1997.[2]J. A. M. Prez and B. M. Batista, "METAHEURSTICAS PARA LA PLANIFICACIN LOGSTICA," 2005.[3]B. M. Batista and F. Glover, "Introduccin a la Bsqueda Tab."[4]F. Glover, Tabu search fundamentals and uses: Citeseer, 1995.[5]F. Glover, "Tabu search: A tutorial," Interfaces, vol. 20, pp. 74-94, 1990.[6]F. Glover and G. A. Kochenberger, Handbook of metaheuristics: Springer, 2003.[7]R. Mart and J. Moreno-Vega, "Mtodos multi-arranque," Inteligencia Artificial. Revista Iberoamericana de Inteligencia Artificial, vol. 19, pp. 48-49, 2003.[8]J. M. Daza-Escorcia, J. R. Montoya-Torres, and F. Narducci-Marn, "Resolucin del problema de enrutamiento de vehculos con limitaciones de capacidad utilizando un procedimiento metaheurstico de dos fases," Revista EIA, 2013.[9]D. Pham and D. Karaboga, "Intelligent optimisation techniques," Genetic Algorithms, Tabu Search, Simulated Annealing and Neural Networks, Springer, New York, 2000.[10]S. De los Cobos, J. Goddard, M. Gutirrez, and A. Martnez, "Bsqueda y Exploracin Estocstica," U. A. Metropolitana, Ed., ed, 2010.[11]R. Beausoleil, "A TABU SEARCH APPROACH FOR THE WEIGHTED TARDINESS WITH SEQUENCE-DEPENDET SETUPS IN ONE MACHINE PROBLEM," ed, 2002.[12]Steve. (2012). Tabu Search. Available: http://www.mathworks.com/matlabcentral/fileexchange/37402-tabu-search/content/Testing.m

ANEXO 1

A continuacin se muestra el cdigo en matlab para resolver problemas del vendedor viajero a partir de la metaheuristica de Bsqueda Tab.

% Problema del vendedor viajero usando Tabu% Este algoritmo asume que la matriz de distancia es simetrica% El recorrido siempre incia desde el punto 1 clcd = ['Insertar matriz de valores']d_orig = d; start_time = cputime; dim1 = size(d,1); dim12 = size(d); for i=1:dim1 d(i,i)=10e+06; end % *****************Inicializacion de parametros********************** d1=d; tour = zeros(dim12); cost = 0; min_dist=[ ]; short_path=[ ]; best_nbr_cost = 0; best_nbr = [ ]; % *******Generar la solucion inicial -encontrar camino ms corto desde cada nodo**** % Si se seleccionan los nodos 1-2, encontrar la distancia de 2 a cada uno de los nodosk = 1; for i=1:dim1-1 min_dist(i) = min(d1(k,:)); short_path(i) = find((d1(k,:)==min_dist(i)),1); cost = cost+min_dist(i); k = short_path(i); % Prohibir todos los caminos desde el nodo actual visitado a todos los nodos anteriores visitados d1(k,1)=10e+06; for visited_node = 1:length(short_path); d1(k,short_path(visited_node))=10e+06; end endtour(1,short_path(1))=1; for i=2:dim1-1 tour(short_path(i-1),short_path(i))=1; end %El ultimo nodo visitado es k; last_indx = length(short_path)+1; short_path(last_indx)=1; tour(k,short_path(last_indx))=1; cost = cost+d(k,1); % Un recorrido se representa como una secuencia de nodoscrnt_tour = short_path; best_tour = short_path; best_obj =cost; crnt_tour_cost = cost; fprintf('\nInitial solution\n'); crnt_tour fprintf('\nInitial tour cost = %d\t', crnt_tour_cost); nbr_cost=[ ]; % Inicializar lista tabu "tabu_tenure" dando el nmero de iteraciones para el %que un par de nodos en concreto tienen prohibido el intercambiotabu_tenure = zeros(dim12); max_tabu_tenure = round(sqrt(dim1)); %max_tabu_tenure = dim1; penalty = zeros(1,(dim1-1)*(dim1-2)/2); frequency = zeros(dim12); frequency(1,:)=100000; frequency(:,1)=100000; for i=1:dim1 frequency(i,i)=100000; end iter_snc_last_imprv = 0;% ********* Realizar la iteracin hasta que uno de los criterios se cumple *********** % 1. Nmero mximo de iteraciones alcanzadas *************************************** % 2. Iteraciones desde la ltima mejora en el mejor objetivo encontrado hasta %Alcanza un umbral ********************************************** ********best_nbr = crnt_tour; for iter=1:10000 fprintf('\n*****iteration number = %d*****\n', iter); nbr =[]; % ******************* Buscar todos los vecinos de la actual gira de un intercambio % ****************** entre cada par de nodos *********************** % **** Calcular el costo de cada uno de los vecinos ***** nbr_cost = inf(dim12); for i=1:dim1-2 for j=i+1:dim1-1 if i==1 if j-i==1 nbr_cost(crnt_tour(i),crnt_tour(j))=crnt_tour_cost-d(1,crnt_tour(i))+d(1,crnt_tour(j))-d(crnt_tour(j),crnt_tour(j+1))+d(crnt_tour(i),crnt_tour(j+1)); best_i=i; best_j=j; best_nbr_cost = nbr_cost(crnt_tour(i),crnt_tour(j)); tabu_node1 = crnt_tour(i) tabu_node2 = crnt_tour(j) else nbr_cost(crnt_tour(i),crnt_tour(j))=crnt_tour_cost-d(1,crnt_tour(i))+d(1,crnt_tour(j))-d(crnt_tour(j),crnt_tour(j+1))+d(crnt_tour(i),crnt_tour(j+1))-d(crnt_tour(i),crnt_tour(i+1))+d(crnt_tour(j),crnt_tour(i+1))-d(crnt_tour(j-1),crnt_tour(j))+d(crnt_tour(j-1),crnt_tour(i)); end else if j-i==1 nbr_cost(crnt_tour(i),crnt_tour(j))=crnt_tour_cost-d(crnt_tour(i-1),crnt_tour(i))+d(crnt_tour(i-1),crnt_tour(j))-d(crnt_tour(j),crnt_tour(j+1))+d(crnt_tour(i),crnt_tour(j+1)); else nbr_cost(crnt_tour(i),crnt_tour(j))=crnt_tour_cost-d(crnt_tour(i-1),crnt_tour(i))+d(crnt_tour(i-1),crnt_tour(j))-d(crnt_tour(j),crnt_tour(j+1))+d(crnt_tour(i),crnt_tour(j+1))-d(crnt_tour(i),crnt_tour(i+1))+d(crnt_tour(j),crnt_tour(i+1))-d(crnt_tour(j-1),crnt_tour(j))+d(crnt_tour(j-1),crnt_tour(i)); end end if nbr_cost(crnt_tour(i),crnt_tour(j)) < best_nbr_cost best_nbr_cost = nbr_cost(crnt_tour(i),crnt_tour(j)); best_i=i; best_j=j; tabu_node1 = crnt_tour(i); tabu_node2 = crnt_tour(j); end end end%*********** Aqui termina el calculo de los costos de los vecinos*********** best_nbr(best_i) = crnt_tour(best_j); best_nbr(best_j) = crnt_tour(best_i); % **** Sustituya solucin actual por el mejor vecino. ******************* % ************** Entrar en ella en la lista TABU ****************** % *** Nodos tab Etiqueta tal que nodo2 tab es siempre mayor que tabu node1. % Esto es necesario para mantener el carcter reciente basada y frecuencia basado tabu la lista% en la misma estructura de datos. % ****** Encuentra el mejor vecino que no implique swaps en la lista tab *** % ************ Tomara la Respuesta tabu si se encuentra el criterio de aspiracion ************** % ************** Se cumplen los criterios de aspiracin si es un miembro de Tabu es mejor % de la mejor solucin encontrada hasta el momento ********************************** %, mientras que (tabu_tenure (tabu_node1, tabu_node2) | tabu_tenure (tabu_node2, tabu_node1))> 0 while (tabu_tenure(tabu_node1,tabu_node2))>0 if best_nbr_cost < best_obj %(TABU solution better than the best found so far) fprintf('\nbest nbr cost = %d\t and best obj = %d\n, hence breaking',best_nbr_cost, best_obj); break; else %***********Hacer que el costo de mover TABU prohibitivos para % *** no permitir su seleccin y buscar la siguiente mejor vecino % **** eso no es TABU activo **************************** nbr_cost(tabu_node1,tabu_node2)=nbr_cost(tabu_node1,tabu_node2)*1000; best_nbr_cost_col = min(nbr_cost); best_nbr_cost = min(best_nbr_cost_col); [R,C] = find((nbr_cost==best_nbr_cost),1); tabu_node1 = R; tabu_node2 = C; end end % ******* costo del tour penalizando objetiva por la frecuencia de movimientos ********if best_nbr_cost > crnt_tour_cost fprintf('\nbest neighbor cost greater than current tour cost\n'); min_d_col = min(d); penal_nbr_cost = nbr_cost + min(min_d_col)*frequency; penal_best_nbr_cost_col = min(penal_nbr_cost); penal_best_nbr_cost = min(penal_best_nbr_cost_col); [Rp,Cp] = find((penal_nbr_cost==penal_best_nbr_cost),1); tabu_node1 = Rp; tabu_node2 = Cp; best_nbr_cost = nbr_cost(tabu_node1,tabu_node2); end% *****************Disminuir todas las tenencias del tab por 1****************** for row = 1:dim1-1 for col = row+1:dim1 if tabu_tenure(row,col)>0 tabu_tenure(row,col)=tabu_tenure(row,col)-1; tabu_tenure(col,row)=tabu_tenure(row,col); end end end %**********************RECENCY TABU***************************** tabu_tenure(tabu_node1,tabu_node2)=max_tabu_tenure; tabu_tenure(tabu_node2,tabu_node1)= tabu_tenure(tabu_node1,tabu_node2); %**********************FREQUENCY TABU***************************** % Aumentar la frecuencia de la corriente se mueve en la lista tab por 1 ******** % tabu_tenure (tabu_node2, tabu_node1) = tabu_tenure (tabu_node2, tabu_node1) 1;frequency(tabu_node1,tabu_node2) = frequency(tabu_node1,tabu_node2)+1; %********Actualizacion de la secuencia actual************** crnt_tour=best_nbr; crnt_tour_cost=best_nbr_cost; %************Actualizar mejor frecuencia*******************if crnt_tour_cost < best_obj best_obj = crnt_tour_cost; best_tour = crnt_tour; iter_snc_last_imprv = 0; else iter_snc_last_imprv = iter_snc_last_imprv + 1; %if iter_snc_last_imprv >= (dim1-1)*(dim1-2)/2 if iter_snc_last_imprv >= 400 fprintf('\n NO improvmennt since last % iterations, hence diversify\n',iter_snc_last_imprv); min_freq_col = min(frequency); %gives minimum of each column min_freq = min(min_freq_col); [R,C] = find((frequency==min_freq),1); %find the moves with lowest frequency freq_indx1 = R freq_indx2 = C indx_in_crnt_tour1 = find(crnt_tour==R); %locate the moves in the crnt tour indx_in_crnt_tour2 = find(crnt_tour==C); %Diversify using a move that has the lowest frequency temp = crnt_tour(indx_in_crnt_tour1); crnt_tour(indx_in_crnt_tour1) = crnt_tour(indx_in_crnt_tour2); crnt_tour(indx_in_crnt_tour2) = temp; tabu_tenure = zeros(dim12); frequency = zeros(dim12); frequency(1,:)=100000; frequency(:,1)=100000; for i=1:dim1 frequency(i,i)=100000; end tabu_tenure(R,C)=max_tabu_tenure; tabu_tenure(C,R)=max_tabu_tenure; frequency(R,C)=frequency(R,C)+1; frequency(C,R) = frequency(R,C); %Re-calculare crnt tour cost crnt_tour_cost = d(1,crnt_tour(1)); for i=1:dim1-1 crnt_tour_cost = crnt_tour_cost+d(crnt_tour(i),crnt_tour(i+1)); end iter_snc_last_imprv = 0; if crnt_tour_cost < best_obj best_obj = crnt_tour_cost; best_tour = crnt_tour; end end end %fprintf('\ncurrent tour\n') %crnt_tour fprintf('\ncurrent tour cost = %d\t', crnt_tour_cost); %fprintf('\nbest tour\n'); %best_tour fprintf('best obj =%d\t',best_obj); %pause; Endfprintf('\nbest tour\n'); best_tour fprintf('best obj =%d\n',best_obj); end_time = cputime; exec_time = end_time - start_time; fprintf('\ntime taken = %f\t', exec_time);