DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL PROBLEMA DE RUTADO DE VEHÍCULOS CON CRITERIOS DE SOSTENIBILIDAD

Tamaño: px
Comenzar la demostración a partir de la página:

Download "DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL PROBLEMA DE RUTADO DE VEHÍCULOS CON CRITERIOS DE SOSTENIBILIDAD"

Transcripción

1 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL PROBLEMA DE RUTADO DE VEHÍCULOS CON CRITERIOS DE SOSTENIBILIDAD 2012 Ingeniero de telecomunicación Autor :Fernando Benavides Madrid Tutor : Jesús Racero Moreno

2 TABLA DE CONTENIDOS INDICE DE FIGURAS Y TABLAS... 5 INDICE DE TABLAS... 7 RESUMEN INTRODUCCIÓN Y OBJETIVOS Introducción Objetivos Estructura del documento REVISIÓN DE LA LITERATURA Algoritmos Introducción Características del problema Variantes y extensiones del VRP Métodos de resolución exactos Métodos de resolución Heurísticos Metaheurísticas Análisis de costes de sostenibilidad en el transporte DISEÑO DE LA BÚSQUEDA TABÚ Descripción del problema Diseño de la Búsqueda Tabú Solución inicial Mole-Jameson Movimiento λ-opt Búsqueda Tabú Ampliaciones IMPLEMENTACIÓN DE CLASES Descripción de clases Clase Solución Clase Movimiento Clase ListaTabu Interfaz de usuario Aplicación en pantalla Ficheros de entrada y salida RESULTADOS Reducción de los costes de la BT sobre la heurística de Mole

3 5.2. Evolución de costes según el criterio de asignación de la primera ciudad Admisibilidad versus no admisibilidad CONCLUSIONES Y EXTENSIONES Conclusiones Extensiones

4

5 INDICE DE FIGURAS Y TABLAS LISTA DE FIGURAS FIGURA 1. EMISIONES DE GEI, SUSTANCIAS ACIDIFICANTES Y PRECURSORES DEL OZONO TROPOSFÉRICO PROCEDENTES DEL TRANSPORTE (MARM) FIGURA 2. EMISIONES TOTALES DE GEI (AEMA/MARM) FIGURA 3. VOLUMEN DE TRANSPORTE DE MERCANCÍAS EN UE-27. (EEA) FIGURA 4. CONTRIBUCIÓN POR SECTORES DE TRANSPORTE A LAS EMISIONES TOTALES DE GEI EN UE. (EEA) FIGURA 5. EMISIONES DE GEI DE TRANSPORTE EN UE. (EEA) FIGURA 6. PRECIOS DE COMBUSTIBLE NOMINAL Y REAL (UE-27) FIGURA 7. CONTRIBUCIÓN DEL SECTOR TRANSPORTE AL TOTAL DE LAS EMISIONES DE LOS PRINCIPALES CONTAMINADORES DE AIRE EN 2009 EN UE-32 (EEA) FIGURA 8. REPRESENTACIÓN GRÁFICA DEL PROBLEMA VRP FIGURA 9. DOS RUTAS ANTES Y DESPUÉS DE SER UNIDAS FIGURA 10. TODOS LOS 3-INTERCAMBIOS POSIBLES PARA LOS ARCOS MARCADOS FIGURA 11. FASES DE LA BÚSQUEDA TABÚ FIGURA 12. DIAGRAMA DE FLUJO DEL ALGORITMO DISEÑADO EN BASE A MOLE-JAMESON FIGURA 13. POSIBILIDADES DE LLEGADA DE UN VEHÍCULO R A UNA CIUDAD V K FIGURA 14. PSEUDOCÓDIGO DE FORMACIÓN DE ELIMINACIÓN DE ARCOS EN OPERADOR Λ-INTERCAMBIO FIGURA 15. PSEUDOCÓDIGO DE FORMACIÓN DE MOVIMIENTOS EN BT FIGURA 16. BUCLE EN BT FIGURA 17. EFECTO DE LA DIVERSIFICACIÓN E INTENSIFICACIÓN EN EL ESPACIO DE SOLUCIONES FIGURA 18. DIAGRAMA DE FLUJO DE LA BÚSQUEDA TABÚ FIGURA 19. PSEUDOCÓDIGO DE FORMACIÓN DE INSERCIONES EN BT FIGURA 20. VENTANA PRINCIPAL DE C++BUILDER FIGURA 21. FICHEROS IMPLICADOS EN LAS TRES FASES DE LA APLICACIÓN FIGURA 22. RELACIÓN ENTRE FICHEROS, CLASES Y FASES DE LA APLICACIÓN FIGURA 23. COSTES CONSIDERADOS EN LA INSERCIÓN DE UNA NUEVA CIUDAD ENTRE UN PAR DE NODOS FIGURA 24. PSEUDOCÓDIGO DE ALGORITMO M&J FIGURA 25. RUTA ALEATORIA CON ELIMINACIÓN DE ARCOS PARA MOVIMIENTO 3-OPT FIGURA 26. RUTA EN FORMA DE VECTOR PARA LA MANIPULACIÓN DE LOS MÉTODOS OPT FIGURA 27. EVOLUCIÓN DE RECONEXIONES EN UNA RUTA EN MÉTODOS OPT FIGURA 28. PSEUDOCÓDIGO DE MÉTODO INTER_SWAPPING E INTER_SWAPPINGCONT FIGURA 29. VENTANA PRINCIPAL DE LA APLICACIÓN FIGURA 30. RELACIÓN ENTRE FICHEROS DE ENTRADA/SALIDA, PARÁMETROS DE USUARIO Y APLICACIÓN FIGURA 31. ORGANIZACIÓN DE LA INFORMACIÓN EN EL FICHERO DE ENTRADA FIGURA 32. CATEGORÍAS DE LOS VEHÍCULOS EN EL FICHERO DE ENTRADA FIGURA 33. COMBUSTIBLES EN EL FICHERO DE ENTRADA FIGURA 34. CARACTERÍSTICAS DE LOS VEHÍCULOS EN FICHERO DE ENTRADA FIGURA 35. CARACTERÍSTICAS DE LOS CLIENTES EN FICHERO DE ENTRADA

6 FIGURA 36. GRAFO EN EL FICHERO DE ENTRADA FIGURA 37. GEI EN EL FICHERO DE ENTRADA FIGURA 38. CONTAMINANTES EN EL FICHERO DE ENTRADA FIGURA 39. ORGANIZACIÓN DE LA INFORMACIÓN EN EL FICHERO DE SALIDA FIGURA 40. ORGANIZACIÓN DE LA INFORMACIÓN PARA CADA ARCHIVO DE ENTRADA EN EL FICHERO DE SALIDA FIGURA 41. CABECERA RESUMEN DE DATOS DE ENTRADA EN EL FICHERO DE SALIDA FIGURA 42. SOLUCIÓN INICIAL M&J Y λ-intercambio EN EL FICHERO DE SALIDA FIGURA 43. EVOLUCIÓN DE COSTES E ITERACIONES EN BT EN EL FICHERO DE SALIDA FIGURA 44. RESUMEN DE HITOS EN BT EN EL FICHERO DE SALIDA FIGURA 45. MEJORA DE COSTES DE TIEMPO SEGÚN EL CRITERIO DE ELECCIÓN DE LA PRIMERA CIUDAD FIGURA 46. MEJOR DE COSTES DE CONTAMINACIÓN SEGÚN EL CRITERIO DE ELECCIÓN DE LA PRIMERA CIUDAD FIGURA 47. EVOLUCIÓN DE COSTES EN LA BÚSQUEDA TABÚ SEGÚN LA ELECCIÓN DE LA PRIMERA CIUDAD (ESTACIONARIO) FIGURA 48. EVOLUCIÓN DE LOS COSTES EN LA BÚSQUEDA TABÚ SEGÚN LA ELECCIÓN DE LA PRIMERA CIUDAD (TRANSITORIO) FIGURA 49. EVOLUCIÓN DE LOS COSTES DE CONTAMINACIÓN SEGÚN LA ADMSIBILIDAD DE LA SOLUCIÓN

7 INDICE DE TABLAS LISTA DE TABLAS TABLA 1. OBJETIVOS EN LA LUCHA CONTRA EL CAMBIO CLIMÁTICO (PERFIL AMBIENTAL ESPAÑA 2010, PÁG. 47, MMA) TABLA 2. VARIABLES DE LA CLASE SOLUCIÓN TABLA 3. EJEMPLO DE SOLUCIÓN CON CUATRO RUTAS ASIGNADAS POR COLORES TABLA 4. CONTENIDO DE RUTACTUAL PARA UNA RUTA { } TABLA 5. VARIABLES DE LA CLASE MOVIMIENTO TABLA 6. VARIABLES DE LA CLASE LISTATABU

8

9 RESUMEN En la última década, el desarrollo de normativas ambientales ha aumentado la presión sobre los productores animándolos a incluir la componente medioambiental en la toma de decisiones. La gestión integrada de la cadena de suministros se ha visto afectada en varios aspectos, tales como la ubicación, el abastecimiento de materias prima de fabricación o de la planificación del transporte. Este último punto se aborda en el documento presente, que pretende proporcionar una nueva gestión sostenible y eficiente que integre estos nuevos factores. Este trabajo, por tanto, se centra en el análisis de los principales factores ambientales involucrados en la actividad del transporte y su integración con los costes clásicos de operación de una flota de vehículos para el desarrollo de una aplicación interactiva que resuelva el problema del enrutamiento, analizando a posteriori el efecto sobre las rutas originales. La inclusión de este nuevo concepto ambiental al modelo clásico del enrutamiento de vehículos aporta una visión más realista del problema y pretende satisfacer las necesidades presentes y futuras en el campo del transporte en relación a un desarrollo sostenible de la actividad. En concreto, se añaden nuevos costes atendiendo a las diferentes tipologías de combustibles y normativas de emisiones a los consabidos de mantenimiento y operación, además de respetarse restricciones de carga, tiempo en ruta y de atención al cliente. Este nuevo modelo resuelve la problemática del VRP en dos pasos: la creación de una solución inicial en base a una heurística de Mole-Jameson y su posterior optimización a través de una búsqueda tabú personalizada. Los parámetros configurables para adaptar ambos pasos, se presentan vía interfaz interactiva programada en C++, donde se modifican el tipo de función objetivo, algoritmos de selección de vehículo, inclusión de movimientos OPT, tamaños de listas tabú, admisibilidad de carga y tiempo de ejecución entre otros. Las combinaciones posibles que se pueden generar con los parámetros descritos anteriormente son muy numerosas. De ahí, que en un último aparatado se ejecuten en la aplicación ejemplos bien conocidos de Christofides y Taillard con las combinaciones más representativas y se discuta posteriormente la repercusión que la inclusión de los costes medioambientales tiene en el diseño de rutas cuyo objetivo es el minimizar tiempo o distancia. 9

10

11 1. INTRODUCCIÓN Y OBJETIVOS 1.1. Introducción En pleno siglo XXI ya pocos son los que dudan de la existencia de un cambio climático global en el planeta. En los últimos años, la investigación científica sobre el cambio climático se ha desarrollado considerablemente, y se ha confirmado que las actividades humanas, como la quema de los carburantes fósiles, son muy probablemente las responsables del cambio climático. El calentamiento del planeta ya está teniendo muchas consecuencias cuantificables y en el futuro esperan cambios de gran envergadura. El transporte es una de las actividades humanas que aporta una cantidad considerable de los denominados gases de efecto invernadero (CO2, CFCs, CH4 y NO2 entre otros), responsables de la contención de la energía solar que devuelve de forma natural la Tierra a la atmósfera. El Acuerdo de Copenhague (2009), que toma el testigo del Protocolo de Kyoto (1997), establece un umbral en el aumento de los niveles de emisiones de GEI debido a tráfico rodado del 23% al 32% [1]. Por tanto, se deduce que el impacto medioambiental del transporte a nivel global en términos de emisiones de GEI es de casi un tercio. En España, desde el incremento del volumen total de gases de efecto invernadero en la atmósfera procedente del transporte por carretera, que representa un 65,8% del consumo energético del total del transporte [2], es del 80,4% (Figura 1). En concreto, en el año 2009 el CO2 fue supuso el 80,8% (11% menos que en el 2008) del total de las emisiones de GEI en territorio nacional, seguido por CH4 y N2O (9,9% y 7,1%). Figura 1. Emisiones de GEI, Sustancias acidificantes y precursores del ozono troposférico procedentes del transporte (MARM)

12 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD La creciente preocupación por disminuir estos niveles de GEI (se espera que el incremento entre no supere un +37% [3]) ha supuesto la creación de distintos organismos gubernamentales (entre ellos el OMM, Observatorio de Movilidad Metropolitana) que promueven medidas (véase Tabla 1) y políticas [4] para incentivar la sostenibilidad del transporte a nivel público y privado, con el fin último de cumplir con uno de los objetivos citados en el informe para la gestión del medioambiente de la OCDE sobre la calidad del aire: Mejorar la planificación y gestión de la calidad del aire a través de una mejor integración de las políticas de calidad del aire en la planificación a escala regional/local (en especial, la planificación del transporte); fortalecer los organismos responsables de hacer cumplir las normativas sobre calidad del aire y la capacidad a todos los niveles de gobierno. Además se prevén subvenciones al transporte en función de la implantación de criterios de eficiencia que impulsen al sector público y privado a adoptar sistemas que optimicen el transporte eco-eficiente. Tabla 1. Objetivos en la lucha contra el cambio climático (Perfil Ambiental España 2010, pág. 47, MMA) Según los datos del Ministerio de Medio Ambiente de España de 2010 [5], España está en el camino de poder cumplir los acuerdos establecidos en El Protocolo de Kyoto y refrendados en La Cumbre de Cancún (2010) en materia de emisiones de CO 2, ya que desde 2008 hasta la fecha se está experimentando una reducción sensible del volumen total de GEI emitidos a la atmósfera. Aunque bien es cierto, que uno de los factores cruciales de dicho descenso ha sido el impacto de la recesión económica sobre las actividades industriales y de transporte. 12

13 1. Introducción y objetivos Figura 2. Emisiones totales de GEI (AEMA/MARM) En la Unión Europea, en el año 2009 el transporte de mercancías por carretera congregó el 74% [6] del volumen de tráfico total, seguido por el ferrocarril (16%). Desde 1990, el primero ha experimentado un aumento del 25% tal y como se muestra en la figura siguiente: Figura 3. Volumen de transporte de mercancías en UE-27. (EEA) La tasa de aumento del transporte de mercancías provoca un impacto medioambiental notable. De hecho, en 2009, el transporte terrestre fue el responsable de hasta el 24 % de las emisiones de gases de efecto invernadero. El transporte por carretera supone hasta el 71% de las emisiones distribuyéndose en un 47 % las emisiones asociadas al transporte de mercancías. 13

14 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Figura 4. Contribución por sectores de transporte a las emisiones totales de GEI en UE. (EEA) La contaminación por efecto de la actividad humana ha hecho que la UE adopte medidas de calado. Las políticas seguidas, en la unión europea, se han centrado en dos puntos clave: la implantación de directivas asociadas al aumento de la eficiencia energética y reducción de emisiones contaminantes en vehículos (hasta un 60% menos en 2050) y el desarrollo de planes de inter-movilidad que trasvase el transporte de mercancías por carretera a otros modos como el ferrocarril o marítimo. Figura 5. Emisiones de GEI de transporte en UE. (EEA) Así mismo, la presión de entidades gubernamentales y los mercados energéticos ha provocado un aumento de los costes de distribución de mercancías (aumento del precio de los combustibles y tasas por contaminación). En este entorno donde los aspectos energéticos y medioambientales han cobrado mayor importancia es necesario ampliar los conceptos de gestión de flotas mediante la consideración en los costes de aspectos ambientales además de los energéticos. 14

15 1. Introducción y objetivos Figura 6. Precios de combustible nominal y real (UE-27) Figura 7. Contribución del sector transporte al total de las emisiones de los principales contaminadores de aire en 2009 en UE-32 (EEA). 15

16 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD 1.2. Objetivos El diseño de rutas eficientes es uno de los pilares en la gestión de flotas. No en vano, la determinación de las rutas u orden de reparto de los productos es fundamental en la optimización de costes. Del apartado anterior, se deriva la suma importancia de crear un modelo nuevo de gestión de flota que atienda no sólo a los criterios clásicos de minimización de distancia del rutado completo. De ahí que la motivación principal de este trabajo radique en los siguientes objetivos: 1. Análisis de la problemática ambiental asociada a las emisiones de GEI. En especial, el impacto del tráfico rodado sobre la atmósfera y cadenas de distribución. 2. Revisión del estado del arte del Vehicle Routing Problem (VRP). En concreto, las heurísticas y meta-heurísticas más extendidas dentro de este campo de investigación. 3. Integración de costes medioambientales en la resolución de asignación de rutas a flotas de vehículos. Se examina y adhiere una conversión costes ambientales/costes monetarios del en base a metodologías ya aplicadas para computarlos junto con los criterios clásicos de distancia 4. Diseño e implementación y aplicación de heurísticas y metaheurísticas. Se resuelven computacionalmente archivos con toda la información del terreno y flota de vehículos. 5. Diseño y desarrollo de un sistema de gestión y parametrización necesaria para la ejecución de las heurísticas y metaheurísticas. 6. Análisis del impacto de la internalización de costes. Se examina y discute sobre el efecto de los costes medioambientales en la configuración de las rutas. 7. Líneas abiertas y posibles extensiones. Se proponen mejoras, cambios y nuevas líneas de investigación en base a las potencialidades o dificultades encontradas en la realización del trabajo Estructura del documento El documento está dividido en siete capítulos. El primer capítulo realiza una breve introducción sobre la problemática medioambiental actual: El cambio climático, las principales actividades humanas responsables de la degradación de la atmósfera, las medidas adoptadas tanto desde España como de la Unión Europea en materia políticas para un transporte más respetuoso con el medio.la penetración del transporte y su influencia en el medioambiente y, en especial, el impacto del transporte y su repercusión sobre las emisiones a la atmósfera en las dos últimas décadas. En el capítulo 2, se desglosa la literatura que documenta y contextualiza el trabajo. Se revisan los algoritmos más comunes en el estudio VRP, introduciendo los conceptos claves y las técnicas desarrolladas en cada uno de ellos; y se introducen tanto los métodos heurísticos como los metaheurísticos. Posteriormente, se justifica la internalización de los costes externos medioambientales y se 16

17 1. Introducción y objetivos presentan las conversiones utilizadas para casar costes de distinta índole según el INFRAS, ya que se enfatiza en la necesidad de un modelo de gestión del transporte más fidedigno y representativo de la realidad. El tercer capítulo detalla la descripción del problema, presentando todos los elementos que entran en juego, y se describe en profundidad y conceptualmente la manera de abordarlo. Se representan diagramas de flujo que ayudan a entender la filosofía de resolución y, en su caso, se exponen las modificaciones realizadas sobre el modelo matemático inicial, bien para facilitar el uso cara al usuario o bien para dotar a la aplicación de mayor selectividad y potencia en el criterio de búsqueda. A continuación, capítulo 4, se define exhaustivamente la estructura de datos que rige la aplicación: la descripción de clases, los ficheros entrada/salida y la interfaz de usuario. Se hace especial hincapié en los miembros clave (vectores, funciones o clases) que permiten entender con mayor fluidez la ejecución del código, así como señalar las correspondencias entre los pasos descritos en los diagramas de flujo con los elementos del código. Los resultados obtenidos de la aplicación de los algoritmos son mostrado en el capítulo 5, donde se discute la repercusión de la internalización de los costes respecto a aquellas rutas cuyo objetivo es la minimización del tiempo total de rutado, el comportamiento de la aplicación ante distintas configuraciones del problema (criterio de orden de los camiones, movimientos OPT, tamaño de listas tabú, admisibilidad de carga, posición de la inserción de ciudades, etc), las mejores selecciones de parámetros de búsqueda y posibles mejoras futuras en cuanto a la estructuración de la aplicación o enfoque del análisis de programación. Finalmente, capítulo 8, se extraen las conclusiones a partir de los fenómenos observados en el capítulo anterior. En base a este análisis, se proponen nuevas líneas de investigación o extensiones que añadan valor a la aplicación presentada, ya sea en su vertiente gráfica o desde un punto de vista conceptual y de programación. En muchos casos, son mejoras que se han ignorado durante el desarrollo de la implementación porque no se contemplan dentro del alcance del proyecto. Finalmente, el capítulo 9 se dedica a la enumeración de las referencias usadas en el texto y el capítulo 10 contiene una información más detallada sobre el código y ejemplos que no se han considerado tan representativos como los mostrados en el apartado 7. 17

18

19 2. REVISIÓN DE LA LITERATURA 2.1. Algoritmos Introducción Tradicionalmente, el problema de planificación de rutas de transporte se ha modelado mediante el conocido problema VRP (Vehicle Routing Problem). La resolución de este problema tiene como objetivo determinar las rutas en una red y asignarlas a un conjunto de vehículos minimizando la distancia recorrida y satisfaciendo la demanda de diversos clientes (Figura 8). Las variantes existentes en la formación de rutas son muy diversas y este apartado pretende enumerar quizás las más relevantes dentro de este campo. Figura 8. Representación gráfica del problema VRP El problema de distribuir productos desde ciertos depósitos a sus usuarios finales juega un papel central en la gestión de algunos sistemas logísticos y su adecuada planificación puede significar considerables ahorros. Esos potenciales ahorros justifican en gran medida la utilización de técnicas de Investigación Operativa como facilitadoras de la planificación, dado que se estima que los costos del transporte representan entre el 10% y el 20% del costo final de los bienes [7]. En ese sentido, las últimas cuatro décadas han visto un enorme esfuerzo por resolver estos problemas. En 1959, Dantzig y Ramser [8] realizaron por primera vez una formulación del problema para una aplicación de distribución de combustible. Cinco años más tarde, Clarke y Wright [9] propusieron el primer algoritmo que resultó efectivo para su resolución: el popular Algoritmo de Ahorros. A partir de estos trabajos, el área de Ruteo de Vehículos ha crecido de manera explosiva. Por un lado, hacia modelos que incorporen cada vez más características de la realidad, y, por otro lado, en la búsqueda de algoritmos que permitan resolver los problemas de manera eficiente. Estos modelos y algoritmos deben su éxito, en buena parte, a la evolución de los sistemas informáticos. El crecimiento en el poder de cómputo y la baja en sus costos, ha permitido disminuir los tiempos de ejecución de los algoritmos. Por otro lado, el desarrollo de los Sistemas de Información

20 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Geográfica resulta fundamental para lograr una adecuada interacción de los modelos y algoritmos con los encargados de realizar la planificación. Pero el interés que reviste el área no es puramente práctico. Los Problemas de Ruteo de Vehículos son Problemas de Optimización Combinatoria y pertenecen, en su mayoría, a la clase NP-Hard. La motivación académica por resolverlos radica en que no es posible construir algoritmos que en tiempo polinomial resuelvan cualquier instancia del problema (a no ser que P = NP) Características del problema A grandes rasgos un Problema de Ruteo de Vehículos consiste en, dado un conjunto de clientes y depósitos dispersos geográficamente y una flota de vehículos, determinar un conjunto de rutas de costo mínimo que comiencen y terminen en los depósitos, para que los vehículos visiten a los clientes. Las características de los clientes, depósitos y vehículos, así como diferentes restricciones operativas sobre las rutas, dan lugar a diferentes variantes del problema. Los clientes Cada cliente tiene cierta demanda que deberá ser satisfecha por algún vehículo. En muchos casos, la demanda es un bien que ocupa lugar en los vehículos y es usual que un mismo vehículo no pueda satisfacer la demanda de todos los clientes en una misma ruta. Un caso equivalente al anterior ocurre cuando los clientes son proveedores y lo que se desea es recoger la mercadería y transportarla hacia el depósito. También podría ocurrir que la mercadería deba ser transportada a los clientes pero no esté inicialmente en el depósito, sino distribuida en ciertos sitios proveedores. En este caso, los proveedores deben ser visitados antes que los clientes. En otros casos la demanda no es un bien sino un servicio: el cliente simplemente debe ser visitado por el vehículo. Un mismo vehículo podría, potencialmente, visitar a todos los clientes. En otra variante del problema, cada cliente tiene una ubicación y desea ser transportado hacia otro sitio. Aquí la capacidad del vehículo impone una cota sobre la cantidad de clientes que puede alojar simultáneamente. Es usual que cada cliente deba ser visitado exactamente una vez. Sin embargo, en ciertos casos se acepta que la demanda de un cliente sea satisfecha en momentos diferentes y por vehículos diferentes. Los clientes podrían tener restricciones relativas su horario de servicio. Usualmente estas restricciones se expresan en forma de intervalos de tiempo (llamados ventanas de tiempo) en los que se debe llegar al cliente. En problemas con varios vehículos diferentes podrían existir restricciones de compatibilidad entre éstos y los clientes. En estos casos, cada cliente sólo puede ser visitado por algunos de los vehículos (por ejemplo, algunos vehículos muy pesados no pueden ingresar en ciertas localidades). Los depósitos 20

