Optimización de rutas de vehículos de recogida de basuras mediante recocido simulado Albert Magriñà Girol y Francesc Robusté Antón LAMOT, ETS de Ingenieros de Caminos, Canales y Puertos de Barcelona Universidad Politécnica de Cataluña, <f.robuste@upc.es>, España RESUMEN El artículo presenta la elaboración de un algoritmo para diseñar la recogida de basuras en un entorno rural mediante la técnica de optimización conocida como recocido simulado. El algoritmo base se ha modificado permitiendo introducir las restricciones concretas que tiene este problema, como la limitación de la capacidad del camión o la jornada laboral de los trabajadores. Finalmente, se aplica el programa desarrollado a casos reales y se constata que los resultados son sustancialmente mejores que los de otros algoritmos de uso habitual como el heurístico de Clarke y Wright. 1. PLANTEAMIENTO DEL PROBLEMA: LA RECOGIDA DE BASURAS La recogida de los residuos sólidos generados por la población de una determinada región tiene un peso muy importante en el coste total de la gestión de estos residuos. El objetivo de la ponencia es presentar la implementación de un algoritmo que reduce este coste optimizando el número de camiones utilizados y las rutas de recogida que describen. El problema se centra en un entorno rural: un conjunto de núcleos generadores de basuras que pueden ser muy heterogéneos entre sí (desde granjas a poblaciones grandes) llenan parcialmente un número determinado de contenedores y se trata de diseñar el recorrido óptimo para camiones con una cierta capacidad; este problema responde en su formulación al denominado VRP en la literatura (Vehicle Routing Problem). De cada núcleo generador se conoce su situación en el territorio, la cantidad de basura que genera diariamente y el tiempo que tarda un camión en recoger toda la basura en cada núcleo. De la misma manera, también se conoce el tiempo que tarda un camión de basuras en recorrer la distancia que hay entre cada par de núcleos. El coste del servicio viene definido por una función de costes, que tiene un valor calculable y concreto para cada una de las configuraciones de rutas que se analice. Hay dos condicionantes operativos obvios: en primer lugar, los camiones tienen una capacidad limitada y, por lo tanto, la carga total que se recoge en una ruta no pueden sobrepasar dicha capacidad; en segundo lugar, la jornada de trabajo de los operarios que van en cada camión no puede superar unas determinadas horas y, por lo tanto, hay que limitar el trabajo de cada camión a esa jornada laboral. Es importante destacar que la primera condición es sobre las rutas y la segunda sobre los camiones y que el número de camiones necesarios es como máximo el número de rutas. Debido a esto, puede darse el caso que en la configuración óptima haya camiones que describan más de una ruta para poder rellenar lo máximo posible la jornada laboral de esos camiones. 2. LA RESOLUCIÓN DEL PROBLEMA 1.1. El problema de las rutas de vehículos El problema de las rutas de vehículos es un problema NP-hard dentro de la Optimización Combinatoria. Es decir, se conjetura que no es posible encontrar algoritmos que proporcionen la solución óptima en un tiempo razonable para casos de tamaño mediano o grande. De esta manera, se tiene que tender a utilizar algoritmos que proporcionen aproximaciones de la solución óptima. En el campo de la logística, se han descrito muchos algoritmos de aproximación para el problema de rutas de vehículos. Los dos métodos más clásicos y que comúnmente son utilizados para la resolución del tipo de problemas son el método de barrido y el método de Clarke y Wright. Las limitaciones de estos algoritmos son grandes y, por este motivo, se han desarrollado otro tipo de algoritmos numéricos como los de hill-climbing que tienen la ventaja de que durante su proceso iterativo pueden salir de óptimos locales y seguir la búsqueda del óptimo global. Esto es posible porque pueden aceptar durante la búsqueda de la solución configuraciones peores que la última configuración aceptada. El algoritmo utilizado para el desarrollo de este trabajo, el recocido simulado, pertenece a este grupo. 2.2 El recocido simulado clásico Si se utiliza el algoritmo de recocido simulado clásico (Robusté et al., 1990) se puede resolver el problema de las rutas de vehículos para los casos que tienen igual número de camiones que rutas y sin la imposición de carga máxima recogida por cada ruta ni tiempo máximo de trabajo de los camiones. Este algoritmo es indicado cuando las cargas de basura a recoger en cada núcleo son muy parecidas (distribución homogénea de cargas) y pequeñas en comparación a la capacidad del camión y que la jornada de trabajo tampoco sea un factor restrictivo. En esos casos, en la configuración óptima obtenida cada camión sólo hace una ruta diaria. Las principales características que definen este algoritmo son: • Partiendo de una solución inicial encuentra otras posibles soluciones a través de perturbaciones aleatorias a partir de la solución incumbente; de esta manera, va saltando de solución en solución indefinidamente. • Una vez encontrada una nueva solución, el algoritmo decide aceptarla o no en función del criterio de recocido simulado. Así, para cada iteración j, se acepta una nueva solución si la función objetivo ha disminuido o si se determina aleatoriamente con una probabilidad (pj) de aceptación que esta en función del incremento en el coste (cj+1-cj) y de un parámetro, llamado “temperatura” (Tj), que depende del número de iteraciones realizadas hasta ese momento (su nombre proviene de la analogía física del proceso de cristalización de metales por enfriamiento lento o recocido). pj = min{ 1 , exp (-(cj+1-cj)/Tj) } • • (1) La solución se dará por definitiva cuando se cumpla una de las condiciones de parada. La función coste es el tiempo total utilizado por los vehículos para realizar las rutas. Robusté et al. (1990) consideraron tres tipos de perturbaciones aleatorias: la inversión de un tramo de una ruta; el traslado de un tramo de una parte a otra de la misma ruta; y el intercambio de un tramo de una ruta por el tramo de otra ruta. La figura 1 representa gráficamente estos tipos de perturbaciones aleatorias. La sucesión de letras representa una ruta y cada una de las letras un núcleo de recogida de basura. Así, la letra O representa el centro logístico (planta de tratamiento de residuos, vertedero, incineradora, terminal de transporte, etc.) de donde salen y regresan los camiones. Inversión: Antes: Después: OABCDEFGHIJO OABCDJIHGFEO Traslado: Antes: Después: OABCDEFGHIJO OABDEFGHICJO Intercambio: Antes: Después: Ruta1: Ruta2: Ruta1: Ruta2: OABCDEFGHIJO OabcdefghijO OABCDbcdefIJO OaghEFGHijO Fig. 1 – Tipos de perturbaciones aleatorias del recocido simulado clásico Se necesita la construcción de una solución inicial para poder empezar las perturbaciones. Aunque se podrían construir rutas iniciales uniendo los núcleos aleatoriamente, también, se puede intentar empezar la optimización en la solución inicial con la elección de los núcleos que formarán una ruta por su proximidad. Se han definido tres condiciones de parada. La primera de ellas, cuando existe un número determinado de iteraciones consecutivas con el mismo valor de la función objetivo. La segunda, cuando se hayan intentado un número determinado de alteraciones en la solución y ninguna haya cumplido la condición de recocido simulado. Y la tercera condición, cuando se haya superado un número determinaciones de iteraciones y, por lo tanto, la temperatura sea muy pequeña. Fig. 2 - Solución de un ejemplo con demanda homogénea (5 camiones, 50 núcleos) 2.3 El recocido simulado modificado El recocido simulado clásico sólo puede resolver unos casos muy concretos y deja sin solución aplicable otros muchos casos. Por este motivo, se ha desarrollado una modificación del algoritmo del recocido simulado para poder resolver los otros casos, como los casos en que la demanda de recogida de los núcleos sea heterogénea o los casos en que la capacidad de los camiones sea restrictiva. El algoritmo modificado ha sido programado en el programa RESACCA (REcocido Simulado Aplicado a los Circuitos de CAmiones de recogida de basuras). Los factores relevantes para el problema específico de la recogida comarcal de basuras son: • Restricción de no superación de la capacidad del camión en cada ruta. • Restricción de no superación de la jornada de trabajo en cada camión. • Posibilidad de que ciertos núcleos de demanda puedan tener cargas más grandes que la capacidad del camión. • Posibilidad que un mismo camión realice más de una ruta. En primer lugar, para considerar las limitaciones de la capacidad de los camiones y de la jornada de trabajo hay que añadir dos condiciones más cuando se tantea una modificación aleatoria. Es decir, para aceptar una nueva solución aparte de cumplirse el criterio de recocido simulado se tiene que cumplir que en cada ruta la suma de la basura recogida no supere la capacidad del camión y que todos los camiones no trabajen más de la jornada máxima establecida. Estas dos restricciones que se han añadido producen una reducción del número de soluciones posibles, ya que a diferencia del criterio de recocido simulado estas restricciones son independientes de la iteración y sólo depende de la configuración específica de la solución analizada. En los casos reales se plantea también la posibilidad de que haya núcleos con demanda de recogida más grande que la capacidad de camión. Si eso sucede, el algoritmo fracciona la carga de los núcleos para que se visiten varias veces y ninguna de las veces la carga recogida sea más grande que la capacidad del camión. Es sencillo demostrar que la partición óptima fracciona las cargas en unidades de camión más otra carga con el resto. De esta manera, las partes que son iguales a la capacidad del camión conforman una ruta por sí solas y no entran en el juego de las perturbaciones aleatorias; y la parte con el resto es tratada como los otros núcleos con carga más pequeña que la capacidad del camión. Fig. 3 - Solución de un caso sencillo con demanda heterogénea ( 5 camiones, 24 núcleos) Para poder considerar diferente número camiones y rutas y, por tanto, que un camión pueda realizar diferentes rutas dentro su jornada de trabajo, hay que añadir otro tipo de perturbación aleatoria. De esta manera, a las perturbaciones de inversión, traslación y intercambio, hay que añadir la de cambio de asignación de camión. Es decir, cada ruta tiene asignado un camión que es el que tiene que realizar dicha ruta y con esta perturbación una determinada ruta que era realizado por el camión X será realizado por el camión Y. Como es obvio, para aceptar esta nueva solución, tienen que cumplirse los tres criterios que se imponen en todas las iteraciones: criterio de recocido simulado, capacidad máxima de la ruta y jornada máxima que puede realizar el camión. Hay que entrar a priori al modelo el número camiones y el número de rutas a utilizar. Esto es un inconveniente, ya que el número de camiones sí que es un parámetro de diseño pero el número de rutas utilizadas no. Para evitar este problema, al programa se le introduce el número de vehículos a utilizar y un intervalo de posibles valores de la variable número de rutas. El mínimo de este intervalo suele considerarse el número de camiones. El máximo depende de las distancias a recorrer y las cargas a recoger de cada caso concreto. Normalmente con el máximo igual al doble del número de camiones es suficiente. De esta manera, el programa intenta encontrar una solución inicial con el mínimo del intervalo; si lo consigue calcula la optimización con el recocido simulado modificado, si no lo consigue lo intenta con el siguiente valor del intervalo y así sucesivamente hasta llegar al final del intervalo. Así, se hace la optimización con el mínimo número de rutas que puede calcular. Este planteamiento se basa en el criterio que normalmente el tiempo total empleado es menor si utilizamos menos rutas. Finalmente, falta explicar cómo se determina la solución inicial. Esta solución inicial tiene que cumplir las dos restricciones ya explicadas: máxima carga por ruta y máximo tiempo empleado por camión. Por este motivo, se hace difícil para muchos casos encontrar un algoritmo sencillo que dé una solución inicial que cumpla estas dos restricciones. Esto es debido a que esta primera solución está poco optimizada y, por lo tanto, los recorridos que utiliza rápidamente llegan a capacidad máxima de la ruta o jornada máxima. Para poder superar esta dificultad se ha ingeniado el recocido simulado modificado e interrumpido. 2.3. Solución inicial: el recocido simulado modificado e interrumpido El procedimiento para encontrar la solución inicial empieza en un algoritmo que agrupa los núcleos en rutas imponiendo solamente una de las dos condiciones, la carga máxima recogida en cada ruta. Se ha podido comprobar que en la mayoría de casos en que se conoce que existe solución posible, este principio “cluster first” es capaz de encontrar esta primera solución. Estas rutas iniciales que no cumplen la condición de no superación de la jornada máxima por cada camión se utilizan como solución inicial en el recocido simulado modificado e interrumpido. Las características de este algoritmo son las mismas que el recocido simulado modificado pero con unas pocas diferencias: • Los criterios que tienen que cumplir una perturbación para ser aceptada como nueva solución son solamente dos: el criterio de recocido simulado y la condición de no superación de la carga máxima por ruta. • La función objeto en lugar de ser el tiempo total es sólo el exceso temporal que sufre cada camión respecto a la jornada laboral. • Este proceso es interrumpido cuando se llega a una solución que tiene la función objeto negativa. El objetivo de este algoritmo es encontrar la solución que tiene mínimo el exceso respecto a la jornada laboral. Así, provocamos la interrupción del proceso cuando la función objeto es negativa porque esto nos indica que la solución que analiza la iteración en que nos encontramos cumple las dos condiciones que imponemos en el recocido simulado modificado. Si no se llega a una solución con función objeto negativa implica que no se puede configurar el sistema de recogida con ese número de rutas y de camiones. 3. APLICACIÓN Y COMPARACIONES La aplicación se realiza en el diseño de la recogida de basuras para seis casos reales correspondientes a diversas comarcas, provincias, y Comunidades Autónomas españolas. Caso 1 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 Nº de núcleos Carga total a recoger (Unidades de camión) 74 11,52 81 4,47 100 10,25 107 24,28 88 22,6 119 22,64 Tabla 1 - Características de los casos analizados También se dispone de los resultados obtenidos para dichos casos por el algoritmo clásico de Clarke y Wright. El programa concreto de este algoritmo que se ha utilizado para estos casos también permite imponer las limitaciones de capacidad del camión y de jornada máxima pero no permite utilizar más rutas que camiones. Caso 1 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 C&W Resacca C&W Resacca C&W Resacca C&W Resacca C&W Resacca C&W Resacca Nº rutas 13 12 7 7 11 11 25 25 25 23 25 23 Nº camiones 13 12 7 7 11 11 25 25 25 23 25 23 Tiempos (min) 4828,0 4666,0 3244,5 3141,5 4153,5 4092,5 8787,5 8728,5 6235,5 6203,5 9274,5 9066,5 Coste total (PTA/dia) 803932 754405 470808 464750 684265 680678 1516789 1513319 1366707 1284825 1545429 1453197 % mejora 6,2% 1,3% 0,5% 0,2% 6,0% 6,0% Tabla 2 - Resultados con número de rutas igual al número de camiones La función de coste utilizada para ambos algoritmos es la suma de un coeficiente por el número de camiones utilizados más otro coeficiente por las horas utilizadas por todos las rutas. El primer coeficiente es el coste diario del equipo de operarios que van en cada camión. Así, se ha considerado que los operarios cobran un suelo fijo diario y, por tanto, no van por horas. El segundo coeficiente, es la suma de la amortización del camión, el coste de mantenimiento y el coste del combustible por cada hora que trabaja el camión. De esta manera, se ha hecho la hipótesis que estos tres costes dependen de las horas trabajados por el camión. Aparte de los gastos del servicio considerados existen otros como la amortización de los contenedores o la amortización del garaje para los camiones, pero no se han tenido en cuenta ya que no dependen de la configuración de rutas escogida. La jornada laboral se ha fijado en 8 horas y la capacidad del camión es la unidad. Primeramente, se comparan los resultados de los dos programas (C&W y Ressaca) considerando en ambos casos el número de vehículos igual al número de rutas. La tabla 2 muestra los resultados. En todos los casos se mejora el coste del servicio. No obstante, las únicas mejoras substanciales son en aquellos casos que se ha podido disminuir el número de camiones utilizados. También es importante indicar que si se hubiera hecho la hipótesis de amortización del camión por días transcurridos y no por horas trabajadas, la mejora del coste sería mucho más grande. Las figuras 4 y 5 nos muestran las soluciones para el caso 1 de los dos programas. Las representaciones de las rutas en estas figuras están en métrica euclídea pero el algoritmo utiliza para el cálculo las distancias sobre la red de carreteras. Fig. 4 - Solución de C&W para el caso 1. Fig. 5 - Solución de Resacca para el caso 1 En segundo lugar, se realiza la comparación pero con la posibilidad que el programa Resacca pueda utilizar más rutas que camiones. En los casos que se analizan esta mejora sólo es posible para los casos 4 y 5; la Tabla 3 muestra los nuevos resultados. Caso 4 Caso 5 C&W Resacca C&W Resacca Nº rutas 25 25 25 24 Nº camiones 25 22 25 17 Tiempo (min) 8787,5 8807,5 6235,5 6438,5 Coste total (PTA/dia) 1516789 1397965 1366707 1058645 % mejora 7,8% 22,5% Tabla 3 – Resultados con la posibilidad que Nº rutas sea más grande que Nº camiones En estos casos es donde realmente la mejora es apreciable. El motivo de la gran mejora es que si se utiliza sólo una ruta por camión quedan camiones que no aprovechan toda la jornada laboral y, por tanto, se está pagando el sueldo a unos operarios durante unas horas que no trabajan. En cambio, si se utilizan diferentes rutas para un mismo camión la jornada laboral se aprovecha más y no hace falta utilizar tantos camiones. 4. CONCLUSIONES El algoritmo diseñado es una modificación del recocido simulado particularizada para el VRP, que produce excelentes resultados. Cabe distinguir dos tipos de casos. En primer lugar, aquéllos en que en la situación óptima cada camión sólo realiza una ruta; la mejora de Resacca es perceptible respecto a los algoritmos habituales sólo si Resacca puede disminuir el número de camiones. En segundo lugar, en los casos en que la limitación más restrictiva es la capacidad de los camiones y, por tanto, las rutas resultantes son cortas y para aprovechar toda la jornada laboral es apropiado que un mismo camión haga varias rutas. En estos casos Resacca consigue una gran mejora respecto a los algoritmos clásicos como el de Clarke y Wright. REFERENCIAS ROBUSTÉ, F., C.F. DAGANZO y R.R. SOULEYRETTE II (1990). Implementing Vehicle Routing Models. Transportation Research B, 21B:4, 263-286. AARTS, A. y J.K. LENSTRA (1996). Local Search in Combinatorial Optimization. John Wiley & Sons, New York.