21 2. Revisión de la literatura Tanto los vehículos como las mercaderías a distribuir (si las hubiera) suelen estar ubicadas en depósitos. Usualmente se exige que cada ruta comience y finalice en un mismo depósito, aunque este podría no ser el caso en algunas aplicaciones (por ejemplo, podría ser que el viaje debiera finalizar en el domicilio del conductor del vehículo). En los problemas con múltiples depósitos cada uno de estos tiene diferentes características, por ejemplo, su ubicación y capacidad máxima de producción. Podría ocurrir que cada depósito tenga una flota de vehículos asignada a priori o que dicha asignación sea parte de lo que se desea determinar. Los depósitos, al igual que los clientes, podrían tener ventanas de tiempo asociadas. En algunos casos debe considerarse el tiempo necesario para cargar o preparar un vehículo antes de que comience su ruta, o el tiempo invertido en su limpieza al regresar. Incluso, por limitaciones de los propios depósitos, podría querer evitarse que demasiados vehículos estén operando en un mismo depósito a la vez (es decir, la congestión del depósito). Los vehículos La capacidad de un vehículo podría tener varias dimensiones, como por ejemplo peso y volumen. Cuando en un mismo problema existen diferentes mercaderías, los vehículos podrían tener compartimentos, de modo que la capacidad del vehículo dependa de la mercadería de que se trate. En general, cada vehículo tiene asociado un costo fijo en el que se incurre al utilizarlo y un costo variable proporcional a la distancia que recorra. Los problemas en que los atributos (capacidad, costo, etc.) son los mismos para todos los vehículos se denominan de flota homogénea, y, si hay diferencias, de flota heterogénea. La cantidad de vehículos disponibles podría ser un dato de entrada o una variable de decisión. El objetivo más usual suele ser utilizar la menor cantidad de vehículos y minimizar la distancia recorrida ocupa un segundo lugar. Regulaciones legales podrían imponer restricciones sobre el tiempo máximo que un vehículo puede estar en circulación e incluso prohibir el pasaje de ciertos vehículos por ciertas zonas. En algunos casos se desea que la cantidad de trabajo realizado por los vehículos (usualmente el tiempo de viaje) no sea muy dispar. En general se asume que cada vehículo recorre una sola ruta en el período de planificación, pero últimamente se han estudiado modelos en los que un mismo vehículo puede recorrer más de una ruta Variantes y extensiones del VRP En esta sección se formulan algunos de los problemas clásicos y sus extensiones como problemas de Programación Entera. Dichas formulaciones se dan por completitud y para evitar ambigüedad en la definición, pero no se reportan en este trabajo métodos exactos de resolución. La red de transporte por la que circulan los vehículos se modela mediante un grafo ponderado G = (V,E,C). Los nodos del grafo representan a los clientes y depósitos. En problemas con un depósito y n 21

22 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD clientes, el nodo 0 representa al depósito y los nodos 1,,n a los clientes. En algunos casos (en que se explicitará) se agrega una copia del depósito etiquetada con n+1 para simplificar la formulación. Cada arco (i,j) ϵ E representa el mejor camino para ir desde el nodo i hacia el nodo j en la red de transporte y tiene asociado un costo c ij y un tiempo de viaje t ij. Según la estructura de los costos y los tiempos y las características de la red, el grafo puede ser simétrico o asimétrico. Puede suponerse que G es completo, pues entre todo par de lugares de una red de transporte razonable, debería existir algún camino. Sin embargo, por una cuestión de flexibilidad, los modelos serán planteados sin realizar dicha hipótesis. Denotaremos por + (i) y - (i) al conjunto de nodos adyacentes e incidentes al nodo i, es decir, + (i) = {j ϵ V (i, j) ϵ E} y - (i) = {j ϵ V (j, i) ϵ E}. De manera similar, el conjunto de arcos incidentes hacia el exterior e interior del nodo i se definen como δ + (i) = {(i, j) ϵ E} y δ (i) = {(j, i) ϵ E}. El Problema del Agente Viajero (TSP) En el Problema del Agente Viajero (o TSP por Travelling Salesman Problem) se dispone de un solo vehículo que debe visitar a todos los clientes en una sola ruta y a costo mínimo. No suele haber un depósito (y si lo hubiera no se distingue de los clientes), no hay demanda asociada a los clientes y tampoco hay restricciones temporales. La mayor parte de los problemas de ruteo de vehículos son generalizaciones del TSP. En ese sentido, este puede considerarse el problema de ruteo de vehículos más simple. No obstante, pertenece a la clase de problemas NP-Hard y es uno de los problemas de optimización combinatoria más clásico y difundido. El Problema de los m Agentes Viajeros (m-tsp) El Problema de los m Agentes Viajeros o m-tsp es una generalización del TSP en la cual se tiene un depósito y m vehículos. El objetivo es construir exactamente m rutas, una para cada vehículo, de modo que cada cliente sea visitado una vez por uno de los vehículos. Cada ruta debe comenzar y finalizar en el depósito y puede contener a lo sumo p clientes. La formulación es la siguiente: min cij x ij ( i, j) E 0 j + j (0) s. a. x = m (2.1) ij + j ( i) ij i ( j) { } x = 1, i V \ 0 (2.2) { } x = 1, j V \ 0 (2.3) u u + px p 1, ( i, j) E, i 0, j 0 (2.4) i j ij 22

23 2. Revisión de la literatura { } x 0,1, ( i, j) E ij { } u 0, i V \ 0 i El modelo es similar al segundo modelo presentado para el TSP. La restricción 1.1 indica que exactamente m vehículos salen del depósito y las 1.2 y 1.3 aseguran que cada cliente es un nodo intermedio en exactamente una ruta. Finalmente, con 1.4 se eliminan los sub-tours y se impone que en cada ruta no haya más de p clientes. En el caso que p = n (es decir, cuando la cantidad de clientes por ruta no está acotada) el m-tsp puede formularse como un TSP con m copias del depósito tales que la distancia entre ellas es infinita. Las soluciones a ese TSP no utilizarán arcos que conectan dos copias del depósito y por lo tanto, pueden ser interpretadas como soluciones del m-tsp. El Problema con Capacidades (CVRP) El VRP es una extensión del m-tsp en la cual cada cliente i ϵ V \ {0} tiene asociada una demanda d i y cada vehículo tiene una capacidad C (la flota es homogénea). En este problema la cantidad de rutas no es fijada de antemano como en el TSP y en el m-tsp. En algunos casos se agrega a este problema la restricción de que ninguna ruta puede tener largo mayor que cierta cota L. Cada vehículo, además, puede recorrer a lo sumo una ruta. Se asume en la mayoría de los casos que m es una variable de decisión que no tiene cota superior, es decir, la disponibilidad de los vehículos es ilimitada. El Problema con Flota Heterogénea (HF-MVRP) En los problemas con flota heterogénea los costos y capacidades de los vehículos varían, existiendo un conjunto T = {1,..., T } de tipos de vehículo. La capacidad de los vehículos k ϵ T es q k y su costo fijo (si lo tuvieran) es f k k k. Los costos y tiempos de viaje para cada tipo de vehículo son c ij y t ij respectivamente. Además, está comúnmente aceptado que los índices de los vehículos están ordenados en forma creciente por capacidad (es decir, q k 1 q k 2 para k 1, k 2 ϵ T, k 1 < k 2 ). El problema correspondiente se denomina Fleet Size and Mix Vehicle Routing Problem (o FSMVRP). No sólo se deben decidir las rutas, sino la composición de la flota de vehículos a utilizar. Usualmente, al tratar con problemas de flota heterogénea, se opta por utilizar este modelo aún cuando en algunos casos no refleja la realidad. El Problema con Ventanas de Tiempo (VRPTW) En esta variante del problema, además de capacidades, cada cliente i ϵ V \ {0} tiene asociada una ventana de tiempo [e i, l i ] que establece un horario de servicio permitido para que un vehículo llegue a él y un tiempo de servicio o demora s i. Si (i, j) es un arco de la solución y t i y t j son las horas de llegada a los clientes i y j, las ventanas de tiempo implican que necesariamente debe cumplirse t i l i y t j l j. 23

24 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Por otro lado, si t i < e i, entonces el vehículo deberá esperar hasta que el cliente abra y necesariamente t j = e i + s i + t ij Métodos de resolución exactos Dada la complejidad de los problemas, sólo las instancias con pocos clientes (hasta 50 aproximadamente) pueden ser resueltas consistentemente por métodos exactos. En este tipo de metodologías, suele resolverse alguna relajación del problema y utilizarse un esquema de ramificación y acotamiento al estilo del método Branch and Bound [10]. También se han propuesto algoritmos basados en Programación Dinámica que aceleran los cálculos mediante una relajación del espacio de estados. Por otro lado, hay diversas implementaciones del método de Generación de Columnas, que han resultado especialmente efectivas para problemas con ventanas de tiempo muy ajustados. Para un completo compendio de métodos exactos para Problemas de Ruteo de Vehículos, puede consultarse los trabajos de Laporte y Norbert [11] y de Laporte [12] Métodos de resolución Heurísticos A continuación se presentan algunas de las heurísticas clásicas más significativas para el VRP con capacidades y, en algunos casos, la restricción sobre el largo máximo de cada ruta. Estas heurísticas son procedimientos simples que realizan una exploración limitada del espacio de búsqueda y dan soluciones de calidad aceptable en tiempos de cálculo generalmente moderados. Las soluciones obtenidas con esta clase de procedimientos pueden, en general, ser mejoradas utilizando métodos de búsqueda más sofisticados, pero incurriendo en elevados tiempos de ejecución. Muchas de estas heurísticas pueden ser extendidas para manejar restricciones adicionales a las del VRP. El Algoritmo de Ahorros Uno de los algoritmos más difundidos para el VRP es el Algoritmo de Ahorros de Clarke y Wright [9]. Si en una solución dos rutas diferentes (0,, i, 0) y (0, j,, 0) pueden ser combinadas formando una nueva ruta (0,, i, j,,0) como se muestra en la Figura 9, el ahorro (en distancia) obtenido por dicha unión es, s = c + c c (4.5) ij i0 0i ij pues en la nueva solución los arcos (i, 0) y (0, j) no serán utilizados y se agregará el arco (i, j). En este algoritmo se parte de una solución inicial y se realizan las uniones que den mayores ahorros siempre que no violen las restricciones del problema. Existe una versión paralela en la que se trabaja sobre todas las rutas simultáneamente, y otra secuencial que construye las rutas de a una por vez. Heurísticas de inserción Las heurísticas de inserción son métodos constructivos en los cuales se crea una solución mediante sucesivas inserciones de clientes en las rutas. En cada iteración se tiene una solución parcial cuyas rutas sólo visitan un subconjunto de los clientes y se selecciona un cliente no visitado para insertar en dicha solución. 24

25 2. Revisión de la literatura i i j j Figura 9. Dos rutas antes y después de ser unidas En las heurísticas de inserción secuencial sólo se considera insertar clientes en la última ruta creada. La principal desventaja de este enfoque es que los últimos clientes no visitados tienden a estar dispersos y por lo tanto las últimas rutas construidas son de costo muy elevado [13, 14]. Las heurísticas de inserción en paralelo surgen para remediar esta deficiencia, permitiendo insertar un cliente en cualquiera de las rutas de la solución. Esta distinción es similar a la hecha para las dos versiones del Algoritmo de Ahorros (ver sección anterior). Cualquier heurística de inserción para el TSP puede ser utilizada para el VRP siempre que se verifique la factibilidad antes de realizar las inserciones. Por un compendio de heurísticas de inserción para el TSP puede consultarse el trabajo de Bodin et al. [15]. En esta sección nos ocuparemos de aquellas diseñadas explícitamente para el VRP. Inserción Secuencial de Mole & Jameson En esta heurística [13] se utilizan dos medidas para decidir el próximo cliente a insertar en la solución parcial. Por un lado, para cada cliente no visitado se calcula la mejor posición para ubicarlo en la ruta actual teniendo en cuenta solamente las distancias y sin reordenar los nodos que ya están en la ruta. Se tiene una ruta (v 0, v 1,., v t, v t+1 ) donde v 0 = v t+1 = 0. Si w es un cliente no visitado, el costo de insertar w entre v i y v i+1 (0 i t) se define como c ( v, w) = c + c λc (4.6) 1 i vi, w w, vi+ 1 vi, vi+ 1 Si (v 0,., v i,w,v i+1,.,v t+1 ) es factible. Si no, se daría el valor a la igualdad. La mejor posición para insertar el cliente w en la ruta actual está dada por, i( w) arg m in c ( v, w ) (4.7) = 1 i i = 0,..., t Si se utilizara solamente la medida c 1 para decidir el próximo cliente a insertar, es probable que los clientes lejanos al depósito no sean tenidos en cuenta sino hasta las iteraciones finales del algoritmo, es decir, cuando sean las únicas alternativas factibles. Por lo tanto, es necesario utilizar un incentivo adicional para la inserción de clientes lejanos al depósito. Se define c 2 (v i,w) = µc 0w c 1 (v i,w) para cada 25

26 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD cliente w. En cada iteración se busca el cliente que maximiza la medida c 2 (llamada medida de urgencia) y se lo inserta en la posición dada por el mínimo valor de c 1. Además de las medidas anteriores, debe considerarse la factibilidad de las inserciones. Cuando ninguna inserción es factible y si aún quedan clientes sin visitar, se selecciona un cliente para comenzar una nueva ruta. Inserción en Paralelo de Christofides, Mingozzi y Toth El algoritmo propuesto por Christofides, Mingozzi y Toth [16] opera en dos fases. En la primera fase se determina la cantidad de rutas a utilizar, junto con un cliente para inicializar cada una de las rutas. En la segunda fase se crean dichas rutas y se inserta el resto de los clientes en ellas. En la primera fase del algoritmo se aplica un algoritmo de inserción secuencial para obtener rutas compactas. No se presta especial atención a la ubicación de los clientes dentro de cada ruta, pues de esta fase sólo se conservan los clientes iniciales de cada ruta y la cantidad de rutas de la solución final. Para inicializar la k-ésima ruta se selecciona un cliente v k dentro de los no visitados. Se define el costo de insertar el cliente w en la ruta que contiene a v k como δ w,vk = c 0w + λc w,vk (si el cliente no puede ser insertado, la función toma el valor ) y se asignan clientes a la ruta comenzando por los menores valores de δ hasta que no haya inserciones factibles, en cuyo caso se crea una nueva ruta o se termina el algoritmo. Métodos Asignar Primero Rutear Después Los métodos asignar primero y rutear después (cluster first - route second) se ejecutan en dos fases. Primero se busca generar grupos de clientes, también llamados clusters, que estarán en una misma ruta en la solución final. Luego, para cada clúster se crea una ruta que visite a todos sus clientes. Las restricciones de capacidad son consideradas en la primera etapa, asegurando que la demanda total de cada clúster no supere la capacidad del vehículo. Por lo tanto, construir las rutas para cada clúster es un TSP que, dependiendo de la cantidad de clientes en el clúster, se puede resolver de forma exacta o aproximada. Heurística de Barrido o Sweep En la heurística de barrido [17], los clusters se forman girando una semirrecta con origen en el depósito e incorporando los clientes barridos por dicha semirrecta hasta que se viole la restricción de capacidad. Cada clúster es luego ruteado resolviendo un TSP de forma exacta o aproximada. Este algoritmo puede aplicarse en problemas planos, es decir, en los que cada nodo se corresponde con un punto en el plano y las distancias entre ellos se definen como la distancia euclídea. Se supone que cada cliente i está dado por sus coordenadas polares (ρ i, θ i ) en un sistema que tiene al depósito como origen. Por la forma en que se generan los clústers, las rutas obtenidas no se superponen, lo que puede ser bueno en algunos casos. 26

27 2. Revisión de la literatura El procedimiento se repite n veces, comenzando en cada ejecución por un cliente diferente. Se propone además un procedimiento para eliminar clientes de cada ruta finalizada e insertar clientes que aún no fueron visitados, en el caso que esto disminuya el costo de la ruta. Los clientes eliminados de la ruta serán barridos por alguna ruta posterior. Utilizando esta variante las rutas pueden solaparse. Heurística de Asignación Generalizada de Fisher y Jaikumar Fisher y Jaikumar [18] proponen generar los clústers resolviendo un Problema de Asignación Generalizada (GAP) sobre los clientes. Primero se fijan K clientes semilla s k con k = 1,,K sobre la base de los cuales se construirán los clústers. En una segunda fase, se decide qué clientes asignar a cada uno de los clústers de modo de no violar la capacidad del vehículo, y se resuelve el GAP correspondiente. Heurística de Localización de Bramel y Simchi-Levi El planteamiento de Bramel y Simchi-Levi [19] es similar al de Fisher y Jaikumar. En ambos existe un conjunto de clientes semilla y a cada uno se le asignan algunos clientes. Sin embargo, en esta propuesta, los clientes semilla son determinados por el algoritmo resolviendo un Problema de Localización de Concentradores con Capacidades (CCLP). El CCLP se describe a continuación. Se dispone de m posibles ubicaciones para concentradores de capacidad Q j (j = 1,,m) y n terminales, cada uno de los cuales utiliza w i (i = 1,, n) de la capacidad del concentrador al que se conecta. El costo por ubicar un concentrador en la ubicación j es f j y el costo de conectar el terminal i al concentrador j es ĉij. El CCLP consiste en decidir cuáles concentradores colocar y qué terminales conectar a cada concentrador de modo que cada terminal se conecte con exactamente un concentrador, se satisfagan las restricciones de capacidad y se minimicen los costos. El CCLP brinda un marco general para resolver Problemas de Ruteo de Vehículos, definiendo a las posibles semillas como sitios para ubicar concentradores. Dados m subconjuntos de clientes, T 1,, T m, el costo de utilizar el subconjunto T j en la solución es t(t j ) (el costo de un TSP óptimo sobre los clientes T j ), siempre que la demanda de los clientes de T j no supere la capacidad del vehículo. Además, para cualquier cliente i, el costo de agregarlo a T j es t(t j {i}) t(t j ). El problema de decidir qué semillas utilizar y qué clientes conectar con qué semillas es un CCLP donde los posibles concentradores son las posibles semillas, los terminales son los clientes, los costos fijos son los costos de rutar cada semilla y los costos de conexión son los costos de inserción de clientes en las semillas. Método Rutear Primero Asignar Después En los métodos rutear primero - asignar después [20] también se procede en dos fases. Primero se calcula una ruta que visita a todos los clientes resolviendo un TSP. En general esta ruta no respeta las restricciones del problema y se particiona en varias rutas, cada una de las cuales sí es factible. Dada r = (0, v 1,, v n, 0), la solución del TSP obtenida en la primera fase, se determina la mejor partición de r que respete la capacidad del vehículo. Este problema se puede formular como el de 27

28 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD hallar un camino mínimo en un grafo dirigido y acíclico. Para ello, se construye un grafo G = (X, V, W) donde X = {0, v 1,..., v n }. Los arcos del G conectan todo par de clientes v i y v j con i < j y tales que la demanda total de los clientes v i+1,,v j no supera la capacidad del vehículo: V = {(v i, v j ) i < j, Σ k=i+1 j d vk Q}. Cada arco (v i, v j ) se pondera con el costo de la ruta (0, v i+1,, v j, 0), es decir j 1 w( v, v ) = c + c i+ 1 j + c (4.8) k k+ 1 i j 0, v v,0 v, v k= i+ 1 Un arco (v i, v j ) representa la ruta (0, v i+1,..., v j, 0). Cada camino de 0 a v n en G representa una posible partición de la ruta r en rutas que respetan las restricciones de demanda. Por lo tanto, el camino de costo mínimo entre 0 y v n representa la partición de costo mínimo de la ruta original en rutas que respetan la restricción de capacidad. Como el grafo es acíclico (sólo hay arcos (v i, v j ) con i < j), puede utilizarse el Algoritmo de Dijkstra para hallar dicho camino. Aunque la ruta inicial sea la solución óptima del TSP y la partición se realice de manera óptima, las rutas obtenidas no necesariamente son una solución óptima para el problema. Por lo tanto, alcanza con que la ruta inicial se calcule en forma heurísitca, por ejemplo, mediante la aplicación de 2-opt sobre una ruta aleatoria como en el trabajo original. El algoritmo puede ejecutarse repetidas veces, partiendo de diferentes rutas iniciales. Según la definición original, w(v i, v j ) es el costo de la ruta que comienza en v i+1, sigue el orden de la ruta original y termina en v j. Esta definición puede modificarse permitiendo variar el orden de los clientes v i+1,...,v j para obtener una ruta mejor. En el artículo original se aplica el algoritmo 2-opt sobre la ruta (0, v i+1,..., v j, 0). Algoritmo de Pétalos Supongamos que se dispone de un conjunto de rutas R, de modo que cada ruta r ϵ R es factible, pero cada cliente es visitado por varias de las rutas. El problema de seleccionar un subconjunto de R de costo mínimo que visite exactamente una vez a cada cliente puede formularse como un Set Partitioning Problem (SPP). En el caso extremo de que R contenga todas las posibles rutas factibles, solucionar el SPP es equivalente a resolver el problema en forma exacta. Como la cantidad de rutas factibles es, en el caso general, exponencial en la cantidad de clientes, se suele generar solamente un subconjunto de formado por buenas rutas. Cada columna del SPP representa una ruta de R. Cuando en toda columna los ceros aparecen de forma consecutiva, el problema verifica la propiedad de Columnas Circulares y el SPP correspondiente puede ser resuelto en tiempo polinomial [21]. Trasladada al problema la propiedad establece que, para determinado ordenamiento de los clientes del problema, el conjunto de clientes visitado por cada ruta forma un intervalo (que en algunos casos tiene forma de pétalo). Cuando las rutas se generan con el Algoritmo de Barrido verifican la propiedad de Columnas Circulares. 28

29 2. Revisión de la literatura Procedimientos de Búsqueda Local Una vez que se tiene una solución para el problema, se puede intentar mejorarla mediante algún procedimiento de búsqueda local. Para cada solución s se define un conjunto de soluciones vecinas N(s). Un procedimiento de Búsqueda Local parte de una solución s, la reemplaza por una solución s* ϵ N(s) de menor costo y repite el procedimiento hasta que la solución no pueda ser mejorada. Al terminar, se obtiene una solución localmente óptima respecto a la definición de la vecindad. Para obtener s* puede buscarse la mejor solución de N(s) (estrategia best improvement) o simplemente tomar la primera solución de N(s) que mejore el costo (estrategia first improvement). Usualmente se define N(s) como las soluciones que pueden obtenerse aplicando a s alguna regla o procedimiento sencillo llamado movida. Las movidas para el VRP pueden clasificarse en movidas de una ruta y movidas multi-ruta. En las movidas de una ruta los clientes que se visitan en una ruta no varían luego de la aplicación del operador, lo que varía es el orden en que se realizan las visitas. En las movidas multi-ruta, además de cambios en el orden de las visitas suele modificarse el conjunto de clientes visitados en cada ruta. El operador λ-intercambio Uno de los operadores de búsqueda local para una ruta más conocidos es el λ-intercambio definido por Lin [22]. Un λ-intercambio consiste en eliminar λ arcos de la solución (λ > 1) y reconectar los λ segmentos restantes. Una solución se dice λ-óptima si no puede ser mejorada utilizando λ- intercambios. Se llama λ-opt a un algoritmo de búsqueda local que utiliza λ-intercambios hasta alcanzar una solución λ-óptima. En una ruta que visita n clientes, hay n+1 maneras posibles de eliminar λ arcos y, dada una elección λ de arcos a eliminar, hay 2 λ 1 (λ 1)! maneras de reconectar la ruta (incluyendo la reconexión que vuelve a generar la misma ruta). Por lo tanto, la cantidad de λ-intercambios posibles es 2 λ 1 (λ 1)! n+1 λ. Comprobar si una solución es λ-óptima puede hacerse en tiempo O(nλ ) en el peor caso. Usualmente se implementan 2-intercambios y 3-intercambios. Posibles movidas de este último tipo se muestran en las Figuras 9. En general, estas movidas invierten el orden de algunas visitas. Asumiendo que las movidas no afectan la factibilidad y que los costos son simétricos, puede buscarse movidas que mejoren el costo de una ruta sin necesidad de explorar todas las posibilidades. Si no se cumplieran dichos supuestos, buscar λ-intercambios tendría un costo computacional más elevado debido a la necesidad de incorporar chequeos de factibilidad y re-calcular algunos costos. No obstante, existen métodos [23] que proponen una versión reducida de 4-opt, mitigando así el problema del costo computacional. 29

30 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Figura 10. Todos los 3-intercambios posibles para los arcos marcados El algoritmo de Lin-Kernigham Un problema que surge al aplicar λ-intercambios es que debe fijarse el valor de λ de antemano. El algoritmo propuesto por Lin y Kernigham [24] utiliza la idea de intercambiar un conjunto de arcos por otro, pero determinando dichos conjuntos (y su orden) dinámicamente durante la ejecución del algoritmo. Dada una ruta, la idea es determinar dos conjuntos de arcos {x 1,, x k } e {y 1,, y k } tales que su intercambio disminuya el costo de la solución. Los arcos x deben ser parte de la ruta, ambos conjuntos deben ser disjuntos y, además, eliminar los arcos x y agregar los arcos y debe formar una ruta cerrada. Se comienza seleccionando un arco x 1 = (v 1, v 2 ). Luego, se busca y 2 = (v 2, v 3 ) de modo que c x1 c y1 = c v1,v2 c v2,v3 > 0. Al comenzar la iteración i de este proceso, se han elegido x 1,, x i 1 y y 1,, y i 1, donde x h = (v 2h 1, v 2h ) y y h = (v 2h, v vh+1 ). 30

31 2. Revisión de la literatura Se busca ahora x i = (v 2i 1, v 2i ), de modo que si se uniera v 2i con v 1 se obtendría una ruta cerrada (esto asegura que el proceso pueda finalizarse obteniendo una solución factible). Como v 2i 1 fue determinado al seleccionar y i 1 y x i debe ser un arco de la ruta, existen dos opciones para v 2i (el anterior a v 2i 1 en la ruta y el siguiente a él), pero solo una de estas cerraría la ruta a ser unida con v 1. De modo que x i queda determinada por y i 1. Para seleccionar y i = (v 2i, v 2i+1 ) debe cumplirse y i {x 1,, x i } para que los conjuntos sean disjuntos, i Σ j=1 c xj - c vj > 0 para que el intercambio no empeore la solución y, además, debe poder elegirse el siguiente x i+1. Si no es posible encontrar y i que cumpla todo lo anterior, se busca k tal que Σ k j=1 c xj - c vj sea máximo y se realizan intercambios entre los arcos {x 1,, x k } y {y 1,, y k }. El operador Or-opt Una versión reducida del algoritmo 3-opt es el algoritmo Or-opt [25], que consiste en eliminar una secuencia de k clientes consecutivos de la ruta y colocarlos en otra posición de la ruta, de modo que permanezcan consecutivos y en el mismo orden. Primero se realizan las movidas con k = 3, luego con k = 2 y finalmente con k = 1. Si una ruta visita n clientes existen O(n 2 ) de estas movidas. Operadores de Van Breedam Van Breedam [26] propuso dos operadores para intercambiar clientes entre un par de rutas. En el operador String Relocation, una secuencia de m nodos es transferida de una ruta a la otra manteniendo el orden en la ruta original. En el operador String Exchange una ruta envía una secuencia de m clientes a la otra y esta última envía otra secuencia de n clientes a la primera. Simbólicamente se denota con (m, 0) a cada String Relocation y con (m, n) a cada String Exchange. GENI y GENIUS Las inserciones generalizadas (GENI, por GENeralized Insertions) surgen dentro de un método de solución del TSP y tienen como principal característica que la inserción de un cliente en una ruta no necesariamente ocurre entre dos nodos adyacentes, sino que se permite la inserción de un nodo en cualquier punto de la ruta y su asignación posterior entre dos clientes cualesquiera, pudiendo revertir este proceso el orden de visita a los clientes. Transferencias cíclicas Las transferencias cíclicas, introducidas por Thompson y Psaraftis [27], son movidas multi-ruta que intentan eliminar clientes de una ruta y reubicarlos en otra de manera cíclica Metaheurísticas Para obtener mejores soluciones que las heurísticas presentadas en el apartado anterior, es necesario recurrir a técnicas que realicen una mejor exploración del espacio de soluciones. Las Metaheurísticas son procedimientos genéricos de exploración del espacio de soluciones para problemas de optimización y búsqueda. Proporcionan una línea de diseño que, adaptada en cada contexto, permite 31

32 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD generar algoritmos de solución. En general, las metaheurísticas obtienen mejores resultados que las heurísticas clásicas, pero incurriendo en mayores tiempos de ejecución (que de todos modos, son inferiores a los de los algoritmos exactos). En este apartado se presentan los resultados más significativos en la aplicación de Algoritmos de Hormigas, Búsqueda Tabú y Algoritmos Genéticos para resolver el VRP y el VRPTW. Los métodos seleccionados son representantes de tres paradigmas diferentes. Los Algoritmos de Hormigas son procedimientos basados en agentes que utilizan métodos constructivos aleatorios y cooperan entre sí compartiendo información. Los algoritmos de Búsqueda Tabú son métodos de búsqueda local que aceptan empeorar las soluciones para escapar de los óptimos locales. Los Algoritmos Genéticos se basan en mantener un conjunto de soluciones lo suficientemente diverso como para cubrir gran parte del espacio de soluciones. Algoritmo de Hormigas Los Sistemas de Hormigas o Ant Systems se inspiran en la estrategia utilizada por las colonias de hormigas para buscar alimentos. Cuando una hormiga encuentra un camino hacia una fuente de alimento, deposita en el trayecto una sustancia llamada feromona. La cantidad de feromona depositada depende de la longitud del camino y de la calidad del alimento encontrado. Si una hormiga no detecta la presencia de feromona se mueve aleatoriamente; pero si percibe dicha sustancia, decidirá con alta probabilidad moverse por los trayectos con más cantidad, lo que a su vez provocará un aumento de la feromona depositada en esa zona. De este proceso emerge un comportamiento denominado autocatalítico: cuanto más hormigas sigan cierto trayecto, más atractivo este se vuelve para ellas. En los Algoritmos de Hormigas se simula el comportamiento de una colonia de estos animales. Cada hormiga construye una solución combinando un criterio ávido que le indica qué tan bueno parece ser tomar cierta decisión, y la información histórica (bajo la forma de feromona) que le indica qué tan bueno fue tomar dicha decisión. La decisión que toma una hormiga en cada paso es elegir la próxima ciudad a visitar. Debido a la multiplicidad de combinaciones entre todos los parámetros del algoritmo, se han desarrollado distintas alternativas al modelo base ANT-Cycle [28], las cuales se enumeran a continuación: - Ant System con Selección Elitista. Se da mayor énfasis a la mejor solución encontrada en cada iteración - Ant System con Selección Elitista y Ranking. Es una generalización de la anterior en la cual se va ponderando en positivo un conjunto de soluciones mejores respecto a otras. - Ant-Q. Las feromonas que se actualizan son las pertenecientes a arcos recorridos por hormigas. Dicha actualización se produce en dos fases: una de revisión local y otra global. 32

33 2. Revisión de la literatura - Ant Colony System (ACS). Modifica una de las reglas del Ant-Q, consiguiendo así una mayor precisión y refinamiento en la búsqueda. - MAX-MIN Ant System (MMAS). Busca una mayor explotación de las soluciones encontradas y provee un mecanismo que evita la convergencia prematura. Una de las alternativas más usadas en la mejora de resultados para problemas de tipo VRP es el Ant System Híbrido. Mientras que para los de tipo VRPTW, se elige frecuentemente el MACS (Multiple Ant Colony System). Búsqueda Tabú La metaheurística de Búsqueda Tabú o Tabu Search fue propuesta por Glover [29] y tiene como principio básico realizar una búsqueda local aceptando soluciones que aumentan el costo. En la iteración t el algoritmo se mueve de la solución s t a la s t+1, que es la mejor dentro de un subconjunto de sus soluciones vecinas N(s t ). Se llama movida a la operación que se aplica a s t para obtener s t+1. Notar que s t+1 no necesariamente es de menor costo que s t y, por lo tanto, debe utilizarse algún mecanismo para que en la iteración siguiente no se vuelva a s t. Una opción sería almacenar todas las soluciones por las que se va pasando, pero a un costo de almacenamiento excesivo. En lugar de eso se utiliza una memoria de corto plazo que registra algunos atributos de las soluciones ya visitadas y se evita, durante cierta cantidad de iteraciones θ, considerar soluciones que posean dichos atributos. Las soluciones prohibidas se denominan soluciones tabú y las movidas que llevan hacia soluciones tabú se llaman movidas tabú. Suele utilizarse un criterio, llamado criterio de aspiración, para aceptar soluciones aún cuando sean tabú, por ejemplo, si mejoran el costo de la mejor solución encontrada hasta el momento. Se llaman soluciones admisibles a aquellas que no son soluciones tabú y a las que pasan el criterio de aspiración (aún si son tabú). La búsqueda se realiza sobre las soluciones admisibles de la vecindad. Como mecanismo de diversificación, es decir, para asegurar una exploración de diferentes regiones del espacio de soluciones, puede utilizarse una memoria de largo plazo que penalice las movidas realizadas con mucha frecuencia. Finalmente, también puede utilizarse algún mecanismo de intensificación, como realizar búsquedas más exhaustivas periódicamente o utilizar vecindades más grandes en algunas de las mejores soluciones encontradas. Búsqueda Tabú para el VRP A continuación se enumeran los distintos métodos o algoritmos que se han desarrollado para resolver este problema: El algoritmo de Osman [30]. Las vecinas de una solución se obtienen mediante intercambios de clientes entre pares de rutas. Si r p y r q son dos rutas diferentes de una solución, se define un λ- intercambio como el pasaje de a lo sumo λ clientes de r p a r q y a lo sumo λ clientes de r q a r p. La cantidad de clientes que cada ruta envía a la otra no necesariamente debe ser la misma, pero ambas deben ser no mayores que λ. La vecindad de una solución s, N λ (s), consiste en todas las soluciones que se pueden obtener aplicando esta operación a cualquier par de rutas diferentes de s. 33

34 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD El costo de una movida se evalúa de manera heurística. Al eliminar un cliente v i de una ruta, ésta se reconstruye uniendo el anterior y el siguiente a v i. Al insertar un cliente en una ruta, se coloca entre dos clientes consecutivos de forma de incrementar el costo lo menos posible. Luego de realizar una movida, se aplica el algoritmo 2-opt [22] sobre cada una de las rutas implicadas. Si se realiza una movida en que las rutas r p y r q intercambian los clientes v i y v j respectivamente, entonces la movida que vuelve v i a r p y v j a r q es una movida tabú. Del mismo modo, si se realiza la movida en que la ruta r p envía el cliente v i a la ruta r q y ésta última no le envía ningún cliente, la movida inversa, en la que r q devuelve v i a r p y r p no le envía ningún cliente a r q es una movida tabú. El tiempo que una movida es considerada tabú es fijo y se determina según las características de cada problema. Se utiliza el criterio de aspiración clásico: si una solución es mejor que la mejor solución hallada hasta el momento, se acepta aunque esto implique realizar una movida tabú. Para realizar la búsqueda en la vecindad de una solución s se utilizan dos criterios. En el criterio Best Admissible (BA) se busca la mejor solución admisible en N λ (s) y en el First Best Admissible (FBA) se selecciona la primer solución admisible N λ (s) que mejore el costo de s (si ninguna mejora el costo se selecciona la que menos lo empeora, pero habiendo necesitado examinar todos los intercambios posibles). El algoritmo Taburoute. Gendreau, Hertz y Laporte [31] propusieron un algoritmo de búsqueda tabú que acepta soluciones no factibles durante la búsqueda. Se consideran conjuntos de rutas que visitan exactamente una vez a cada cliente, pero se permite violar las restricciones de capacidad y de largo máximo de cada ruta. Si Q(s) mide el exceso total de capacidad de las rutas y L(s) mide el exceso total de largo de las rutas en la solución s, se utiliza como función objetivo a c '( s) = c( s) + α Q( s) + β L( s ) (4.9) Siendo c(s) el costo original en el problema. Notar que si una solución s* es factible, entonces c (s*) = c(s*). En cambio, para las soluciones no factibles se incorporan dos términos que penalizan las violaciones a las restricciones, presionando las soluciones a pertenecer a la región factible. Cada 10 iteraciones, se ajustan los parámetros α y β. Si todas las soluciones de las últimas 10 iteraciones fueron factibles respecto a la capacidad, α se divide entre 2 y si todas fueron no factibles, se multiplica por 2. Lo mismo se realiza para β pero considerando la restricción de largo máximo de la ruta. Dada una solución se evalúa, para cada cliente v, eliminarlo de su ruta e insertarlo en otra ruta que contenga alguno de sus p vecinos más cercanos (p es un parámetro del algoritmo). Se utiliza las inserciones GENI. Si el cliente v se elimina de la ruta r, entonces volver a insertarlo en r es una movida tabú durante θ iteraciones donde θ se sortea uniformemente en U~(5, 10). Se utilizan dos mecanismos de intensificación. Por un lado, si la mejor solución encontrada no es mejorada durante cierta cantidad de iteraciones, se amplía el tamaño de la vecindad incrementando el valor de p. Además, periódicamente se aplica el operador US para realizar una búsqueda local sobre la solución obtenida luego de la movida. Como método de diversificación se penaliza la concentración de movidas sobre los mismos clientes. Al considerar el costo de una movida en la que participa el cliente 34

35 2. Revisión de la literatura v, se suma un término proporcional a la cantidad de veces que dicho cliente fue movido durante la ejecución del algoritmo. El procedimiento de búsqueda se ejecuta varias veces partiendo de diferentes soluciones y durante pocas iteraciones; a la mejor solución obtenida en estos falsos comienzos se le aplica el algoritmo durante más iteraciones El algoritmo de Taillard [32]. Se realiza una partición del conjunto de clientes y cada partición se resuelve como un VRP independiente de los demás mediante Tabu Search. Para problemas uniformes (en los que el depósito está aproximadamente en el centro y los clientes están regularmente distribuidos) y con coordenadas euclídeas se propone una partición basada en consideraciones geométricas. Para el resto de los problemas, se da un método de partición que utiliza árboles de cubrimiento formados por los caminos mínimos del depósito a cada cliente. Tras ciertas iteraciones se modifica la partición utilizando información sobre la mejor solución obtenida. Se utiliza la misma definición de vecindad que en el algoritmo de Osman [30] con λ = 1. El costo de las movidas se evalúa en forma heurística: al insertar un cliente en una ruta se hace entre dos clientes consecutivos de modo de minimizar el aumento en el costo; y al eliminar un cliente de una ruta, se unen el anterior y el siguiente a él. La inversa de una movida es considerada tabú por una cantidad θ de iteraciones, donde θ se sortea uniformemente en [0.4n, 0.6n]. La movida de un mismo cliente repetidas veces es penalizada, a menos que cumpla con el criterio de aspiración, que es el usual de mejorar la mejor solución encontrada hasta el momento. Periódicamente, cada ruta es optimizada resolviendo un TSP sobre sus clientes de forma exacta mediante el algoritmo de Volgenant y Jonker [33]. Como en los casos estudiados la cantidad de clientes por ruta es baja (siempre menor que 40), esto no representa un problema siempre que no se realice con demasiada frecuencia. Memorias adaptativas de Rochart y Taillard. Si bien la propuesta de Rochat y Taillard [34] puede ser utilizada junto con cualquier algoritmo de búsqueda local, tiene su origen en el marco de Tabu Search. La idea sobre la que se basa es que si cierta característica aparece consistentemente en las buenas soluciones, entonces muy probablemente las soluciones que posean dicha característica serán mejores que las que no la posean. En los problemas de ruteo de vehículos, es razonable considerar a las rutas como dicha característica: si cierta ruta aparecen repetidamente en las buenas soluciones, probablemente sea bueno considerarla. El algoritmo comienza generando un conjunto de soluciones diferentes mediante varias ejecuciones de alguna heurística no determinista de búsqueda local. Luego de esta etapa, se espera tener (aunque de manera oculta ) toda la información necesaria para armar buenas soluciones. Dicho de otro modo, es de esperar que varias rutas muy similares a las necesarias para construir una buena solución hayan sido generadas, aunque quizás estén en soluciones diferentes. Al final de esta fase se tiene un conjunto R formado por las rutas de todas las soluciones obtenidas; si una ruta aparece en más de una solución, se 35

36 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD tiene múltiples copias de dicha ruta en R. Cada ruta se etiqueta con el valor de la solución a la que pertenece. En una segunda fase se busca extraer rutas de R para armar una nueva solución. Para esto, se crea R ordenando R de manera creciente en las etiquetas y considerando solamente las primeras L rutas (considerando las rutas repetidas como rutas diferentes). Luego se selecciona una ruta de R, donde se agrega a la solución y se eliminan de R todas las que contengan clientes en común con ella. El procedimiento se repite hasta que R se vacíe. Al finalizar podrían quedar algunos clientes sin visitar, para los que se resolverá un VRP con la heurística de búsqueda local, agregando las rutas obtenidas a la solución. Sobre esta solución se realiza una nueva búsqueda local y las rutas obtenidas se agregan al conjunto original R. Esta segunda fase de construcción y búsqueda local se puede repetir tantas veces como se quiera. En el trabajo original se utiliza el Algoritmo de Taillard [32] como método de búsqueda local. Al finalizar el algoritmo, como método de post-optimización, se resuelve un Set Partitioning Problem con las rutas de R. El Algoritmo de Xu y Kelly. En el algoritmo propuesto por Xu y Kelly [35] se utiliza una red de flujo para buscar intercambios de clientes entre las rutas. Dada una solución con m rutas, se construye una red con 4 niveles de arcos. En el primer nivel, se conecta el nodo fuente con un nodo por cada ruta. El flujo en estos arcos indica la cantidad de clientes eliminados de cada ruta. La oferta del nodo s está acotada superiormente por U. En el segundo nivel hay un arco entre cada ruta y los clientes que esta visita, cuya capacidad máxima es 1 y el flujo asignado indica si el cliente es eliminado de la ruta o no. Los arcos del tercer nivel unen a cada cliente con cada ruta. Su capacidad máxima es también 1 y el flujo indica si el cliente es insertado en la ruta o no. Finalmente, se conecta a cada ruta con un nodo terminal y el flujo a través de esos arcos indica la cantidad de clientes insertados en cada ruta. Un flujo sobre esta red da una manera de reasignar a lo sumo U clientes entre las rutas, sin tener en cuenta la capacidad de los vehículos. Los vehículos sobrecargados se penalizan al definir el costo de las movidas como en Taburoute. A cada arco de los niveles 2 y 3 se asocia un costo compuesto de dos términos. Por un lado, se mide de manera aproximada el aumento en la función objetivo del problema si se realizara la eliminación o inserción asociada al arco. Además, se agrega un término para favorecer la inserción de clientes en las rutas que están muy por debajo de la capacidad del vehículo y para penalizar las inserciones en rutas muy sobrecargadas. La vecindad utilizada en el algoritmo de Tabú Search alterna entre las movidas definidas por el flujo de costo mínimo en la red y los λ-intercambios de Osman. Se penaliza la realización repetida de movidas sobre el mismo cliente sumando al costo de las movidas, un término que mide cuántas veces se realizaron dichas movidas. Cuando se realiza una movida, la movida inversa es declarada tabú por una cantidad fija de iteraciones. Periódicamente se aplica el algoritmo 3-opt o el 2-opt sobre la ruta. Se mantiene un conjunto con las mejores soluciones encontradas durante la búsqueda y al cabo de cierta cantidad de iteraciones, se comienza una nueva búsqueda a partir de alguna de esas soluciones. 36

37 2. Revisión de la literatura Ejection Chains de Rego y Roucariol. Las Cadenas de Expulsiones (o ejection chains) fueron propuestas por Glover [36] como una técnica general para definir vecindades en un espacio de soluciones. En su versión más general, una movida consiste en seleccionar algunos elementos que cambiarán su estado o valor y, como resultado, otros elementos serán expulsados de su estado actual. En el caso de los Problemas de Ruteo de Vehículos se trata de cambiar las posiciones de algunos nodos en las rutas. El Algoritmo Flor. En este algoritmo se utiliza una estructura llamada Flor para generar una vecindad [37]. Una flor es un conjunto de rutas y un camino que parte del depósito, tal que todos los clientes del problema son visitados exactamente una vez. Se utilizan Cadenas de Expulsiones para transformar una Flor en otra mediante ciertas transformaciones y, además, se dan reglas para crear una Flor a partir de una solución y viceversa. Granular Tabu Search. La idea principal del algoritmo Granular Tabu Search de Toth y Vigo [38] consiste en disminuir la cantidad de arcos considerados, eliminando los que conectan nodos muy lejanos. Estos arcos tienen muy pocas posibilidades de pertenecer a una buena solución. Se define un umbral ν y solo se permite efectuar las movidas que involucran arcos en el conjunto E = {(i, j) E c ij < ν} I, donde E es el conjunto de arcos originales e I es un conjunto de arcos importantes, como por ejemplo, los incidentes al depósito. DETABA. En el Algoritmo DETABA, propuesto por Barbarosoglu y Ôzgür [39], se utilizan dos tipos de movidas. Las movidas TANE seleccionan dos rutas r 1 y r 2 al azar y de cada una eligen un conjunto aleatorio de clientes s 1 y s 1. El conjunto s 1 se elimina de r 1 y se inserta en r 2 y la operación análoga se realiza con s 2. Los conjuntos s 1 y s 2 deben elegirse de modo que al realizar la operación anterior no se viole las restricciones del problema. Luego de eso se aplica 2-opt a r 1 y r 2. En las movidas TANEC el procedimiento es similar al anterior, pero se procura que los clientes de s 1 y r 2 sean lejanos al centroide de sus rutas respectivas y cercanos al centroide de la ruta a la que no pertenecen. Para seleccionar la movida a realizar, se genera una cantidad de movidas TANE y TANEC y se implementa la mejor que no sea tabú. Si en una movida el cliente v 1 pasa de r 1 a r 2 y v 2 pasa de r 2 a r 1, entonces se declara tabú el volver a colocar v 1 en r 1 y v 2 en r 2. La cantidad de iteraciones que una movida es tabú se sortea uniformemente en un intervalo. Se utilizan falsos comienzos como en Taburoute, es decir, se ejecuta la búsqueda durante unas pocas iteraciones para generar un conjunto de soluciones iniciales. Luego se vuelve a ejecutar la búsqueda durante más iteraciones, partiendo de la mejor de esas soluciones iniciales. Búsqueda Tabú para el VRPTW Unified Tabu Search. Cordeau, Laporte y Mercier, propusieron un método de Búsqueda Tabú para el VRPTW al que llamaron Unified Tabu Search [40]. Se supone que el tamaño de la flota es m, conocido de antemano. Se permite considerar soluciones no factibles y las violaciones a la capacidad, largo máximo de las rutas y ventanas de tiempo, se penaliza como en Taburoute. La actualización de las ponderaciones en los términos de dicha penalización se actualiza en cada iteración. 37

38 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Las movidas utilizadas simplemente seleccionan un cliente, lo eliminan de su ruta y lo insertan en otra entre dos nodos consecutivos. Al eliminar un cliente de su ruta, esta se reconecta uniendo el anterior y el sucesor del cliente eliminado. Si el cliente i se elimina de la ruta r, volver a insertarlo i en r es una movida tabú por θ iteraciones. Como método de diversificación, si colocar el cliente i en la ruta r empeora la función objetivo, se penaliza dicha movida con un término ρ ir que mide cuántas veces el cliente i fue insertado en r durante toda la búsqueda. Al finalizar la búsqueda, se aplica una versión de GENI para problemas con ventanas de tiempo [68] sobre la mejor solución encontrada, como método de post-optimización. Algoritmos Genéticos Los Algoritmos Genéticos (AG), introducidos por Holland [41], utilizan las ideas de la evolución natural de los seres vivos para resolver problemas de optimización y búsqueda. En general, se trabaja sobre una representación de las soluciones en algún esquema de codificación (por ejemplo, vectores, matrices o árboles). El algoritmo opera sobre una población P de soluciones codificadas, llamadas individuos. Para cada individuo i ϵ P se define una función de fitness f(i) de modo que cuanto mayor es el fitness de un individuo, mejor es la solución que este representa. En cada iteración se aplican operadores evolutivos que combinan y modifican a los individuos de la población, creando una nueva. En el esquema usual se opera en tres fases: selección, cruzamiento y mutación. El operador de selección se encarga de elegir algunos individuos de la población que tendrán la posibilidad de reproducirse. De modo general, puede decirse que este operador genera una población intermedia (o mating pool) cuya cantidad de individuos depende de las características del operador de cruzamiento utilizado. Los operadores de selección son, en general, probabilísticos y suelen privilegiar a los individuos con mayor fitness en la población. Una vez que se generó la población intermedia, se aplica repetidas veces el operador de cruzamiento para combinar individuos de dicha población y generar una nueva. Usualmente los operadores de cruzamiento toman dos individuos p 1 y p 2 llamados padres, y generan dos individuos h 1 y h 2 llamados hijos, mediante la aplicación de una regla probabilística. Si utiliza una codificación basada en vectores, los operadores de cruzamiento clásicos son los de n puntos, que consisten en cortar cada padre en n posiciones, de manera aleatoria, e intercambiar los segmentos intermedios. Por ejemplo, si p 1 = y p 2 = , un posible resultado de un cruzamiento de dos puntos (que se da cuando los padres se cortan luego de las posiciones 3 y 6) es h 1 = y h 2 = El operador de cruzamiento de un punto se denomina SPX (Single Point Crossover) y el de dos puntos DPX (Double Point Crossover). Otro operador clásico es el UX (Uniform Crossover): para cada posición, con probabilidad 0.5 el hijo h 1 toma el valor de dicha posición de p 1 y h 2 de p 2 y con probabilidad 0.5 ocurre lo contrario. Finalmente, se aplica a algunos individuos de la nueva población, un operador probabilístico de mutación que consiste en realizarle alguna modificación. En codificaciones con vectores binarios suele invertirse algunos bits o permutar los valores de dos posiciones. 38

39 2. Revisión de la literatura Los operadores de cruzamiento y mutación operan sobre los individuos, es decir, sobre la codificación de las soluciones. A cada una de las poblaciones sucesivas se le llama generación. El modelo presentado no es el único modelo de evolución. Por ejemplo, en los Algoritmos Genéticos de Estado Estacionario, los individuos se generan de a uno y reemplazan (si corresponde) por el peor individuo de la población. Algoritmos Genéticos para el VRP GVR. En Genetic Vehicle Representation (GVR)[42] se trabaja directamente sobre las soluciones. Para cruzar dos soluciones p 1 y p 2, se toma una sub-ruta r = (v 1,..., v k ) de p 1 (al tratarse de una sub-ruta, no necesariamente se cumple que v 1 = 0 y v k = 0) y se determina el cliente w j más cercano a v 1 que no está en r. Si la ruta a la que pertenece w en la solución p 2 es r = (0, w 1,..., w j, w j+1,..., 0) entonces esta se reemplaza por (0,w1,...,wj,v1,...,vk,wj+1,...,0). Es decir, se inserta r en r a continuación de w. Si esta ruta no fuera factible, se divide en tantas rutas factibles como sea necesario. Con esto se genera un hijo, el otro hijo es una copia de p 1. Se utilizan cuatro operadores de mutación: intercambiar la posición de dos clientes en una ruta, invertir el orden de una ruta, re-insertar un cliente en una ruta diferente a la que pertenece y seleccionar una sub-ruta e insertarla en otro lugar de la solución. Los últimos dos operadores pueden generar rutas nuevas o eliminar rutas, mientras que los dos primeros mantienen la cantidad de rutas de la solución. El Algoritmo de Baker y Ayechew. El algoritmo propuesto por Baker y Ayechew [43] se basa en la técnica de Asignar Primero - Rutear Después. Cada individuo codifica la asignación de clientes a vehículos mediante un vector que en la posición i indica el número del vehículo asignado. El índice asignado a cada cliente es tal que si la distancia entre dos clientes es pequeña, entonces sus índices serán cercanos. Esto se logra utilizando una modificación de la Heurística de Barrido para asignar índices a los clientes. La función de fitness se calcula generando una ruta para cada vehículo que pase por todos los clientes asignados a él utilizando 2-opt y luego 3-opt. Se permite violar las restricciones del problema, penalizando dichas violaciones en la función de fitness. Se utiliza un Algoritmo de Estado Estacionario, Selección por Torneo, DPX como operador de cruzamiento y un intercambio probabilístico entre dos posiciones del vector como operador de mutación. Algoritmos Genéticos para el VRPTW GIDEON. El Algoritmo GIDEON de Thangiah [44] utiliza la técnica de Asignar Primero - Rutear Después. Los clusters se generan mediante la ubicación de K puntos semilla en el plano. Desde el depósito se trazan semirrectas hacia cada punto semilla, definiendo sectores que dividen al conjunto de clientes en clusters. El AG se utiliza para determinar la mejor ubicación de los puntos semilla. La ubicación de un punto semilla se codifica, utilizando 5 bits. Un vector de 5K bits representa la ubicación de los K puntos semilla. 39

40 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Para calcular el fitness de un individuo se genera una ruta para cada uno de sus clusters utilizando un algoritmo simple de inserción para el TSP. Se permite que las rutas sean no factibles. El fitness de un individuo es el costo de las rutas obtenidas para cada cluster, más términos que penalizan las violaciones a las restricciones de capacidad, largo máximo de cada ruta y ventanas de tiempo. El operador de cruzamiento utilizado es el DPX y como operador de mutación se modifican algunos bits aleatoriamente. Al final de la ejecución del algoritmo, se realiza una búsqueda local sobre la mejor solución encontrada, utilizando los λ-intercambios definidos por Osman. Esta nueva solución es utilizada para modificar las coordenadas polares de cada cliente, de modo que los clientes consecutivos en una ruta queden consecutivos si se ordenaran por su ángulo en las nuevas coordenadas polares. Con esas nuevas coordenadas se vuelve a ejecutar el Algoritmo Genético y se sigue el proceso por algunas iteraciones. GenSAT. En el Algoritmo GenSAT [45] simplemente se aplica un post-procesamiento a la solución obtenida mediante la ejecución de GIDEON [44]. Dicho post-procesamiento incluye la ejecución de métodos de descenso simples (First Best y Global Best) y además Simulated Annealing y Tabu Search utilizando vecindades definidas mediante 2-intercambios. El Algoritmo de Blanton y Wainwright. En el algoritmo propuesto por Blanton y Wainwright [46] se asume que se tiene una flota fija de K vehículos. Cada individuo es una permutación del conjunto de los clientes. Para obtener el conjunto de rutas que la permutación representa, se inicializan K rutas utilizando los primeros K clientes de la permutación y el resto de los clientes son insertados secuencialmente en la ruta que genere menos incremento en el costo (siempre que la inserción sea factible). Si luego de ese proceso quedan clientes sin visitar, esto se penaliza en la función de fitness. Se proponen dos operadores de cruzamiento llamados MX1 y MX2, que generan un solo hijo. Ambos consideran un ordenamiento global de los clientes dado por su ventana de tiempo, que expresa un orden deseable para las visitas. Si los clientes en la posición 1 de cada padre son v 1 y v 1, asigna a la posición 1 del hijo el cliente (v 1 o v 1 ) que esté antes en el orden global. Luego se intercambian las posiciones de modo que en la posición 1 de ambos padres quede en cliente elegido y se procede de la misma manera con todas las posiciones hasta procesar todos los clientes. El operador MX2 es similar, pero en lugar de intercambiar las posiciones, se elimina de ambos padres el cliente elegido. GENEROUS. Potvin y Bengio propusieron un Algoritmo Genético llamado GENEtic ROUting System (GENEROUS) [47] en el cual los operadores evolutivos se aplican directamente sobre las soluciones factibles y no sobre una codificación de estas. Para calcular el fitness de un individuo se utiliza un esquema de Ranking Lineal. Se fija un fitness máximo f max y un fitness mínimo f min y se ordenan las soluciones colocando la mejor al comienzo (posición 1) y la peor al final (posición P ). El fitness de la solución en la posición i es, f max ( f max f min )( i 1) P 1 (4.10) 40

41 2. Revisión de la literatura es decir, a la mejor solución se le asigna f max, a la peor f min y al resto se le asigna valores espaciados uniformemente en ese intervalo. Se utiliza Selección Proporcional. Se proponen dos operadores para combinar soluciones, el Sequence-Based Crossover (SBX) y en Route-Based Crossover (RBX). En el SBX, se seleccionan dos rutas r 1 y r 2, una ruta de cada padre, y se elimina un arco de cada una. Luego se arma una nueva ruta uniendo el segmento de r 1 anterior al corte con el de r 2 posterior al corte y la ruta obtenida reemplaza a r 1. La solución obtenida puede contener clientes duplicados y una de las copias debe ser eliminada. Puede ocurrir, además, que algunos clientes no sean visitados; a estos se los inserta secuencialmente en la ruta que incremente menos el costo total de 50 la solución. Si ocurriera algún cliente no puede ser insertado en ninguna de las rutas manteniendo la factibilidad, la solución es descartada (pues reconstruirla implicaría utilizar un vehículo más que en los padres) y el proceso de selección y cruzamiento debe repetirse hasta tener éxito. Invirtiendo el orden en que se consideran los padres (es decir, reemplazando a r 2 con la nueva ruta) puede obtenerse otra solución tentativa. El operador RBX consiste en copiar una ruta de un padre en el otro. Nuevamente, puede darse que algunos clientes estén duplicados y otros queden sin ser visitados, en cuyo caso se aplican las mismas consideraciones que para el operador SBX. Como operadores de mutación se proponen el One-Level Exchange (1M), Two-Level Exchange (2M) y Local Search (LSM), cuyo principal objetivo es disminuir la cantidad de vehículos de la solución. En el operador 1M se selecciona una ruta r y se inserta cada uno de sus clientes v i en la ruta r i que minimice el incremento en el costo total. La selección de la ruta es sesgada hacia las rutas con menos clientes. Puede ser difícil agregar v i a r i respetando las restricciones de capacidad y las ventanas de tiempo, por lo que en el operador 2M se considera la posibilidad de reubicar algún cliente de esa ruta, para hacer lugar a v i. Si r i = (0,,v j 1,v j,v j+1,,0) y la ruta (0,,v j 1,v i,v j+1,,0) es factible y además v j puede ser insertado en otra ruta r (que no sea r, pero pudiendo ser r i ), entonces el operador 2M permite insertar v i en r i y v j en r. Finalmente, el operador LSM realiza una búsqueda local mediante el Algoritmo or-opt. Algoritmo de Berger, Barkaoui y Bräysy. En esta propuesta [48] se utilizan dos poblaciones que evolucionan en paralelo y operan directamente sobre las soluciones. En la población P 1 el objetivo es minimizar el costo total y siempre se tiene al menos una solución factible. La población P 2 intenta minimizar la violación de las restricciones. Los individuos de una misma población tienen la misma cantidad de rutas; los de P 1 tienen R min y los de P 2 tienen R min 1, siendo R min la mínima cantidad de rutas para la que se ha conseguido una solución factible. Cuando se encuentra una nueva mejor solución en P 2, se actualiza R min y ambas poblaciones. Ambas poblaciones evolucionan de la misma manera, utilizando los mismos operadores y la misma función de fitness. La única diferencia radica en la cantidad de rutas impuesta a los individuos. Se utiliza un modelo evolutivo de Estado Estacionario: una generación consiste en agregar n p individuos a la población y luego eliminar los n p peores individuos. Luego de que ambas poblaciones evolucionan una generación, si P 2 contiene una solución factible, se copian los individuos de P 2 en P 1 y se aplica un operador de mutación llamado RSS_M a los individuos de P 2 para reducir la cantidad de rutas en uno. 41

42 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD El Algoritmo de Zhu. En el algoritmo propuesto por Zhu [49], cada solución se representa como una permutación de los clientes. Para obtener las rutas, se agrega clientes a una ruta siguiendo el orden dado por la permutación y cuando incluir el siguiente cliente en la ruta viole las restricciones del problema, se crea una nueva. Se utiliza Selección por Torneo. Se combinan tres operadores de cruzamiento, el PMX y dos nuevos operadores: Heuristic Crossover (HC) y Merge Crossover (MC). En el HC se selecciona un punto de corte y se elige el cliente siguiente a dicho punto en alguno de los padres (sea v dicho cliente) para comenzar la ruta. En el otro padre, se intercambian dos clientes de modo que v quede en la misma posición en ambos. Si v 1 es el siguiente a v en uno de los padres y v 2 es el siguiente en el otro, entonces se agrega a la ruta el más cercano a v. El proceso se repite partiendo del cliente agregado, hasta completar una ruta. El MC opera de manera similar, pero selecciona el próximo cliente de acuerdo al tiempo y no a la distancia. Para la mutación se intercambian las posiciones de algunos clientes dentro de una misma ruta. El Algoritmo de Tan, Lee y Ou. El algoritmo propuesto por Tan, Lee y Ou [50] puede ser considerado un método Asignar Primero - Rutear Después. Cada individuo codifica una agrupación de clientes mediante una permutación y un vector que indica cuántos clientes tiene cada cluster. Por ejemplo, el individuo (2, 4, 7, 1, 6, 5, 9, 3, 8)(3, 2, 4) representa los clusters (2, 4, 7), (1, 6) y (5, 9, 3, 8). Para evaluar el fitness de un individuo se construye una ruta para cada cluster mediante una Heurística de Inserción Secuencial de Solomon y realizando luego una búsqueda local mediante los λ- intercambios de Osman. Se utiliza Selección por Torneo, PMX y un operador de mutación que intercambia dos elementos del primer vector. Tunning de Parámetros de Potvin y Dubé. Potvin y Dubé [51] utilizaron un Algoritmo Genético para ajustar los parámetros de la Heurística de Inserción en Paralelo para el VRPTW de Potvin y Rousseau. Se utiliza una codificación mediante un vector binario para representar un juego de parámetros de la heurística. El fitness de un individuo se define como el costo de la solución obtenida ejecutando la heurística con el juego de parámetros que el individuo representa. Se utiliza Selección por Ranking, SPX como operador de cruzamiento y el operador de mutación modifica probabilísticamente cada bit Análisis de costes de sostenibilidad en el transporte La función objetivo clásica de los problemas VRP se centra en minimizar la distancia total de todos los vehículos o el coste en el que se incurre, usualmente definido como una función lineal de la distancia. Este es un objetivo ampliamente utilizado en la literatura asociada a flotas homogéneas como se ha visto en el apartado 4.1. Las externalidades del transporte es un coste, no percibido directamente por el usuario y que sufren terceras personas, sin compensación o pago algunos. Las externalidades más frecuentes consideradas se han centrado en congestión, ruidos, efectos barreras, impacto sobre el medio natural y finalmente la contaminación. La última década ha destacado el auge del análisis de externalidades asociadas a la 42

43 2. Revisión de la literatura contaminación como consecuencia de los acuerdos de diferentes tratados que los países han firmado y trasladado a los sectores productivos de la economía. La no consideración de los costes de las externalidades induce una mayor ineficiencia que provoca un aumento de los problemas medioambientales, seguridad y congestión. Las externalidades del transporte deben por lo tanto ser considerada e incluida como coste en el desarrollo de modelos, medidas y actuaciones. Algunos autores, como Peng Yong [52], enfocan el problema desde un punto de vista enérgetico (ahorro de combustible) y argumentan que esto redunda positivamente tanto en la salud de las personas como en el medioambiente. Es decir, el efecto colateral sobre el entorno es beneficioso, pero no es causa para alterar las rutas. El principal problema asociado a la inclusión de las externalidades es su cuantificación y su traducción a unidades monetarias para su correcta inclusión en los modelos y procesos. En este sentido, han sido hasta la fecha multitud los investigadores que han profundizado en la inclusión de estos costes medioambientales en los problemas clásicos de VRP, tratando de proporcionar una visión más realista y sostenible de la gestión en la cadena de mercancías. Hasta hace 10 años, el objetivo primordial en logística era alcanzar el máximo beneficio económico o mejorar el servicio al cliente. Pero en la última década, el auge en el interés por la preservación del medioambiente está jugando un papel relevante en las políticas de operación y distribución. Por tanto, es conveniente que estos factores se añadan a los objetivos económicos, para encontrar el balance perfecto entre estas dos dimensiones [53]. Algunos autores [54] centran sus investigaciones en la evaluación de los efectos externos del transporte para internalizarlos a través de impuestos. De ahí que las decisiones tales como la selección del tipo de vehículo, la programación de las entregas, la fusión de flujo de mercancías y la elección de tipo de combustible que consideran costes internos y externos ayuden a reducir el impacto en entorno sin perder competitividad con compañías rivales. En los últimos años, otros investigadores han propuesto métodos de rutado con ventanas de tiempo que incluyen modelos de emisiones para la cadena de transporte [55]. Tienen en cuenta la cantidad de emsiones de CO 2 y consumo de combustible, pero no consideran flotas de tipo heterogéneo y otras externalidades como contaminantes atmosféricos, ruido y accidentes. No se dispone de una clasificación específica universal para ordenar las características de todos los vehículos disponibles en lo que a emisión de contaminantes se refiere, así que es frecuente acudir a organizaciones que proporcionan estimaciones de conversión entre vehículos que se amoldan a una normativa dada, como por ejemplo, el INFRAS. En el estudio desarrollado por Eguía, Racero y Guerrero [56], se propone un modelo matemático de programación lineal que internaliza los costes externos en problemas tipo HF-VRPTW-B apoyándose en las conversiones establecidas por el INFRAS/IWW. Se evalúa la flota de vehículos y la cuantía de sus emisiones de GEI para añadirlos al modelo clásico. Finalmente, se corrobora que este nuevo 43

44 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD concepto de rutado con contaminantes modifica las rutas que minimizan distancia sin considerar factores externos. Esta nueva percepción de la gestión de flotas de vehículos es el punto de partida del presente documento. 44

45 3. DISEÑO DE LA BÚSQUEDA TABÚ 3.1. Descripción del problema El problema que se presenta en este trabajo es una extensión del clásico CVRP (véase sección 2.1) que incluye ventanas de tiempo, flota heterogénea de vehículos con distintos tipos de combustible (HF- VRPTW) e internalización de costes medioambientales en la función objetivo. Como ya se ha descrito anteriormente, este tipo de problemas quedan definidos por tres entidades: clientes, depósitos y vehículos. Cada una de ellas está limitada por una serie de asunciones de antemano que se describen a continuación: Clientes - Número total de clientes. - Todas las distancias (km) entre ellos y al depot. - Tiempo de desplazamiento (h) entre ellos y al depot. - Coste del peaje ( ) entre ellos y al depot. - Demanda invariable para cualquier vehículo. - Ventana de tiempo (límite inferior y límite superior) e invariables para cualquier vehículo. - Tiempo de servicio invariable para cualquier vehículo. Vehículos de la flota - Número total de vehículos. - Capacidad fija para cada vehículo. - Máximo tiempo de conducción (h) para cada vehículo. Se refiere al máximo tiempo que puede estar un vehículo en ruta, entendiéndolo como el tiempo que transcurre desde que sale del depot hasta que vuelve de nuevo a él. - Tasa de conductor ( /h) para cada vehículo. El coste por hora de mantener al vehículo en ruta. - Coste fijo ( ) para cada vehículo. El coste en que se incurre por poner a un vehículo en ruta. - Coste de mantenimiento ( /km) para cada vehículo. El coste por kilómetro recorrido en la ruta. - Consumo vacío (l/100km) para cada vehículo. El consumo por litro cada 100 kilómetros. - Consumo por tonelada (l/100km ton). El consumo por litro y por tonelada transportada cada 100 kilómetros. - Tipo de combustible para cada vehículo. Diesel, gasolina u otro.

46 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD - Categoría. Se refiere a qué categoría, según la Normativa Europea de Emisiones, se adapta el vehículo para ver sus niveles de emisiones de GEI. Depot - Un único depot. Es la primera y última ciudad en toda ruta de cualquier vehículo que atienda a algún cliente. - Demanda, ventanas de servicio y tiempo de servicio de valor nulo. La caracterización tan amplia de estas tres entidades hace necesaria la descripción matemática en aras de una compresión global y exhaustiva, pues las situaciones y casuísticas que se producen son múltiples y es, por tanto, fundamental esclarecer la actuación tomada ante cualquiera de ellas. El HF-VRPTW se define sobre un grafo G={N,A} con N={0,1,,t} como un conjunto de nodos, donde el nodo 0 representa el punto de partida o depósito y los nodos 1 hasta t representan los puntos de entrega, y A representa un conjunto de arcos definidos entre cualquier par de nodos. El modelo incluye un conjunto de m vehículos de diversas categorías que serán los candidatos a ser empleados como medio de transporte para satisfacer la demanda de todos los clientes procedente del nodo depósito. El diseño de las rutas por cada vehículo debe satisfacer las siguientes restricciones: Los vehículos tienen una capacidad, por tanto la carga transportada no pueden superar la capacidad, cada cliente debe ser atendido en base a ventanas de tiempo fijadas y los vehículos tienen una limitación de tiempo de funcionamiento. El modelo desarrollado sigue la siguiente anotación: - D i : Demanda por nodo i є {1,,t}. - q k : Capacidad del vehículo k є {1,,m}. - [e i, l i ]: Ventana de tiempo de servicio por nodo i. - s i k : Tiempo de servicio en el nodo i por el vehículo k. - d ij : Distancia entre el nodo i y el nodo j (i j). - t ij : Tiempo de conducción entre los nodos i y j. - T k : Tiempo máximo de operación para cada vehículo k. Las variables de decisión del problema son: - x ij k : Variable binaria, será 1 si el vehículo k є {1,,m} viaje de i a j (i j). - y i k : Instante de comienzo del servicio en el nodo i є {0,1,,n} por el vehículo k; y 0 k recoge el fin del servicio del vehículo k. - f ij k : Carga transportada del vehículo k є {1,,m} entre los nodos i y j (i j). Las restricciones del modelo: 46

47 3. Diseño de la búsqueda tabú n j= 1 k x0 j 1 ( k = 1,..., m) n n k ij j= 0 j= 0 j i j i k x x = 0( k = 1,..., m; i = 1,..., n) ji m n k= 1 j= 0 j i t i= 1 k xij = 1 (i = 1,...,n ) n m k k Di xij q ( k = 1,...,m ) n j= 0 j i k= 1 i= t+ 1 j= 1 m n k= 1 j= t+ 1 t k x ij = 0 x 0 = 0 k j k k k k k yi + si + tij y j + T (1 xij ) ( i = 1,...,n; j = 0,...,n; j i; k = 1,...,m ) k k k t0 j y j + T (1 x0 j ) ( j = 1,...,n; k = 1,...,m ) k e i y i l i ( i = 1,..., n ; k = k k y 0 T ( k = m n k= 1 j= 0 j i m n k= 1 j= 0 j i m n k= 1 j= 0 j i 1,..., m ) k k f ji fij = Di (i = m n k= 1 j= 0 j i 1,..., m ) 1,...,t ) k k fij f ji = Di (i = t + 1,...,n ) k k k fij ( q Di )xij (i = 0,...,t; j = 0,...,n; j i; k = 1,...,m ) k k D j xij f ij ( j = 1,...,t; i = 0,...,n; i j; k = 1,...,m ) k k Di xij f ij (i = t + 1,...,n; j = 0,...,n; j i; k = 1,...,m ) k k k fij ( q D j )xij ( j = t + 1,...,n; i = 0,...,n; i j; k = 1,...,m ) 47

48 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD El primer conjunto de restricciones (1) implica que no más de m vehículos parten del depósito (fleet size). A continuación se describen las ecuaciones de conservación de flujo (2) por cada nodo. La imposición de unicidad en las visitas es impuesta en las restricciones (3), los clientes sólo serán visitados una vez. El grupo de restricciones 4 y 5 aseguran que los vehículos no serán sobrecargados. Las restricciones en 6 garantizan que primero se visitan a los clientes y posteriormente a los proveedores, mientras que el grupo 7 de restricciones evita que salgan vehículos vacíos con dirección a los proveedores. Las restricciones 8 y 9 son empleadas para obtener el instante de inicio del servicio en los clientes y proveedores, así mismo son las restricciones encargadas de evitar la formación ciclos (y causantes del que el problema sea NP-Duro). La imposición de cumplimiento de las ventanas de tiempo se describe en las restricciones 10. Así mismo, se impide que la utilización o número de horas de trabajo de los conductores sea excesiva mediante la restricción 11. El balance de flujo de carga entre nodos se describe mediante las restricciones 12 y 13. Las restricciones son empleadas para restringir la carga total de los vehículos dependiendo si llega o sale de un cliente o proveedor. El objetivo del modelo es diseñar o proponer rutas para diferentes vehículos tal que minimice los costes internos y los costes externos. Los costes internos (IC) asociado con una ruta están compuestos por 4 elementos. Estos se corresponden a los costes del conductor (DRC), costes energéticos (ENC), costes fijos de adquisición, seguros, etc (FXC), costes de mantenimiento (MNC) y costes de peajes (TLC). Además se incluye los costes de las externalidades, estructurados en cuatros componentes tales como costes de cambio climático (CCC), costes de emisiones contaminantes (APC), costes de ruido (NSC) y coste de accidentalidad (ACC). Minimize IC + EC = ( DRC + ENC + FXC + MNC + TLC) + ( CCC + APC + NSC + ACC) (18) Las ecuaciones matemáticas que sirven para expresar los costes de la función objetivo son: m k DRC = p k y0 k= 1 (3.1) ENC = n n m R i= 0 = = = j j 0 k 1 r 1 i r fc δ kr d ij ( fe k x k ij + feu k f k ij ) (3.2) FXC = n m i= 1 k= 1 fx k x k 0 i (3.3) MNC = n n m i= 0 = = j j 0 k 1 i mn k d ij x k ij (3.4) 48

49 3. Diseño de la búsqueda tabú TLC = n n m i= 0 = = j j 0 k 1 i k tl ij x ij CCC = n n m R i= 0 = = = j j 0 k 1 r 1 i pe CO2 (3.5) kr CO2, r k k k k δ ef d ( fe x + feu f ) (3.6) ij ij ij APC = NSC = ACC = n n m R i= 0 = = = = = j j 0 k 1 r 1 t 1 p 1 i n n m i= 0 = = j j 0 k 1 i n n m i= 0 j= 0 k= 1 j i T P k ne d ij f ij ae k d ij f ij pe p δ kr kt γ ef p, t d ij x k ij (3.7) (3.8) (3.9) Los datos y parámetros empleados en la definición del modelo son: - p k : Salario del conductor k por unidad de tiempo. - fc r : Coste o precio por unidad de combustible del tipo r. - fe k : Consumo de combustible del vehículo k en vacío. - feu k : Consumo de combustible por unidad adicional de carga para el vehículo k. - δ kr : Igual a 1 si el vehículo k usa el combustible de tipo r. - fx k : Coste fijo para el vehículo k. - mn k : Coste de mantenimiento preventivo, reparaciones, desgaste de neumáticos por kilómetro para el vehículo k. - tl ij : Coste de peajes asociado a los arcos (i,j). - pe CO2 : Preci de cada unidad de CO 2 emitida. - ef CO2,r : Factor de emisión, cantidad de CO 2 emitida por unidad de fuel consumida. 49

50 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD - pe p : Precio por tonelada de contaminante p emitido. - ef p,t : Emisiones de contaminante del tipo p emitida por kilómetros por un vehículo de categoría t. - δ kt : igual a 1 si el vehículo k es de la categoría t. - ne: Coste de emisión de ruido por tonelada transportada y kilómetro viajado. - ae: Coste de accidentes por tonelada cargada y kilómetro viajado Diseño de la Búsqueda Tabú La complejidad inherente al problema combinatorio del VRP hace imprescindible la articulación de diversos métodos, que trabajando conjuntamente, aporten un resultado satisfactorio acorde con las expectativas, más si cabe cuando no sólo se pretende rutar un conjunto de vehículos minimizando tiempo o distancia, sino que otras consideraciones internas y externas a una flota de vehículos heterogénea entran en juego. En este sentido, y tras un análisis cuidadoso de la literatura, se ha decidido afrontar el problema en tres fases, que se desglosan en la figura 10. Solución Inicial Intercambio λ-opt Búsqueda tabú Figura 11. Fases de la Búsqueda Tabú La primera fase, Formación Solución Inicial, proporciona, si fuera posible, una rutado admisible dentro del espacio de soluciones, pero no asegura, en ningún caso, un coste aceptablemente bueno. De ahí que los dos pasos siguientes se efectúen en pos de una reducción del coste total de la solución. En la segunda fase, Intercambio λ-opt, se realizan los movimientos descritos en El operador λ- intercambio (sección ) modificando, si es que se halla mejora, la solución proporcionada en la primera fase. Y por último, se realiza una Búsqueda Tabú (BT en adelante) personalizada sobre la solución calculada en los dos pasos anteriores. El mejor rutado se obtiene una vez concluido este paso Solución inicial Mole-Jameson Esta heurística utiliza dos medidas para decidir el próximo cliente a insertar en la ruta actual. En primer lugar, para cada cliente no visitado se calcula la mejor posición para ubicarlo en la ruta actual teniendo en cuenta solamente las distancias y sin reordenar los nodos que ya están en la ruta. Se tiene una ruta (v 0, v 1,., v t, v t+1 ) donde v 0 = v t+1 = 0. Si w es un cliente no visitado, el costo de insertar w entre v i y v i+1 (0 i t) se define como 50

51 3. Diseño de la búsqueda tabú c ( v, w) = c + c λc (5.6) 1 i v, w w, v v, v i i+ 1 i i+ 1 Si (v 0,., v i,w,v i+1,.,v t+1 ) es factible. Si no, se daría el valor a la igualdad. La mejor posición para insertar el cliente w en la ruta actual está dada por, i( w) arg min c ( v, w ) (4.7) = 1 i i = 0,..., t Si se utilizara solamente la medida c 1 para decidir el próximo cliente a insertar, es probable que los clientes lejanos al depósito no sean tenidos en cuenta sino hasta las iteraciones finales del algoritmo, es decir, cuando sean las únicas alternativas factibles. Por lo tanto, es necesario utilizar un incentivo adicional para la inserción de clientes lejanos al depósito. Se define c 2 (v i,w) = µc 0w c 1 (v i,w) para cada cliente w. En cada iteración se busca el cliente que maximiza la medida c 2 (llamada medida de urgencia) y se lo inserta en la posición dada por el mínimo valor de c 1. Además de las medidas anteriores, debe considerarse la factibilidad de las inserciones. Cuando ninguna inserción es factible y si aún quedan clientes sin visitar, se selecciona un cliente para comenzar una nueva ruta. Esta definición se ciñe a unas características de clientes, depots y flota muy básicas. De ahí que deba generalizarse y adaptarse a la variedad de datos y parámetros cuando se quiere ampliar el objetivo de minimizar la distancia a otros con criterios eco-eficientes. Es decir, hay que diseñar una serie de modificaciones y módulos o conceptos extras sobre el algoritmo original para que permitan hacer uso de él sin perder su filosofía. Se necesitan añadir las características de los vehículos de la flota disponible, la definición en distancias, tiempos y peajes de todos los arcos que unen a los clientes, y los contaminantes. Para ello, aquí se desglosa el nuevo procedimiento matemático, la lógica en bloques y modificaciones de otra índole realizadas en los distintos pasos para adaptar el objetivo original de minimizar la distancia en otro que contenga los costes por contaminación. A grandes rasgos, el nuevo modelo se resume en el esquema de bloques de la figura 11. Los distintos pasos que se muestra en dicha figura se detallan a continuación: Ordenar la flota. Este paso inicial ordena los vehículos disponibles de la flota según su capacidad, listándose de mayor a menor o viceversa. Calcular todos los costes tras insertar w en todas las posiciones. En principio, para realizar estos cálculos bastaría con aplicar la definición dada por la ecuación 2.1 sin embargo la internalización de los aspectos medioambientales y las ventanas de tiempo de los clientes obligan a redefinir la dicha ecuación en otra (ecuación 2.2). Estos cambios producirán efectos de calado pues las consideraciones que se toman en la conversión de distintas medidas en euros 51

52 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Figura 12. Diagrama de flujo del algoritmo diseñado en base a Mole-Jameson provocan que no siempre las ciudades más cercanas a un nodo dado sea las más convenientes de elegir, ya que su coste puede ser mayor que otra que, a priori, no está tan cerca geográficamente hablando. 52

53 3. Diseño de la búsqueda tabú Esto se debe a que en el coste total se computan tanto costes internos como costes externos. Es decir, la primera modificación importante surge de la disgregación del coste en dos sumandos (c int + c ext ) y de la dependencia con el camión elegido (r). c ( v, w, r) = c ( v, w, r) + c ( v, w, r ) 1 i int i ext i Para entender el funcionamiento interno de c int y c ext es esencial aclarar cómo intervienen las entidades básicas con las que opera el algoritmo adaptado y que influyen decisivamente en el criterio de selección de la ciudad w. Se podrían resumir en cuatro: tiempo entre ciudades, ventanas de tiempo, costes internos y costes externos. Tiempo entre ciudades. Hablar de tiempo o distancia, si se asume un desplazamiento a una velocidad constante determinada, es válido igualmente. En este caso, se usa el tiempo directamente para que no sea necesaria la adición de un factor de velocidad en la ruta para compatibilizarlo con las medidas de tiempo usadas en las ventanas de tiempo. Ventanas de tiempo. Una ventana de tiempo se define como un intervalo en el que el cliente exige la llegada del vehículo para ser atendido. Matemáticamente, se expresa como [e k,l k ] para cada cliente v k. Esta ventana influye decisivamente en el criterio de elección, pues redefine la cercanía o lejanía entre un par de ciudades. De ahí que el tiempo empleado en desplazarse de un nodo k a k +1 a otro se calcule como: t = m ax( e, b + s + t ) b k, k + 1 k + 1 k k k, k + 1 k Donde b k es el instante de atención al vehículo cuando visita a v k. El valor de b k depende del instante de llegada a v k, cuyas posibilidades son las tres que su muestran en la gráfica siguiente: e k l k Figura 13. Posibilidades de llegada de un vehículo r a una ciudad v k. La línea de llegada roja simboliza todos aquellos casos en que los vehículos llegan a la ciudad v k con un tiempo total de llegada menor que (t llegada < e k ). La verde representa a los casos en que llegan entre e k y l k (e k t llegada l k ). Y en último lugar, aquellos en los que el vehículo llega después de l k (t llegada > l k ). El valor de b k se define como b k =e k si t llegada <e k, y b k =t llegada e.o.c. Estas tres casuísticas afectan directamente al valor del coste entre el nodo v k y v k-1. Tanto para la línea roja como para la verde, la inserción de v k es posible. No así con el caso de la línea azul, que no puede ser admitido porque está violando la condición de cumplimiento de ventana de tiempo. Por tanto, y tal y como establece el algoritmo original, el coste desde v k-1 a v k tomaría el valor c 1 (v k,w) = (o desconsiderado por otros medios). 53

54 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Las ventanas de tiempo no sólo afectan a la admisibilidad de una inserción sino que también cambian el concepto de cercanía entre dos nodos v k y v k+1. Es posible que cuando se tienen dos ciudades candidatas (v a y v b ) para insertar entre dos ciudades (v k y v k+1 ) suceda lo siguiente: Que aún estando la ciudad v a muy cerca en tiempo, su ventana e a sea tan elevada que otra ciudad v b, a priori más lejana, esté más cerca porque su ventana e b es menor, siendo esta última la elegida por el algoritmo. Matemáticamente se resumiría afirmado que t(v k, v a ) < t(v k, v b ), y e a >> e b (los tiempos de servicio, s a y s b se consideran despreciables). En la práctica, esto se traduce en que en la función objetivo los tiempos muertos que emplean los vehículos para que el cliente les atienda incurren en costes que empeoran el coste de la ruta. Gastos internos. Se definen por la cuádrupla {coste fijo del vehículo (fx r ), coste de mantenimiento (mn r ), coste del peaje (tl ij ) en el arco (i,j), salario del conductor (p r )}. Es evidente que existe una dependencia directa de estos gastos con el kilometraje recorrido, el tiempo empleado y el camión elegido. Los factores que intervienen en la concreción de la próxima ciudad en la ruta ya no se limitan a criterios geográficos, sino que hay parámetros propios del camión elegido que pesan en la decisión final. La cuádrupla queda definida de la siguiente manera: c ( v, w, r) = fx + tl + p t + mn d r r r int i ij vi, w vi, w La obtención de la distancia en el arco (v i,w) es sencilla y directa, pues nunca depende del punto de referencia que se use sin embargo, no ocurre lo mismo con los el tiempo, en los que hay que fijar los puntos iniciales y finales. En este trabajo, el tiempo entre dos arcos se define de la siguiente manera: t = max( e, b + s + t ) b v v i i, w w vi vi, w vi Gastos externos. Intervienen más factores que en el caso anterior, aunque ninguno de ellos con dependencia temporal. Estos son: ae, coste de accidentes, ne, coste de emisión de ruido, ef p,t, emisiones de contaminante del tipo por vehículo de categoría t, pep, precio de contaminante p emitido, efco2,r factor de emisión de CO2, peco2, precio de CO2, Los gastos externos entre un arco (v i,w) definidos se calculan de la siguiente manera: feu f c v w r = d fe pe ef fx + + d f ne + ae + d pe ef (1.1) k k P k CO2 CO2, r r ij k p p ext ( i,, ) v, (1 ) ( ) i w k ij ij ij fe p= 1 No tienen ningún tipo de dependencia temporal, pero sí una muy fuerte tanto con la distancia recorrida como con la carga que el camión debe transportar entre un par de nodos. Comprobar la admisibilidad de w en todas las posiciones En este paso, se tiene toda la información de los costes cuando se inserta una ciudad en todas las posiciones posibles de una ruta. Por todas las posiciones posibles se entiende lo siguiente: sea la ruta { } una ruta en una iteración i para un camión r. Entonces las combinaciones posibles para insertar un nodo candidato pueden ser {0-w-6-5-0}, {0-6-w-5-0} y {0-6-5-w-0}. 54

55 3. Diseño de la búsqueda tabú Existen dos condiciones que toda ruta debe cumplir para ser admisible: 1. Que el tiempo de llegada a todos los clientes atendidos no exceda ninguna de los límites superiores de las ventanas de tiempo. 2. Que el tiempo total recorrido en la ruta no sea mayor que el máximo tiempo de operación de cada vehículo. Si se cumplen ambas, la ciudad es candidata a ser insertada en la ruta actual. Elegir ciudad y posición con menor coste Del paso anterior, se elige para cada ciudad la posición en la ruta cuyo coste es menor. Y gracias a la ecuación c 2 (v i,w) = µc 0w c 1 (v i,w), se elige la ciudad, entre las elegidas justo antes, que ofrece el coste menor de todas, es decir, el que maximiza c 2. Actualiza ruta Se inserta en la ruta que hasta el momento se había asignado a un camión, la nueva ciudad encontrada en el paso anterior Movimiento λ-opt El movimiento λ-opt, formalmente conocido como operador λ-intercambio, es un algoritmo de búsqueda local que elimina λ arcos (λ>1) y reconecta los λ segmentos restantes. Las posibilidades que ofrece el diseño que se presenta en este documento son λ = {0,2,3}. Con λ = 3, el algoritmo, implícitamente, también realiza las posibles reconexiones que se darían con λ = 2, así que suele ser la opción más elegida. En caso de λ = 0, esta heurística se obvia y se ejecuta la Búsqueda Tabú. El algoritmo de Mole & Jameson, a pesar de proporcionar una solución correcta, puede que no establezca el mejor orden posible de entre las ciudades que elige. La aplicación de un movimiento opt explora la mejor combinación de visita a los clientes atendidos en una ruta cuando se eliminan λ arcos (contabilizar todos las posiciones posibles es demasiado caro computacionalmente hablando). En caso de solicitar la ejecución de este operador, siempre se aplicará dentro del algoritmo de M&J tras conformar definitivamente una ruta. Opera de la siguiente manera: Paso 1. Verifica que el número de ciudades en la ruta es mayor que dos (el depot no se incluye). Paso 2. En caso de λ = 2, se elige la siguiente combinación de par de arcos (no contiguos). Si λ = 3, los arcos sí pueden ser contiguos. Una vez elegidos, se eliminan de la ruta. Desde pri_arco=1,,n_arcos-2 Desde seg_arco=pri_arco+2, n_arcos Elimina (pri_arco,seg_arco) Figura 14. Pseudocódigo de formación de eliminación de arcos en operador λ-intercambio 55

56 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Paso 3. Se comprueba la admisibilidad en términos de ventanas de tiempo y máximo tiempo en ruta permitido para cada una de las rutas anteriores, tanto en un orden de visita (en el sentido de las agujas del reloj) como el contrario (véase figura 13). Paso 4. Se chequea si el mejor coste hallado en el paso 3 es el mejor hasta el momento. Se actualiza el mejor coste y movimiento si así fuera. Paso 5. Si quedan combinaciones de arcos por eliminar vuelta al paso 5. Si no, se modifica la ruta de partida (la hallada por M&J) en caso de que el coste se haya mejorado y finaliza el algoritmo Búsqueda Tabú El diseño de la Búsqueda Tabú (BT) de tres listas que se presenta en este trabajo es en esencia una fusión de las tácticas definidas en el algoritmo de Osman y Taburoute más una serie de ampliaciones en forma de métodos de intensificación y diversificación que se adaptan a las características del problema VRP: memoriza estados de soluciones, inserta o intercambia ciudades según el número de iteraciones sin mejorar e incorpora la capacidad de aceptar soluciones no válidas con la intención de hallar soluciones admisibles tras un conjunto de movidas indeterminado. La BT posee una terminología muy específica que cada autor redefine en base a criterios propios como, por ejemplo, la definición de movimiento tabú. Puesto que la riqueza de acepciones es extensa, se presenta a continuación el modelo completo para evitar comprensiones erróneas. La BT entra en juego cuando ya se ha resuelto el problema VRP (M&J más movimiento opt) y se posee pues una solución admisible en la que se asignan grupos de ciudades en orden a distintos vehículos de la flota. Este conjunto de rutas se recogen en R = {r 1,,r h }. Cada ruta, r i, está compuesta, a su vez, por un conjunto finito de ciudades V = {v 1,,v n }. La BT realiza intercambios para rebajar el coste de la solución. En un intercambio es un movimiento en el que intervienen un par de ciudades, v i y v j, (i j) que pertenecen, respectivamente, a un par de rutas, r q y r p, (q p). El intercambio se define como el movimiento de v i a r p y de v j a r q. Dicho intercambio garantiza que las nuevas posiciones de v i y v j son las que resultan en un menor coste de r p y r q, respetando las ventanas de tiempo y el máximo tiempo de operación del vehículo asignado a ambas rutas. Estos intercambios tienen una notación propia en este trabajo, representada mediante {v i,r q,v j,r p }, aunque las inserciones también la usan. Los movimientos se realizan sobre una solución, es decir, el conjunto de rutas asignadas a la flota que ha resuelto el problema HF-VRPTW. Existen dos movimientos denominados mejor movimiento y movimiento parcial que aseguran el mejor coste posible en un alcance determinado. Para conocer el rango de actuación, es necesario describir todas las combinaciones de pares rutas-ciudades que realiza la BT. Se articulan de la siguiente manera: 56

57 3. Diseño de la búsqueda tabú Desde rq=1,,rq=h Desde rp=1,,rp=t, t h Desde vi=1,,vi=l Desde vj=1,,vj=m, m l Movimiento (vi,rq,vj,rp,) Figura 15. Pseudocódigo de formación de movimientos en BT. El movimiento parcial se define como aquel que, fijados los valores {v i,r q,v j,r p }, encuentra las posiciones de las ciudades v i en r p y de v j en r q cuyo coste es menor. Y mejor movimiento contiene el movimiento una vez que han sido exploradas todas las rutas con todas las combinaciones posibles entre ciudades. Cada vez que se realiza este proceso completo, es decir, que se ha recorrido la solución al completo se dice que el algoritmo ha terminado una iteración. Tras cada iteración, la BT modifica siempre la solución con la información en mejor movimiento y lo almacena en una lista tabú cuyo tamaño ha sido declarado previamente. Si el coste total de la solución ha sido mejorado respecto a las anteriores, este mejor movimiento junto con su coste se guarda en otra entidad denominada mejor movimiento absoluto. Cuando se realizan los movimientos parciales, la BT comprueba en primer lugar que el movimiento parcial no es movimiento tabú. Se interpreta que un movimiento es tabú cuando en un movimiento al menos una de las ciudades implicadas (v i ó v j ) ya ha sido previamente intercambiada o insertada. De esta forma tal vez se limita en exceso la movilidad de los nodos, pero si se considerara la pareja de ciudades y no las ciudades en sí, el algoritmo puede caer en bucles indeseados y dejar de explorar el espacio de soluciones. En un caso sencillo, si se tienen dos rutas con dos ciudades cada una, R = {{ }, { }}, podría darse la siguiente consecución de intercambios: {0,1,1,3}{0,3,1,4}{0,4,1,1} Figura 16. Bucle en BT Si un movimiento es tabú y su coste es superior al mejor coste hallado en todas las iteraciones, entonces se descarta. Si, por el contrario, es tabú y su coste es inferior al mejor coste hallada anteriormente entonces se acepta y se guarda en mejor movimiento. Esto es lo que se llama criterio de aspiración. A grandes rasgos, este es el funcionamiento general de la BT para una solución de partida. Sin embargo, es necesario ampliar los métodos de búsqueda para escudriñar con aún más detalle el espacio de soluciones Ampliaciones En el apartado , se ha planteado el funcionamiento de una BT que posee una sola lista tabú y no contempla mecanismos de diversificación e inadmisibilidad. Sin embargo, la BT que se implementa en este trabajo tiene tres listas que trabajan en paralelo y ofrece la posibilidad de aceptar soluciones no admisibles así como desplazarse en el espacio de soluciones gracias a un método de diversificación por inserción de ciudades entre rutas. 57

58 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD De las tres listas, una de ellas contiene las inserciones tabú y se llama inser. Una inserción se define como el movimiento admisible en el que se extrae una ciudad v i de una ruta r q y se inserta en r p, pero, al contrario que en un intercambio, ninguna ciudad de r p se transfiere a r q. Tras una efectuar una inserción, la solución siempre es admisible (respeta todas las restricciones del VRP). Queda representado por la cuádrupla {v i,r q,v j,r p }, y la casilla de la ciudad correspondiente a la ruta de donde no se extrae ninguna adquiere el valor -1. Por ejemplo, {1,-1,3,4} indicaría que se extrae la ciudad 4 de la ruta 3 y se inserta en la ruta 1. Las inserciones son los movimientos que proveen a esta BT de un mecanismo de diversificación La intensificación, por el contrario, se efectúa solo con intercambios de dos tipos: admisibles y no admisibles. Dentro del contexto de BT, se define un intercambio como admisible si tras desplazar el par de ciudades a sus rutas de destino, la demanda total de los clientes en todas y cada una de las rutas de la solución no excede la capacidad de los vehículos que las atienden. Ambos intercambios, tanto si son admisibles como no admisibles siempre respetan las restricciones de las ventanas de tiempo y del máximo tiempo en ruta de los vehículos. Existe una lista tabú para cada tipo de intercambio, llamadas inter y NAinter (No Admisible). La diversificación e intensificación interactúan por medio de las tres listas tabú: inser, inter y NAinter. El paso de un método a otro queda definido por una serie de parámetros que puede amoldarse a cada problema VRP. Gráficamente, el significado pasar de un método a otro es bastante intuitivo. Cuando se ejecuta un proceso de diversificación se está dando un salto en el espacio de soluciones en busca de nuevos mínimos, pues se supone que ya no es posible hallar mejores rutas en la zona anterior. Tras realizar este salto, se explora minuciosamente el espacio próximo al punto actual para encontrar valles (puntos de menor coste que sus vecinos). Este fenómeno se puede observar en la figura 13. Cada segmento rojo simboliza el desplazamiento en el espacio de soluciones tras una iteración (puede ser para mejorar o empeorar el coste). El conjunto de segmentos rojos se produce mientras que el algoritmo se encuentra en una fase de intensificación. Después de un cierto número de iteraciones sin hallar un mejor resultado, la BT modifica la solución actual con una inserción, que se representa como un salto en el espacio (línea azul). Esta es la consecución de pasos que efectúa la BT desde un punto de vista gráfico. Figura 17. Efecto de la diversificación e intensificación en el espacio de soluciones 58

59 3. Diseño de la búsqueda tabú Desde un punto de vista más analítico y formal, estos fenómenos gráficos descritos en la figura 17 tienen su origen en una interacción entre las 3 listas tabú, que queda definida en el siguiente diagrama de flujo. 59

60 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Figura 18. Diagrama de flujo de la Búsqueda Tabú 60

61 3. Diseño de la búsqueda tabú En el diagrama puede verse como se ha incluido la posibilidad de admitir soluciones no admisibles. En el caso que se descarte esta opción, el algoritmo operaría de forma semejante, aunque, como es obvio, ignoraría dichas soluciones. Aquellas instrucciones que no se describen con una asignación o comparación sencilla, poseen un funcionamiento interno que merece mostrarse en detalle. Punto por punto, estas son las principales características: INICIO La BT parte de la solución inicial calculada por el algoritmo M&J y mejorada, después, por el λ- intercambio. Se heredan pues todos los datos de los que se disponía en pasos anteriores. Buscar Mejor_NAIntercambio y Mejor_Intercambio Este paso es el responsable de examinar todos los intercambios posibles entre las ciudades a las que se le ha asignado un vehículo para su abastecimiento. Se asume que la posibilidad de considerar soluciones no admisibles es aceptada. De lo contrario, habría que tomar la misma definición que se va a mostrar, pero obviando aquellas partes en las que las soluciones no admisibles entren en juego. En este punto de la BT ya se ha obtenido una solución (solución_inter). Sobre ella se aplicará el método de intensificación con el objetivo de refinar los resultados de partida (rebajar el coste de solución_inter). Se opera de la siguiente manera: Paso 1. Se examinan todas las combinaciones posibles entre ciudades. Es decir, se forman todos los movimientos mostrados en la figura 15. Paso 2. Desde el punto de vista de la carga, se cataloga el movimiento como admisible o no admisible (NA). Esto quiere decir que se comprueba, primero, que al extraer la ciudad v i e insertarla en r p, la demanda total de r p no excede la capacidad del vehículo que la atiende. Y, segundo, se verifica que al extraer la ciudad v j e insertarla en r q, la demanda total de r q no excede la capacidad del vehículo que la abastece. De cumplirse ambos puntos, el movimiento se clasifica como admisible, y sólo con que uno de ellos no se cumpla, el movimiento se declara inadmisible. Obsérvese que las comprobaciones son a posteriori, es decir, que si por cualquier motivo se parte de una solución sobrecargada pero al hacer el intercambio, todas y cada una de las rutas de solución_inter se reconfiguran y sus demandas pueden ser atendidas por sus respectivos vehículos, el movimiento se considerará admisible. Este último caso rara vez se produce, pues en un intercambio intervienen sólo dos rutas. De ahí que si cualquier otra ruta está sobrecargada, es imposible hacer admisible el movimiento. Paso 3. Se elige la mejor posición de v i como de v j en sus nuevas rutas respectivas, acotando previamente los puntos posibles de inserción mediante una verificación por el límite superior de la ventana de tiempo. De esta manera, la BT ahorra tiempo computacional, al no comprobar todas y cada una de las posiciones en la nueva ruta. En un intercambio {v i,r q,v j,r p }, la forma en la que se insertan ambas ciudades en sus nuevas rutas es idéntica, así que se estudia el caso en el que v i pasa a r p. 61

62 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD 1. Se localiza el punto de salida de v j. 2. Se sitúa a v i en la posición k-ésima de la ruta. 3. Las ciudades que quedan entre la posición k y la vacante dejada por v j, se desplazan en sentido desde la posición k a v j. 4. Dependiendo de la posición relativa k respecto a la posición libre de v j, se considera que la inserción de v i es factible o no. El criterio queda definido en las ecuaciones que siguen. e l, siv < pos( v ) vi vpos ( k ) pos( k ) j e l, siv = pos( v ) vi vpos ( k+ 1) pos( k ) j e l, siv > pos( v ) vpos ( k ) vi pos( k ) j (1.2) Nótese que este criterio simplemente restringe el número de posiciones y sólo asegura que al posicionar v i en k, las ciudades desde k+1 hasta el depot puedan ser atendidas. Sin embargo, puede darse el caso en el que una ciudad situada desde k-1 hasta el depot tenga un valor e t > l vi, con t={k-1,k- 2,,0}, inhabilitando así la posición de v i en k. No obstante, en el paso siguiente este caso y otros inadmisibles se descartan. Paso 4. Posteriormente se determinan, con total certeza, las posiciones admisibles de v i e v j por ventana de tiempo y máximo tiempo en ruta del vehículo y, de entre ellas, se elige la que redunda en un menor coste. Se computa el coste total de solución_inter con este movimiento {v i,r q,v j,r p } y se compara con mejor_intercambio en el caso de movimientos admisibles y con mejor_naintercambio en el caso de los no admisibles, actualizándolos en caso de mejora y de no ser tabú (a no ser que cumplan el criterio de aspiración). A la hora de determinar si un intercambio es tabú, ya sea admisible o no admisible, se compara con los registrados hasta dicha iteración en ambas listas, para evitar que la BT entre en un bucle cruzado. Vuelta al paso 1. Modificar Solución_Inter con Mejor_(NA)Intercambio. Actualiza (NA)Inter Se aplica definitivamente el mejor intercambio a solución_inter y se registra en su respectiva lista tabú (NAinter si el mejor fue mejor_intercambio o inter si el mejor fue mejor_naintercambio). Si no hubo mejora respecto al mejor resultado admisible registrado hasta dicha iteración, se incrementa max_sin_mejora. Inicializar listas NAinter e Inter Se borran todos los intercambios y mejores movimientos registrados durante las iteraciones anteriores, ya que se considera que tras la inserción el cambio en la solución es radical y, por tanto, hay que refinar las nuevas búsquedas de mínimos sin tener ningún tipo de memoria. Buscar Mejor Inserción Se procede de manera similar a lo descrito en Buscar Mejor_NAIntercambio y Mejor_Intercambio, sin embargo, existen ciertas diferencias pues la búsqueda en este caso sólo posee una lista tabú y los movimientos desempeñados son exclusivamente inserciones. Al tratarse de inserciones, sólo se consideran aquellas que son admisibles en carga y tiempo (ventanas y tiempo máximo en ruta). Una 62

63 3. Diseño de la búsqueda tabú inserción se considera admisible si y sólo si tras efectuarse dicho movimiento la solución al completo es admisible. Este módulo siempre parte de la solución guardada en Solución_Inser y sobre ella efectúa la siguiente BT: Paso 1. Se establecen todas las posibles inserciones de una ciudad en el resto de rutas disponibles, de forma que: Desde rq=1,,rq=h Desde rp=1,,rp=t, t h Desde vi=1,,vi=l Desde vj=1,,vj=m, m l Movimiento (vi,rq,-1,rp) Movimiento (-1,rq,vj,rp) Figura 19. Pseudocódigo de formación de inserciones en BT Paso 2. Del movimiento propuesto en Paso 1, {v i,r q,v j,r p }, se extraen {v i,r q,-1,r p } y {-1,r q,v j,r p } que representan respectivamente la inserción de v i en r p y la de v j en r q. Se comprueban que dichas inserciones no violen la restricción de carga en la ruta de destino. Si alguna de ellas la cumple, se prosigue en el paso 3, si, por el contrario, ninguna de las dos la satisface se vuelve al paso 1. Obsérvese que en este caso, al contrario de lo que sucede en Buscar mejor_naintercambio y mejor_intercambio, no hace falta comprobar que la solución al completo sea admisible, pues todas las rutas de solucion_inser siempre lo son, así que basta con chequear la ruta destino (la ruta de partida tendrá menos carga después de la inserción). Paso 3. Se dirime cuál(es) de las dos inserciones posibles, {v i,r q,-1,r p } y {-1,r q,v j,r p }, son admisibles. A continuación, se elige la mejor posición de v i en r p y/o de v j en r q, acotando previamente los puntos posibles de inserción mediante una verificación por el límite superior de la ventana de tiempo. De esta manera, la BT ahorra tiempo computacional, al no comprobar todas y cada una de las posiciones en la nueva ruta. En una inserción {v i,r q,-1,r p }, la forma en la que se inserta v i en r p viene determinada por los siguientes pasos: 1. Se sitúa a v i en la posición k-ésima de r p 2. Las ciudades de r p que quedan entre la posición k y el depot (considerado como punto final de la ruta, no punto inicial) se desplazan hacia este último. 3. Se considera como posiciones posibles de v i a r p aquellas que cumplen la condición: e vi l (1.3) vpos ( k ) Nótese que este criterio simplemente restringe el número de posiciones y sólo asegura que al posicionar v i en k, las ciudades desde k+1 hasta el depot puedan ser atendidas. Sin embargo, puede darse el caso en el que una ciudad situada desde k-1 hasta el depot tenga un valor e t > l vi, con t={k-1,k- 2,,0}, inhabilitando así la posición de v i en k. No obstante, en el paso siguiente este caso y otros inadmisibles se descartan. 63

64 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Paso 4. Se determinan, con total certeza, las posiciones admisibles de v i e v j por ventana de tiempo y máximo tiempo en ruta del vehículo y, de entre ellas, se elige la que redunda en un menor coste. Se computa el coste total de solución_inser con estas inserciones, {v i,r q,-1,r p } y {-1,r q,v j,r p }, y se compara con mejor_insercion, actualizándola en caso de mejora y de no ser tabú (a no ser que cumpla el criterio de aspiración). 64

65 4. IMPLEMENTACIÓN En el apartado anterior se introdujo la resolución del problema VRP y el desarrollo de la sistemática de la Búsqueda Tabú a través de diagramas de flujo y operaciones lógicas de alto nivel. En este nuevo punto, se pretende dar forma y concretar la estrategia desde un punto de vista de programación, incluyendo así la extensa implementación de todos los pasos, su agrupación en archivos, clases, bloques y funciones, la interacción entre ellos y la estructura de datos en general. En resumen, se presenta la traducción de algoritmos y mecánicas matemáticas a un entorno de programación en alto nivel, como es el lenguaje C++. Todo el código que recoge la Búsqueda Tabú está escrito en C++Builder, un entorno de desarrollo de aplicaciones en C++ para Windows propiedad de la empresa Borland. C++Builder tiene un diseño sencillo y fácil de usar que permite desarrollar programas con interfaz gráfica de forma cómoda y rápidamente. Para este trabajo, en concreto, se usa la versión 5.0. Figura 20. Ventana principal de C++Builder Desde un punto de vista funcional, la aplicación desarrollada puede entenderse como una caja negra que realiza tres pasos secuencialmente: 1. Lee un fichero de entrada con todos los datos que definen el problema VRP bajo estudio (flota, clientes, distancias, tiempos, etc) más una serie de parámetros de entrada definidos por el usuario (función objetivo, tipos de algoritmo, tiempo de ejecución, etc). 2. Analiza los parámetros y ejecuta el algoritmo M&J, movimiento opt y Búsqueda Tabú según los datos de entrada.

66 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD 3. Genera un fichero de salida que presenta la mejor solución al VRP bajo estudio, así como los hitos más importantes durante la ejecución. Estos tres puntos se detallan a lo largo de esta sexta sección. El apartado 6.1. se orienta a detallar la funcionalidad del código al completo, mientras que en el apartado 6.2. se muestra la interfaz gráfica, los parámetros disponibles y el formato de los archivos de entrada y salida 4.1. Descripción de clases En este apartado se especifica la estructuración del código y la funcionalidad de los archivos que lo componen. Las funciones, variables y datos más relevantes se relacionan con los pasos más importantes en la resolución del problema VRP, de cara a una mejor compresión y modificación futura del código. Como se ha mencionado anteriormente, el código al completo está escrito en C++, si bien es cierto que gran cantidad del código utiliza la sintaxis propia de C por razones de facilidad y rapidez en la implementación. El programa completo se divide en nueve ficheros: - PrincipalCONT.cpp. Contiene las referencias a los objetos gráficos (los que se muestran al usuario) de la aplicación. Además en él se traspasan los datos del problema VRP a una clase definida en heurcont.cpp. - Estructura_datos.cpp. Proporciona un compendio de clases que aglutinan todos los datos del problema VRP: clientes, flota y la estructura de arcos entre clientes. La clase más importante se denomina Parametros_problema, cuyos métodos son usados en PrincipalCONT.cpp para copiar los datos del problema VRP. - Tiempos_cpu.cpp. Únicamente se usa dentro de heurcont.cpp para controlar el tiempo de simulación total. - Lectura_datos.cpp - Interfaz_opt.cpp. Se usan métodos de impresión en archivo para representar. - Gen_modelo.cpp - Gen_problemas.cpp - Importar.cpp - heurcont.cpp. Almacena las clases Solución, Movimiento y ListaTabu. En él se recogen todas las instrucciones desde la copia de datos del problema VRP hasta el fichero de salida con los mejores resultados. Los ficheros están orientados a desempeñar tres labores fundamentalmente (ya sea individualmente o en grupo): lectura de fichero de entrada más parámetros de usuario, ejecución de algoritmos y volcado de resultados en fichero de salida. En la figura 16, se muestran qué ficheros se asocian a estas labores. Si ya en la sección 5 se presentaron los algoritmos desde una perspectiva lógica y secuencial mediante diagrama de flujos, ahora se pretende describir qué entidades son las responsables de acatar cada conjunto de instrucciones. Para ello, se usan tres clases distintas: Solución, Movimiento y ListaTabu. 66

67 4.Implementación Captura de datos de entrada + parámetros de usuario principalcont.cpp estructura_datos.cpp Ejecución de algoritmos (M&J, λ-opt,bt) heurcont.cpp tiempos_cpu.cpp Volcado en fichero de salida heurcont.cpp Figura 21. Ficheros implicados en las tres fases de la aplicación De estas tres clases, la más extensa y compleja es Solución, que contienee el grueso del código. Movimiento se utiliza en la parte de la implementación dedicada a la BT y define qué tipo de movimiento se realiza y sobrecarga algunos operadores, y ListaTabu hace referencia a las listas propias de este tipo de búsqueda, proporcionando métodos relativos a su actualización y búsqueda de movimientos tabú. En la figura 17 se presenta la relación entre fases de la aplicación, clases y ficheros. Figura 22. Relación entre ficheros, clases y fases de la aplicación Clase Solución Esta clase congrega casi la totalidad de las variables, constantes y métodos del problema. No en vano, casi toda la aplicación corre sobre ella, pues ofrece los métodos de M&J, del operador λ-intermcabio, así como de la BT. Las variables declaradas en Solución se resumen en la siguiente tabla: Nombre Tipo Numero_camiones Int Numero_nodos Int Numero_combustibles Int Numero_contaminantes Int Numero_categoria Int Lambda Float Contenido Número de vehículos de la flota Número de clientes del problema Número de combustibles disponibles para la flota Número de contaminantes (normalmente 3) Número de categorías de vehículos disponibles en la flota Valor de lambda en la ecuación (XXX) 67

68 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Un Float Valor de un en la ecuación (XXX) Coste_ruido Float Coste del ruido ambiental generado por un vehículo Coste_acc Float Coste de siniestralidad de un vehículo Coste Float Coste total de la solución Coste_mejor2opt Float Coste de la mejor ruta en un intercambio opt (2 y 3 opt) Mejor_ruta2opt Int* Ruta con mejor coste tras todas las combinaciones opt. La posición inicial y final del vector no se ocupa con el depot, pues se sobreentiende que es tanto el origen como fin de la ruta. Por ejemplo: {2-5-7} Ciudades Int* El índice del vector representa el número de la ciudad. De valor 1 si ha sido visitada, 0 si aún no lo ha sido. Flota Int* El índice del vector representa la posición del camión en el fichero de entrada. Valor 1 si el vehículo aún no ha sido usado, y 0 si ya ha sido usado Capacidad float* Almacena la capacidad de los vehículos de la flota. El índice del vector representa la posición del camión en el fichero de entrada. Demanda float* Almacena la demanda de los nodos del grafo. El índice del vector representa el número de ciudad. El depot es la posición por defecto y demanda[0]=0 Max_t_cond float* Almacena el máximo tiempo del vehículo en ruta. El índice del vector representa la posición del camión en el fichero de entrada. Tasa_cond float* Almacena el coste del conductor por unidad de tiempo en ruta ( /h). El índice del vector representa la posición del camión en el fichero de entrada. Coste_fijo float* Almacena el coste fijo de un vehículo por ser usado ( ). El índice del vector representa la posición del camión en el fichero de entrada. Coste_mto float* Almacena el coste de mantenimiento de un vehículo por unidad de longitud ( /km). El índice del vector representa la posición del camión en el fichero de entrada. Consumo_vac float* Almacena el consumo en vacío de un vehículo por unidad de longitud (l/100km). El índice del vector representa la posición del camión en el fichero de entrada. Consumo_ton float* Almacena el consumo por tonelada y litro de un vehículo por unidad de longitud (l/100km ton). El índice del vector representa la posición del camión en el fichero de entrada. Emisiones_CO2kgud float* Almacena la cantidad de CO 2 emitida por unidad de fuel consumida (KgCO 2 /l). El índice del vector representa la 68

69 4.Implementación posición del camión en el fichero de entrada. Coste_gei float* Almacena el precio de cada unidad de CO 2 emitida ( /tonco 2 ). El índice del vector representa la posición del camión en el fichero de entrada. Coste_tipo_fuel Float * Almacena el precio de cada unidad de combustible ( /l). El índice del vector representa la posición del camión en el fichero de entrada. Categoria_camion int* Almacena la categoría del vehículo. El índice del vector representa la posición del camión en el fichero de entrada. Emisiones_cont Float** Almacena la emisión de contaminante de tipo i emitida por km por un vehículo de categoría j, siendo emisiones_cont[i][j]. Coste_cont Float* Almacena el precio por tonelada de contaminante emitido. El índice del vector representa el tipo de contaminante. Vent_minima Float* Almacena los valores e k de las ciudades. El índice del vector representa el número de la ciudad (e k [0]=0). Vent_maxima Float* Almacena los valores l k de las ciudades. El índice del vector representa el número de la ciudad (l k [0]=0). Tiempo_servicio Float* Almacena los valores s k de las ciudades. El índice del vector representa el número de la ciudad (s k [0]=0). Minimo Float* Vector de tamaño 2. Minimo[0] contiene la ciudad con mejor coste desde el depot y mínimo[1] contiene el coste de desplazarse hasta dicha ciudad. Camión_elegido Int* Usado en otros algoritmos. No relevante para este trabajo. Orden_camion Int* Almacena en el índice i-ésimo, la posición del vehículo en el fichero de entrada que por capacidad (de mayor a menor, o de menor a mayor) es el i-ésimo. Orden_ciudad Int* Usado en otros algoritmos. No relevante para este trabajo. Vec_ciudades Int* Almacena en la posición i una ciudad perteneciente a una solución (leáse Formato de solución) Vec_camiones Int* Almacena en la posición i la cantidad de ciudades que visita que un camión perteneciente a una solución (leáse Formato de solución) Vec_punteros Int* Almacena en la posición i la índice de comienzo de la ruta de un camión en vec_ciudades ((leáse Formato de solución). Nodoselec Int* Similar a int* ciudades Rutactual Int* Almacena en la posición i-ésima el posición de visita de la ruta que se está construyendo (M&J). El índice i representa el número de la ciudad. Rutactual[0]=1 69

70 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD siempre, pues todos los camiones salen del depot. Decisión Int* Almacena en la posición i, la mejor posición de la ciudad i en la ruta actual. Distancias Float** Almacena la distancia desde la ciudad i a la j. distancias[i][j]. Tiempos Float** Almacena el tiempo empleado en ir desde la ciudad i a la j. tiempos[i][j]. Peajes Float** Almacena el coste del peaje desde la ciudad i a la j. peajes[i][j]. Matriz_costes Float** Matriz de dimensión [(numero_nodos+1),5] que contiene los cálculos de costes de M&J. Delante descrito C11 Float** Almacena en el índice i-ésimo el coste c1(vi,w)=c vi,w +c w,v+1 -λc vi,vi+1 de la ciudad i al ser insertada en la ruta actual. C12 C1w C2w Float** Float** Float** Iw Float** Almacena en la posición i el menor valor de C1[i][j] para todo j. iw[i][j] (el índice j es irrelevante) Bjprov Float** Irrelevante. Rutasbj Float** Almacena el instante de atención de la ciudad i al vehículo cuando se coloca en la posición j de la ruta actual. Rutasbj[i][j] rutastwadm bool** Almacena si la posición j de la ciudad i en la ruta actual es válida. rutastwadm[i][j] Bj Float* Almacena en la posición i-ésima el tiempo de atención de la ciudad i-ésima al vehículo Veloc Float Almacena la velocidad media de la flota para recorrer las rutas. Se usa sólo si la función objetivo es tiempo. Div_max_t_cond Float Almacena el valor por el que se dividen todos los máximos tiempos en ruta de los vehículos Div_t_entre_nodos Float Almacena el valor por el que se dividen todos los tiempos entre ciudades. Tabla 2. Variables de la clase Solución De entre todas las variables descritas, cabe profundizar en la estructura de las que representan el núcleo principal del algoritmo M&J y/o se usan frecuentemente en la BT. Formato de la solución: Vec_ciudades, Vec_camiones, Vec_punteros Una solución queda definida perfectamente mediante la interpretación de estos tres vectores. Vec_ciudades contiene todas las ciudades del grafo ordenadas de izquierda a derecha por orden de 70

71 4.Implementación visita. Vec_camiones indica el número de ciudades que atiende el camión i. Y la posición i de vec_punteros señala la posición en vec_ciudades donde se sitúa la ruta asignada al camión i. Vec_ciudades Vec_camiones Vec_punteros Tabla 3. Ejemplo de Solución con cuatro rutas asignadas por colores Los pasos que deben seguirse para interpretar correctamente el formato de la solución son los siguientes: 1. Se identifica el índice i de vec_punteros como el camión i en el fichero de entrada de datos. 2. El valor de vec_punteros[i] indica el índice de comienzo en vec_ciudades. 3. El valor de vec_camiones[i] indica el número de ciudades atendidas Por tanto, si se observa la tabla 3, se puede afirmar que el camión 3 (recuérdese que los índices de los vectores empiezan con valor cero) atiende 4 ciudades (ruta azul). En concreto sigue el orden { }. La omisión del valor 0 (depot) en vec_ciudades deriva de la consideración de que esta ciudad siempre se encuentra al inicio y final de cualquier ruta. Matriz_costes Dentro del algoritmo M&J este es el bloque que aporta toda la información relativa a los costes entre los nodos ya establecidos dentro de una ruta y los candidatos. Posee, conceptualmente, cinco columnas, y en cada una de ellas se realizan cálculos de costes internos y externos entre un par de nodos fijos (v i, v i+1 ) más una tercera ciudad candidata a insertarse (w), como puede verse en la figura 18. Las filas que se rellenan son aquellas que pertenecen a las ciudades aún no visitadas. Cada columna almacena uno de estos costes: 1. c i,w. Coste entre la ciudad v i y w. 2. c w,i+1. Coste entre la ciudad w y v i c i,i+1. Coste entre la ciudad v i y v i b w,i+1. Coste desde el inicio de la ruta hasta la ciudad v i+1 considerando la inserción de w. 5. b i+1. Coste desde el inicio de la ruta hasta la ciudad v i+1. 71

72 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD w c i,w c w,i+1 b w,i+1 c i,i+1 v i+1 v i b i+1 Figura 23. Costes considerados en la inserción de una nueva ciudad entre un par de nodos Rutactual Es un vector de suma importancia pues contiene las ciudades que se van añadiendo progresivamente a una ruta en concreto. A pesar de que la forma de guardarla no es muy intuitiva, resulta muy eficaz en términos de programación. Para un problema con 6 nodos (más el depot), en el que la ruta que se le está asignando a un vehículo es { }, rutactual toma los siguientes valores: Índice Valor Tabla 4. Contenido de rutactual para una ruta { } Métodos de Solución La clase solución atesora la mayor cantidad de funciones de todo el código. En ella se ejecutan todas las instrucciones para realizar las tareas más complejas de la aplicación. Este apartado no pretende hacer una descripción de todas de ellas, pero sí asociar los métodos más significativos que se relacionan de una manera directa con pasos claves en las tres grandes tareas de la aplicación: desarrollo de M&J, movimientos opt y Búsqueda Tabú. De hecho, dentro del código, pueden hallarse las funciones divididas con ese mismo criterio. Funciones M&J 72

73 4.Implementación En el apartado 5 se presentó el diagrama de flujo que recogía los pasos esenciales del algoritmo M&J. Dentro de la clase solución existen métodos específicamente diseñados para cumplir con las tareas de cada bloque. Sin embargo, el primer paso que se desarrolla aquí y que no aparece en el diagrama surge como consecuencia de que la aplicación debe dirimir en primera instancia qué función objetivo se persigue (existe la posibilidad de tiempo o contaminación ) y con qué algoritmo se desea buscar la solución inicial (propio o con orden de la capacidad de los camiones). Los métodos, según su tarea, pueden clasificarse en varios grupos: Elección de función objetivo y algoritmo. 1. AlgoritmoMoleJamesonTWCapacidad. 2. AlgoritmoMoleJamesonTWCapacidadCONT Ambos métodos realizan la heurística de M&J, salvo que en el primer caso se intenta minimizar la distancia y en el segundo la suma de costes internos y externos de la función. Por ello, la descripción de su operativa se puede ver sobre un mismo pseudocódigo: Ordenar la flota Mientras queden camiones y haya ciudades por visitar Mientras no haya ciudad admisible y queden camiones Busca ciudad y camión con menor coste Si todos camiones usados y no hay ciudad por visitar Fin algoritmo Elige camión y ciudad Actualiza carga Si quedan ciudades por visitar Si existe camión que satisfaga demanda Mientras camión satisfaga demanda o rutas sean admisibles (while end2) Para cada arco de la ruta Para toda ciudad no visitada Forma Matriz Costes Chequea admisibilidad de ciudades insertadas en arco de la ruta Elige mejor ciudad y posición en ruta Si existe tal ciudad Si nueva carga es admisible Actualiza carga y ruta Si no Fin de ruta Mejora con mov OPT Actualiza Coste solución Si no Fin de ruta Mejora con mov OPT Actualiza Coste solución Si no Fin algoritmo Si no Fin de ruta Mejora con mov OPT Actualiza Coste solución Fin algoritmo Figura 24. Pseudocódigo de algoritmo M&J Ordenar la flota 1. OrdenarFlota. Realiza la clasificación de los camiones según capacidad, ya sea de mayor a menor o viceversa. 73

74 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Elegir camión admisible y ciudad con menor coste 1. BuscaMinimo. Elige la primera ciudad a visitar cuando se inicia una nueva ruta. Ofrece seis variantes, divididas en dos grupos de tres según la función objetivo que se desee. Para contaminación se puede hallar la ciudad con mayor o menor coste o a mayor distancia. Y para tiempo, se puede elegir la ciudad más cercana o lejana o aquella con un límite superior de ventana de tiempo más restrictiva (menor). 2. TodosCamionesUsados. Chequea si toda la flota ha sido utilizada. 3. CiudadVisitada. Comprueba si queda alguna ciudad por atender. Calcular todos costes tras insertar w en todas posiciones 1. CosteFxij. Halla los costes internos o fijos desde un par de nodos cualesquiera de rutactual. Puede indicarse que entre ese par de nodos quiere insertarse una nueva ciudad o no. 2. CosteCO2ij. Computa los costes por contaminación desde un par de nodos cualesquiera de rutactual. Puede indicarse que entre ese par de nodos quiere insertarse una nueva ciudad o no. 3. CosteFxHastaCiudad. Calcula los costes fijos desde el depot hasta una ciudad de rutactual. Puede indicarse que realice el cálculo insertando previamente una ciudad en algún punto de rutactual. 4. CosteCO2HastaCiudad. Calcula los costes por contaminación desde el depot hasta una ciudad de rutactual. Puede indicarse que realice el cálculo insertando previamente una ciudad en algún punto de rutactual. Comprobar admisibilidad de w en todas posiciones 1. RutasAdmisiblesCO2. Comprueba si la inserción de un nodo en una posición determinada dentro de rutactual es posible desde el punto de vista de ventanas de tiempo y máximo tiempo en ruta Elegir ciudad y posición con menor coste 1. Forma_iwTW. 2. Forma_C2wTWCO2. ActualizaRuta 1. ActualizaRutactual. Inserta una ciudad en una posición indicada por el vector decision en rutactual 2. Forma_bjCO2. Actualiza los momentos de llegada a cada ciudad del vector rutactual 3. Inicializa_rutasTWadm. Inicializa la matriz que comprueba la admisibilidad de las rutas 74

75 4.Implementación 4. ReseteaRutactual. Hace un reset de rutactual 5. Resetea_bj. Pone los tiempos de instante de llegada a las ciudades a cero 6. GeneraSolucionRutaCO2. FuncionesOPT Son métodos que operan con una ruta proporcionada por M&J y realizan todas las posibles eliminaciones de arcos (en grupos de 2 ó 3) y sus correspondientes reconexiones. La ruta se transfiere en forma de vector a las funciones y los movimientos opt se realizan concatenando secuencias de traslación e inversión de grupos de ciudades delimitados por pivotes. Estos tres nuevos conceptos son fácilmente identificables mediante un ejemplo de intercambio 3-opt (incluye implícitamente los 2-opt) sobre una ruta aleatoria. Sea pues una ruta r = { } con la eliminación de arcos que se muestra en la figura 19. Figura 25. Ruta aleatoria con eliminación de arcos para movimiento 3-opt Un pivote se define como la ciudad en un arco inconexo que se encuentra más alejada del depot recorriendo la ruta en sentido horario. Para esta r, los pivotes son {5,6,4}. Vectorialmente, los pivotes dividen la ruta en 4 zonas de distintas. Dos de ellas, las más cercanas al depot, tanto por el punto de salida como por el de regreso, permanecen inalterables durante las reconexiones mientras que las dos centrales son las que sufren las traslaciones e inversiones (p) (p) (p) Figura 26. Ruta en forma de vector para la manipulación de los métodos opt Los métodos de reconexión de arcos prueban primero realizan las inversiones posibles para cada grupo de ciudades entre dos pivotes (grupo azul y amarillo). Tras lo cual, efectúan una traslación entre los dos grupos a lo que sigue de nuevo la última inversión. Estas operaciones se resumen en la siguiente figura: 75

76 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Inversiones Traslación Inversiones Tabla 5. Evolución de reconexiones en una ruta en métodos opt Según su funcionalidad, los métodos disponibles para llevar a cabo el algoritmo λ-intercambio son: Efectuar traslaciones e inversiones 1. InvertirRuta. Efectúa inversiones 2-opt, comprueba la admisibilidad por ventanas de tiempo y máximo tiempo de la ruta tanto en un sentido de viaje como el contrario, y calcula el coste total (en tiempo) de la ruta. 2. InvertirRutaCO2. Como la anterior, pero los cálculos de costes los realiza no por tiempo sino por contaminación. 3. InvertirRuta3CO2. Ordena todos los movimientos 3-opt calculando los costes internos y externos. 4. InvertirRuta2mod. Tiene la misma funcionalidad que InvertirRuta con campos adicionales para impresión de rutas en fichero de salida. 5. InvertirRuta2modCO2. Igual que InvertirRuta2mod pero calculando los costes internos y externos 6. Shift. Realiza las traslaciones y calcula el coste de la ruta en unidades temporales 7. ShiftCO2. Realiza las traslaciones y calcula el coste como la suma de costes internos y externos Comprobar admisibilidad de la ruta tanto en sentido horario como antihorario 76

77 4.Implementación 1. AdmisibilidadTW. Dada una ruta, halla la admisibilidad por tiempo de la misma y calcula su coste en horas. 2. AdmisibilidadTWinv. Dada una ruta, halla la admisibilidad por tiempo de la misma en sentido contrario y calcula su coste en horas. 3. AdmisibilidadTWCO2. Dada una ruta, halla la admisibilidad por tiempo de la misma y calcula su coste como la suma de los costes internos y externos. 4. AdmisibilidadTWinvCO2. Dada una ruta, halla la admisibilidad por tiempo de la misma en sentido contrario y calcula su coste como la suma de los costes internos y externos. Funciones BT La finalidad de todos los métodos relativos a la BT es realizar a partir de una solución inicial descrita en las variables vec_camiones, vec_ciudades y vec_punteros, junto con los parámetros introducidos por el usuario (tiempo de simulación, tamaño de listas tabú, admisibilidad de soluciones no permitidas y número de iteraciones sin mejora) todas las instrucciones contenidas en el diagrama de flujo visto en la figura 14. Según la función objetivo, la Búsqueda Tabú parte del método BúsquedaTabu o BusquedaTabuCONT. La primera asume que se debe minimizar el tiempo total recorrido por la flota, mientras que la segunda persigue la minimización de costes tanto internos como externos. El núcleo principal de la BT, ya se elija una función objetivo y otra, gira fundamentalmente en torno a un par de funciones, Admisible_Carga, que dirime si dado un par de rutas y ciudades el movimiento es válido según la carga (las condiciones temporales se siguen satisfaciend), e Inter_swapping, que se encarga de distinguir si un movimiento es inserción o intercambio y devuelve el mejor de los resultados según se le pase uno u otro. El código restante está diseñado para ir actualizando los mejores movimientos, listas tabú, soluciones y pasar de intensificación a diversificación según los resultados que proporcionen las dos funciones anteriores. Atendiendo a su funcionalidad, los métodos se pueden clasificar en: Elección de rutas y ciudades 1. Set_solucion_inicial. Se copia la solución de partida M&J en otra estructura de datos. 2. Genera_rutas_tabu. Devuelve un par de rutas descritas por unos valores introducidos en la llamda a la función. 3. PosicionRuta. Devuelve la posición exacta de comienzo de la ruta que se encuentra en la solución en el momento de la llamada. 4. ResetLocalizador. Resetea los valores que definen la posición de cada ruta. 77

78 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Decidir admisibilidad de movimiento 1. Admisible_Carga. Indica si, al producirse el movimiento propuesto, la solución se vuelve admisible o inadmisible 2. Limite_por_ventana. Acota el conjunto de posiciones de una ciudad extraída a una ruta de recepción 3. AdmisibilidadTW_ruta. Decide si la ruta que se le pasa es admisible tanto por ventanas de tiempo como tiempo máximo en ruta. 4. RutadoAdmisibleInsercion. Esta función es la encargada de decidir si un movimiento de tipo inserción provoca que la solución sea en su conjunto admisible o no. Es siempre llamada desde Admisible_Carga. 5. RutadoAdmisibleIntercambio. Esta función es la encargada de decidir si un movimiento de tipo intercambio provoca que la solución sea en su conjunto admisible o no. Es siempre llamada desde Admisible_Carga. Decidir mejor movimiento 1. Inter_swappingCONT. 2. Inter_swapping. Ambas funciones son parte importante de la BT pues, definidas las cuatro entidades que intervienen en un movimiento ({v i,r q,v j,r p }), indica la mejor localización de las ciudades en sus rutas destino, ya se trate de un intercambio o inserción y ya sea este admisible o no admisible. La primera calcula los costes como la suma de los internos más los externos y la segunda hace lo propio con el tiempo total recorrido. Como el proceso no se desarrolla de forma trivial, a continuación se presenta el pseudocódigo que lo hace posible. 78

79 4.Implementación Forma rutas rq y rp Guarda coste de rq y rp Acota posiciones del movimiento de vi y vj Si (es intercambio) y [(llamada desde admisible y admisible) o (llamada desde no admisible y no admisible)] Si hay posiciones en ruta destino Para cada posición en ruta destino Forma ruta con nueva ciudad Calcula coste ruta nueva Si ruta admisible por tiempo Guarda intercambio Actualiza mejor intercambio Si (es inserción) Forma rutas rq y rp Guarda coste de rq y rp Acota posiciones de la inserción en ri y rq Si hay posiciones en ruta destino Para cada posición en ruta destino Forma ruta con nueva ciudad Calcula coste ruta nueva Si ruta admisible por tiempo Guarda intercambio Actualiza mejor intercambio Si existe intercambio Calcular coste con mejor intercambio Si existe inserción y inserción habilitada Calcular coste con mejor inserción Elige mejor inserción o intercambio Libera variables Figura 27. Pseudocódigo de método Inter_Swapping e Inter_SwappingCONT Actualizar soluciones 1. EligeMejorSolucion. Dirime el mejor coste existente entre los siguientes tres movimiento: mejor intercambio, mejor inserción de v i y mejor inserción de v j 2. ActualizaEnrutado. Actualiza la solución elegida con el movimiento que se le pasa. 3. CosteRutadoCONT. Calcula el coste total de la solución que se desee. El coste entendido como la suma de los costes internos y externos. 4. CosteRutado. Calcula el coste total de la solución que se desee. El coste entendido como la suma de los costes internos y externos. 5. GuardaRutado. Guarda una solución en los tres vectores que se indican. 6. Imprime_Solucion_Tabu. Vuelca en el fichero de salida el resumen de los hitos más importantes ocurridos durante la ejecución de la BT. 7. CosteTrasInsercion. Calcula el coste total (en horas) del rutado, de aplicarse la inserción indicada en la solución 8. CosteTrasInsercionCONT. Calcula el coste total (suma de externos más internos) del rutado, de aplicarse la inserción indicada en la solución 79

80 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Clase Movimiento Es una clase de extensión reducida que proporciona un formato específico para definir tanto a los intercambios como inserciones que se producen durante la BT. Da información acerca de las rutas involucradas, las ciudades, sus posiciones y los costes parciales y totales del rutado. Las variables declaradas en Movimiento se resumen en la siguiente tabla: Nombre Tipo Contenido V_i Int Ciudad v i del movimiento R_i Int Ruta de la que se extrae v i V_j Int Ciudad v j del movimiento R_j Int Ruta de la que se extrae v j Pos_virj Int Posición que ocupa v i en la ruta r j Pos_vjri Int Posición que ocupa v j en la ruta r i C_i Float Coste de r i después del movimiento C_j Float Coste de la r j después del movimiento C_preinsercion Float Irrelevante C_postinsercion Float Coste de la solución de efectuarse el movimiento Los métodos pertenecientes a esta clase son: Tabla 6. Variables de la clase Movimiento 1. Existe. Indica si el movimiento que se chequea contiene algún movimiento. 2. EsInsercion. Se toma por defecto que los movimientos son intercambios. Este método dictamina si un movimiento es de tipo inserción. 3. Sobrecarga de operador =. Asigna todas las variables descritas en la tabla XXX 4. Sobrecarga de operador ==. Esta función es la que se usa para establecer bajo qué condiciones se considera un movimiento tabú Clase ListaTabu Esta clase está diseñada para gestionar los datos contenidos dentro de una lista tabú que a su vez se compone múltiples objetos pertenecientes a la clase Movimiento. A continuación se muestran en una tabla las variables que componen la clase ListaTabu. Nombre Tipo Contenido Índice Int Almacena la posición del próximo movimiento a insertar Lista_mov Movimiento* Almacena los movimientos efectuados en una lista tabú N_elementos Int Almacena la longitud máxima de la lista tabú Primera_vuelta Bool True si aún no se ha sobreescrito un movimiento. False de lo contrario 80

81 4.Implementación Sin_movimientos Bool True si la lista está vacía. False de lo contrario Tabla 7. Variables de la clase ListaTabu Los métodos descritos en ListaTabu son muy limitados, aunque permiten realizar las operaciones propias de una lista: inicialización, actualización de movimientos y comprobación de la existencia de algún movimiento tabú entre los miembros de una lista. Sus nombres hacen referencia al funcionamiento de cada uno de ellos: 1. Actualiza_nElementos. Fija el tamaño de la lista tabú 2. Inicializa. Actualiza las variables y reserva memoria para todos los objetos Movimiento. 3. ActualizaLista. Introduce el movimiento en la lista 4. EsMovimientoTabu. Comprueba en todas las posiciones de la lista si existe algún movimiento tabú Interfaz de usuario La aplicación se desarrolla bajo un lenguaje de programación con un entorno visual que permite que el usuario se desenvuelva fácilmente con su interfaz y, de este modo, interactuar de forma sencilla con las opciones disponibles para ejecutar una Búsqueda Tabú personalizada. En esencia, el programa busca en el explorador de archivos los ficheros de entrada con una extensión determinada (.vrp). Dichos ficheros contienen un formato exclusivo en el que se aporta la toda la información relativa a la flota, combustibles, clientes, depot y el grafo sobre el que discurrirán las rutas. Tras la ejecución de estos ficheros, la aplicación genera un único archivo (.txt) que sintetiza los resultados e indica los hitos más importantes ocurridos durante la ejecución de los algoritmos. Este archivo, además, posee un formato de salida propio bastante intuitivo. En la sección , se pretende familiarizar al lector con la interfaz gráfica de la aplicación, describiendo los elementos que aparecen sobre la pantalla. Mientras que en la , se detallan los formatos de los ficheros de entrada y de salida Aplicación en pantalla La aplicación consta de una única pantalla dividida en cuatro regiones como muestra la figura 29: 81

82 DISEÑO E IMPLEMENTACIÓN DE UNA BÚSQUEDA TABÚ PARA EL VRP CON CRITERIOS DE SOSTENIBILIDAD Figura 28. Ventana principal de la aplicación En la parte superior se encuentra el explorador de archivos al que se le indica donde se encuentran los ficheros de entrada. Para que la aplicación los reconozca, Estos ficheros deben guardarse con una extensión.vrp. La aplicación ejecutará todos los archivos.vrp que contenga el directorio por el orden en el que se listan en la caja. En la parte izquierda, se encuentran los parámetros relativos al algoritmo Mole&Jameson: - Función Objetivo. Los valores que puede tomar son Tiempo o Contaminación. - Algoritmo. Presenta dos posibilidades usando siempre la heurística de M&J: ordenar las capacidades de las flotas de mayor a menor o de menor a mayor. - Criterio primera ciudad. Contiene los tres tipos de criterios para las dos funciones objetivos, lo que suma un total de seis posibilidades. Para contaminación ofrece la posibilidad de encontrar la ciudad más lejana y la de mayor o menor coste. Y para tiempo, puede elegirse entre la más lejana o cercana o aquella que posee un límite superior de ventana de tiempo más restrictivo. - Movimiento opt. Este campo se destina a definir la cantidad de arcos que queremos reconectar por cada ruta formada por M&J. Con valor 0, no se realizaría ningún proceso extra a M&J pero si se elige 2 o 3, el movimiento opt se lleva a cabo. - Lambda. El valor introducido se computará en la ecuación XXX - Nu. El valor introducido se computará en la ecuación XXX. - Veloc media. Significa velocidad media de la flota. En el caso de que se elija como función obejtivo Contaminación el valor de este campo es irrelevante y no se tiene en cuenta. Sin 82

CAPÍTULO 4 METODOLOGÍA PROPUESTA

CAPÍTULO 4 METODOLOGÍA PROPUESTA CAPÍTULO 4 METODOLOGÍA PROPUESTA En este capítulo, se describen los métodos utilizados en el procedimiento propuesto para obtener soluciones del PLIDMC. En la actualidad, muchos de los problemas de optimización

Más detalles

DESARROLLO DE MODELOS DE OPTIMIZACION PARA EL PROBLEMA DE RUTEO DE VEHICULOS CON VENTANAS DE TIEMPO Y FLOTA HETEROGENEA

DESARROLLO DE MODELOS DE OPTIMIZACION PARA EL PROBLEMA DE RUTEO DE VEHICULOS CON VENTANAS DE TIEMPO Y FLOTA HETEROGENEA DESARROLLO DE MODELOS DE OPTIMIZACION PARA EL PROBLEMA DE RUTEO DE VEHICULOS CON VENTANAS DE TIEMPO Y FLOTA HETEROGENEA Torres Pérez, C.E. 1 Resumen Este documento presenta un desarrollo de modelos de

Más detalles

Introducción a la Computación (Matemática)

Introducción a la Computación (Matemática) Introducción a la Computación (Matemática) Heurísticas de Programación Introducción a la Computación Menú del día de hoy Problemas Difíciles P y NP Viajante de Comercio Coloreo Problema de la mochila Ruteo

Más detalles

obtenido de la fusión de dos rutas y la posterior asignación a un vehículo con capacidad disponible.

obtenido de la fusión de dos rutas y la posterior asignación a un vehículo con capacidad disponible. El problema VRP, y por tanto su variante con flota heterogénea, son problemas de optimización combinatoria complejos que caen en la categoría de NP-completo (Choi and Tcha, 2007), lo que significa que

Más detalles

El problema de ruteo de vehículos

El problema de ruteo de vehículos El problema de ruteo de vehículos Irma Delia García Calvillo Universidad Autónoma de Coahuila FC-UNAM, Agosto 2010 I. García () El problema de ruteo de vehículos FC-UNAM, Agosto 2010 1 / 33 Introducción

Más detalles

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III Grafos Eulerianos y Hamiltonianos Algoritmos y Estructuras de Datos III Grafos eulerianos Definiciones: Un circuito C en un grafo (o multigrafo) G es un circuito euleriano si C pasa por todos las aristas

Más detalles

Modelos de transporte: Problema del vendedor viajero. M. En C. Eduardo Bustos Farías

Modelos de transporte: Problema del vendedor viajero. M. En C. Eduardo Bustos Farías Modelos de transporte: Problema del vendedor viajero M. En C. Eduardo Bustos Farías as Variantes al problema de transporte Oferta no igual a la demanda total: Se agrega una columna de holgura en la tabla

Más detalles

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III Metaheurísticas y heurísticas Algoritmos y Estructuras de Datos III Metaheurísticas Heurísticas clásicas. Metaheurísticas o heurísticas modernas. Cuándo usarlas? Problemas para los cuales no se conocen

Más detalles

USO E IMPLEMENTACIÓN DE MÉTODOS META HEURÍSTICOS DE TIPO TABU PARA RESOLUCIÓN DE PROBLEMAS DE OPTIMIZACIÓN DUROS

USO E IMPLEMENTACIÓN DE MÉTODOS META HEURÍSTICOS DE TIPO TABU PARA RESOLUCIÓN DE PROBLEMAS DE OPTIMIZACIÓN DUROS RESOLUCIÓN DE PROBLEMAS DE OPTIMIZACIÓN DUROS Jeffersson Saúl Reyes Lasso 1, Fernando Sandoya 2 1 Ingeniero en Estadística Informática 2003 2 Director de Tesis, Matemático Escuela Politécnica Nacional,

Más detalles

Práctica 2. Algoritmos de búsqueda local (local search algorithms) y algoritmos avariciosos (greedy algorithms)

Práctica 2. Algoritmos de búsqueda local (local search algorithms) y algoritmos avariciosos (greedy algorithms) PLANIFICACIÓN Y GESTIÓN DE REDES Grado en Ingeniería Telemática Curso 2012-2013 Práctica 2. Algoritmos de búsqueda local (local search algorithms) y algoritmos avariciosos (greedy algorithms) Autor: Pablo

Más detalles

Optimización del problema generalizado de las rutas con restricciones temporales y de capacidad (CVRPSTW)

Optimización del problema generalizado de las rutas con restricciones temporales y de capacidad (CVRPSTW) Valencia, 7-9 Junio 2000 Optimización del problema generalizado de las rutas con restricciones temporales y de capacidad (CVRPSTW) Víctor Yepes Director del Área de Producto de la Agència Valenciana del

Más detalles

UN ENOQUE UNIFICADO DE SISTEMA DE HORMIGAS PARA RESOLVER PROBLEMAS VRP

UN ENOQUE UNIFICADO DE SISTEMA DE HORMIGAS PARA RESOLVER PROBLEMAS VRP UN ENOQUE UNIFICADO DE SISTEMA DE HORMIGAS PARA RESOLVER PROBLEMAS VRP Emely Arráiz Oscar Meza Guillermo Palma Departamento de Computación y Tecnología de la Información Universidad Simón Bolívar Caracas,

Más detalles

En el siguiente capítulo se hablará del uso del método de generación de columnas para resolver el problema de corte ( cutting stock ).

En el siguiente capítulo se hablará del uso del método de generación de columnas para resolver el problema de corte ( cutting stock ). Capitulo 3 Método de Generación de Columnas El método de generación de columnas, es muy útil en problemas con un gran número de variables pero con un relativamente pequeño número de restricciones (Hunsaker,

Más detalles

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA ESTUDIO COMPARATIVO DE LA APLICACIÓN DE HEURÍSTICAS AL PROBLEMA DE RUTEO DE VEHÍCULOS Tesis para optar el Título de Ingeniero

Más detalles

Formulando con modelos lineales enteros

Formulando con modelos lineales enteros Universidad de Chile 19 de marzo de 2012 Contenidos 1 Forma de un problema Lineal Entero 2 Modelando con variables binarias 3 Tipos de Problemas Forma General de un MILP Problema de optimización lineal

Más detalles

MODELO DE RUTEO DE VEHÍCULOS OSCAR MAURICIO MORALES SILVA UNIVERSIDAD EAN POSGRADOS ESPECIALIZACIÓN EN GERENCIA LOGÍSTICA BOGOTÁ 2.

MODELO DE RUTEO DE VEHÍCULOS OSCAR MAURICIO MORALES SILVA UNIVERSIDAD EAN POSGRADOS ESPECIALIZACIÓN EN GERENCIA LOGÍSTICA BOGOTÁ 2. MODELO DE RUTEO DE VEHÍCULOS OSCAR MAURICIO MORALES SILVA UNIVERSIDAD EAN POSGRADOS ESPECIALIZACIÓN EN GERENCIA LOGÍSTICA BOGOTÁ 2.012 MODELO DE RUTEO DE VEHÍCULOS OSCAR MAURICIO MORALES SILVA Trabajo

Más detalles

Optimización de Rutas

Optimización de Rutas LO HACEMOS PARA TI Optimización de Rutas Barcelona 3 Febrero 2011 CONCEPTOS GENERALES Definiciones y terminología Requerimientos, Algoritmos y Restricciones Los grandes números a tener en cuenta Las otras

Más detalles

CAPITULO III. Determinación de Rutas de Entregas

CAPITULO III. Determinación de Rutas de Entregas CAPITULO III Determinación de Rutas de Entregas Un importante aspecto en la logística de la cadena de abastecimiento (supply chain), es el movimiento eficiente de sus productos desde un lugar a otro. El

Más detalles

Teoría de grafos y optimización en redes

Teoría de grafos y optimización en redes Teoría de grafos y optimización en redes José María Ferrer Caja Universidad Pontificia Comillas Definiciones básicas Grafo: Conjunto de nodos (o vértices) unidos por aristas G = (V,E) Ejemplo V = {,,,,

Más detalles

UNIVERSIDAD CARLOS III DE MADRID Ingeniería Informática Examen de Investigación Operativa 16 de febrero de 2007

UNIVERSIDAD CARLOS III DE MADRID Ingeniería Informática Examen de Investigación Operativa 16 de febrero de 2007 UNIVERSIDAD CARLOS III DE MADRID Ingeniería Informática Examen de Investigación Operativa de febrero de 7 Problema. ( puntos Dado el problema de programación lineal: Maximizar x x + x s.a x + x x x x +

Más detalles

Tema 2, 3 y 4 GRUPO 82 - INGENIERÍA INFORMÁTICA. Bernardo D Auria. 3 Diciembre Departamento de Estadística. Universidad Carlos III de Madrid

Tema 2, 3 y 4 GRUPO 82 - INGENIERÍA INFORMÁTICA. Bernardo D Auria. 3 Diciembre Departamento de Estadística. Universidad Carlos III de Madrid Bernardo D Auria Departamento de Estadística Universidad Carlos III de Madrid GRUPO 82 - INGENIERÍA INFORMÁTICA Diciembre 2008 Ejercicio T2-JN12 Comprueba que el problema lineal min x x 1 + x 2 2x x +

Más detalles

La Programación Lineal. H. R. Alvarez A., Ph. D. 1

La Programación Lineal. H. R. Alvarez A., Ph. D. 1 La Programación Lineal H. R. Alvarez A., Ph. D. 1 Aspectos generales Se considera a George Dantzig el padre de la P. L. Su objetivo es el de asignar recursos escasos a actividades que compiten por ellos.

Más detalles

Tema: Recorrido de Grafos. Ruta más corta

Tema: Recorrido de Grafos. Ruta más corta PED104. Guía N 12 Página 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación con Estructuras de Datos Tema: Recorrido de Grafos. Ruta más corta Competencia Desarrolla sistemas de información

Más detalles

Metaheurísticas. Seminario 5. Manejo de restricciones en metaheurísticas. 1. Introducción: Optimización y Restricciones

Metaheurísticas. Seminario 5. Manejo de restricciones en metaheurísticas. 1. Introducción: Optimización y Restricciones Metaheurísticas Seminario 5. Manejo de restricciones en metaheurísticas 1. Introducción: Optimización y Restricciones 2. Manejo de Restricciones en Metaheurísticas 3. Algunos Ejemplos 1 Introducción: Optimización

Más detalles

Algoritmo de colonia de hormigas para el problema de ruteo de vehículos con dependencia temporal. Santiago Balseiro Irene Loiseau Juan Ramonet

Algoritmo de colonia de hormigas para el problema de ruteo de vehículos con dependencia temporal. Santiago Balseiro Irene Loiseau Juan Ramonet Algoritmo de colonia de hormigas para el problema de ruteo de vehículos con dependencia temporal Santiago Balseiro Irene Loiseau Juan Ramonet Hoja de Ruta Introducción al Problema Algoritmos Interfaz Gráfica

Más detalles

7. PARAMETRIZACIÓN SOBRE LA RED DE PRUEBA

7. PARAMETRIZACIÓN SOBRE LA RED DE PRUEBA 7. PARAMETRIZACIÓN SOBRE LA RED DE PRUEBA 7.1. Red de prueba Para realizar el análisis de los parámetros del problema e intentar encontrar los valores óptimos de estos se ha hecho uso de un modelo de ciudad

Más detalles

Heurísticas para Problemas de Ruteo de Vehículos

Heurísticas para Problemas de Ruteo de Vehículos Heurísticas para Problemas de Ruteo de Vehículos Alfredo Olivera Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Montevideo, Uruguay. aolivera@fing.edu.uy Agosto 2004 Resumen

Más detalles

Tema 7: Problemas clásicos de Programación Lineal

Tema 7: Problemas clásicos de Programación Lineal Tema 7: Problemas clásicos de Programación Lineal 1.- Características generales de un problema de transporte y asignación Surgen con frecuencia en diferentes contextos de la vida real. Requieren un número

Más detalles

CAPITULO 2: MARCO TEÓRICO. En el desarrollo de este capítulo se presentan descripciones generales,

CAPITULO 2: MARCO TEÓRICO. En el desarrollo de este capítulo se presentan descripciones generales, CAPITULO 2: MARCO TEÓRICO En el desarrollo de este capítulo se presentan descripciones generales, definiciones y métodos, que nos pueden ayudar a entender con claridad el método que desarrolló en esta

Más detalles

Casos especiales de la P. L.

Casos especiales de la P. L. Casos especiales de la P. L. Las redes: Las redes están presentes en diferentes lugares en la vida real: redes de transporte, flujo eléctrico y comunicaciones, por ejemplo. Las redes: También son ampliamente

Más detalles

Tema 1. Heurísticos en Optimización Combinatorial

Tema 1. Heurísticos en Optimización Combinatorial Tema 1. Heurísticos en Optimización Combinatorial p. 1/2 Tema 1. Heurísticos en Optimización Combinatorial Abdelmalik Moujahid, Iñaki Inza y Pedro Larrañaga Departamento de Ciencias de la Computación e

Más detalles

4. MÉTODO EXACTO DE RESOLUCIÓN Y ALGORITMO TABÚ

4. MÉTODO EXACTO DE RESOLUCIÓN Y ALGORITMO TABÚ 4. MÉTODO EXACTO DE RESOLUCIÓN Y ALGORITMO TABÚ En este apartado vamos a realizar una detallada descripción de las metodologías que posteriormente utilizaremos para contrastar el nivel de calidad alcanzado

Más detalles

Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Ubicación de Instalaciones

Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Ubicación de Instalaciones Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Ubicación de Instalaciones Departamento de Investigación Operativa Instituto de Computación, Facultad de Ingeniería Universidad

Más detalles

Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Inventarios, Parte 2

Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Inventarios, Parte 2 Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Inventarios, Parte 2 Departamento de Investigación Operativa Instituto de Computación, Facultad de Ingeniería Universidad de la

Más detalles

#: #( * % /# ;5/" #: #( 9# /# ;5/"2 &2)/# " <

#: #( * % /# ;5/ #: #( 9# /# ;5/2 &2)/#  < Una cadena de suministro se define como todas las actividades y procesos asociados con la circulación de mercancías e información, desde la etapa de adquisición de la materia prima hasta el cliente final

Más detalles

El análisis de los problemas de localización es un área fértil de investigación

El análisis de los problemas de localización es un área fértil de investigación El análisis de los problemas de localización es un área fértil de investigación desde principios de siglo. El primer modelo de localización fue propuesto por Alfred Weber en 1909 [1], y domino por muchos

Más detalles

El problema del agente viajero

El problema del agente viajero CO- (F0) //00 El problema del agente viajero Un vendedor tiene que visitar n + ciudades, cada una exactamente una vez. La distancia entre cada par de ciudades viene dada por d ij (en general d ij d ji

Más detalles

Fundamentos de Investigación de Operaciones Modelos de Grafos

Fundamentos de Investigación de Operaciones Modelos de Grafos Fundamentos de Investigación de Operaciones de junio de 00 Muchos problemas de optimización puedes ser analizados y resueltos a través de representaciones gráficas. Tal es el caso de los problemas de planificación

Más detalles

Introduciendo Robustez Recuperable en el Diseño de Redes a través de la Aversión al Riesgo

Introduciendo Robustez Recuperable en el Diseño de Redes a través de la Aversión al Riesgo Introduciendo Robustez Recuperable en el Diseño de Redes a través de la Aversión al Riesgo LUIS CADARSO UNIVERSIDAD REY JUAN CARLOS Universidad Nacional Autónoma de México Instituto de Ingeniería México

Más detalles

3.1 Descripción del problema del Agente Viajero (PAV).

3.1 Descripción del problema del Agente Viajero (PAV). CAPÍTULO 3 Problema del Agente Viajero. Optimización es uno de los temas con mayor debate dentro del área de cómputo. En este campo, el Problema del Agente Viajero (PAV) es uno de los problemas de optimización

Más detalles

Casos especiales de la P. L.

Casos especiales de la P. L. Casos especiales de la P. L. Las redes: Las redes están presentes en diferentes lugares en la vida real: redes de transporte, flujo eléctrico y comunicaciones, por ejemplo. Las redes: También son ampliamente

Más detalles

Sistemas Operativos Distribuidos

Sistemas Operativos Distribuidos Contenidos del Tema Gestión de procesos Modelos de sistema Asignación de procesadores Estrategias dinámicas Estrategias estáticas Ejecución remota de procesos Modelos de sistema Organización de los procesadores

Más detalles

Ejemplo: ubicación de estación de bomberos

Ejemplo: ubicación de estación de bomberos 15.053 Jueves, 11 de abril Más aplicaciones de la programación entera. Técnicas de plano de corte para obtener mejores cotas. Ejemplo: ubicación de estación de bomberos Considere la ubicación de estaciones

Más detalles

Casos especiales de la P. L.

Casos especiales de la P. L. Casos especiales de la P. L. Problemas de flujo mínimo Planteamiento del problema Son problemas de programación lineal con ciertas estructuras especiales Permiten ser trabajados con algoritmos especiales

Más detalles

Introducción a la Computación Evolutiva

Introducción a la Computación Evolutiva Introducción a la Computación Evolutiva Departamento de Computación CINVESTAV-IPN Av. IPN No. 2508 Col. San Pedro Zacatenco México, D.F. 07300 email: ccoello@cs.cinvestav.mx http: //delta.cs.cinvestav.mx/~ccoello

Más detalles

CAPÍTULO 4 PROGRAMACIÓN LINEAL ENTERA

CAPÍTULO 4 PROGRAMACIÓN LINEAL ENTERA CAPÍTULO 4 PROGRAMACIÓN LINEAL ENTERA Programación Lineal Entera Es una técnica que permite modelar y resolver problemas cuya característica principal es que el conjunto de soluciones factibles es discreto.

Más detalles

UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE INGENIERIA INDUSTRIAL

UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE INGENIERIA INDUSTRIAL UNIVERSIDAD DE CHILE FACULTAD DE CIENCIAS FÍSICAS Y MATEMÁTICAS DEPARTAMENTO DE INGENIERIA INDUSTRIAL HEURÍSTICA BASADA EN GENERACIÓN DE COLUMNAS PARA EL PROBLEMA DE RUTEO DE VEHÍCULOS CON VENTANAS DE

Más detalles

MODELOS DE PROGRAMACION LINEAL VARIABLES Xij

MODELOS DE PROGRAMACION LINEAL VARIABLES Xij MODELOS DE PROGRAMACION LINEAL VARIABLES Xij 1. Construcción de modelos de programación lineal con variables Xij. 2. Aplicaciones en finanzas, marketing, producción. 3. Modelos de transporte y transbordo.

Más detalles

Fundamentos de Programación Entera

Fundamentos de Programación Entera Fundamentos de Programación Entera Carlos Testuri Germán Ferrari Departamento de Investigación Operativa. Instituto de Computación. Facultad de Ingeniería. Universidad de la República 2012-2016 Facultad

Más detalles

Tema: Algoritmos para la ruta más corta en un Grafo.

Tema: Algoritmos para la ruta más corta en un Grafo. Programación IV. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos para la ruta más corta en un Grafo. Objetivos Específicos Definir el concepto de camino

Más detalles

Tema 5 Árboles y Grafos.

Tema 5 Árboles y Grafos. Tema 5 Árboles y Grafos. Definiciones básicas de teoría de grafos. Un grafo consta de un conjunto de nodos, un conjunto de aristas y una correspondencia f del conjunto de aristas al conjunto de nodos.

Más detalles

Computación en Internet: Librería MALLBA para problemas de optimización

Computación en Internet: Librería MALLBA para problemas de optimización Computación en Internet: Librería MALLBA para problemas de optimización Maria J. Blesa Jordi Petit Fatos Xhafa Departament de Llenguatges i Sistemes Informàtics Universitat Politècnica de Catalunya Campus

Más detalles

2. PLANIFICACIÓN OPERACIONAL DE LA CAPACIDAD CON RESTRICCIONES DE TIEMPO

2. PLANIFICACIÓN OPERACIONAL DE LA CAPACIDAD CON RESTRICCIONES DE TIEMPO 2. PLANIFICACIÓN OPERACIONAL DE LA CAPACIDAD CON RESTRICCIONES DE TIEMPO 2.1. Introducción. El problema de la planificación operacional de la capacidad en sistemas logísticos con restricciones de tiempo,

Más detalles

CONCLUSIONES Y FUTURAS LINEAS DE INVESTIGACIÓN

CONCLUSIONES Y FUTURAS LINEAS DE INVESTIGACIÓN CONCLUSIONES Y FUTURAS LINEAS DE INVESTIGACIÓN 9 279 Sistema de generación eléctrica con pila de combustible de óxido sólido alimentado con residuos forestales y su optimización mediante algoritmos basados

Más detalles

Optimización bajo Incertidumbre. 0. Revisión. Depto. Investigación Operativa. Instituto de Computación. Facultad de Ingeniería, UdelaR

Optimización bajo Incertidumbre. 0. Revisión. Depto. Investigación Operativa. Instituto de Computación. Facultad de Ingeniería, UdelaR Optimización bajo Incertidumbre 0. Revisión Carlos Testuri Germán Ferrari Depto. Investigación Operativa. Instituto de Computación. Facultad de Ingeniería, UdelaR 2003-17 Contenido 1 Revisión Probabilidad

Más detalles

Algoritmos Voraces. Diseño y Análisis de Algoritmos

Algoritmos Voraces. Diseño y Análisis de Algoritmos Algoritmos Voraces Diseño y Análisis de Algoritmos Contenidos Contenidos 1 Introducción 2 Ejemplos básicos 3 Cambio de monedas 4 Problema de la mochila 5 Problemas de planificación de tareas 6 Patrones

Más detalles

Estimación de la emisión de contaminantes debida al tráfico urbano mediante modelos de asignación de tráfico

Estimación de la emisión de contaminantes debida al tráfico urbano mediante modelos de asignación de tráfico 1 Grupo de Tecnología de la Información e Ingeniería de Organización. Dpto de Organización Industrial y Gestión de Empresas. Universidad de Sevilla Estimación de la emisión de contaminantes debida al tráfico

Más detalles

Algoritmo de asignación de visitas a puntos de venta a rutas y de optimización de las rutas resultantes

Algoritmo de asignación de visitas a puntos de venta a rutas y de optimización de las rutas resultantes X Congreso de Ingeniería de Organización Valencia, 7 y 8 de septiembre de 2006 Algoritmo de asignación de visitas a puntos de venta a rutas y de optimización de las rutas resultantes Laia Ferrer, Rafael

Más detalles

Revisión del algoritmo de Corte Normalizado

Revisión del algoritmo de Corte Normalizado Capítulo 2 Revisión del algoritmo de Corte Normalizado El algoritmo Ncut realiza la segmentación planteando un problema de división de grafos, en el cual se pretende maximizar tanto la disimilitud entre

Más detalles

CAPÍTULO 3. GRASP (Greedy Randomized Adaptive Search Procedures). Los problemas de optimización surgen de las situaciones de aplicación práctica.

CAPÍTULO 3. GRASP (Greedy Randomized Adaptive Search Procedures). Los problemas de optimización surgen de las situaciones de aplicación práctica. CAPÍTULO 3 GRASP (Greedy Randomized Adaptive Search Procedures). Los problemas de optimización surgen de las situaciones de aplicación práctica. Estos problemas se aplican en distintas áreas, tales como:

Más detalles

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos:

1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila 0/1 para los siguientes casos: PROGRAMACIÓN DINÁMICA RELACIÓN DE EJERCICIOS Y PROBLEMAS 1. Diseñe algoritmos que permitan resolver eficientemente el problema de la mochila /1 para los siguientes casos: a. Mochila de capacidad W=15:

Más detalles

Fundamentos de Programación Entera. A. Revisión. Carlos Testuri Germán Ferrari

Fundamentos de Programación Entera. A. Revisión. Carlos Testuri Germán Ferrari Fundamentos de Programación Entera A. Revisión Carlos Testuri Germán Ferrari Departamento de Investigación Operativa Instituto de Computación Facultad de Ingeniería Universidad de la República 2012-2018

Más detalles

IMPLEMENTACIÓN DE UNA HEURÍSTICA INSPIRADA EN SISTEMAS DE HORMIGAS, CON SIMULACIÓN BASADA EN AGENTES PARA PROBLEMAS DE RUTEO VEHICULAR CAPACITADO

IMPLEMENTACIÓN DE UNA HEURÍSTICA INSPIRADA EN SISTEMAS DE HORMIGAS, CON SIMULACIÓN BASADA EN AGENTES PARA PROBLEMAS DE RUTEO VEHICULAR CAPACITADO UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO PROGRAMA DE MAESTRÍA Y DOCTORADO EN INGENIERÍA INGENIERÍA DE SISTEMAS INVESTIGACIÓN DE OPERACIONES IMPLEMENTACIÓN DE UNA HEURÍSTICA INSPIRADA EN SISTEMAS DE HORMIGAS,

Más detalles

Problemas de rutas de vehículos: modelos, aplicaciones logísticas y métodos de resolución

Problemas de rutas de vehículos: modelos, aplicaciones logísticas y métodos de resolución UNIVERSIDAD DE VALLADOLID ESCUELA DE INGENIERIAS INDUSTRIALES Grado en Ingeniería en Organización Industrial Problemas de rutas de vehículos: modelos, aplicaciones logísticas y métodos de resolución Autor:

Más detalles

CI63G Planificación de Sistemas de Transporte Público Urbano. Clase 12 Semestre Otoño 2008

CI63G Planificación de Sistemas de Transporte Público Urbano. Clase 12 Semestre Otoño 2008 CI63G Planificación de Sistemas de Transporte Público Urbano Clase 12 Semestre Otoño 2008 Modelos de asignación de Transporte Público Para una oferta y demanda dadas de transporte público, se decide como

Más detalles

Procedimientos de búsqueda miopes aleatorizados y adaptativos (GRASP)

Procedimientos de búsqueda miopes aleatorizados y adaptativos (GRASP) Procedimientos de búsqueda miopes aleatorizados y adaptativos (GRASP) Se basan en la premisa de que soluciones iniciales diversas y de buena calidad juegan un papel importante en el éxito de métodos de

Más detalles

Hiperheurísticas a través de Programación Genética para la Resolución de Problemas de Ruteo de Vehículos-Edición Única

Hiperheurísticas a través de Programación Genética para la Resolución de Problemas de Ruteo de Vehículos-Edición Única Hiperheurísticas a través de Programación Genética para la Resolución de Problemas de Ruteo de Vehículos-Edición Única Title Hiperheurísticas a través de Programación Genética para la Resolución de Problemas

Más detalles

máx 5x 1 + 7x 2 s.a 2x 1 + x x 1 + 9x 2 41 x 1 0, x 2 0, enteras, z opt z opt 38

máx 5x 1 + 7x 2 s.a 2x 1 + x x 1 + 9x 2 41 x 1 0, x 2 0, enteras, z opt z opt 38 Programación Lineal Entera / Investigación Operativa PROBLEMAS DE INVESTIGACIÓN OPERATIVA. Hoja 4. Resuelve el siguiente problema de programación entera por el método Branch and Bound: máx 5x + 7x s.a

Más detalles

Modelos de Redes: Árbol. M. En C. Eduardo Bustos Farías

Modelos de Redes: Árbol. M. En C. Eduardo Bustos Farías Modelos de Redes: Árbol de expansión n mínimam M. En C. Eduardo Bustos Farías as Objetivos Conceptos y definiciones de redes. Importancia de los modelos de redes Modelos de programación n lineal, representación

Más detalles

Programación Matemática para Economistas 1

Programación Matemática para Economistas 1 Programación Matemática para Economistas 1 CAPÍTULO 4. TOMA DE DECISIONES MULTICRITERIO. 1.- Introducción. Los problemas de programación lineal vistos hasta ahora, no implicaban ninguna decisión. Una vez

Más detalles

Modelos de Transporte: Problemas de Asignación. M. En C. Eduardo Bustos Farías

Modelos de Transporte: Problemas de Asignación. M. En C. Eduardo Bustos Farías Modelos de Transporte: Problemas de asignación M. En C. Eduardo Bustos Farías as Problemas de Asignación Problemas de Asignación: Son problemas balanceados de transporte en los cuales todas las ofertas

Más detalles

4. RESOLUCIÓN DEL PROBLEMA DE RUTEO DE VEHÍCULOS (VRP) 4.1. Introducción al Problema de Ruteo de Vehículos

4. RESOLUCIÓN DEL PROBLEMA DE RUTEO DE VEHÍCULOS (VRP) 4.1. Introducción al Problema de Ruteo de Vehículos 4. RESOLUCIÓN DEL PROBLEMA DE RUTEO DE VEHÍCULOS (VRP) 4.1. Introducción al Problema de Ruteo de Vehículos Para comprender el mecanismo de los algoritmos de cálculo de rutas, primero se deben entender

Más detalles

Programación Lineal. - Si no: Sea j tal que c

Programación Lineal. - Si no: Sea j tal que c Programación Lineal El objetivo de este documento es hacer una breve introducción a la programación lineal que pueda contribuir al fácil manejo de la aplicación. La programación lineal es un procedimiento

Más detalles

Dimensionamiento y Planificación de Redes

Dimensionamiento y Planificación de Redes Dimensionamiento y Planificación de Redes Tema 2. Algoritmos Sobre Grafos Calvo Departamento de Ingeniería de Comunicaciones Este tema se publica bajo Licencia: Crea:ve Commons BY- NC- SA 4.0 Búsqueda

Más detalles

Manual de utilización de la aplicación informática Ie(CO)Trans2. versión demo

Manual de utilización de la aplicación informática Ie(CO)Trans2. versión demo Manual de utilización de la aplicación informática Ie(CO)Trans2 versión demo Página 2 1 PRESENTACIÓN Con el objetivo de mejorar la competitividad y la calidad de los servicios ofrecidos por nuestra empresa

Más detalles

Nuevo Método para la Resolución del Problema de Transporte

Nuevo Método para la Resolución del Problema de Transporte II Conferencia de Ingeniería de Organización Vigo, 5-6 Septiembre 2002 Nuevo Método para la Resolución del Problema de Transporte Francisco López Ruiz, Germán Arana Landín 2 Doctor Ingeniero Industrial,

Más detalles

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Lógica y Estructuras Discretas Tutor: Antonio Rivero Cuesta Tema 5 Teoría de Grafos Conceptos Básicos Un grafo consta de: Grafo Un conjunto de nodos, Un conjunto de aristas

Más detalles

Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Inventarios, Parte 3

Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Inventarios, Parte 3 Curso: Teoría, Algoritmos y Aplicaciones de Gestión Logística. Modelos de Inventarios, Parte 3 Departamento de Investigación Operativa Instituto de Computación, Facultad de Ingeniería Universidad de la

Más detalles

Tema 07: Backtraking. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 07: Backtraking. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 07: Backtraking M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Backtraking Búsqueda en profundidad

Más detalles

Problemas: formulación, ejemplos, representación de soluciones y estructuras de entorno

Problemas: formulación, ejemplos, representación de soluciones y estructuras de entorno Problemas: formulación, ejemplos, representación de soluciones y estructuras de entorno Christopher Expósito Izquierdo, J. Marcos Moreno Vega cexposit@ull,es, jmmoreno@ull.es Departamento de Ingeniería

Más detalles

Programación Lineal. Modelo de Redes. Alcance de las aplicaciones. Curso: Investigación de Operaciones Ing. Javier Villatoro

Programación Lineal. Modelo de Redes. Alcance de las aplicaciones. Curso: Investigación de Operaciones Ing. Javier Villatoro Programación Lineal Modelo de Redes Alcance de las aplicaciones Curso: Investigación de Operaciones Ing. Javier Villatoro ALCANCE DE LAS APLICACONES DE REDES ALCANCE DE LAS APLICACIONES Muchas situaciones

Más detalles

ALGORÍTMICA

ALGORÍTMICA ALGORÍTMICA 2012-2013 Parte I. Introducción a las Metaheurísticas Tema 1. Metaheurísticas: Introducción y Clasificación Parte II. Métodos Basados en Trayectorias y Entornos Tema 2. Algoritmos de Búsqueda

Más detalles

Algoritmos genéticos

Algoritmos genéticos Algoritmos genéticos Introducción 2 Esquema básico 3 El problema de la mochila 7 Asignación de recursos 0 El problema del viajante 3 Variantes del esquema básico 5 Por qué funciona? 9 Observaciones finales

Más detalles

Formulación del problema de la ruta más corta en programación lineal

Formulación del problema de la ruta más corta en programación lineal Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,

Más detalles

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo

Paralelización de problemas de recorrido de árboles Trabajadores replicados y esquema maestro esclavo Metodología de la Programación Paralela 2015-2016 Facultad Informática, Universidad de Murcia Esquemas algorítmicos paralelos: Paralelización de problemas de recorrido de árboles Trabajadores replicados

Más detalles

Algoritmos heurísticos y aproximados. Clase 6/10/09

Algoritmos heurísticos y aproximados. Clase 6/10/09 Algoritmos heurísticos y aproximados Clase 6/10/09 Algoritmos aproximados y heurísticos para problemas NP-Hard Cómo resolver problemas NP-HARD? No pretendemos encontrar la mejor solución sino una buena

Más detalles

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut 8.1 Para cada uno de los siguientes conjuntos, encontrar una desigualdad válida que agregada a la formulación

Más detalles

OPTIMIZACIÓN DE RUTAS EN LA PESCA DEL ATÚN

OPTIMIZACIÓN DE RUTAS EN LA PESCA DEL ATÚN OPTIMIZACIÓN DE RUTAS EN LA PESCA DEL ATÚN CASO DE INVESTIGACIÓN APLICADA EN EL SECTOR DE LA PESCA Carlos Groba 28/11/2014 SANTIAGO DE COMPOSTELA Quiénes somos Marine Instruments es una empresa especializada

Más detalles

Planeación de Trayectorias y Métodos de Búsqueda. Dr. Jesús Antonio González Bernal

Planeación de Trayectorias y Métodos de Búsqueda. Dr. Jesús Antonio González Bernal IA Planeación de Trayectorias y Métodos de Búsqueda Dr. Jesús Antonio González Bernal Planeación y Búsqueda Cuando enfrentamos un problema que se resuelve por una búsqueda, se suelen presentar dos escenarios:

Más detalles

Algoritmos basados en hormigas

Algoritmos basados en hormigas Algoritmos basados en hormigas Inteligencia Artificial Avanzada 1er. Semestre 2008 1 Aspectos Generales La metáfora de los insectos sociales para resolver problemas ha sido un tema importante a partir

Más detalles

Tema 1. Modelos lineales y solución gráfica. 1.1 El modelo lineal

Tema 1. Modelos lineales y solución gráfica. 1.1 El modelo lineal Tema 1 Modelos lineales y solución gráfica La programación lineal es una importante rama de la Investigación Operativa. Esta técnica matemática consiste en una serie de métodos que permiten obtener la

Más detalles

UNIVERSIDAD NACIONAL DE INGENIERÍA UNI-RUACS. Investigación de Operaciones

UNIVERSIDAD NACIONAL DE INGENIERÍA UNI-RUACS. Investigación de Operaciones UNIVERSIDAD NACIONAL DE INGENIERÍA UNI-RUACS Facultad de Ingeniería Industrial Investigación de Operaciones Tema: Teoría de los Grafos Elaborado por: Ing. Carlos Alberto Moreno. Docente: Ing. Pastrana

Más detalles

Teoría de redes y optimización en redes

Teoría de redes y optimización en redes Teoría de redes y optimización en redes Pedro Sánchez Martín Contenidos Definiciones básicas Árbol generador mínimo de expansión Camino mínimo Algoritmo Dkstra Algoritmo Bellman-Ford Fluo máximo Fluo de

Más detalles

Introducción a las RdP. Optimización basada en redes de Petri. Redes de Petri. Son objeto de estudio: RdP. Ejemplos:

Introducción a las RdP. Optimización basada en redes de Petri. Redes de Petri. Son objeto de estudio: RdP. Ejemplos: Seminario sobre toma de decisiones en logística y cadenas de suministro Introducción a las RdP Optimización basada en redes de Petri https://belenus.unirioja.es/~emjimene/optimizacion/transparencias.pdf

Más detalles

Conceptos Generales en los Proyectos de Optimización de

Conceptos Generales en los Proyectos de Optimización de Conceptos Generales en los Proyectos de Optimización de Rutas nicolas.lecat@ti.eptisa.com 627 53 69 62 Eptisa TI: Tecnologías de la Información Conceptos Generales: Definiciones y terminología Requerimientos,

Más detalles

DE PETRI: TEMPORIZACIÓN

DE PETRI: TEMPORIZACIÓN EXTENSIONES DE LAS REDES DE PETRI: TEMPORIZACIÓN PROGRAMACIÓN CONCURRENTE MASTER EN COMPUTACIÓN DEPARTAMENTO DE ELECTRÓNICA Y COMPUTADORES UNIVERSIDAD DE CANTABRIA CURSO 2012/13 1 REDES DE PETRI: EXTENSIONES

Más detalles

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ FACULTAD DE CIENCIAS E INGENIERÍA OPTIMIZACIÓN DE RUTAS EN LA DISTRIBUCIÓN DE PRODUCTOS DE BELLEZA Tesis para optar el Título de Ingeniero Industrial, que presenta

Más detalles