algoritmos de zoni caci on para recolecci on de residuos · naci on para el desarrollo de...

86
Universidad de Buenos Aires Facultad de Ciencias Exactas y Naturales Departamento de Computaci´ on Algoritmos de zonificaci´ on para recolecci´on de residuos Tesis presentada para optar al t´ ıtulo de Licenciado en Ciencias de la Computaci´on Marcelo Luis Bianchetti Directores: Dr. Javier Leonardo Marenco y Dr. Ivo Koch Buenos Aires, 2015

Upload: doankhanh

Post on 19-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

Universidad de Buenos AiresFacultad de Ciencias Exactas y Naturales

Departamento de Computacion

Algoritmos de zonificacion pararecoleccion de residuos

Tesis presentada para optar al tıtulo deLicenciado en Ciencias de la Computacion

Marcelo Luis Bianchetti

Directores: Dr. Javier Leonardo Marenco y Dr. Ivo Koch

Buenos Aires, 2015

Page 2: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos
Page 3: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

RESUMEN

La programacion de los aspectos logısticos de la recoleccion de residuos urbanos involucrauna serie de problemas de optimizacion combinatoria de difıcil resolucion en la practica.Problemas tıpicos que aparecen en este contexto son la definicion de la flota de camionespara realizar la recoleccion, la zonificacion del area a recorrer (de modo tal que cadacamion recorre una zona) y la optimizacion del recorrido de cada camion en funcion deconsideraciones de transito y desgaste de los vehıculos. En esta tesis se propone el estudiodel segundo de estos problemas, analizando algoritmos heurısticos para la particion delarea a recolectar en zonas.

Dados (a) el mapa de la ciudad que se debe recolectar, representado por un grafomixto G = (V,E,A) cuyos vertices representan las esquinas, cuyas aristas (conjunto E)especifican las cuadras de doble mano y cuyos arcos (conjunto A) especifican las cuadrasde una mano, (b) una estimacion de la cantidad de residuos promedio a recolectar encada cuadra y (c) la cantidad k y capacidad maxima de los vehıculos de recoleccion,el problema consiste en particionar el grafo G en k zonas conexas de modo tal que losresiduos a recolectar en cada zona no tengan mucha dispersion, y la distancia total derecoleccion sea la menor posible. Es habitual solicitar como requerimiento adicional quecada zona tenga un contorno sencillo, para ser facilmente recordada por los conductoresde los vehıculos de recoleccion.

Este problema es NP-hard, y en trabajos previos de la literatura ha demostrado sermuy difıcil de resolver en la practica. Por este motivo, se estudia en esta tesis este problemapor medio de algoritmos heurısticos. Luego los resultados se aplican a los datos de la ciudadde San Miguel de Tucuman, con el objetivo de proponer una zonificacion alternativa a laactual.

Palabras claves: PLE, CPP, Zonificacion, Recoleccion, Residuos, Urbanismo, Optimiza-cion, Combinatoria, Camiones, Heurısticas, Particion, Area, Grafo, Mixto, Contorno, SanMiguel de Tucuman.

i

Page 4: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos
Page 5: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

Indice general

1.. Capıtulo I: Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1. San Miguel de Tucuman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1.1. Servicio Diurno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.1.2. Servicio Nocturno . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.1.3. Problematica concreta . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2. Objetivo de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.3. Definiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.1. Teorıa de Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.2. Teorıa de complejidad computacional . . . . . . . . . . . . . . . . . 7

1.3.3. Problema del Camino Mınimo . . . . . . . . . . . . . . . . . . . . . . 9

1.3.4. Problema del Cartero Chino . . . . . . . . . . . . . . . . . . . . . . . 9

1.3.5. Programacion Lineal Entera . . . . . . . . . . . . . . . . . . . . . . . 10

1.4. Coordenadas geograficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.5. Contenido de la Tesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.. Capıtulo II: Problema y enfoque de resolucion . . . . . . . . . . . . . . . . . . . . 15

2.1. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.1.1. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2.1.2. Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2. Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.2.1. De un mapa al modelo . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2.2. Verificacion de factibilidad general . . . . . . . . . . . . . . . . . . . 21

2.2.3. Generacion de los subgrafos . . . . . . . . . . . . . . . . . . . . . . . 24

2.2.4. Factibilizacion de los subgrafos . . . . . . . . . . . . . . . . . . . . . 28

2.2.5. Resolucion del CPP . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2.6. Obtencion de los recorridos . . . . . . . . . . . . . . . . . . . . . . . 30

3.. Capıtulo III: Experimentos y resultados . . . . . . . . . . . . . . . . . . . . . . . 33

3.1. Experimentos, resultados y discusion . . . . . . . . . . . . . . . . . . . . . . 33

3.1.1. Caracterısticas de las instancias . . . . . . . . . . . . . . . . . . . . . 33

3.1.2. Heurısticas de agregado . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.1.3. Heurısticas base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.1.4. Heurısticas combinadas . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.. Capıtulo IV: Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.2. Trabajo a futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.. Apendice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.1. Implementacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.1.1. Hilo principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.1.2. De OSM a Grafo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.1.3. De Grafo a Circuitos . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

iii

Page 6: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1.4. Generacion de Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.1.5. Zonificado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765.1.6. De Grafo a LP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775.1.7. De LP a Recorrido . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

Page 7: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

1. CAPITULO I: INTRODUCCION

1.1. San Miguel de Tucuman

El presente trabajo se enmarca dentro de un convenio entre la Facultad de CienciasExactas y Naturales y la Secretarıa de Asuntos Municipales del Ministerio del Interior de laNacion para el desarrollo de algoritmos de optimizacion combinatoria para la programacionde la recoleccion de residuos en cuatro ciudades del paıs. La recoleccion de residuos hasido objeto de numerosos trabajos de investigacion debido a la amplitud de problemas quesurgen de la misma tanto para el area de grafos como de la programacion lineal; pero elmayor esfuerzo se ha hecho sobre la optimizacion del ruteo de vehıculos y la asignacion dehorarios [1][2][10][12][14][16][17][18][19][27].

Particularmente esta tesis se centra en un problema distinto a los estudiados hastaahora: el del zonificado de una region mediante tecnicas de programacion lineal entera, yel objetivo es enfocar el analisis dentro de un caso concreto, para lo cual se ha elegido elMunicipio de San Miguel de Tucuman.

San Miguel de Tucuman es la capital de la Provincia de Tucuman, situada en el noroestede la Republica Argentina a 1.311 km de la Ciudad de Buenos Aires. Se la conoce como ElJardın de la Republica y, segun el censo realizado por el INDEC en el 2010, con 548.866habitantes, es la 6a mayor ciudad de Argentina despues de Buenos Aires, Cordoba, Rosario,Mendoza y La Plata, ademas la mas importante del Norte argentino. Su crecimiento hahecho que supere los lımites originales, llevandola a ocupar territorios de los departamentos

1

Page 8: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2 1. Capıtulo I: Introduccion

circundantes en todas direcciones, dando ası origen a la conurbacion del Gran San Miguelde Tucuman, el cual cuenta en total con 794.327 habitantes, siendo el 5o aglomerado masimportante del paıs, y el mas poblado del noroeste argentino.

El departamento capital posee una superficie de 90 km2, de los cuales la mayor parteesta urbanizada a excepcion de algunas zonas del cuadrante noreste. El centro de la ciudady sus zonas aledanas concentran la mayorıa de las actividades comerciales, financieras einstitucionales mas importantes de todo el norte argentino. Este sector delimitado porcuatro avenidas (Sarmiento al Norte, Avellaneda - Saenz Pena al Este, Roca al Sur y Alem- Mitre al Oeste) que conforman un rectangulo de 14 cuadras de ancho por 18 cuadras delargo constituye tambien el sector mas densamente poblado debido a la gran cantidad deedificaciones en altura que se desarrollan en dicha superficie. Este sector central comprendedos de los mas importantes barrios de la ciudad: Barrio Norte y Barrio Sur, divididos porla Avenida 24 de Septiembre.

El servicio de recoleccion de residuos en el area metropolitana lo realiza la empresaTransportes 9 de Julio S.A (Figura 1.1). La misma lo lleva a cabo dividiendolo en dosfranjas horarias: diurna y nocturna. Esto se debe en parte a la falta de camiones necesariospara cubrir todas las zonas en paralelo, y en parte a que conviene hacer ciertas zonas endeterminados horarios, por cuestiones de transito y delincuencia.

El servicio se cumple en 40 zonas diurnas y nocturnas que abarcan 12.320 cuadrasaproximadamente, es decir alrededor de 1.273 km de recorrido obligatorio.

Fig. 1.1: Deposito y camiones de recoleccion de la empresa Transportes 9 de Julio S.A

1.1.1. Servicio Diurno

Actualmente el area diurna cubre 712,45 km aproximadamente, con un total de 6.982cuadras, de las cuales 1.710 pertenecen a calles o avenidas mano unica mientras que 5.272a calles o avenidas doble mano.

Esta region se divide en 19 zonas con un camion asignado a cada una, lo cual da unpromedio de 37,5 km cubiertos por camion, i.e., 367 cuadras. La recoleccion de las mismasse realiza de lunes a sabado de 06hs a 14hs.

1.1.2. Servicio Nocturno

En la actualidad, este servicio cubre 560,57 km, los cuales estan divididos en 21 zonasubicadas en el centro de la ciudad, distribuidos entre 5.338 cuadras, de las cuales 3.515pertenecen a avenidas y calles mano unica, y 1.823 doble mano.

Page 9: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

1.1. San Miguel de Tucuman 3

Dentro de las 21 zonas centricas, el area comprendida por las cuatro avenidas es cu-bierta por 9 camiones, y sus recorridos se trazan de una manera especial, haciendo unbarrido horizontal y otro vertical. Es decir que los camiones solo la recorren en lineas rec-tas que entran o salen de la misma, girando solo fuera de esta. La idea es evitar, dentro delarea, giros que desencadenen un mal funcionamiento del transito, dado que la densidad devehıculos es mayor a la de las zonas perifericas. Este microcentro esta compuesto por 2.092cuadras, lo cual hace un total de 229,22 km, donde cada camion recorre aproximadamente25,47 km.

Las 3.246 cuadras restantes de la region, de las cuales 1.696 pertenecen a calles oavenidas mano unica, y 1.550 a avenidas o calles doble mano, forman un total de 331,35km aproximadamente, que son cubiertos por los 12 camiones restantes, dando un promediode 27,61 km por camion, i.e., 270 cuadras.

Es de notar que las zonas centricas abarcan, en promedio, menor cantidad de cuadrasque las perifericas, lo cual se debe a que en las primeras la densidad de poblacion es mayor,generando mas residuos, factor que repercute en el tiempo que demanda recolectar cadacuadra.

El horario en el que se realiza la recoleccion nocturna es de lunes a viernes de 20hsa 04hs, y los sabados de 14hs a 22hs. De esta manera evitan complicar el transito concamiones en los horarios en los que hay mas cantidad de gente por las calles en el areacentrica.

(a) Region diurna (b) Region nocturna

Fig. 1.2: Zonificado actual de San Miguel de Tucuman segun los datos provistos por el Municipio.

1.1.3. Problematica concreta

De martes a sabados, la cantidad de camiones con la que se cuenta alcanza para cubrirıntegramente las zonas; pero al no haber recoleccion los domingos, los lunes se encuentrancon una cantidad de residuos muy grande, llegando a ser excesiva sobre todo entre las 4

Page 10: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

4 1. Capıtulo I: Introduccion

avenidas. El objetivo del convenio de cooperacion en el caso de este municipio es mitigareste problema.

Debido a que no esta dentro de las posibilidades recorrer el area de las 4 avenidas deotra manera que mediante dos barridos, la forma de ganar tiempo es distribuyendo surecoleccion entre mayor cantidad de camiones. Como la cantidad de camiones es limitada,hay que sacarlos de otras zonas, y tienen que ser de la misma franja horaria. A tal finproponemos lo siguiente:

+ Dejando fija la region de las 4 avenidas, rezonificar el area nocturna recuperando lamayor cantidad de camiones posible con el proposito de destinarlos al area conflictiva.

1.2. Objetivo de la Tesis

Si se desea resolver la parte logıstica de la recoleccion de residuos en un area urbanade gran tamano, luego de definir con que elementos se cuenta (cantidad y capacidadde los vehıculos, personal, presupuesto, depositos, franjas horarias permitidas, lugaresinaccesibles,...), uno de los primeros problemas que surgen es el de como distribuir la flotade camiones dentro de la region para que realicen la recoleccion en forma cooperativa. Unaopcion es dividir esta en zonas o areas disjuntas y asignarle una a cada camion o conjuntode ellos. Esta variante es conocida con el nombre de zonificado y es la que se analizara alo largo de este trabajo.

El tamano y distribucion de las zonas va a depender de las caracterısticas fısicas ypolıticas de la region, las cuales se traduciran en limitaciones; y dentro de lo permitidohabra que buscar la solucion que mejor cubra las necesidades. Por ejemplo, con depositoalejado del area urbana, si se asigna un camion por zona, una restriccion posible sobre eltamano serıa que cada zona permitiera al mismo recorrerla ıntegra sin tener que realizarningun viaje de descarga. A su vez el tamano de la flota de camiones pondra una cotasuperior a la cantidad de zonas posibles. En lo que respecta al tiempo que consume larecoleccion, el mismo estara ıntimamente relacionado con la cantidad de cuadras y lacantidad de residuos a recoger; variando este ultimo con la densidad y el nivel adquisitivode la poblacion, con la epoca del ano, el dıa de la semana, el horario, la economıa, lacercanıa de eventos importantes, entre otros factores. Entonces el tamano de la zonatambien estara acotado superiormente por la carga horaria permitida por hombre.

En caso de trabajar todos los camiones en paralelo, un objetivo deseado es lograr quela recoleccion en las distintas zonas consuma aproximadamente el mismo tiempo.

Adicionalmente, por regla general, estas areas se suelen delimitar por grandes avenidasy tratando de que adopten formas geometricas conocidas (esto es, rectangulares, trian-gulares, trapezoidales) a fin de que los conductores de los camiones puedan recordarlasfacilmente.

Debido a la gran variedad de zonificaciones posibles, la estrategia mas utilizada en lapractica para “resolver” este problema es la de prueba y error:

Se parte de una division tentativa de areas y en funcion de los tiempos medidos se vamodificando esta hasta que los camiones tarden aproximadamente lo mismo en regresar.

La principal desventaja de este metodo es el tiempo consumido hasta alcanzar unazonificacion razonable, ya que para tener valores libres de outliers es necesario hacer variasmediciones sobre cada solucion intermedia, lo cual implica varios dıas de recoleccion.

Otra desventaja importante es la imposibilidad de perfeccionar una solucion a causa delas variaciones de los parametros intrınsecos de la region a lo largo del tiempo: en muchos

Page 11: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

1.2. Objetivo de la Tesis 5

municipios el crecimiento poblacional genera que periodicamente se agreguen o extraigancalles o inclusive barrios enteros al servicio de recoleccion, sumado a la variacion que vieneaparejada en la cantidad de residuos.

El objetivo de esta tesis es estudiar un caso particular de region y implementar unprograma basado en heurısticas de programacion lineal entera mixta que sea capaz de,dado un mapa y una ubicacion tentativa de las distintas areas, generar un zonificado quecumpla con los requisitos antes mencionados en un tiempo razonable.

A tal fin se modela el mapa de la region como un multigrafo[7][13] mixtoG = (VG, EG, AG)en el que el conjunto de sus aristas no dirigidas EG ⊆ (VG × VG) representan las avenidasy calles doble mano, sus arcos dirigidos AG ⊆ (VG×VG) las calles y avenidas mano unica,y el conjunto de vertices VG las intersecciones y extremos de todas ellas.

Con este modelo, un zonificado sera una particion del grafo original G en subgrafos(multigrafos mixtos) conexos Gi = (Vi, Ei, Ai), tales que ∀i: Vi ⊆ VG, Ei ⊆ EG ∩ (Vi×Vi),Ai ⊆ AG ∩ (Vi × Vi), cumpliendo ademas que ∀i 6= j : (Ei ∪Ai) ∩ (Ej ∪Aj) = ∅

Para definir el significado de similitud entre estos subgrafos del modelo a fin de podercomparar entre diversas zonificaciones factibles es necesario definir mas detalladamenteel problema de recoleccion de residuos del area a zonificar. Dependiendo de la region, lacomplejidad del problema tiene diversos matices: Puede contarse con contenedores fijos,contenedores moviles; recoleccion comercial, de reciclables, restricciones de giro, restric-ciones de horarios y/o limitaciones de peso de los camiones sobre ciertas calles o avenidas,etc.

En el presente trabajo se va a hacer foco en el conjunto de regiones en las cuales seanecesario que el camion recorra absolutamente todas las calles al menos una vez. Esto in-cluye a las avenidas y calles que permiten la circulacion en ambos sentidos siendo suficienterecorrerlas en al menos uno. Idealmente se intentara hallar el circuito que pase la menorcantidad de veces posible por cada calle. Esto es, el circuito mınimo. Este problema, trasla-dado al modelo de subgrafos definido arriba, esta ampliamente estudiado, es conocido por elnombre de Problema del Cartero Chino (CPP del ingles Chinese Postman Problem) paragrafos mixtos y su version de decision pertenece a la clase NP-Completo[8][9][15][23][11].

Definicion 1.2.1. Dos subgrafos seran similares, en tanto sean similares sus resultadosde resolver el CPP.

Definicion 1.2.2. Una zonificacion de la region en k areas sera aquel particionamientode las aristas del grafo asociado en k conjuntos tales que, junto a sus nodos asociados,formen k subgrafos conexos.

Definicion 1.2.3. Se define entonces una zonificacion optima de la region en k areascomo aquella zonificacion en la cual los k subgrafos son similares y el promedio de losvalores de la funcion objetivo luego de resolver el CPP en cada uno de ellos es el menorposible.

Debido a la complejidad del CPP, es computacionalmente difıcil alcanzar dicho par-ticionamiento. La manera que se propone de acercarse al mismo en esta tesis es definirtentativamente la posicion geografica de los centros de las k zonas y, partiendo de subgra-fos vacıos Gi = ∅ centrados en ellos, ir anadiendo un conjunto de aristas o arcos del grafooriginal G a aquel que, con algun criterio, sea el menor de los k.

Dicho criterio y la seleccion del conjunto de aristas a agregar seran los principalesobjetos de analisis a lo largo del presente trabajo.

Page 12: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

6 1. Capıtulo I: Introduccion

1.3. Definiciones

1.3.1. Teorıa de Grafos

Un grafo G = (V,E) es un par ordenado en el que V es un conjunto de puntos,nodos o vertices y E es un subconjunto del conjunto de pares no ordenados de elementosdistintos de V . Es decir E ⊆ V × V . A su vez, los elementos de E se denominan aristaso arcos.

Un grafo en el cual sus aristas son pares ordenados se dice que es un grafo dirigidoo digrafo, mientras que si son pares no ordenados el grafo es no dirigido (o a vecessimplemente grafo). Dados x e y ∈ V , si e = (x, y) ∈ E se dice que x e y son adyacentesy para grafos dirigidos x incide en y. Dado un grafo dirigido, el conjunto de vecinos ovecindario de un nodo se define como N(y) = {x ∈ V : (x, y) ∈ E}; mientras que el deincidencias es I(x) = {y ∈ V : (x, y) ∈ E}. Si el grafo es no dirigido ambos conjuntoscoinciden.

Un grafo mixto G = (V,E,A) es una tupla donde V es el conjunto de nodos, E es unsubconjunto de pares no ordenados de elementos distintos de V y A es un subconjunto depares ordenados de elementos distintos de V . Este tipo de grafo tiene aristas dirigidas y nodirigidas. Un multigrafo es un grafo en el que puede haber varias aristas entre el mismopar de nodos distintos. Un grafo en el cual existe un vertıce x ∈ V tal que (x, x) ∈ Eo (x, x) ∈ A se denomina pseudografo.

En un grafo no dirigido se denota d(x) al grado del nodo x, el cual es la cantidadde aristas incidentes al mismo. En un digrafo el grado en cambio se divide en grado deentrada, din(x), que es la cantidad de aristas que apuntan hacia el nodo x; y grado desalida, dout(x), que es la cantidad de aristas que parten de x hacia otros nodos. En ungrafo mixto, para este trabajo, se usara la notacion d(x) para la cantidad de aristas no-dirigidas incidentes, y din(x) y dout(x) para las cantidades de aristas dirigidas entrantes ysalientes respectivamente, y dtot(x) = d(x) + din(x) + dout(x) sera el grado total del nodo,es decir la suma de todas las aristas entrantes o salientes del nodo x.

Un camino en un grafo es una sucesion de aristas (x1, y1)(x2, y2)... pertenecientes algrafo tal que yi+1 = xi. En un digrafo un camino es una sucesion de arcos que cumplen lacondicion previa, mientras que en un grafo mixto es una sucesion de aristas y/o arcos. Uncamino simple es un camino que no pasa mas de una vez por el mismo nodo. Un cicloo circuito es un camino que comienza y finaliza en el mismo nodo; y un circuito simplees un circuito de 3 o mas nodos que no pasa mas de una vez por el mismo nodo. En undigrafo los caminos son orientados; mientras que en un grafo mixto los mismos puedenserlo o no dependiendo de si incluyen aristas dirigidas o no. La longitud de un camino esla cantidad de aristas que lo componen; y la distancia d(x, y) entre dos nodos x e y sedefine como la longitud del camino mas corto entre x e y. Un grafo se dice conexo si existeun camino entre todo par de nodos. En el caso de un digrafo ese camino sera orientadoy de existir resultara en un grafo fuertemente conexo, mientras que en un grafo mixtoel camino sera o no orientado dependiendo de las aristas que lo compongan, y tambien elgrafo que cumpla se llamara fuertemente conexo

Un arbol es un grafo conexo sin ciclos. Dado un grafo G = (VG, EG), un arbol T =(VT , ET ) : VT = VG ∧ ET ⊆ EG se denomina arbol generador de G.

Dado un grafo G(V,E) un subgrafo de G es un grafo H(V ′, E′) tal que V ′ ⊆ V yE′ ⊆ E ∩ (V ′ × V ′)

Un grafo que puede ser dibujado en un plano sin que sus aristas se crucen se denomina

Page 13: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

1.3. Definiciones 7

grafo planar.Un grafo G se puede representar de muchas formas en una computadora, entre ellas

en este trabajo se utilizaran principalmente dos: sera visto como una tupla de conjuntosG = (V,E), o como una matriz de adyacencias A ∈ Rn×n donde sus elementos sedefinen como:

aij =

{1 si G tiene una arista entre los nodos i y j0 si no

Al trabajar con grafos mixtos, las aristas (i, j) no dirigidas cumpliran que aij = aji. Yesto presenta un problema ¿como distinguir una arista no dirigida de dos aristas dirigidasopuestas? La respuesta es que, en este problema en los casos en los que se use dicharepresentacion, no interesara tal distincion. El resto del tiempo se usara la representacionpor medio de una tupla de conjuntos que separa las aristas dirigidas de las no dirigidas.

Dado un grafo G(V,E), si se cuenta con una funcion L : E → R de longitud o pesopara las aristas de G, entonces es posible redefinir la longitud de un camino C entredos nodos x e y como la suma de las longitudes de las aristas que lo componen:

L(C) =∑e∈C

L(e)

y tambien definir un camino mınimo entre ellos como aquel C0 que cumple

L(C0) = min{L(C)|C es un camino entre x e y}.

Utilizando la misma funcion se puede definir el peso de un grafo como la suma delos pesos de sus aristas:

L(G) =∑e∈EG

L(e).

Dado un grafo G = (VG, EG), el arbol generador mınimo de G es aquel arbolgenerador de menor peso.

Un circuito euleriano en un grafo o multigrafo G es aquel que recorre cada aristauna y solo una vez. En un grafo dirigido, este circuito sera dirigido. Un grafo, digrafo omultigrafo se denomina euleriano si tiene un circuito euleriano.

Sobre un grafo o multigrafo G conexo puede aplicarse el teorema de Euler, que diceque:

G es euleriano⇔Todo vertice de G tiene grado par⇔Las aristas de G pueden particionarse en circuitos

Si G(V,E) es un digrafo conexo,

G es euleriano⇔ ∀v ∈ V, din(v) = dout(v)

1.3.2. Teorıa de complejidad computacional

Saber si un algoritmo es mejor que otro puede estudiarse desde dos puntos de vista:un algoritmo es mejor cuanto menos tarde en resolver un problema, o bien es tanto mejorcuanta menos memoria necesite para ello. A la idea del tiempo que consume un algoritmopara resolver un problema se la denomina complejidad temporal y a la idea de la

Page 14: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

8 1. Capıtulo I: Introduccion

memoria que necesita el algoritmo se la llama complejidad espacial. A lo largo de estetrabajo, cuando se hable de complejidad, salvo aclaracion, se estara haciendo referenciaa la temporal. Por ser el tiempo dependiente de la maquina donde se ejecuta el algoritmo,el patron de medida que se utiliza es la cantidad de instrucciones.

Ahora, un algoritmo tiene una entrada cuyo tamano muchas veces determinara la can-tidad de instrucciones que requiera para devolver el resultado. Por lo tanto la complejidadtemporal intentara ser una funcion que determine ese numero de instrucciones en funciondel tamano de la entrada.

Entonces, dado un problema, se dice que un algoritmo que lo resuelve es un algoritmoeficiente si presenta o tiene una complejidad polinomial. Y un problema esta bienresuelto, si existen algoritmos eficientes para resolverlo.

Es util clasificar los problemas segun su complejidad, pero esto no es necesario hacerlocon todos los problemas, sino con un grupo particular: La teorıa de la complejidad tieneuna rama denominada NP-Completitud la cual abarca solamente los problemas dedecision, es decir aquellos cuya respuesta es binaria, o sea que ante una entrada devuelvenSI o NO.

Dada una instancia I del problema α, existen 4 versiones o puntos de vista del proble-ma:

Version de evaluacion: Determinar el valor de una solucion optima de α.

Version de optimizacion: Encontrar una solucion optima del problema α para I(de valor mınimo o maximo).

Version de decision: Asumiendo que α es un problema de minimizacion; dado unnumero k, ¿existe una solucion factible S de α para I tal que c(S) ≤ k?

Version de localizacion: Dado un numero k, determinar una solucion factible Sde α para I tal que c(S) ≤ k.

Si se resuelve el problema de decision, es posible, generalmente resolver el problemade evaluacion usando busqueda binaria sobre el parametro k; resolver el problema delocalizacion resolviendo el problema de decision para el parametro k para una versionreducida de la instancia; resolver el problema de optimizacion resolviendo el problema dedecision para el valor optimo para una version reducida de la instancia. Este es uno de losmotivos por los que la NP-completitud centra su atencion en los problemas de decision.

Un problema indecidible es un problema de decision para el cual es imposible cons-truir un algoritmo que siempre conduzca a una respuesta de sı o no correcta. Un problemase dice intratable si no puede ser resuelto por algun algoritmo eficiente. Esto suele dar-se por varios motivos, entre ellos porque el problema es indecidible, porque es decidiblepero no se conocen aun algoritmos polinomiales que lo resuelvan, o bien por requerir elproblema una respuesta de longitud exponencial.

Un problema de decision pertenece a la clase P (Polinomial) si existe un algoritmopolinomial que lo resuelve. Un problema de decision pertenece a la clase NP (Polinomialno-determinısticamente) si, dada una instancia de SI y evidencia de la misma, puedeser verificada en tiempo polinomial. Es trivial ver que P ⊆ NP , lo que no esta resuelto essi la inversa tambien es valida.

Una transformacion o reduccion polinomial de un problema de decision α1 a unoα2 es una funcion polinomial que transforma una instancia I1 de α1 en una instancia I2

Page 15: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

1.3. Definiciones 9

de α2 tal que I1 tiene respuesta SI para α1 si y solo si I2 tiene respuesta SI para α2. Elproblema de decision α1 se reduce polinomialmente a otro problema de decision α2,α1 ≤p α2, si existe una transformacion polinomial de α1 a α2. Las reducciones polinomialescumplen transitividad.

Un problema de decision α es NP-completo si

1. α ∈ NP

2. ∀β ∈ NP, β ≤p α

Cook en 1971 demostro que el problema SAT[4] es NP-completo. Y a partir de entonces,usando la transitividad de las reducciones polinomiales se ha probado la NP-completitudde muchos problemas.

Un problema de decision α es NP-difıcil (o del ingles NP-Hard) si todo otro problemade NP se puede transformar polinomialmente a α. En la practica, esta definicion a vecesse usa por un abuso de lenguaje tambien para problemas que no son de decision y cuyaversion de decision es NP-completa. El problema α es una restriccion de un problema βsi el dominio de α esta incluıdo en el dominio de β. En este caso se dice ademas que β esuna extension de α. Adicionalmente, si α es NP-Completo, entonces β es NP-Difıcil.

La pregunta que forzosamente deberıa surgir a esta altura, es ¿que hacer si la version dedecision del problema que se intenta resolver en la practica es sabido que es NP-completo?Una posibilidad es utilizar heurısticas. Una heurıstica es un algoritmo que intenta ob-tener resultados cercanos al optimo en un tiempo razonable. Aunque a menudo puedenencontrarse instancias concretas del problema donde la heurıstica producira resultadosmuy malos o se ejecutara muy lentamente. Por lo tanto lo que buscan las heurısticas esobtener buenas soluciones para problemas que en la teorıa son muy complejos. Si se desa-rrollan para un problema concreto suelen denominarse simplemente heurısticas, mientrasque los metodos genericos para una familia de problemas se denominan metaheurısticas.Muchas veces estan inspiradas en el comportamiento de la naturaleza.

1.3.3. Problema del Camino Mınimo

Dado un grafo conexo G(V,E), dirigido o no dirigido, el problema de hallar el caminodirigido mınimo entre un nodo x y todos los demas se puede resolver utilizando el conocidoAlgoritmo de Dijkstra para Caminos Mınimos.

El orden de complejidad de dicho algoritmo es O(|V |2 + |E|) = O(|V |2) sin utilizarcolas de prioridad; y O((|E| + |V |)log|V |) = O(|E|log|V |) utilizando colas de prioridadsobre heaps de Fibonacci. Esto quiere decir que es polinomial en el tamano de la entrada,por lo que se dice que es un problema efectivamente solucionable o que esta bien resuelto.

1.3.4. Problema del Cartero Chino

Sus orıgenes se remontan al ano 1960, cuando en China, en un paper en la ActaMathematica Sinica Guan escribe:

Mientras diagramaba la ruta del cartero, descubrı el siguiente problema: “Un cartero,antes de volver a la oficina de correos, tiene que cubrir todo el segmento que le

asignaron. El problema se reduce a encontrar el camino mınimo para el cartero”.

En una nota al pie, menciona que En el servicio postal, la ruta de un cartero es llamadasegmento. Mas adelante anade:

Page 16: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

10 1. Capıtulo I: Introduccion

Este problema puede ser reducido al siguiente: “Dado un grafo planar conexo, queremosdibujar un recorrido (con repeticiones permitidas) que partiendo de un punto vuelva al

mismo minimizando el numero de arcos repetidos.”

Es decir que dado un grafo G = (V,E) con longitudes positivas asignadas a sus aristasL : E → R+, el CPP (Problema del Cartero Chino, por sus siglas en ingles) consiste enencontrar un circuito de longitud mınima que pase por cada arista de G al menos una vez.Es trivial ver que si G es euleriano, cualquier circuito euleriano es solucion del problema.

Si bien Guan se restringio a un grafo planar, sus observaciones son interesantes, elve que un cartero nunca tiene que atravesar una arista mas de dos veces; por lo tantoel problema lo reduce a hallar el mınimo conjunto de aristas J tales que anadiendo unaarista paralela a cada una de ellas resulte en un grafo euleriano. Asimismo Guan anade unalgoritmo que solucionarıa dicho problema, pero desafortunadamente, como dijo Fulkersonen 1964 al revisarlo, la construccion propuesta es mas facil de enunciar que de hacer.

Para analizar la complejidad de este problema es necesario definir sus versiones:

Version de evaluacion: Determinar el valor de una solucion optima, o sea la longituddel circuito euleriano de G de longitud mınima.

Version de optimizacion: Determinar un circuito euleriano de G de longitud mıni-ma.

Version de decision: Dado un numero k, ¿existe un circuito euleriano de G delongitud menor o igual a k?

Version de localizacion: Dado un numero k, determinar un circuito euleriano de Gde longitud menor o igual a k.

En un grafo dirigido el CPP puede ser resuelto como un problema de calculo de flujomınimo, el cual es resoluble en tiempo polinomial. En caso de ser no-dirigido, tambienexisten algoritmos polinomiales para resolverlo. Por otro lado, si el grafo es mixto, Papa-dimitriou en 1976 demostro que el problema de decision asociado pertenece a la clase delos NP-Completos. Sin embargo, Edmonds y Johnson en 1973, 3 anos antes, encontraronque para los grafos mixtos en los cuales cada vertice tiene grado total par, el problema estambien resoluble en tiempo polinomial.[3]

1.3.5. Programacion Lineal Entera

Existe una gran cantidad de problemas (reales) cuya dificultad se basa en encontrar unobjeto optimo dentro de un conjunto de objetos. Aun mas, el tamano de dicho conjuntopuede ser enorme, a tal punto que la busqueda exhaustiva dentro de este no sea un caminofactible.

Una alternativa entonces es modelar estos problemas matematicamente e intentar re-solverlos computacionalmente.

Un problema de Programacion Lineal (LP, del ingles Linear Programming) es unproblema de optimizacion con restricciones en el cual se busca un conjunto de valores paravariables continuas (x1, x2, ..., xn) tal que maximice o minimice una funcion objetivo linealz, satisfaciendo a su vez un conjunto de restricciones lineales (el cual es un sistema deequaciones y/o inecuaciones lineales)[24][25].

Matematicamente, un LP se expresa de la siguiente manera:

Page 17: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

1.3. Definiciones 11

maximizar z =∑

j cjxj

sujeto a∑

j aijxj ≤ bi (i = 1, 2, ...,m)

xj ≥ 0 (j = 1, 2, ..., n)

Un problema de Programacion Lineal Entera (siglas PLE, IP del ingles: IntegerProgramming) es un LP en el cual al menos una de las variables esta restringida a valoresenteros. Generalmente si admite variables enteras y variables continuas, se le da el nombrede problema de Programacion Lineal Entera Mixta (PLEM, o MIP del ingles: mixedinteger programming), mientras que si todas sus variables son del tipo entero, se lo sueledenominar problema de PLE puro

Un PLEM, matematicamente, se define de la siguiente manera:

maximizar z =∑

j cjxj +∑

k dkyk

sujeto a∑

j aijxj +∑

k gikyk ≤ bi (i = 1, 2, ...,m)

xj ≥ 0 (j = 1, 2, ..., n)yk ∈ Z+ (k = 1, 2, ..., p)

Con los parametros de entrada cj , dk, aij , gik, bi ∈ RUsando la notacion matricial, el mismo PLEM puede ser expresado:

maximizar z = cTx+ dT y

sujeto a Ax+Gy ≤ bx ≥ 0y ∈ Zp

+

donde m,n y p son la cantidad de restricciones, variables continuas y variables enterasrespectivamente;

c = (cj) es un vector de n elementos

d = (dk) es un vector de p elementos

A = (aij) es una matriz de m× n

G = (aik) es una matriz de m× p

b = (bi) es un vector de m constantes (llamado tambien columna de la mano derecha)

x = (xj) es un vector de n variables continuas

y = (yk) es un vector de n variables enteras

Un caso especial de PLE es aquel en el cual todas sus variables se restringen a valoresbinarios, el cual se define como problema de Programacion Lineal Entera Binaria(PLEB o BIP del ingles Binary Integer Program). Esta clase de problemas es importanteya que la mayor parte de los problemas de optimizacion combinatoria se puedenformular como un PLEB.

Un PL se dice que esta expresado de forma estandar si se cumple que:

Page 18: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

12 1. Capıtulo I: Introduccion

1. La funcion objetivo es maximizar una combinacion lineal de las variables.

2. Todas las restricciones son desigualdades de la forma ≤.

3. Cada variable entera esta definida sobre un conjunto de enteros consecutivos cuyolımite inferior es 0 y el superior infinito.

4. Cada variable continua es no negativa sin lımite superior.

De otro modo, se dice que esta expresado en forma no-estandar. Todo problema demaximizacion puede ser reformulable como uno de minimizacion.

1.4. Coordenadas geograficas

Las coordenadas geograficas son un sistema de referencia que utiliza las dos coorde-nadas angulares, latitud (Norte y Sur) y longitud (Este y Oeste) y sirve para determinarlos laterales de la superficie terrestre (o en general de un cırculo o un esferoide). Estas doscoordenadas angulares medidas desde el centro de la Tierra son de un sistema de coorde-nadas esfericas que estan alineadas con su eje de un sistema de coordenadas geograficasincluye un datum, meridiano principal y unidad angular. Estas coordenadas se suelenexpresar en grados sexagesimales:

La longitud mide el angulo a lo largo del Ecuador desde cualquier punto de la Tierra.Se acepta que Greenwich en Londres es la longitud 0 en la mayorıa de las sociedadesmodernas. Las lıneas de longitud son cırculos maximos que pasan por los polos y sellaman meridianos. Para los meridianos, sabiendo que junto con sus correspondientesantimeridianos se forman circunferencias de 40.007,161 km de longitud, 1 grado dedicha circunferencia equivale a 111,131 km.

La latitud es el angulo que existe entre un punto cualquiera y el Ecuador, medidasobre el meridiano que pasa por dicho punto. La distancia en kilometros a la queequivale un grado de dichos meridianos depende de la latitud, a medida que la latitudaumenta disminuyen los kilometros por grado.

1.5. Contenido de la Tesis

En el Capıtulo II del presente informe se vera en primer lugar un planteamientodetallado del problema, dentro del cual se enumeraran las caracterısticas de la regiona zonificar junto con las limitaciones y requerimientos formales e informales.

Seguidamente se presentara el modelo formal, y se estudiaran sus estructuras aso-ciadas junto con la teorıa que hay detras de ellas. A continuacion se hara un analisisexhaustivo de los diversos algoritmos utilizados acompanados de las variantes desa-rrolladas para los distintos pasos y metodos que llevan a la resolucion del problema.

En el Capıtulo III se incluye un compendio de los experimentos realizados conalgunos de los resultados obtenidos a lo largo de la investigacion. En primer lugar sepresenta una serie de decisiones tomadas para suplir la ausencia de datos precisos dedeterminados parametros relacionados con las instancias analizadas para un prolijo

Page 19: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

1.5. Contenido de la Tesis 13

y mas completo cubrimiento de las mismas. A continuacion se muestran los experi-mentos junto con los resultados obtenidos para las distintas heurısticas principales,dando unas breves conclusiones; y por ultimo se resumen los resultados de resolverel problema inicial utilizando las heurısticas desarrolladas en el capıtulo anterior.En lo que respecta a los resultados se analizo tiempos de ejecucion y calidad de losmismos, los cuales se veran plasmados en tablas, graficos y mapas a lo largo de estaseccion.

En el Capıtulo IV, analizando los experimentos y resultados obtenidos en el tra-bajo de investigacion llevado a cabo, primero se enuncian las conclusiones que sedesprenden del mismo; y a continuacion se enumera una serie de posibles trabajos afuturo.

Page 20: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

14 1. Capıtulo I: Introduccion

Page 21: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2. CAPITULO II: PROBLEMA Y ENFOQUE DE RESOLUCION

2.1. Planteamiento del problema

A lo largo de esta tesis principalmente se intento resolver un problema de zonificacionmediante heurısticas basadas en programacion lineal entera.

2.1.1. Requerimientos

El objetivo principal entonces es, partiendo de un mapa de una region determinada yteniendo definido el personal con el que se cuenta para realizar el servicio de recoleccion enla misma, buscar la mejor subdivision de esta en areas similares a fin de asignarleuna a cada vehıculo. Seran similares siempre y cuando un camion tarde aproximadamenteel mismo tiempo en recolectar los residuos en cada una de ellas. Lo cual se traduce abuscar la menor varianza del conjunto de los tiempos que tardan todos los camiones enrealizar sus servicios respectivos. Se buscara ademas, como una restriccion no formal perofuerte, que las zonas sean de contorno sencillo, a fin de que sean facilmente delineablesy memorizables por los choferes de los camiones.

El lımite del tamano de cada area estara dado por el tiempo que consuma al vehıculorecorrerla, teniendo como cota superior 8hs diarias.

En las areas a zonificar de la ciudad en cuestion hay contenedores y recoleccion domi-ciliaria, por lo que es necesario que los camiones recorran absolutamente todas las calles.

Un camion puede recorrer calles de zonas aledanas si de esa manera obtiene beneficiosen el tiempo total empleado para recolectar ıntegramente su area.

Se estima que cada segmento (cuadra) del area a zonificar consume un tiempo direc-tamente proporcional a la distancia euclideana que hay entre sus esquinas. Asimismo, seestima que el tiempo consumido en una cuadra de recoleccion, es bastante mayor que eltiempo que consume una cuadra de paso, es decir aquella que el camion se ve forzado arecorrer sin juntar residuos. Si un camion pasa dos veces por una cuadra de su zona, unade las dos pasadas sera con recoleccion, mientras que la otra de paso.

Debido a las particularidades de la region a estudiar, no se ha tenido en cuenta elviaje al deposito de los camiones asumiendo que la capacidad de los mismos sobra pararecolectar todos los residuos de su zona. Del mismo modo se considera que la autonomıa delos vehıculos es mas que suficiente para salir del deposito, recolectar y volver a descargar,sin necesidad de recargar combustible.

Se asume que no hay desniveles pronunciados, por lo que tampoco afecta el desgaste delos camiones lo cual se traduce en que el recorrido de los mismos sera indistinto mientrasrecolecten todos los residuos de su zona.

Es necesario aclarar que, en lo que respecta a las restricciones relacionadas con losrecorridos, se trato de simplificar lo mas posible las mismas, debido a no tener mayorrelevancia en el tema a estudiar, y por aumentar sobremanera la complejidad computacio-nal del problema. Es por esto que, entre otras cosas, no se ha hecho hincapie en girosprohibitivos, los cuales ya han sido profundamente estudiados en trabajos anteriores[26];ni se han tomado en cuenta los tiempos consumidos por los semaforos, lomadas o cunetas;ni lımites de velocidad, de horarios, o de peso dados por reglamentacion o por el tipo desuelo.

15

Page 22: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

16 2. Capıtulo II: Problema y enfoque de resolucion

2.1.2. Modelo

En una primera instancia, el mapa M de la region a estudiar se modelara como ungrafo mixto G = (VG, EG, AG). Dicho grafo ademas de ser planar, cumplira que:

el conjunto de aristas no dirigidas EG ⊆ (VG × VG) representara los segmentos delas calles y avenidas doble mano.

sus arcos dirigidos AG ⊆ (VG × VG) seran los segmentos de calles y avenidas manounica, y su sentido estara dado por el orden de sus nodos.

el conjunto de vertices VG representara entonces los extremos e intersecciones desegmentos de caminos vehiculares. Estos nodos tendran asociadas sus respectivascoordenadas respecto de algun punto en el espacio.

Se cuenta ademas con una funcion de ponderacion L : (EG∪AG)→ R+ para las aristasde G, cuyo valor es la distancia euclideana de los nodos que componen la arista sobre lacual se evalua. Aun no se tiene en cuenta la cantidad de residuos en cada arista.

Es importante aclarar que cuando se trabaja con mapas, para representar curvas suelenusarse varios segmentos rectos, por lo que una cuadra (segmento de camino vehiculardeterminado por dos intersecciones con otros caminos) quizas comprenda un conjunto dearistas o arcos. En los mapas utilizados en este trabajo, se utiliza este recurso a fin derepresentar mas fielmente la realidad, y para evitar superposicion de caminos. Es por estemotivo, por venir los datos de un mapa con estas caracterısticas, que en el grafo G nopuede haber mas de una calle (mano unica o doble mano) entre un mismo par de esquinas,es decir que G no es multigrafo y cumple ademas que AG ∩ EG = ∅.

Para reducir el numero de variables, los algoritmos implementados en esta tesis tra-bajan con un modelo simplificado en el cual idealmente se eliminan todos los nodosinutiles del grafo original; es decir, aquellos nodos que unen exactamente dos seg-mentos con el mismo sentido y categorıa (calle residencial o avenida).

Es importante notar que una cuadra que en la realidad tiene una curva pronunciada,y se representaba en G como una sucesion de aristas o arcos, se reemplazara ahora porun solo segmento recto; por lo que en este grafo simplificado, la multiplicidad de aristasentre un mismo par de nodos aparece ahora como algo posible, e incluso puede darse unao mas aristas o arcos entre un mismo nodo. Por lo que en caso de simplificar todos losnodos inutiles, el mismo serıa un pseudo multigrafo mixto que cumplirıa ademas queAG∩EG = ∅. En mapas de diversas ciudades quizas tenga sentido, pero en la zona que caebajo el analisis de este problema (i.e., San Miguel de Tucuman), dichas superposiciones sedan muy pocas veces, no representando una disminucion en la cantidad de variables queamerite una estructura tan robusta. Por lo tanto en el modelo no se simplificaran aquellassucesiones de nodos inutiles, que al hacer la reduccion den por resultado una arista (x, y)con x = y o (x, y) ∈ (AG ∪ EG).

De aquı en mas, a este grafo simplificado se lo denominara H = (VH , EH , AH), ysera una transformacion del grafo G tal que:

el conjunto de aristas no dirigidas EH ⊆ (VH × VH) ⊆ (VG × VG) representara lossegmentos comprendidos entre los extremos, intersecciones o cambios de categorıa(esto es, avenida o calle) de los caminos doble mano; y cumplira que para toda arista(x, y) del grafo H, con x 6= y, existe un camino C = {n1, ..., nk} ⊆ VG compuesto por

Page 23: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.1. Planteamiento del problema 17

aristas doble mano de G tal que todos los nodos internos de C son inutiles, mientrasque sus extremos n1 y nk no. Ademas se debe cumplir una de las tres condicionessiguientes: o bien C = (x, y) o bien (x, y) = (n1, nk) /∈ EG y ninguna de las aristasque forman a C estan en H, o bien (x, y) pertenece a C siendo que o C es un circuitoo la arista que reemplazarıa al camino C ya existe en el grafo H.

del mismo modo, sus arcos dirigidos AH ⊆ (VH×VH) ⊆ (VG×VG), representaran lossegmentos comprendidos entre los extremos, intersecciones o cambios de categorıa(esto es, avenida o calle) de los caminos de unica mano; cumpliendo que ∀(x, y) ∈ AH ,con x 6= y, existe un camino dirigido C = {n1, ..., nk} ⊆ VG compuesto por arcospertenecientes a AG con todos sus nodos internos inutiles, sus extremos n1 y nk noinutiles, y de modo tal que: C = (x, y), o bien (x, y) = (n1, nk) /∈ AG y ninguno delos arcos que forman a C estan en H, o bien (x, y) pertenece a C siendo que o C esun circuito o el arco que reemplazarıa al camino C ya existe en el grafo H.

el conjunto de vertices VH ⊆ VG representara unicamente los extremos e interseccio-nes de caminos vehiculares, o la union de dos segmentos de los mismos con distintosentido y/o categorıa. Se cumplira que un vertice v pertenecera a VH si y solo siexiste un vertice y tal que la arista o arco (v, y) o su inversa es un arco o arista delgrafo H.

Por su parte, la funcion de ponderacion P : (EH ∪ AH) → R+ para las aristas de H,estara definida como:

P (x, y) =

L(x, y) si (x, y) ∈ (EG ∪AG)∑L(Ci) si C = {(x, n1), ..., (nk, y)} ⊆ EG o C ⊆ AG

con ni nodos inutiles

(a) Grafo original G (b) Grafo simplificado H

Fig. 2.1: Simplificacion del grafo original mediante la eliminacion de los nodos inutiles. Azuladosse marcan los nodos producidos por errores humanos al dibujar el mapa; en amarillo losnecesarios para el modelado de curvas, en verde los que son interseccion de solo dos callescon distinto nombre y mismo sentido, y anaranjados los nodos utiles. En estas imagenesno se marca el sentido de los arcos

Page 24: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

18 2. Capıtulo II: Problema y enfoque de resolucion

Con esta definicion formal del modelo, un k zonificado sera una particion del grafo Hen K subgrafos conexos Hi = (Vi, Ei, Ai) tales que ∀i: Vi ⊆ VH , Ei ⊆ EH ∩ (Vi × Vi),Ai ⊆ AH ∩ (Vi × Vi), cumpliendo ademas que ∀i 6= j : Ei ∩ Ej = ∅, Ai ∩Aj = ∅.

Esto genera una restriccion incluso mas fuerte sobre el grafo original G, debido a quela mayorıa de los caminos que contienen nodos inutiles en el mismo, perteneceran a unau otra zona ıntegramente.

Para calcular el tiempo que consumirıa un camion en recolectar todos los residuos desu zona es necesario resolver el problema del cartero chino sobre el subgrafo asociado; peropara ello se requiere que el mismo tenga ciertas caracterısticas.

Definicion 2.1.1. Una condicion necesaria y suficiente para que en un grafo mixtoexista una solucion del CPP, es que el mismo sea fuertemente conexo. En este trabajoun grafo con dichas caracterısticas se denominara factible.

Al ser un mapa el origen del grafo, el mismo debe ser factible. Y como la simplificacionpreserva factibilidad, entonces para zonificar es necesario dividir un grafo H, que se sabefactible, en k subgrafos (H1, ...,Hk) disjuntos que se desean factibles. Este objetivo nosiempre es alcanzable. Por ejemplo, si H es un grafo consistente en un unico circuitosimple (sin nodos repetidos); esta claro que no es posible dividirlo en k subgrafos factiblesdisjuntos, para cualquier valor de k > 1.

Es facil ver que para cualquier particionamiento (H1, ...,Hk) del grafo factible H =(VH , EH , AH) en k subgrafos disjuntos, existen k conjuntos de aristas (C1, ..., Ck) talesque Hi ∪ Ci sea factible para todo i = 1...k. Sea Hi = (VHi , EHi , AHi), basta tomarCi = (AH ∪ EH)\(AHi ∪ EHi).

Debido a ese resultado siempre es posible factibilizar las zonas agregandoles aristasdel grafo H; y es por este mismo motivo que se resolvio en este trabajo que un areaesta compuesta por aristas obligatorias, que son las que representan los caminos que uncamion debe recolectar, y optativas, que son las que representan los caminos que puedeatravesar (sin recolectar) para cumplir dicho cometido.

Para calcular el costo del area, es decir el tiempo consumido por el camion en recorrerlarecolectando los residuos de sus calles obligatorias, es necesario resolver esta variante delcartero chino sobre el subgrafo mixto asociado factibilizado con arcos y aristas optativas.Como un arco o una arista obligatoria, una vez recolectados los residuos, se convierte enarco o arista de paso, se determino que para el calculo del circuito todos los arcos y lasaristas fueran tratadas como de paso, diferenciando unicamente las obligatorias forzandoa que aparezcan al menos una vez, y luego al circuito resultante se le adiciona el tiempoque consume la recoleccion. Si denominamos f = costorecoleccion

costopasoentonces este tiempo es-

tara dado por f − 1 veces el costo de pasar por los arcos y aristas obligatorias del area (sedecrementa en 1 por ya haber contado una vez cada arista obligatoria).

Dos zonas se diran similares si la diferencia entre sus costos es 0, e ira disminuyendoel grado de similitud a medida que aumente dicha diferencia.

Traduciendo entonces los requerimientos al modelo, una zonificacion optima de laregion en k areas se definira como aquel particionamiento del grafo asociado en k subgrafosconexos similares, siendo ademas el promedio de los resultados del CPP en todos ellos elmenor posible y dando prioridad a un grado de similitud mayor.

El requisito informal de la forma de las areas se traduce en buscar que los subgrafossean conexos, y que la varianza de las distancias euclideanas de los nodos mas alejados del

Page 25: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.2. Algoritmos 19

centro de la misma en las distintas direcciones sea pequena.

2.2. Algoritmos

Los algoritmos utilizados en este trabajo fueron principalmente desarrollados para elcaso particular de la region bajo estudio, aunque los mismos pueden adaptarse para resolverla zonificacion en regiones con otras caracterısticas mirando de garantizar el cumplimientode las precondiciones de cada uno de ellos.

La idea principal del metodo de resolucion formulado es la de ir generando las areasiterativamente de manera tal que en cada una de estas iteraciones la similitud entre ellassea lo mayor posible.

Al elegirse un grafo como la estructura que modela el mapa, en el cual sus aristas seranlas calles y avenidas doble mano, sus arcos las mano unica y los nodos las interseccionesentre ellas, se desprende inmediatamente que las areas seran tambien grafos; en particular,seran subgrafos del grafo que representa el mapa original; por lo que para poder generarlasiterativamente es menester encontrar una subestructura de dicha estructura tal que esta seadescribible como un conjunto finito de ellas. Siendo que en cada iteracion se buscara agregaruna a una dichas subestructuras, se busco que estas fueran pequenas. Por este motivo sedetermino que la subestructura fuera una arista o arco con sus nodos asociados, o unconjunto de estos que cumpliera algunas mınimas condiciones que se veran mas adelante.

Entonces, para zonificar el mapa original M , la idea inicial es:

1. Generar el grafo G asociado mediante una transformacion que se buscara reversiblea fin de poder mostrar los resultados de los pasos intermedios.

2. Simplificar el grafo G en un nuevo grafo H mediante otra transformacion tambienreversible.

3. Definir segun algun criterio establecido un conjunto finito C tal que la union de losCi determine a H.

4. Ir generando, a partir de la extraccion de elementos de dicho conjunto C (que podrıaser o no disjunto), las diversas zonas o areas Ai

De esta breve introduccion se desprenden varios interrogantes. Los mas importantesson ¿que elemento del conjunto seleccionar en cada iteracion? y ¿a que zona agregarselo?

Como los subgrafos generados tienen que representar submapas del mapa original, unacaracterıstica deseada en ellos sera que sea posible recorrer sus mapas asociados, lo cual setraduce en que sea posible resolver en ellos el problema del cartero chino. Por este motivo sepedira, que dichos subgrafos sean fuertemente conexos, condicion necesaria y suficiente. Lamanera de garantizar ese requisito es, entre otras cosas, demostrando que cada subgrafo esdescriptible como una union de circuitos. Por lo tanto cada area forzosamente estara dadapor una union de circuitos. Ahora bien, como hay calles obligatorias y optativas, lo quees obligatorio en realidad es que las calles pertenecientes al recorrido del camion seandescribibles mediante una union de circuitos, por lo tanto un area completa debe ser unaunion de circuitos, pero sus aristas obligatorias bien podrıan no serlo. De aquı surgen dosde los principales criterios analizados en este trabajo: agregar en cada iteracion o bien uncircuito, o bien una arista (o arco). En el segundo caso sera necesario agregarle al areacomo optativos un conjunto de circuitos que la cubran completamente para garantizarfactibilidad.

Page 26: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

20 2. Capıtulo II: Problema y enfoque de resolucion

Para decidir a que zona agregar la arista (o arco) o el conjunto de estas, la hipotesisfundamental del presente trabajo es que la solucion del CPP esta fuertemente ligada conla cantidad de aristas y arcos que posee el grafo a resolver. Por este motivo se analizarondiversos criterios de manera de intentar agregar la arista o el conjunto de estas a aquelgrafo cuyo resultado del CPP fuera menor. Debido a la complejidad del problema delcartero chino idealmente en dichos criterios se intento requerir su resolucion la menorcantidad de veces posible.

El siguiente es el pseudocodigo del algoritmo general:

Algorithm 1 Algoritmo de zonificacion

1: function ZoningAMap(M : osmMap,K : osmKnodes,H : heuristic)2: G := osmToGraph(M)3: S := simplifyGraph(G)4: S,B,E := graphByCircuits(S)5: if not checkFactibility(S) then6: printErrors(S,G,B)7: STOP8: end if9: GrowedAreas := growAreas(S,K,B,H)

10: for k ∈ K do11: Areak := zoning(GrowedAreas, k)12: Zimplk := graphToZIMPL(Areak)13: LPk := ZIMPL(Zimplk)14: Solutionk := SCIP (LPk)15: Pathk := solutionToPath(Solutionk, S,G)16: end for17: end function

A continuacion en esta seccion se vera un detalle de cada una de las partes de estealgoritmo necesarias para resolver el problema planteado utilizando el modelo presentadoen la seccion anterior. La resolucion comienza convirtiendo un mapa en formato osm aldigrafo G que lo modela, seguido de la simplificacion del mismo en H, de la manera queya se vio al inicio de este capıtulo. Posteriormente se verifica la factibilidad de H y en casopositivo se generan, usando alguna heurıstica de las desarrolladas, las distintas zonas Hi,se factibilizan y se generan los modelos de PLEM asociados para obtener una solucion delproblema del cartero chino en cada una. Esas soluciones son por ultimo reescritas comorecorridos.

2.2.1. De un mapa al modelo

Algorithm 1 Algoritmo de zonificacion

...

2: G := osmToGraph(M)3: S := simplifyGraph(G)

...

Page 27: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.2. Algoritmos 21

Los datos del mapa M del municipio vienen dados en formato .osm (de openStreet-Map), el cual consta de un conjunto de nodos NM = {n1, ..., nj}, un conjunto de caminosWM = {w1, .., wk}, y un conjunto de restricciones RM .

Cada nodo ni ∈ NM tiene asociado un par de coordenadas (latitudi, longitudi) ∈ R2

y un conjunto de atributos

Un camino wi ⊆ NM × .. × NM esta definido como una sucesion ordenada de unsubconjunto del conjunto de nodos y un listado de atributos. Dependiendo de estos,el camino representara una calle doble mano, una avenida, un rıo, una vıa de tren, elperımetro de un edificio publico, etc. En caso de ser una calle mano unica, el ordende los nodos indicara el sentido de la misma.

Las restricciones ri ⊆ WM × NM × WM determinan los giros prohibidos de uncamino a otro camino a traves de un nodo.

La conversion de este formato al grafo G sobre el cual se trabajara vendra dada por:

el conjunto de aristas no dirigidas EG ⊆ (VG × VG) ⊆ (NM × NM ) cumplira que∀(x, y) ∈ EG : ∃wi ∈ WM tal que wi = (n1, ..., x, y, ..nn) y cuyos atributos indicanavenida o calle residencial de doble sentido.

sus arcos dirigidos AG ⊆ (VG × VG) cumpliran que ∀(x, y) ∈ AG : ∃wi ∈ WM talque wi = (n1, ..., x, y, ..nn) y cuyos atributos indican avenida o calle residencial deun solo sentido.

el conjunto de vertices VG ⊆ NM cumplira que v ∈ VG ↔ ∃y : (v, y) ∈ (EG ∪ AG) ∨(y, v) ∈ (EG ∪AG).

Al trabajar con coordenadas geograficas, la distancia euclideana en km entre dos nodosn1 y n2 estara dada por:

dist(n1, n2) = acos((sin(π1)× sin(π2)× cos(θ1 − θ2) + cos(π1)× cos(π2)))× 6373km.[5][6]

siendo 6373 km el radio de la tierra, y

ni = (lati, loni)πi = (90o − lati)× π/180o

θi = loni × π/180o

Dicho valor se utilizara para la funcion de ponderacion L : (EG ∪ AG)→ R+ para lasaristas de G.

2.2.2. Verificacion de factibilidad general

Para verificar la factibilidad del grafo asociado al mapa a zonificar, se han utilizadodos algoritmos de complejidad polinomial, utilizando la siguiente propiedad.

Proposicion 2.2.1. Sea G = (VG, EG, AG) un grafo mixto, si vale que el grafo no dirigidoF = (VF , EF ) : VF = VG ∧ EF = (AG ∪ EG) es conexo, y si toda arista de G tieneun circuito que la contiene, es decir ∀(x, y) ∈ (EG ∪ AG), existe un camino C tal queC = {(y, n1), ..., (nk, x)} ⊆ (EG ∪AG), entonces G es fuertemente conexo.

Page 28: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

22 2. Capıtulo II: Problema y enfoque de resolucion

Demostracion. Supongase que G no es fuertemente conexo. Entonces existe un par devertices x, y ∈ VG tales que no existe un camino M = {(x, n1), ..., (nk, y)} ⊆ (EG ∪ AG).Sin embargo al ser F conexo existe un camino R tal que R = {(x, n1), ..., (nk, y)} ⊆(EF ); necesariamente en dicho camino tiene que haber una arista (ni, ni+1) ∈ EF tal que(ni, ni+1) /∈ (EG ∪ AG) pero (ni+1, ni) ∈ AG; entonces, por la primer condicion existeun camino C = {(ni, a1), ..., (ak, ni + 1)} ⊆ (EG ∪ AG), por lo tanto puede escribirse uncamino K en G, basado en R pero en el cual cada arista de R que cumpla lo anterior sereemplaza por el camino que une sus extremos en G. De este modo el camino K une xcon y en G; pero esto contradice la hipotesis del absurdo. 2

Por lo tanto lo que se busco fue que existiera un circuito para cada arista y arco de G,y que el grafo F asociado fuera conexo. A continuacion se detalla la manera de conseguirloexplicando las siguientes lıneas del algoritmo principal.

Algorithm 1 Algoritmo de zonificacion

...

4: S,B,E := graphByCircuits(S)5: if not checkFactibility(S) then6: printErrors(S,G,B)7: STOP8: endif

...

Division del grafo en ciclos

Para hallar un circuito para cada arista del grafo mixto H = (VH , EH , AH) se uti-lizo el algoritmo de Dijkstra para camino mınimo entre dos nodos (es decir, laversion que detiene el algoritmo original al hallar la solucion para los nodos en cues-tion) aplicado entre cada par distinto (x, y) con (y, x) ∈ AH . El camino C halladoque une y con x es mınimo.

Proposicion 2.2.2. Un camino mınimo no puede tener nodos repetidos.

Demostracion. Sea C el camino que une y con x. Si el mismo tuviera nodos repetidos,serıa de la forma C = {y, α, u, β, u, γ, x} con u ∈ VH , α, γ ⊆ (VH ∪ ∅) y β ⊆ VH .Pero {y, α, u, γ, x} es menor y no fue solucion de Dijkstra. Absurdo. 2

El Algoritmo 2 representa el pseudocodigo utilizado. Por precondicion source 6=destine. Se puede garantizar que el camino devuelto que une source con destine esmınimo porque la funcion extraer minimo retorna el nodo mas cercano a source delos que aun no se han terminado de explorar sus adyacencias.

Grafo conexo

Verificar si el grafo H es conexo, se hace mediante el algoritmo conocido con elnombre de BFS (por sus siglas en ingles Breadth-First Search, cuya traduccionpodrıa ser Busqueda a lo ancho), aplicado al grafo no dirigido F = (VF , EF ) : VF =

Page 29: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.2. Algoritmos 23

Algorithm 2 Algoritmo de Dijkstra

1: function Dijkstra(H : graph, s : source, d : destine)2: for n ∈ VH do3: distance[n] =∞4: father[n] = NULL5: end for6: Q := Queue7: distancia[s] = 08: adicionar(Q, (s, distancia[s]))9: while not empty(Q) do

10: u := extraer minimo(Q)11: if u = d then12: path := []13: while father[u] do14: path := u • path15: u := father[u]16: end while17: return path18: end if19: for v ∈ adyacencia[u] do20: if distancia[v] > distancia[u] + peso(u, v) then21: distancia[v] := distancia[u] + peso(u, v)22: father[v] := u23: adicionar(Q, (v, distancia[v]))24: end if25: end for26: end while27: return “ERROR: not Connected Graph”28: end function

Algorithm 3 Algoritmo BFS

1: function BFS(F : graph)2: v ← VF3: Q := Queue(v)4: discovered(v) := True5: while not empty(Q) do6: v ← Q.dequeue()7: for (v, w) ∈ F.adjacentEdges(v) do8: if not discovered(w) then9: Q.enqueue(w)

10: discovered(w) := True11: end if12: end for13: end while14: end function

Page 30: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

24 2. Capıtulo II: Problema y enfoque de resolucion

VH ∧ EF = (AH ∪ EH), revisando que todos los nodos sean alcanzables a partir deuno cualquiera.

Si al finalizar el mismo, existe un nodo v ∈ F tal que discovered(v) = False entoncesel grafo no es conexo.

Deteccion y solucion de errores

¿Que significa que un arco no este contenido en ningun circuito?

Un arco sin circuito implica que el problema del cartero chino no tiene solucion, locual se traduce en que no es posible partiendo de algun punto del mapa, recorrerla calle que representa dicho arco y volver luego al lugar de salida; o sea que, esimposible que un camion en su recorrido pase por dicha calle.

Un mapa de una ciudad tiene que ser factible por ser precisamente la representacionde las calles utilizadas para ir de algun lugar a cualquier otro. Entonces de existirarcos sin circuito, puede ser que los datos sean incorrectos, caso en el cual hay querevisar el mapa y corregirlo contrastando con la realidad; o bien puede darse queeste conjunto de calles intransitables se deba a un mal recorte del mapa original.Esto es, que se le haya quitado un segmento a algun camino que sale y entra a laciudad. En el grafo simplificado H, el conjunto de arcos sin circuito esta compuestopor aquelos que representan calles mano unica pertenecientes a un camino sin salidao sin entrada. A su vez dichos arcos pueden particionar el grafo original generandoque existan circuitos desconectados del resto del grafo.

La manera de solucionar este inconveniente es, una vez verificada la correctitud delos datos del mapa, eliminar las aristas sin circuito o recortar nuevamente el mapaampliando la zona si se desea abarcarlas.

En este trabajo el algoritmo automaticamente elimina dichos arcos o aristas sincircuito, y luego revisa que el grafo quede conexo mediante BFS.

¿Que significa que el grafo con todas sus aristas con circuitos no sea conexo?

Al igual que un arco sin circuito, esto implica que no hay solucion posible para elproblema del cartero chino, lo cual quiere decir que es necesario revisar la zona porqueo bien hay errores en el mapa, o bien se han recortado aristas que necesariamentedeberıan estar dentro de la region a zonificar. En cualquiera de esos casos en estetrabajo el programa se detiene.

2.2.3. Generacion de los subgrafos

Algorithm 1 Algoritmo de zonificacion

...

9: GrowedAreas := growAreas(S,K,B,H)

...

Sean un grafo mixto F = (VF , EF , AF ) y un circuito mixto C = (VC , EC , AC) , defini-mos la union de ambos como el grafo (C ∪ F ) = (VF ∪ VC , EF ∪ EC , AF ∪ AC). Decimosque dicha union es conexa si (VC ∩ VF ) 6= ∅

Page 31: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.2. Algoritmos 25

Proposicion 2.2.3. Sea G un grafo mixto factible, es decir fuertemente conexo, y C uncircuito mixto, si la union G ∪ C es conexa entonces el grafo resultante es factible.

Demostracion. Cada arista de G pertenece a un circuito por ser factible; las aristas agre-gadas pertenecen a C que es un circuito; y, como el grafo resultante es conexo, entoncestambien es factible. 2

Corolario 2.2.1. Una union finita conexa de circuitos determina un grafo factible.

Con dicho corolario, partiendo de un subgrafoHi del grafo factibleH, es posible agregarcircuitos de H a Hi hasta dejarlo factible si dichos circuitos contienen las aristas que enHi no pertenecen a ningun circuito.

Para generar una particion del grafo H, que ya se sabe factible, en subgrafos similares,se evaluo un conjunto de heurısticas que coinciden estructuralmente en una serie de pasos,pero difieren en la combinacion de criterios utilizados:

Algorithm 4 growAreas

1: Se parte de una ubicacion tentativa de los k centros de las zonas a generar. A cadauno de estos centros, que tienen latitud y longitud, y de aquı en mas se los denomi-nara knodos, se le asigna un grafo vacıo.

2: Se dividen las aristas del grafo original en h conjuntos segun algun criterio de division.3: Se calculan las distancias de dichos conjuntos a los knodos. Para esto es necesario

definir una nocion de distancia.4: Mientras sea posible, se selecciona el knodo con el grafo mas pequeno, para alguna

definicion de pequeno, y, de haber, se le agregan los nodos y aristas correspondientesal conjunto de aristas mas cercano al mismo, que lo mantengan conexo. Si no hay,se marca dicho knodo como terminado y se intenta con el siguiente. Ası hasta tenertodos los knodos terminados.

Los criterios utilizados para dividir las aristas del grafo original en conjuntos son lossiguientes:

Particionamiento por Circuitos. Este procedimiento utiliza la division en cir-cuitos minimales vista en la seccion anterior. Dicho particionamiento garantiza fac-tibilidad, pero genera zonas no disjuntas; motivo por el cual es necesario luego definalizada su formacion, determinar a que zona pertenece cada una de las aristas delas intersecciones. No se ha automatizado esto debido a que en las pruebas no diobuenos resultados.

Particionamiento por Aristas. Con este criterio en el que cada arista es un con-junto, se garantiza que las zonas generadas sean disjuntas, pero no se tiene nocionsobre su factibilidad. Por este motivo sera necesario garantizar la factibilidad me-diante el agregado de circuitos opcionales. Para ello se agregan para cada arista sincircuito, en caracter de optativas las aristas pertenecientes al circuito mınimo que lacontiene.

Asimismo se han definido dos nociones de distancia entre un punto k del espacio y unconjunto no nulo de aristas C, en ambos dist(x, y) definida entre dos puntos es la distanciaeuclideana.

Page 32: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

26 2. Capıtulo II: Problema y enfoque de resolucion

Lejano: dist(k,C) = max{dist(k, y)|y ∈ e ∧ e ∈ C}.

Promedio: dist(k,C) = prom{dist(k, y)|y ∈ e ∧ e ∈ C}.

Como en cada paso es necesario determinar si un grafo es menor que otro en relacion con elproblema a resolver se han definido tres criterios. Para las siguientes definiciones se utilizaque C es la solucion optima del CPP en el grafo G, obl(G) y opt(G) son los conjuntos dearistas y arcos obligatorios y optativos respectivamente de G, y peso(e) determina el pesode una arista o arco.

CPP (G) = Fobl∑

e∈obl(C) peso(e) + Fopt∑

e∈opt(C) peso(e)

Con este criterio, es necesario factibilizar el grafo cada vez que se lo quiera utilizar.Requiere definir dos factores Fobl, Fopt ∈ R que marcan la importancia que se le daa las aristas optativas u obligatorias al determinar el peso del grafo. Como lo queimporta es la relacion, en una version simplificada en este trabajo se deja fijo Fopt yse varıa solamente Fobl.

Peso Total (G) = Fobl∑

e∈obl(G) peso(e) + Fopt∑

e∈opt(G) peso(e)

Mas simple que el criterio anterior, reemplaza resolver el CPP por sumar las aristasdel grafo factibilizado. Tambien requiere dos factores Fopt y Fobl, reemplazables poruno solo.

Peso Parcial (G) =∑

e∈obl(G) peso(e)

Dicho criterio toma en cuenta solamente las aristas obligatorias. Este podrıa versecomo un caso particular de peso total en el que Fobl = 0 y Fobl = 1, pero se haconsiderado aparte porque no requiere que el grafo en cuestion sea factible, lo cualacelera su calculo.

Finalizando, una ultima heurıstica determina cual de esos criterios se aplica en cada paso,es decir para seleccionar el menor subgrafo al cual agregarle el conjunto de aristas mascercano. Las desarrolladas en el presente trabajo han sido las siguientes:

CPP/Total/Parcial: Usar en todos los pasos el mismo criterio segun se decida alinicio del algoritmo de la generacion de las zonas. Es decir que si las areas son Gi

para i = 1, . . . , k, en cada paso el grafo menor al cual agregar el conjunto de aristas,segun el criterio elegido, estara dado por

argminki=1PesoParcial(Gi) o argmink

i=1PesoTotal(Gi) o argminki=1CPP (Gi)

CPP-N y Total/Parcial: Usar el criterio CPP cada N pasos, y en los N − 1intermedios usar Total o Parcial segun se decida al inicio del algoritmo de generacionde las areas. Entonces en la iteracion j el grafo elegido estara dado por

argminki=1CPP (Gi) si j ≡ 0(N)

argminki=1PesoParcial(Gi) o mınk

i=1 PesoTotal(Gi) si no

Page 33: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.2. Algoritmos 27

CPP-N, Total/Parcial y Feedback: Usar el criterio CPP cada N pasos, y enlos N − 1 pasos intermedios utilizar una funcion de realimentacion basada en losresultados del ultimo paso en el que se resolvio CPP y el resultado de Total o Parcialsegun se decida al inicio del algoritmo de generacion. Si se define a%b = a mod b, esdecir la funcion que devuelve el resto de dividir de forma entera a/b, entonces parael paso j donde h = j%N , y n = j

N la seleccion del area Gi ∈ (G1, ..., Gk) menorestara dada por

argminki=1CPPfeed(Gi)

donde

CPPfeed(Gi) =

Fm(Gi) si h > 0

Pesoj(Gi) si h = 0

siendo Fm una de las 4 funciones de realimentacion desarrolladas manteniendo lamisma idea inicial, la cual consiste en extender el impacto del resultado del carterochino durante las iteraciones que siguen a su computo. La cantidad de estas itera-ciones en las cuales se modifica el resultado del criterio comun con la aplicacion dela funcion de realimentacion dependera de una estimacion de la cantidad de aristaso arcos a agregar para equilibrar todos los resultados del CPP calculado. Asimismoel grado de influencia de dicha funcion sobre cada area dependera en mayor o me-nor medida de la diferencia entre el resultado del criterio comun en el comienzo dela realimentacion con el resultado del mismo en la iteracion actual. En la primerafuncion solamente se utilizan esos dos factores afectando al resultado del CPP. Enlas otras tres lo que se busco con diversas variantes fue una combinacion lineal entreel resultado del criterio en el paso actual y el del CPP computado en la iteracionque dio comienzo a esa realimentacion. Al ser heurısticas muchos de los parametrosfueron determinados mediante experimentacion.

F1(Gi) = CPPnN (Gi) + Ffeed × (Pesoj(Gi)− PesonN (Gi))

F2(Gi) = CPPnN (Gi)× (Ffeed − h) + 9× Ffeed × (Pesoj(Gi)− PesonN (Gi))

F3(Gi) = (CPPnN (Gi) + Pesoj(Gi)− PesonN (Gi))× Ffeed + h× Pesoj(Gi)

F4(Gi) = (CPPnN (Gi) + donej(Gi))× Ffeed + h× Pesoj(Gi)× FoblFopt

Page 34: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

28 2. Capıtulo II: Problema y enfoque de resolucion

con:

CPPnN (Gi) = CPP (Gi) de la iteracion nN

Pesoj(Gi) = PesoParcial(Gi) o PesoTotal(Gi) de la iteracion j

PesonN (Gi) = PesoParcial(Gi) o PesoTotal(Gi) de la iteracion nN

|edgesToAdd|j =

x∈CPPnN (G)[max(CPPnN (G)]−x

edgewsi j = nN

max(0, |edgesToAdd|(j−1) − 1) si no

Ffeed = |edgesToAdd|j

donej = (Pesoj − PesonN )× FoblFopt

siendo edgew = CPPresult|edges| ; es decir, el valor aproximado que da una idea de cuanto

se incrementa el resultado del CPP al agregar una arista al grafo.

2.2.4. Factibilizacion de los subgrafos

Algorithm 1 Algoritmo de zonificacion

...

10: for k ∈ K do11: Areak := zoning(growedAreas, k)

...

Al finalizar la generacion de las areas, ası como para cada iteracion de dicho proceso enla cual es necesario calcular el peso total o resolver el CPP, si se esta utilizando el criteriode crecimiento mediante el agregado de aristas, se debe proceder a la factibilizacion de laszonas.

Dicho proceso consiste en agregarle a cada una de las areas generadas un conjunto decircuitos. Dicho conjunto conviene que sea pequeno a fin de no hacer crecer la complejidaddel algoritmo. El que se utiliza en este trabajo es el siguiente:

Dada un area, se recorre su conjunto de aristas (que seran del tipo obligatorias) y paracada una de estas se agregan como optativas todas las aristas de alguno de los circuitosque la contienen. Estos circuitos son los precomputados al dividir el grafo simplificado encircuitos en el tercer paso del algoritmo general.

Una vez factibilizadas lasK areas, entonces sı se puede proceder a resolver del problemadel cartero chino.

En caso de que se este utilizando el criterio que agrega de a circuitos, las zonas al finali-zar cada iteracion son ya factibles; lo que resta es determinar que aristas son obligatorias ycuales optativas en cada una de ellas. En el presente trabajo, por motivos que se detallaranen la seccion de experimentos y resultados, no se desarrollo dicho algoritmo diferenciador,por lo que este criterio solo es posible aplicarlo en los pasos intermedios tomando todaslas aristas como obligatorias. Una vez generadas las areas, para calcular los recorridos se

Page 35: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.2. Algoritmos 29

da la opcion de determinar manualmente los lımites de las zonas marcando optativas yobligatorias.

2.2.5. Resolucion del CPP

Algorithm 1 Algoritmo de zonificacion

...

10: for k ∈ K do

...

12: Zimplk := graphToZIMPL(Areak)13: LPk := ZIMPL(Zimplk)14: Solutionk := SCIP (LPk)

...

Resolver el problema mediante tecnicas de programacion lineal entera, implica en pri-mer lugar generar un modelo que representa el problema. Esto es, una funcion objetivoa maximizar o minimizar, un conjunto de variables y un conjunto de restricciones. Loque se busca es modelar el problema de resolver la recoleccion de residuos en una zonarepresentada por un grafo con las caracterısticas definidas con anterioridad; por lo que acontinuacion se presenta el modelo del cartero chino en su variante sobre un grafo mixtocon aristas obligatorias y optativas.

Sea el grafo G = (V,E,A) la representacion de un area con calles obligatorias y optativas,mano unica y doble mano, en la cual E sera un conjunto de pares ordenados, a pesarde representar aristas no-dirigidas. Sean tambien las funciones obligatory y optative queevaluadas sobre una arista indican obligatoriedad o no de incluirla en el recorrido,

w : (E ∪A)→ R+ la funcion de ponderacion, o peso de las aristas de G.

OBLA = {a ∈ A : obligaroty(a)}

OBLE = {e ∈ E : obligatory(e)}

OBLEinv = {eij |eji ∈ E ∧ obligatory(eji)}

OPT = {e ∈ (A ∪ E) : optative(e)}

El modelo tendra una variable entera obluij ≥ 1 para cada arista eij ∈ OBLA y unavariable entera optij ≥ 0 para cada eij ∈ OPT dichas variables denotaran la cantidad deapariciones de las aristas correspondientes en el circuito solucion. Se contara ademas condos variables enteras obldij ,obldji ≥ 0 para cada eij ∈ OBLE las cuales representaran laaparicion de cada arista obligatoria doble mano en uno u otro sentido.

La funcion objetivo buscara minimizar la longitud de dicho circuito:

mın :∑

eij∈OBLA

w(eij)× obluij +∑

eij∈OBLE

w(eij)× (obldij + obldji) +∑

eijOPT

w(eij)× optij

Al ser conexo el conjunto de aristas obligatorias, la forma de obligar a que la solucionsea un circuito es forzando la conservacion del flujo en cada nodo:

subto flujo: ∀i ∈ V :∑j:eji∈OBLA

obluji +∑

j:eji∈(OBLE∪OBLEinv) obldji +∑

j:eji∈OPT optji =∑j:eij∈OBLA

obluij +∑

j:eij∈(OBLE∪OBLEinv) obldij +∑

j:eij∈OPT optij

Page 36: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

30 2. Capıtulo II: Problema y enfoque de resolucion

Y se pide ademas que una calle doble mano sea recorrida al menos una vez en alguno delos dos sentidos:

subto one: ∀i, j : eij ∈ E ∧ obligatory(eij) :

obldij + obldji ≥ 1;

Una vez generado el modelo, se resuelve el problema de programacion lineal entera mixtamediante un solver para cada una de las K areas. Como resultado de resolver el problemaen un area se obtiene un conjunto de las aristas y arcos que la componen (obligatorias yoptativas) con la cantidad de apariciones de estas en el circuito solucion.

2.2.6. Obtencion de los recorridos

Algorithm 1 Algoritmo de zonificacion

...

10: for k ∈ K do

...

15: Pathk := solutionToPath(Solutionk, S,G)

...

Para obtener los recorridos de las distintas zonas generadas por la resolucion del pro-blema del cartero chino en su variante para grafos mixtos, se genera un multigrafo dirigidoR = (V,A) (no mixto) en el cual cada arista se repite tantas veces como indica la varianteasociada en dicha solucion. Este grafo se sabe que tiene un circuito euleriano, por lo quepor medio de un algoritmo polinomial se halla el mismo.

Luego comparando con el subgrafo de la zona se marca una de las apariciones de cadaarista obligatoria (dirigida o no dirigida) como de recoleccion. En principio la primera,pero bien podrıa ser que por cuestiones de transito conveniera no detenerse tanto tiemposeguido en una zona, prefiriendo alternar. Una vez decidido eso, el resto de las aristas,optativas y demas apariciones de las obligatorias en el circuito seran marcadas como depaso.

Para hallar el circuito euleriano se desarrollo el siguiente algoritmo recursivo, el cualrecibe el grafo como una lista de adyacencias, y devuelve el recorrido como un listado denodos.

Algorithm 5 Euler’s algorithm

1: function getEulerianCircuit(Adjs : {node : [node]})2: Circuit := []3: Stack := []4: Start← VG5: get euler rec(Adjs, Start, Stack, Circuit)6: return inverse(Circuit)7: end function

Donde la funcion recursiva get euler rec esta dada por:

Page 37: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

2.2. Algoritmos 31

Algorithm 6 Euler’s algorithm

8: function get euler rec(Adjs, Cur, Stack, Circuit)9: if not Adjs[Cur] then

10: Circuit := Circuit+ +[Cur]11: cur ← Stack12: if Stack 6= [] then:13: get euler rec(Adjs, Cur, Stack, Circuit)14: end if15: else16: Stack := Stack + +Cur17: Target←first Adjs[Cur]18: get euler rec(Adjs, Target, Stack, Circuit)19: end if20: end function

Page 38: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

32 2. Capıtulo II: Problema y enfoque de resolucion

Page 39: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3. CAPITULO III: EXPERIMENTOS Y RESULTADOS

3.1. Experimentos, resultados y discusion

Para decidir el algoritmo definitivo que resuelve de la mejor forma los problemas dezonificado sobre la ciudad concreta de San Miguel de Tucuman fue necesario estudiar lasrespuestas de diversas heurısticas con sus variantes, parametros y criterios para diferentestamanos de mapa y de zona.

Primero se estudiaron las caracterısticas de la region a zonificar, posteriormente se hizoun analisis riguroso de los resultados de aplicar las heurısticas; y por ultimo se eligio lamejor y con ella se resolvio el zonificado de San Miguel de Tucuman.

3.1.1. Caracterısticas de las instancias

Peso de las AristasSiendo que el tiempo de recoleccion esta ıntimamente relacionado con el volumen a

recolectar, se ha buscado con escaso exito informacion relacionada con la demografıa dela ciudad con la finalidad de asignar mas peso a aquellas aristas o arcos que representanavenidas o calles con mayor cantidad de habitantes, debido a que de esto dependera la can-tidad de residuos. Segun los datos brindados por el municipio de San Miguel de Tucumanla cantidad de residuos que se recogen en la region determinada por las zonas nocturnases aproximadamente el doble de los que produce la region de las diurnas, pero dentro deambas este parametro se mantiene uniforme.

A raız de ese dato se ha hecho un analisis sobre ambas regiones, y como resultado delmismo, se determino que el tiempo que consume un camion en recolectar residuos en unacuadra de una zona nocturna es 5 veces mayor en promedio que el que tarda solamenteen atravesarla. Asimismo se ha realizado una serie de mediciones sobre diversas cuadrasen la zona diurna, dando como resultado que el tiempo de recoleccion es poco mas de 3veces el tiempo de atravesado.

Al no tener datos detallados de la cantidad de residuos por cuadra, y observando queel volumen dentro de cada una de las zonas depende linealmente de las longitudes delas cuadras a recolectar, se decidio utilizar la distancia euclideana de los nodos que lasdelimitan como peso de las aristas optativas, mientras que para el peso de las obligatoriasse utilizara 5 veces dicho valor en las zonas nocturnas.

Sea la velocidad de un camion de recoleccion Vp y Vr en cuadras paso y recoleccionrespectivamente; y sea la funcion de ponderacion L : EG ∪ AG → R, que dada una aristadevuelve su peso o longitud en kilometros; el tiempo que consume una arista en el recorridode un camion entonces estara dado por T : EG ∪AG → R, tal que:

T (e) =

{L(e)/Vr si e es arista obligatoriaL(e)/Vp si e es arista optativa

Para los experimentos, al ser lineal la funcion, por razones numericas se ha definidoT ′(e) tal que T (e) = T ′(e)/Vp. Es decir:

T ′(e) =

{L(e)× (Vp/Vr) si e es arista obligatoriaL(e) si e es arista optativa

33

Page 40: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

34 3. Capıtulo III: Experimentos y resultados

Segun las mediciones, Vp = 30 km/h mientras que Vrnocturna = 6 km/h (100mts en1 minuto) y Vrdiurna

= 9 km/h (100mts en 30 segundos), aproximadamente. Siendo queel personal de recoleccion trabaja 8hs diarias como maximo, la zona de cobertura de uncamion en la region nocturna se limita a 48 km suponiendo que existe un circuito euleriano,mientras que en las diurnas esta puede tener una longitud de 72 km.

Vale una ultima aclaracion al respecto. La recoleccion en una cuadra se realiza unaunica vez, por lo que una arista o arco sera obligatorio en una sola de sus apariciones enel circuito, y como la zona tiene una cantidad finita de aristas y arcos obligatorios (yadeterminados en la formacion del area), lo que se hace en este trabajo es calcular el reco-rrido entero, tratandolo como optativo, y sumarle luego el peso de las aristas obligatoriasmenos el peso optativo de las mismas.

***

Tamanos de las zonasEl objetivo del presente trabajo es analizar la posibilidad de tener una region nocturna

zonificada con 1, 2, 3 o 4 areas menos que las que se utilizan actualmente. Siendo que dicharegion esta subdividida en 12 zonas con un tamano de aproximadamente 27 km cada unaen promedio, la redistribucion de la misma en 11, 10, 9 u 8 zonas, genera areas de hasta41,418 km en el peor caso.

Fig. 3.1: Region nocturna de San Miguel de Tucuman zonificada, segun los datos brindados porel municipio, en 12 zonas perifericas y un rectangulo central delimitado por las avenidas:Republica de Italia, Julio A. Roca, Ciudad de Necochea, Coronel Cornelio Zelaya y TeronBrıgido.

La zonificacion actual, presentada en la Figura 3.1, no permite una sencilla redistribu-cion debido a que la misma esta partida en 2 subregiones no conexas; por este motivo se

Page 41: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 35

procedio a una leve modificacion de la misma quitando unas calles laterales y agregandolas necesarias para formar una sola region buscando mantener en la medida de lo posible lacantidad de kilometros cubiertos. El mapa resultante y con el que se trabajara de aquı enmas es el representado en la Figura 3.2.

Al agregarse y quitarse ese pequeno numero de calles, los grafos asociados a dichomapa cuentan con las siguientes caracterısticas:∑

e∈EG∪AGL(e) = 342,53 km

|EG ∪AG| = 4065|EG| = 1804|AG| = 2261

|EH ∪AH | = 3275|EH | = 1458|AH | = 1817

Estos datos arrojan un peso promedio de 0,0843 km por arista en el grafo original G,un promedio de 0,1046 km por arista en el grafo simplificado H, y donde solamente 10aristas no se simplifican por superponerse con otras ya existentes. La asignacion actual de12 zonas da por resultado un tamano de 338 aristas cada una en promedio basandose enel grafo G y 272 aristas basandose en H (i.e., 28,54 km).

Fig. 3.2: Region nocturna de San Miguel de Tucuman, con la modificacion necesaria para formarun semicırculo conexo con las calles que no forman parte de las cuatro avenidas.

Con esos datos, y sabiendo que gran parte de las heurısticas desarrolladas requierensolucionar un problema NP-Completo en varias iteraciones, para analizar y comparar susdistintos comportamientos se han generado distintas instancias de tamano pequeno, estoes, con k zonas de 22, 45 km, para valores de k entre 8 y 12. Luego de comparar los

Page 42: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

36 3. Capıtulo III: Experimentos y resultados

resultados sobre las mismas, se estudio la respuesta para las heurısticas mas razonables enla region nocturna dividiendo a esta en 8, 9, 10, 11 y 12 zonas.

Fig. 3.3: Division de regiones nocturnas y diurnas de San Miguel de Tucuman con las modifica-ciones propuestas.

Los tamanos de las areas basados en el grafo G entonces estaran dados por la tabla dela Figura 3.4.

#zonas #aristas longitud[km]

pequenas ∈ [8; 12] 270 22,45

12 338 28,5411 369 31,14

nocturnas 10 406 34,29 451 38,068 508 42,82

Fig. 3.4: Tamanos de las instancias analizadas a lo largo del trabajo.

Page 43: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 37

3.1.2. Heurısticas de agregado

En primer lugar se analizo la posibilidad de hacer crecer las areas garantizando lafactibilidad en cada paso. Para esto se utilizo la heurıstica que agrega de a un circuitopor iteracion a la menor de las areas segun un criterio simple de seleccion (en principio seutilizo el peso de las aristas obligatorias, es decir el criterio parcial). Para determinar elcircuito en cada paso se calculo para todos el promedio de las distancias de los nodos quelo componen respecto del centro de todas las areas eligiendo el menor.

#aristas #circuitos |circuito| |circuito| |circuito|Max |circuito|min tiempo[aristas] [km] [km] [mts] [min]

1885 2961 3,8888 0,2703 2,4588 0,8909 00 : 24,69

2077 3261 3,8749 0,2741 3,0915 0,8909 00 : 34,14

2329 3660 3,8694 0,2756 3,0915 0,8909 00 : 45,42

2536 3935 3,9532 0,2879 3,2355 0,8909 00 : 54,64

2743 4189 3,9957 0,2955 3,2355 0,8909 01 : 06,11

3274 4700 4,2834 0,3264 3,2712 0,8909 01 : 32,71

6982 12180 3,4756 0,2467 4,7809 3,8970 12 : 59,65

Fig. 3.5: Datos relativos a la division de grafos en circuitos.

Fig. 3.6: Con los tres colores primarios y 3 secundarios se representan tres areas entrelazadas. Laheurıstica de agregado de circuitos, al no ser estos disjuntos en aristas, genera areas muyentrelazadas dificultando una buena separacion. Incluso manualmente no resulta intuitivala asignacion de una arista compartida a una o a otra.

La generacion de los circuitos se hizo mediante el algoritmo presentado en el Capıtulo2, obteniendo los resultados presentados en la Figura 3.5. En la misma se muestra paralos distintos tamanos de grafo, medidos en cantidad de aristas, la cantidad de circuitosgenerados, el promedio de sus longitudes en kilometros y en cantidad de aristas, la longitud

Page 44: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

38 3. Capıtulo III: Experimentos y resultados

maxima del mayor de ellos en kilometros y la mınima en metros, junto con el tiempoconsumido en computarlos.

Implementada sobre zonas de variados tamanos la principal desventaja observada enesta heurıstica es la gran dificultad para automatizar la delimitacion de estas una vezgeneradas. Al no ser disjuntos los circuitos agregados, hay que definir a que zona pertenecenlas aristas que tienen en comun, lo cual afecta de manera no trivial a los tiempos derecoleccion. Este problema podrıa resolverse mediante metodos iterativos, reasignandoy calculando los resultados del CPP hasta hallar una buena solucion, pero el principalinconveniente radica en el grado de entrelazamiento de las zonas, resultando en aristasobligatorias de una, encerradas el interior de otra como se observa en la Figura 3.6. Esteproblema crece en dificultad junto con el numero de zonas en contacto.

Este inconveniente se intento mitigar reemplazando el criterio de distancia promediopor el de lejano buscando que ası se entrelazaran menos las areas. Dicho cambio se basaen la idea de intentar agregar primero los circuitos cuyas aristas esten en conjunto mascercanas al centro, a fin de no acaparar para una zona aristas que convendrıa pertenecierana otra por estar mas cerca de ellas. Como resultado se observo una mejorıa disminuyendoa aproximadamente a la mitad la cantidad de casos malos, luego de varias mediciones paramapas de diversos tamanos.

Fig. 3.7: Con color rojo se representan las aristas y arcos pertenecientes a un area generada por laheurıstica que agrega de una arista por vez; con color gris las aristas y arcos pertenecientesa los circuitos utilizados para factibilizarla; y en color rosado aristas pertenecientes a otrasareas.

No siendo esto suficiente y debido a que la modificacion manual de las zonas resultaen un aumento enorme de la varianza de sus recorridos, se desarrolla la segunda heurısticaque agrega de a una arista o arco por vez en lugar de a circuitos. Al agregar siempre unaarista distinta, las zonas terminan siendo disjuntas, y lo unico que resta es factibilizarlas

Page 45: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 39

mediante el agregado de los circuitos opcionales, resultando ademas sus contornos massimples, como se observa en la Figura 3.7.

En este algoritmo, al tener solamente dos nodos cada conjunto, el utilizar uno u otrocriterio de distancia no afecta a la forma de las areas ni a los tiempos de sus recorridos.

Debido a que la finalizacion del algoritmo esta dada por la imposibilidad de agregarmas aristas a ninguna zona, el inconveniente de estos dos metodos de crecimiento radica enla dependencia de la ubicacion inicial de los centros de las areas, ya que lo mas probablees que un area se termine encerrando antes que las otras cuando aun quedan aristas ocircuitos por agregar. De este modo la similitud de las areas generadas, definida como ladiferencia de sus resultados finales de resolver el CPP, sera inversamente proporcional ala cantidad de aristas o circuitos sin asignar al momento del encierro de la primer zona.

Fig. 3.8: Ejemplo del crecimiento de la region nocturna dividida en 8 zonas. Cuando una de lasareas llega a 342 aristas (y/o arcos) con una cobertura de 34,42 km la cual se realizaen 6,22hs, esta es encerrada por las que la rodean no pudiendo crecer mas. Por estemotivo la diferencia maxima entre las 8 zonas a partir de ese momento comienza a crecerfinalizando en 73 minutos con un promedio de 7hs de recoleccion por area.

Este problema es aun mas difıcil de solucionar que el estudiado en este trabajo, motivopor el cual la similitud entre las areas se analizara durante el crecimiento y hasta elmomento en el que una de las areas no pueda crecer mas; dejando como un trabajoposterior la busqueda de la ubicacion optima de los centros.

En la Figura 3.8 se observa un ejemplo de la variacion de la diferencia maxima en-tre los tiempos que lleva cubrir las diversas zonas a medida que crecen en kilometros.Debido a la mala ubicacion de los centros una de ellas se encierra muy temprano en elalgoritmo, resultando en un crecimiento abrupto de la diferencia maxima de los tiemposde recoleccion.

Page 46: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

40 3. Capıtulo III: Experimentos y resultados

3.1.3. Heurısticas base

Para seleccionar el criterio de seleccion de la menor de las areas se analizaron en primerlugar las tres heurısticas base de manera independiente, esto es CPP, partial y total. Acontinuacion se presenta un examen detallado de cada una de ellas.

El criterio basado en el resultado del CPP, debido a que requiere resolver un problemaNP-Completo en cada iteracion fue evaluado unicamente sobre instancias pequenas.

Las formas de las zonas generadas mediante este metodo son simples y uniformes, comose observa en la Figura 3.9, la cual representa un paso intermedio en la zonificacion de 8zonas nocturnas.

Fig. 3.9: Ejemplo del crecimiento de las 8 zonas (en color rojo) en las cuales esta particionandosela region nocturna modificada, utilizando el criterio base CPP. Ya en estas iteraciones,cuando las areas cubren un promedio de 22 km cada una aproximadamente, el tiemporequerido para resolver el CPP es tan elevado que no es razonable continuar.

Los tiempos de ejecucion de esta heurıstica en funcion de los tamanos de las zonasevaluadas son los representados en la Figura 3.10; en ella se observa el promedio deltiempo que tarda en resolverse la factibilizacion, la generacion del modelo y el CPP paradiversos tamanos de instancia. Estos datos fueron sacados del proceso de zonificacion dela region nocturna en 8 zonas utilizando el criterio en cuestion. Como se puede ver, eltiempo requerido para resolverla crece exponencialmente con el tamano de los subgrafosque representan las areas crecientes, llegando a demorar salvo casos excepcionales, 1 minutoen promedio por cada una cuando estas llegan a 20 km obligatorios. Nuevamente sin teneren cuenta los casos excepcionales (en los cuales llega a requerir varias horas para resolveruna sola iteracion), proyectando dicha curva para los tamanos de zona que se desea generar(entre 40 y 60 km) el tiempo consumido es inaceptable. Si ademas se le agrega que cadacierta cantidad de iteraciones surgen grafos de difıcil resolucion es sencillamente imposibleutilizar este metodo en estado puro.

Page 47: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 41

Fig. 3.10: Variacion del maximo, mınimo, promedio y suma de los tiempos que demoran en resol-verse 8 zonas utilizando el criterio CPP, en funcion del tamano de las areas, el cual esmedido como el promedio de la suma de los kilometros de sus aristas obligatorias.

Fig. 3.11: Tiempo promedio, maximo y mınimo de los recorridos de 8 zonas en funcion del tamanoque van adoptando mediante la inclusion de aristas utilizando el criterio base CPP. Lalongitud obligatoria de las areas es la suma de las longitudes de las aristas obligatoriasde las mismas.

Page 48: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

42 3. Capıtulo III: Experimentos y resultados

En cuanto a la calidad de los resultados, las zonas generadas mantienen una diferenciade tiempo muy pequena y constante a lo largo del crecimiento exceptuando algunos picosdebidos a la necesidad de inclusion de un ciclo muy largo al circuito para abarcar unarco agregado en ese paso en alguna zona. Por ejemplo en las Figuras 3.11 y 3.12 seobservan algunas caracterısticas de los resultados del proceso de una zonificacion de laregion nocturna en 8 zonas utilizando este criterio. En la Figura 3.11, se ve como crecelinealmente el tiempo consumido por la recoleccion proporcionalmente con la cantidadde kilometros obligatorios promedio de las zonas cubiertas. La variacion de la diferenciade tiempos entre la zona mas larga y la mas corta durante el crecimiento se observa condetalle en la Figura 3.12. Aquı se ve cuan similares son las zonas generadas con estecriterio, difiriendo en casi todo el proceso en 4 minutos, exceptuando los picos ya antesmencionados.

Fig. 3.12: Detalle de la variacion de la diferencia maxima en tiempo entre los recorridos de 8 zonasen funcion del tamano que van adoptando mediante la inclusion de aristas utilizando elcriterio base CPP. El tiempo obligatorio de las areas es el que consumirıa un camion enrecolectar unicamente las aristas y arcos obligatorios sin contar las aristas de trasladonecesarias en caso de no haber un circuito euleriano.

Esta heurıstica muestra la ıntima relacion entre el peso del grafo y la longitud delrecorrido solucion del CPP. En el intento por explotar dicho resultado es que aparecela heurıstica mas sencilla implementada a lo largo del trabajo, la cual es presentada acontinuacion.

***

La segunda heurıstica base denominada Parcial se funda en la estrecha relacion entrela longitud del recorrido y el peso del grafo analizado. En ella el criterio de seleccion dela menor de las areas se basa en la sumas de los pesos de las aristas obligatorias de las

Page 49: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 43

mismas, lo cual permite resolver cada iteracion sin necesidad de factibilizar el grafo, degenerar el modelo ni de resolver el complejo problema del cartero chino. Aplicado sobrelos mismos mapas genera zonas de contornos tan simples y uniformes como la heurısticaCPP pero, previsiblemente, en un tiempo varios ordenes por debajo de esta. En la Figura3.13 se observa el costo temporal de una iteracion a medida que aumenta el promediodel tamano de las areas. Dicha medicion esta hecha en un total de 8 zonas deteniendo laejecucion al bloquearse una de ellas luego de 20.96 segundos habiendo cubierto 283.68 kmobligatorios de la region nocturna.

Fig. 3.13: Costo temporal de resolver una iteracion con la heurıstica base Partial sobre 8 zonas enfuncion del promedio de la suma de los pesos de las aristas obligatorias de las mismas.Por un lado se observa el tiempo requerido en promedio, maximo y mınimo para resolvercada una de las areas, y por otro lado la suma de resolver las 8 areas.

La principal desventaja de esta heurıstica en comparacion con la que factibiliza, generael modelo de programacion lineal entera y resuelve el cartero chino en cada iteracion (i.e.,la heurıstica CPP), viene dada por la disminucion de la similitud de las areas durante yal finalizar su generacion. En la Figura 3.14 se observa como varıa la maxima diferenciaentre los tiempos de recoleccion para una zonificacion de la region nocturna en 8 areasutilizando dicha heurıstica, en funcion del promedio de los tamanos de las zonas generadas.Esta, si bien al final se estabiliza alrededor de los 8 minutos, por momentos llega a superarlos 15 minutos. A pesar de que este ultimo resultado es hasta 4 veces peor que el de laanterior, la zonificacion es resuelta en un tiempo extremadamente corto, por lo que enprincipio esta es una excelente heurıstica base, dando resultados muy buenos en lo querespecta a las formas y a la similitud.

Page 50: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

44 3. Capıtulo III: Experimentos y resultados

Fig. 3.14: Detalle de la variacion de la diferencia maxima en tiempo entre los recorridos de 8 zonasen funcion del tamano que van adoptando mediante la inclusion de aristas utilizando elcriterio base Parcial. La manera de calcular dichos valores es, para cada valor del eje x,restarle a las 8 areas el tiempo consumido por la menor de ellas. Se grafica ademas elpromedio de los valores resultantes y la media.

(a) Distancia (b) Tiempo

Fig. 3.15: Debido a la diferencia de velocidades promedio de los camiones en aristas (y arcos) derecoleccion o de transito, a pesar de que la cantidad de kilometros optativos crecen arazon de poco menos de 1/2 de los obligatorios, el tiempo que lleva recorrerlas es casiuna doceava parte del que consume la recoleccion a medida que crecen las areas.

Analizando con mayor profundidad los resultados de esta heurıstica para diversos ta-manos y cantidades de zonas para las velocidades de recoleccion y transicion utilizadas,sale a la luz la ıntima relacion entre el peso obligatorio del grafo y la longitud del recorridosolucion del CPP. Para verlo mas claramente se resolvio una serie de instancias, y sobrelas mismas se analizo la variacion de la cantidad de kilometros y del tiempo consumidospor las aristas y arcos del recorrido solucion en los cuales no se recolecta residuos, dandoen todas graficos similares a los representados en la Figura 3.15. Si se tienen presentes

Page 51: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 45

las escalas, en la Figura 3.15b se observa que a pesar de que la cantidad de kilometros detransito es aproximadamente la mitad de los kilometros de recoleccion, como puede verseen la Figura 3.15a, el tiempo que requiere recorrer los primeros es poco menos que ladoceava parte de lo que demandan los segundos. De aquı se desprende que la diferenciade velocidades de recoleccion juega un papel muy importante en la heurıstica a utilizar.

***

Basada en el mismo principio que la anterior nace la ultima heurıstica base denominadaTotal. En esta el criterio utilizado para seleccionar la menor de las areas tiene en cuenta,ademas de la suma de los pesos de las aristas y arcos obligatorios, el peso de los circuitosoptativos agregados al factibilizar. Siendo que en estos no se realiza recoleccion sino queel camion los sobrepasa a una velocidad varias veces mayor, como ya se menciono conanterioridad, a los mismos se les asigno un peso menor que a los obligatorios.

(a) factorobligatorias = 2× factoroptativas (b) factorobligatorias = 5× factoroptativas

(c) factorobligatorias = 7× factoroptativas (d) factorobligatorias = 9× factoroptativas

Fig. 3.16: Detalle de la variacion de la diferencia maxima en tiempo entre los recorridos de 8 zonasen funcion del tamano que van adoptando mediante la inclusion de aristas utilizando elcriterio Total con 4 valores distintos de factor.

A pesar de que para el calculo del tiempo consumido por el recorrido resultante seutiliza un factor fijo de 5, se analizo asignarle distintos valores al mismo dentro de laheurıstica para ver si de ese modo mejoraba su comportamiento. Bien podrıa ser necesarioun numero mayor ya que los kilometros optativos del recorrido final tienen muy pocasaristas en comun con los circuitos optativos. Como se observa en los graficos de la Figu-ra 3.16, dandole menor prioridad al peso de los circuitos optativos mejora levemente la

Page 52: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

46 3. Capıtulo III: Experimentos y resultados

heurıstica al disminuir la maxima diferencia de los recorridos solucion de las areas en lasegunda mitad de su generacion, a la vez que empeora la primera. Por lo tanto, cuanto ma-yor prioridad se les de a los circuitos optativos, mejor va a ser el resultado de la heurısticapara grafos pequenos; y cuanta menor prioridad se les de, se tendran mejores resultadossobre zonas ya mas grandes, llegando a parecerse la grafica a la de la heurıstica anterior.

En lo que respecta a la forma de las areas resultantes, el resultado fue el mismo que conlas dos heurısticas anteriores generando contornos simples. Incluso los tiempos consumidospor los recorridos se mantienen dentro del orden. La diferencia radica mas en los tiemposde resolucion que en los resultados. Si bien esta dentro de lo razonable en contraposicionde la primera (CPP), esta heurıstica demora bastante mas tiempo que la segunda.

***

La Tabla 3.17 intenta sintetizar los tiempos de resolucion de las tres heurısticas. Enla misma la cantidad de aristas y los kilometros hacen referencia al promedio de las areas,mientras que los tiempos estan dados por la suma de lo que consume la generacion detodas ellas.

|zonas| |aristas| longitud[km] Parcial[seg] Total[hs] CPP[hs]

peq

uen

as

8 8,25 0 : 12 : 00,65 23 : 31 : 20,419 9,21 0 : 16 : 21,98 89 : 57 : 23,9510 270 22, 45 12,99 0 : 22 : 17,66 −−11 14,51 0 : 27 : 39,91 −−12 20,67 0 : 34 : 53,60 −−

noct

urn

as

12 367 31,12 25,43 1 : 13 : 26,39 −−11 400 33,92 25,41 1 : 09 : 04,08 −−10 440 37,31 25,16 1 : 04 : 38,74 −−9 489 41,47 23,49 0 : 59 : 08,61 −−8 550 46,64 23,29 0 : 53 : 59,12 −−

Fig. 3.17: Tiempos de resolucion de las tres heurısticas base.

De estos resultados iniciales se resolvio buscar heurısticas que simularan el criterioCPP para conseguir varianzas casi nulas y a la vez que utilizaran una combinacion con losotros dos criterios para obtener resultados en corto plazo.

Idealmente se busco encontrar un equilibrio razonable entre el tiempo consumido y lacalidad de los resultados.

3.1.4. Heurısticas combinadas

La primera idea que surge a raız de los resultados anteriores es utilizar alguno de losdos criterios veloces (Parcial o Total) la mayorıa de las iteraciones e ir corregiendo cadacierta cantidad de pasos mediante el criterio CPP. Esa cantidad N de pasos es el parametroque mediante las pruebas se busco definir.

Para ello entonces se idearon dos heurısticas, las cuales combinan Parcial con CPP, yTotal con CPP. Para las mismas, se agrego un N definible al iniciar el proceso, el cualdetermina cada cuantos pasos se alterna el criterio intermedio elegido (i.e., Total o Parcial)

Page 53: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 47

con la resolucion del CPP. Para ambas heurısticas este primer intento fracasa para los dosextremos de N siendo muy dificil encontrar un punto medio eficiente:

con N muy pequeno casi se reduce a un CPP puro el cual ya se vio que no escalapara los tamanos de zona en los que se debe aplicar para resolver la resolucion.

con un N un poco mas grande ya deja de tener efecto el criterio CPP convirtiendoseen un Parcial o un Total puro, que incluso consume mayor tiempo sin mejoras en elresultado.

Analizando la segunda de las opciones, se busco utilizar el resultado del CPP en lospasos intermedios sin resolverlo. Es ası que surge esta ultima familia de heurısticas en lascuales se agrega una especie de realimentacion negativa, que extiende el efecto de resolverel CPP en el paso nN a todos los intermedios hasta el (n+1)N . Para ello se desarrollarony estudiaron varias formulas con leves variaciones en sus parametros.

Primero se utilizo en los pasos intermedios el criterio Parcial, con la idea de mejorarla heurıstica mas economica en lo que a tiempos se refiere y luego se intento lo mismo conTotal, la cual como se vio es un poco mas robusta.

Para esta funcion de realimentacion se utilizo la siguiente idea:

Siendo j tal que h = j%N , y n = jN ; entonces, para el paso n×N el valor resultante

debe ser el de resolver el CPP, mientras que en los pasos intermedios nN+h < (n+1)×Neste va aumentando junto con la diferencia entre el resultado de la heurıstica en el actualy el resultado de la heurıstica resuelta en el paso nN .

La funcion con la cual aumenta determina las distintas variantes de la heurıstica.En primer lugar se intento determinar a grandes rasgos cuanto influye una arista o arco

del grafo en el recorrido solucion del problema del cartero chino, para lo cual se hicieronvarias mediciones dando que en promedio

edgew =CPPresult

|edges|∼= 0,7586

Es decir que agregar una arista en promedio aumenta en 0,7586 el valor del resultadodel CPP. Luego se busco determinar la cantidad de aristas o arcos que es menester agregaren el paso nN para igualar todos los resultados de resolver el CPP en las areas, lo cual serepresenta como:

|edgesToAdd|nN =∑

x∈CPPresultsnN

[max(CPPresultsnN)]− x

edgew.

Como en cada iteracion se agrega una arista al sistema, dicho valor es disminuıdo en 1cada paso hasta llegar a 0, momento en el cual se termina la realimentacion volviendo alcriterio intermedio seleccionado. Entonces en los pasos j no multiplos de N

|edgesToAdd|j = max(0, |edgesToAdd|(j−1) − 1).

Con esos valores, la primer funcion de realimentacion utilizada para la heurıstica CPPN

+ Partial + Feedback, para calcular el valor resultante en cada zona en la iteracion jdonde h = j%N esta definida como:

F1 =

CPPnN + Ffeed × (Pesoj − PesonN ) si h > 0

Pesoj si h = 0

Page 54: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

48 3. Capıtulo III: Experimentos y resultados

donde

CPPnN = CPP de la iteracion nN.P esoj = PesoParcial de la iteracion j.PesonN = PesoParcial de la iteracion nN.Ffeed = |edgesToAdd|j

y cuyos resultados con N = 100 para una zonificacion de 8 areas son los representados enla Figura 3.18a.

(a) 1a Funcion de realimentacion (b) 2a Funcion de realimentacion

(c) 3a Funcion de realimentacion (d) 4a Funcion de realimentacion

Fig. 3.18: Detalle de la variacion de la diferencia maxima en tiempo entre los recorridos de 8 zonasen funcion del tiempo promedio que lleva recorrer sus arcos y aristas obligatorias (a 6km/h) a medida que crecen estas en numero con el criterio Parcial utilizando 4 funcionesde realimentacion para N = 100. Se toman muestras cada 100 iteraciones.

Con la idea de no aumentar los tiempos de resolucion de la heurıstica se busco mantenerel parametro N en 100 aplicando leves variaciones a la inicial para generar otras 3 formulaspara la funcion de realimentacion, siempre utilizando el criterio parcial.

La idea principal para la segunda formula es generar una combinacion lineal entre losresultados de las dos heurısticas utilizadas, de manera tal que a medida que se suceden lasiteraciones intermedias, disminuye el peso de la realimentacion hasta resolver nuevamenteel CPP:

F2 =

CPPnN × (Ffeed − h) + 9× Ffeed × (Pesoj − PesonN ) si h > 0

Pesoj si h = 0

Page 55: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 49

Fig. 3.19: Variacion de la maxima diferencia entre las areas utilizando la heurıstica parcial conrealimentacion cada 20 pasos, para un zonificado de la region nocturna en 8 areas. Eltiempo empleado por el algoritmo en resolver una cobertura de 185.76 kilometros (3,9hs de recorrido por zona) es aproximadamente 2 horas.

La tercera utiliza la misma idea que la anterior, pero con otros valores, logrando unaleve mejora como se observa en la Figura 3.18c.

F3 =

(CPPnN + Pesoj − PesonN )× Ffeed + h× Pesoj si h > 0

Pesoj si h = 0

Y por ultimo la cuarta funcion de realimentacion desarrollada logra una mejora notablebajando 2 minutos en promedio la diferencia maxima entre las areas a lo largo de sugeneracion utilizando apenas una realimentacion cada 100 iteraciones.

F4 =

(CPPnN + donej)× Ffeed + h× Pesoj × Fobl

Foptsi h > 0

Pesoj si h = 0

donde donej = (Pesoj−PesonN )× FoblFopt

, es decir cuanto aumento el area desde la iteracionnN hasta la j.

Los resultados de estas 4 heurısticas evaluadas con un N = 100, Fobl/Fopt = 5 sobreuna zonificacion en 8 areas de la region nocturna son los representados en la Figura 3.18.Allı se observan, como hasta ahora, las distintas curvas que generan las variaciones de lasmaximas diferencias entre los tiempos requeridos para cubrir las areas.

Page 56: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

50 3. Capıtulo III: Experimentos y resultados

Fig. 3.20: Cada valor representa el promedio del tiempo empleado en resolver las 100 ultimas ite-raciones incluyendo la ultima en la que se resuelve el CPP. Este grafico no esta orientadoa mostrar los valores maximos, sino dar una idea de la variacion del tiempo promediorequerido para el zonificado a medida que crecen las areas utilizando la funcion de reali-mentacion. Es importante notar que el tiempo final empleado es la integral de la curvaque representa la suma.

Tambien se han resuelto con las mismas heurısticas zonificaciones para valores de Nmenores a 100, sin variar la similitud de las zonas hasta no acercarse al 20, momento enel cual se comienza a notar una mejora de 2 minutos en promedio de la maxima distancia,como muestra la Figura 3.19.

En cuanto a los tiempos de resolucion de las heurısticas utilizando estas funciones derealimentacion, se ven aumentados respecto de lo que era la heurıstica Parcial, como seobserva en la Figura 3.20, llegando a valores cada vez mas grandes a medida que disminuyeel N . Ademas debido a factores aleatorios, en algunas corridas los grafos resultan mascomplicados de resolver mediante el solver afectando fuertemente el tiempo de ejecucion.Por ejemplo para resolver un zonificado de la region nocturna en 8 areas utilizandoN = 100y la primer heurıstica son necesarias poco mas de 37 horas; mientras que para la utlimaheurıstica el algoritmo requiere aproximadamente 52 horas; y ambas heurısticas tienen lamisma complejidad. Por este motivo no ha sido posible verificar el tiempo que requiereresolver un zonificado con areas mayores a 20 kilometros utilizando valores de N menoresa 100, pero no es ilogico pensar que podrıa demorar varias semanas.

***

Page 57: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 51

(a) factorobligatorias = 3× factoroptativas (b) factorobligatorias = 9× factoroptativas

(c) factorobligatorias = 5× factoroptativas

Fig. 3.21: Detalle de la variacion de la diferencia maxima en tiempo entre los recorridos de 8 zonasen funcion del tamano que van adoptando mediante la inclusion de aristas utilizando elcriterio Total con una funcion de realimentacion para 3 valores distintos de factor. Setoman muestras cada 100 iteraciones. El tamano de las zonas esta representado por lashoras promedio que demora recorrer las aristas y arcos obligatorios a la velocidad derecoleccion (6 km/h).

Para las heurısticas con realimentacion que utilizan el criterio Total en las iteracionesintermedias las 3 primeras formulas dieron resultados similares a la heurıstica pura, mien-tras que la cuarta mejoro notablemente. Motivo por el cual se la estudio a fin de explotarsu mejor combinacion de parametros. Fijando N = 50 y variando nuevamente la relacionentre el factor multiplicador de las aristas obligatorias y las optativas se consiguieron lascurvas que se muestran en la Figura 3.21.

Page 58: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

52 3. Capıtulo III: Experimentos y resultados

(a) factorobligatorias = 5× factoroptativas|N = 20

(b) factorobligatorias = 5× factoroptativas|N = 100

Fig. 3.22: Comparacion del detalle de la variacion de la diferencia maxima en tiempo entre losrecorridos de 9 zonas en funcion del tamano que van adoptando mediante la inclusionde aristas utilizando el criterio Total con una funcion de realimentacion con factor 5para N = 100 y N = 20. Se toman muestras cada 20 iteraciones.

Del mismo modo, fijando ahora el factor en el valor 5, que es el que en promediomantiene una diferencia menor, se vario N para intentar obtener mejoras en los resultados,

Page 59: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 53

pero sin exito con valores mayores a 30, al igual que sucedıa con la heurıstica anterior.Recien con N = 20 se ha logrado una mejora notable en cuanto a similitud de las areas,pero con tiempos incluso mayores a los de la anterior heurıstica, por ende no razonablespara los tamanos de zonas que requiere la region de San Miguel de Tucuman. En laFigura 3.22 se observa esta mejora para un zonificado de 9 areas de 25 km en promedio,comparando la utilizacion de N = 100 o N = 20.

***

Para conseguir buenos resultados de zonificado, se han intentado ubicar los centros delas areas manualmente en posiciones tales que estas se encerraran entre ellas lo mas cercade finalizar el algoritmo, logrando un 99 % de cobertura para 8 zonas, un 98,45 % para 9zonas, y un 98.71 % para 10 zonas utilizando la heurıstica Parcial. Con esas posiciones delos centros se han realizado 6 ultimos experimentos. Estos son: la zonificacion de la regionnocturna para 8, 9 y 10 zonas utilizando la heurıstica Parcial, y luego la heurıstica Total+ CPP + Realimentacion con un factor de 5 y N = 100. Dichos resultados se resumen enla tabla de la Figura 3.23.

Region Nocturna Parcial Total + CPP + Feed

8zo

nas

Tiempo promedio de los recorridos 07:36:50.19 07:36:50.61Diferencia Maxima de tiempos 00:13:03.96 00:12:03.81Desviacion estandar tiempos 00:03:56.39 00:04:07.64Tiempo Total de Resolucion 03:39:08.72 37:25:15.78Tiempo Generacion de Areas 00:00:19.26 36:00:24.75

9zo

nas

Tiempo promedio de los recorridos 06:47:05.95 06:47:26.78Diferencia Maxima de tiempos 00:14:47.84 00:19:21.82Desviacion estandar de tiempos 00:05:26.14 00:06:04.90Tiempo Total de Resolucion 00:41:29.77 11:14:37.74Tiempo Generacion de Areas 00:00:24.74 10:29:34.58

10

zon

as

Tiempo promedio de los recorridos 06:06:50.43 06:06:35.46Diferencia Maxima de tiempos 00:19:01.94 00:23:12.60Desviacion estandar de tiempos 00:06:24.89 00:06:42.64Tiempo Total de Resolucion 00:25:46.15 02:39:45.96Tiempo Generacion de Areas 00:00:39.81 02:30:07.90

Fig. 3.23: Comparacion temporal en horas de la zonificacion de la region nocturna en 8, 9 y 10zonas utilizando las dos heurısticas con mejores resultados.

Si bien la zonificacion en 8 areas da como resultado recorridos menores a las 8 horas,al no tener en cuenta restricciones de giros ni factores que pueden hacer demorar mastiempo a los camiones, tales como complicaciones del transito en determinados horarios,semaforos, calles con pendiente, calles de barro, vıas de trenes o giros muy cerrados, nopareciera ser posible cumplir con dicha cota al agregar el tiempo extra a los recorridos.Por este motivo la zonificacion que se utilizara, es la que se observa en la Figura 3.24 enla cual se logra reducir la cantidad de camiones necesarios de 12 a 9, con lo que se contarıacon 3 camiones mas para cubrir la zona centrica.

Page 60: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

54 3. Capıtulo III: Experimentos y resultados

Fig. 3.24: Posible zonificado de la region nocturna en 9 zonas resuelto con el algoritmo desarrolladoen el presente trabajo con la heurıstica total + CPP + feedback con N = 100, y unfactor de 5.

Por ultimo, utilizando la heurıstica parcial, se ha resuelto el zonificado de la regiondiurna del mismo municipio. Para lograr una similitud razonable entre las 19 areas nue-vamente se han ubicado manualmente los centros de las mismas a fin de lograr que seencierren lo mas cercano al final del algoritmo. Al ser grande la cantidad de areas el pro-blema de ubicacion ya es mas intratable que para las zonas nocturnas. Sin embargo, se haobtenido mediante prueba y error una cobertura con la heurıstica parcial de un 97,03 %del crecimiento total al momento de encerrarse la primer area, restando por agregar 207aristas (i.e., 21 km). Este zonificado resultante es el que se observa en la Figura 3.26, ycuyos resultados temporales se encuentran resumidos en la tabla de la Figura 3.25.

Region Diurna Parcial

19zo

nas

Tiempo promedio de los recorridos 06:27:33.02Diferencia Maxima de tiempos 00:41:20.86Desviacion estandar tiempos 00:03:12.40Tiempo Total de Resolucion 98:37:56.21Tiempo Generacion de Areas 00:02:58.08

Fig. 3.25: Resultados temporales en horas de la zonificacion de la region diurna utilizando laheurıstica base Parcial.

Page 61: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

3.1. Experimentos, resultados y discusion 55

Fig. 3.26: Posible zonificacion de la region diurna en 19 areas resuelta con el algoritmo que utilizala heurıstica base parcial.

***

En los graficos y tablas producto de estos experimentos se observa que con la ideainicial, a pesar de ser esta tan simple, se obtienen resultados muy buenos en muy pocotiempo. Dependiendo del tiempo con el que se cuente para la resolucion se le puedenaplicar modificaciones al algoritmo, como se vio, para acrecentar la similitud de las areasachicando la maxima diferencia de los tiempos necesarios para recorrer cada una. Aunquedebido a que no se tienen en cuenta en este trabajo las restricciones de giro, no parecieraconveniente consumir demasiado tiempo en esta parte de la solucion del problema deencontrar los recorridos para los camiones recolectores de residuos. Sin embargo, si estas seagregaran al mapa inicial, suponiendo que cada nodo se multiplicara por 8, bien podrıanejecutarse las dos heurısticas base consumiendo, como ya se vio, apenas mas tiempo,dado que el mismo no depende tanto de los nodos como de la cantidad de areas en las

Page 62: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

56 3. Capıtulo III: Experimentos y resultados

cuales se zonifica. Por otro lado resolver el recorrido optimo de las zonas ası generadas,aumentarıa en complejidad hasta el punto de ser necesario utilizar las tecnicas analizadasen los distintos trabajos destinados a tal fin.

Page 63: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

4. CAPITULO IV: CONCLUSIONES

4.1. Conclusiones

A lo largo del presente trabajo se estudio la posibilidad de dar una buena heurıstica quea partir de un mapa y una flota de vehıculos resolviera el zonificado del primero a finde asignar un area a cada uno de los elementos del segundo, para que estos realizaranla labor de la recoleccion de forma cooperativa cubriendo toda la region de interes. Lamanera de lograrlo fue en primer lugar modelando el problema en el ambito de los grafosy la programacion lineal entera, representando al mapa inicial como un grafo planar y alas distintas zonas como subgrafos disjuntos de este. De este modo una zonificacion en kzonas esta dada por una particion del grafo en k subgrafos disjuntos. Definiendo similitudentre zonas como el parecido entre los resultados de resolver el problema del cartero chinomixto en cada uno de los subgrafos asociados, lo que se busco fue entonces una heurısticaque generara una zonificacion de la region inicial en k zonas lo mas similares posible.

La idea rectora de los algoritmos desarrollados fue, partiendo de un conjunto de sub-grafos nulos del grafo inicial, ir agregandoles conjuntos de aristas a los mismos hastaformar el particionamiento. Se ha comprobado en este trabajo la estrecha relacion entreel peso del grafo y el resultado del CPP, por lo que la primer tentativa que surgio paralograr el objetivo fue agregar un conjunto de aristas en cada iteracion del crecimiento aaquel grafo cuyo resultado de resolver el CPP fuera menor. El inconveniente inmediatoque se presento fue que siendo el problema del cartero chino mixto perteneciente a la claseNP-Completo no era razonable resolverlo a cada iteracion, menos aun cuando los subgra-fos tomaran un tamano considerable. Motivo por el cual hubo que desarrollar distintoscriterios con menor complejidad para sortear dicho obstaculo.

Se desarrollaron entonces dos heurısticas base, que demostraron dar muy buenos re-sultados en muy corto tiempo. Luego se intento mejorar estos algoritmos por medio defunciones de realimentacion basadas en la resolucion del problema del cartero chino mixtocada cierta cantidad de pasos, y mediante la variacion de sus parametros. Sin embargo,la calidad de los primeros resultados sumado al escaso tiempo requerido para obtener-los determino que el margen de mejora resultara demasiado pequeno requiriendo esfuer-zos considerables para superarlo. Como consecuencia, el necesario trueque de las demasheurısticas fue invertir mas tiempo, para obtener unas muy leves mejoras. Sin embargose han logrado resultados mejores que los originales obtenibles en tiempos medianamenterazonables para tratarse de la resolucion repetida de un problema NP-Completo.

De las heurısticas desarrolladas, en este informe se enumeraron las mas relevantesjunto con algunos de los resultados obtenidos con las mismas para determinados valoresde parametros, y se compararon entre ellas con respecto al tiempo consumido y la calidadde los resultados al aplicarlas sobre distintos tamanos y cantidades de areas.

Debido a la dificultad del posicionamiento optimo de los centros de las areas, la dis-tribucion tentativa de las mismas fue hecha a mano y corregida mediante el metodo deprueba y error, utilizando una heurıstica simple basada unicamente en el peso del grafo.

57

Page 64: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

58 4. Capıtulo IV: Conclusiones

Por este motivo, a fin de evitar errores, se decidio comparar la calidad de los algoritmospropuestos mediante graficos en funcion del tamano de las areas a lo largo de la generacionde las mismas, en lugar de mirar unicamente los resultados finales, siendo que estos se venfuertemente afectados por el posicionamiento inicial de sus centros.

En lo que respecta a los requerimientos, mediante las heurısticas desarrolladas, se halogrado cumplir con el mas importante, el relacionado con la disiminucion de la cantidad dezonas de la region nocturna, dejando tres camiones para mitigar la problematica concretadel area delimitada por las cuatro avenidas. Mientras que en lo relacionado con la obtencionde areas con formas sencillas, todos estos algoritmos, debido a su metodo de generaciondevuelven un excelente punto de partida para que con algunos intercambios de calles entrelas areas se obtengan resultados tan simples como los utilizados actualmente.

4.2. Trabajo a futuro

Cuando de heurısticas y metaheurısticas se trata, el panorama que se abre entre va-riantes y mejoras no pareciera tener fin. Evidentemente en este trabajo no solo no se hancubierto todas las heurısticas posibles para resolver el problema planteado, sino que nisiquiera se han podido cubrir completamente las pocas enunciadas. Si bien en esta tesisse probo gran cantidad de combinaciones de parametros, se ha abierto un sinfin mas deposibles variaciones y modificaciones a analizar en trabajos posteriores.

Entre esas modificaciones, viendo las diferentes respuestas de las dos heurısticas base enfuncion del tamano promedio de las zonas, se podrıa generar una heurıstica que combinaraambas con un factor variable. Ası mismo podrıa intentar analizarse la repercusion de lacantidad de aristas doble mano y mano unica en el resultado de la resolucion del problemadel cartero chino.

Para mejorar las formas de las zonas generadas se podrıan desarrollar heurısticas ometaheurısticas para redistribuir las aristas y arcos de las intersecciones buscando mante-ner en la medida de lo posible los resultados del CPP. Incluso podrıa intentarse mejorarestos ultimos en este proceso.

Por otro lado, ademas de modificar y generar heurısticas para obtener mejores solucio-nes a las expuestas, a lo largo de esta tesis se han planteado problemas de difıcil resolucionque de por sı ya ameritan trabajos similares o mayores a este:

Optimizar posicionamiento de Knodos

Modificar las posiciones de los centros de las areas para generar zonas mas equilibradasque cubran toda la region sin bloquearse mutuamente en el crecimiento.

En esta tesis los centros de las zonas a generar son puestos arbitrariamente intuyendopor donde va a crecer la misma, y tratando de darle el mayor espacio posible para queno la encierren las demas hasta no haber alcanzado todas un tamano similar. Esto podrıaintentar automatizarse mediante heurısticas que imitaran lo que se ha hecho manualmenteen este trabajo. Esto es, iterativamente resolver el zonificado con alguna heurıstica sencillae ir variando las posiciones de los centros intentando generar espacio para la primer zonaque se bloquea en la ejecucion anterior.

Agregar restricciones de giros

Page 65: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

4.2. Trabajo a futuro 59

En este trabajo no se han tenido en cuenta las reglas de transito al momento dearmar los recorridos. Por ejemplo podrıa intentarse que al levantar el mapa se agregaranrestricciones de giros explotando los nodos y conectando solamente las aristas asociadasa las calles que permitieran la circulacion entre ellas. Esto va a repercutir en la cantidadde variables, por lo que para resolver el problema del cartero chino habra que desarrollarnuevas heurısticas.

Fig. 4.1: Dique: El Cadillal

Page 66: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

60 4. Capıtulo IV: Conclusiones

Page 67: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5. APENDICE

5.1. Implementacion

Se desarrollo software para resolver el problema utilizando los distintos algoritmos, ysoftware para hacer pruebas sobre el mismo comparando los resultados de sus variantes.El primero ejecuta sobre un proceso principal el cual en funcion de un input y los parame-tros seteados se encarga de llamar a las distintas subrutinas y subprocesos. El segundoesta compuesto de varios programas que llaman al primero variando los parametros, yluego levantan los resultados generando graficos de comparativos.

Fig. 5.1: Arbol de carpetas y archivos del programa principal

61

Page 68: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

62 5. Apendice

A continuacion se expone con detalle el software desarrollado, en particular los requisi-tos necesarios, archivos de configuracion, las distintas rutinas y subrutinas, los canales decomunicacion, salidas intermedias y metodos de debug, para la obtencion de los resultadosobtenidos en esta tesis.

***

Configuracion

El codigo que resuelve el problema presentado en los capıtulos anteriores, esta pro-gramado en su mayorıa en lenguaje python[22], por lo que para la ejecucion es necesariotener instalado dicho entorno. En particular las bibliotecas utilizadas requieren python 2.7o superior. Estas son:

sys, time, os, argparse, datetime, pygraph.classes.digraph.digraph, subprocess.call,inspect, shutil, numpy, matplotlib.mlab, matplotlib.pyplot, pylab, math, random,

unicodedata, collections.defaultdict, collections.namedtuple, collections.OrderedDict

El solver utilizado es SCIP[28] en su version 3.1.0, y el programa generador del modeloen formato lp con su respectiva tabla tlb es el ZIMPL[29], en su version 3.3.2.

***

Antes de ejecutar, es necesario asegurarse de definir los nombres de archivos y rutas que uti-lizara el programa, los cuales se encuentran con valores default en el archivo utils/config.pyen la carpeta principal.

maindir, maps path, output path, areas folder, areas path, solutionFolder, solutionPath,circuitFolder, map filename, knodes filename, debFilename, OSMout filename,graphByCircuits filename, growedAreas filename, zoning filename, zpl filename,

tlb filename, lp filename, scip script filename, sol filename, circuit filename

***

Estructuras de datos

En lo que respecta a las estructuras utilizadas, se diseno una clase denominada Gra-fOSM la cual se encuentra dentro del archivo /utils/utils.py capaz de recibir un mapa enformato osm, exportado de la pagina oficial de OpenStreetMap [20], convertirlo a un grafomixto, generar su version simplificada manteniendo la funcion de transformacion y dibujarcomo mapas subgrafos del mismo en ambas versiones. Tambien en ella se contienen losknodos, es decir los subgrafos del grafo original que representaran a las distintas areas,con todos sus atributos.

Ademas de esta clase, que sera la mas utilizada a lo largo del trabajo, se han desarrolla-do otras estructuras para representar los grafos y subgrafos, como la clase DijkstraGraphque modelara el grafo mixto como un digrafo con algunas caracterısticas especiales a finde calcular los caminos simples con los que particionar al grafo original; tambien se hanutilizado matrices de adyacencias, con una funcion de ponderacion asociada, un conjuntode arcos como una lista de pares ordenados, ası como diccionarios que relacionan aristaso nodos con atributos.

Page 69: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 63

5.1.1. Hilo principal

El programa principal encargado de regir la ejecucion de las diversas subrutinas seencuentra codificado en el archivo de nombre main.py. La manera que tiene de recibir losparametros que determinan las subrutinas y archivos a utilizar, es por medio del mencio-nado config.py, o bien a traves de la lınea de comandos, utilizando un parser de argumentosque acepta los siguientes flags y parametros:

-h,--help : Muestra este conjunto de flags y parametros.

-c,--config : Muestra las variables del archivo de configuracion. Finaliza ejecucion.

-st,--statics <statics_filename> : Recibe el path (absoluto o relativo) y elnombre del archivo donde se guardaran las estadısticas finales de todas las subrutinasque se ejecuten. En caso de no existir este argumento el programa utilizara el nombreque figura en el archivo de configuracion.

-m,--map <OSMap> : Recibe el path (absoluto o relativo) y el nombre del archivo quecontiene el mapa sobre el que se desea trabajar. El formato del mismo debe ser .osmcon todo lo que ello implica. En caso de no pasar dicho argumento se utilizara elmapa cuyo nombre figura en el archivo de configuracion.

-k,--knodes <knodes> : Recibe el path (absoluto o relativo) y el nombre del archivoque contiene las coordenadas de los centros de las areas que se desea generar. Elmismo debe estar en formato .osm.

-b,--bycircuits : De presentarse este flag, el programa correra la subrutina queparticiona el grafo simplificado en circuitos simples. En caso contrario, levantara losmismos del archivo que se menciona en la configuracion.

-g,--growareas : Este flag obliga al programa a generar las areas.

-e,--edges : Si esta presente indica al hilo principal que el crecimiento de las areas esmediante la heurıstica que agrega de a una arista por vez; caso contrario se utilizaranlos conjuntos de aristas generados por la particion en circuitos simples.

-tot,--total <total_factor> : Dicho flag indica que el algoritmo a utilizar se-leccionara el area menor mediante la heurıstica que mide el peso total del subgrafoasociado. El parametro siguiente (de caracter obligatorio) indica el factor de mul-tiplicacion de las aristas obligatorias por sobre las optativas. En caso de no existireste flag, se utilizara la heurıstica parcial.

-cpp,--cpp <cpp_step>,<cpp_factor> : Indica al programa que cada cpp steppasos debera utilizarse la heurıstica CPP con factor cpp factor.

-o,--order <order> : La heurıstica utilizada para determinar la distancia entre uncentro y un conjunto de aristas sera la indicada mediante el parametro order. Pordefault se utilizara el criterio lejano.

-z,--zoning : De hallarse, obliga al programa a ejecutar el algoritmo de zonificado,el cual factibiliza todas las areas, luego de permitir una modificacion manual dereestructuracion en el archivo que contiene las k zonas pre-generadas.

Page 70: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

64 5. Apendice

-zmp,--zimpl : Corre la subrutina que llama al programa ZIMPL a fin de generarel LP

-s,--scip : Corre la subrutina que llama al solver y levanta el resultado generandoel recorrido solucion.

Entonces, comandos de ejecucion validos serıan:

$ python main.py -m 4zonas.osm -k 4knodes.osm -b -g -e -tot 2 -cpp 10 9 -z -zmp -s

$ python main.py -g -e -tot 9 -cpp 100 8

Fig. 5.2: Hilo de ejecucion

Al ejecutarlo, el proceso empieza creando las carpetas y archivos donde guardara losresultados intermedios y finales, luego abre el mapa en formato .osm y genera el digrafo quelo modela. Para todas las subrutinas escribe en el archivo de debug las estadısticas resul-tantes y los tiempos reales consumidos. En el paso siguiente genera el digrafo simplificado.Posteriormente, si esta seleccionada la opcion, genera el conjunto de circuitos simples.Luego elimina las aristas sin circuito a fin de garantizar factibilidad del grafo simplificado.Segun el input genera las distintas zonas usando las heurısticas pre-seleccionadas, casocontrario las levanta del archivo indicado en config junto con la posicion de los centros.Mas adelante, si esta indicado en el input, factibiliza las zonas luego de dar un tiempoindeterminado (i.e., hasta que se presione una tecla) para una manual modificacion pormedio de algun editor (grafico o no) del archivo que las contiene. Este paso se agrego parapoder corregir, con riesgo de empeorar los resultados, la delimitacion de las areas si se con-sidera necesario. Una vez factibilizadas las zonas se genera el modelo de PLEM mediante

Page 71: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 65

el ZIMPL para resolverlo por medio del solver SCIP. Dicho resultado es levantado poruna subrutina y la cual se encarga de listar en un archivo de salida el circuito partiendode alguno de los nodos, ademas de generar un mapa con formato .osm para visualizar almismo.

Como un anadido, en cada subrutina, si la misma genera un grafo, este es guardado enun archivo de formato .osm para una mejor revision visual. Estos mapas se pueden abrirutilizando la herramienta desarrollada en lenguaje java para tal fin: josm-tested.jar.[21]

5.1.2. De OSM a Grafo

La primer subrutina que se desprende del hilo principal, es la encargada de la generacionde un digrafo G = (VG, AG) a partir del mapa M = (NM , CM , RM ). Las instrucciones dela misma se encuentran en el archivo osmToGraph/osmToGraph.py; aunque la mayorparte del trabajo lo realiza la clase antes mencionada GrafOSM codificada en el archivoutils/utils.py, y que es la que almacena al mismo en sus dos versiones: original (G) ysimplificada (H).

Para leer el formato osm en el cual se recibe el mapa se utiliza un parser denominadoOSMParser de la librerıa imposm.parser el cual funciona con 3 callbacks que se definenpor el usuario, y son los que a medida que va leyendo el archivo lanza en distintos threadspara resolver que hacer con los datos obtenidos. La cantidad de threads paralelos es seteablepor medio de un parametro en el constructor del objeto de la clase OSMParser. Porejemplo:

c = OSMParser(concurrency=4, coords callback=coords callback)

+ coords callback (coords):Recibe un listado de nodos o coordenadas del mapa, que representan todos los puntos

existentes en el mismo, los cuales pueden ser puntos sueltos, uniones de caminos, verticesde figuras que representan edificios, paradas de colectivos, etc.. Cada uno de ellos tiene lassiguientes caracterısticas:

nid ∈ Z, que es un un identificador unico para cada nodo del mapa.

lon ∈ R, que indica la longitud del nodo.

lat ∈ R, que indica la latitud del nodo.

+ ways callback (ways):Recibe una lista de caminos compuestos de:

wid ∈ Z, que es un identificador unico para cada camino del mapa.

tags = {att : value}, un diccionario de etiquetas con los nombres y valores de losatributos del camino.

refs = [ni, ...nk] ⊆ NM , una lista de nodos por los que pasa el camino, reconociblespor su nid.

+ relations callback (relations):Recibe una lista de relaciones compuestas de:

Page 72: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

66 5. Apendice

rid ∈ Z, un identificador unico para cada relacion.

tags = {type : value}, un diccionario de etiquetas con los tipos de relaciones y susvalores.

refs = wfrom, nvia, wto una tupla que indica los elementos que entran en la relacion.

Esta ultima funcion se desarrollo unicamente con fines estadısticos para calcular lacantidad de restricciones y algunas caracterısticas de las mismas. La que sı se utiliza pararesolver el problema es la encargada de responder al callback de coordenadas, a la cual sele asigno la tarea de ir almacenando el listado de nodos en un diccionario indexable porel nid de nombre coordinates.

Los caminos transitables contienen el atributo highway con un nombre asociado quedetermina que tipo de camino es. En la funcion encargada de responder al callback decaminos se filtraran todos las que no contengan dicho atributo, o lo contengan pero indi-cando que son para transitar a pie o para camiones (esto por las caracterısticas del mapade la zona de San Miguel de Tucuman, en el cual se suele asignar highway: Track a loscaminos internos de los predios que manejan camiones. Quizas en otras zonas haya quefiltrar mas caminos).

La estructura utilizada para modelar el mapa y utilizarlo como un grafo mixto esun digrafo G representado como un diccionario de nodos VG indexable por nid con undiccionario de atributos asociado; y un diccionario de aristas EG indexable por wid conun listado de atributos asociados. En este ultimo diccionario figurara como un atributoobligatorio si la arista es dirigida (arco) o no dirigida, esto es oneway = yes/no

Entonces en la funcion, los caminos no filtrados se agregaran al grafo de la siguientemanera:

Sea Ck el camino que se quiere agregar, y refs(Ck) = {nk1, ..., nkj} el conjunto desus coordenadas, entonces ∀1, . . . , j, VG[nki] = coordinates[nki]; ademas ∀1, . . . , j − 1,EG[(nki, nki+1)] = attributes(CK), donde attributes(CK) seran los atributos relativos alnombre, sentido y tipo del camino Ck. De este modo el sentido de una arista, en caso detener uno solo, estara dado por el orden de los nodos del par ordenado. El peso de dichaarista sera la distancia euclideana de los nodos que la componen.

En caso de no figurar un sentido definido en los atributos de una calle, se asume quela misma es doble mano; esto es debido al resultado de un analisis sobre el mapa originalde la zona de estudio. Asimismo las calles cuyo nombre no figura en los datos de entradason llamadas por el prefijo nomame seguido del wid. El tipo de la calle sera primary encaso de ser avenida, o residential en caso de ser calle.

Luego de completada la obtencion de los datos del archivo osm y almacenados en elgrafo G, al cual en el codigo dentro de la clase GrafOSM se llamara con el nombre dedigraph, se procedera a generar la version simplificada del mismo, es decir el grafo mixtoH, bajo el nombre de simplifyGraph.

La estructura utilizada para representarlo es un digrafo con las mismas caracterısticasque el que almacena G. La unica diferencia son los valores allı guardados.

Para generarlo, se recorren los nodos del grafo G y se guardan en H unicamente losno inutiles, es decir aquellos que no unen 2 segmentos de igual sentido y tipo. Del mismomodo, se agregan a H todas las aristas existentes entre nodos no inutiles con los mismosatributos (sentido, nombre y peso) que en el grafo original. Luego se revisan las cadenasde aristas cuyos nodos internos son inutiles y sus extremos no, y se agrega una arista conel mismo sentido y tipo que la reemplaza en el grafo H, siempre y cuando sus extremos no

Page 73: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 67

sean el mismo nodo y no se superponga con una arista de ningun tipo existente en H. Elnombre y peso de la arista reemplazante sera la concatenacion y suma de los de las aristasque reemplaza respectivamente. Ademas se agregara un atributo que sera la concatenacionde los nid de los nodos de la cadena que reemplazo. De no ser simplificable la cadena, seagregaran a H las arista que la componen con los mismos atributos (sentido, nombre ypeso) del grafo original

Los nodos en H no se indexaran ya por el nid, sino que se generara una nueva nume-racion denominada nidx (o simplemente idx) a partir de 1, ya que al ser una porcion delmapa mundial lo que se recibe de input, los valores de nid son muy grandes y complicanlos nombres de las variables del solver. La conversion de un grafo a otro se guardara en 4diccionarios dentro de la clase GrafOSM:

nodes id2idx: indexable por nid, tiene como resultado el valor de la nueva numeracion.

nodes idx2id: la inversa del anterior.

edges idx2id: dada una arista de H devuelve la cadena de nodos internos que reem-plazo en G.

nodes id2edges idx: dado un nodo inutil de G perteneciente a una cadena simplifica-da, devuelve la arista de H que la reemplaza.

Ademas al codigo de la clase se le agregaron subrutinas capaces de recibir un subgrafode H o de G y dibujarlos con formato osm haciendo uso de los datos levantados delarchivo original, y agregandole a cada arista los atributos que se desean. Por lo que luegode simplificado el grafo se generan dos mapas de debug en dos archivos: Con el nombreque figura en la variable config.OSMout filename se almacena el digrafo original, y con elmismo nombre anadiendole el sufijo simplified el digrafo simplificado.

5.1.3. De Grafo a Circuitos

El siguiente paso una vez generado un digrafo H que representa el mapa de entradasimplificado, es particionar al mismo en ciclos a fin de verificar factibilidad y almacenarel conjunto de circuitos que luego se utilizaran para factibilizar las zonas generadas en lossiguientes algoritmos.

Para esto se escribio una subrutina con el nombre de graphByCircuits, la cual se en-cuentra en el archivo graphByCircuits/graphByCircuits.py junto con la clase Dijks-traGraph. Ambos en conjunto llevaran a cabo el particionamiento.

La representacion utilizada del grafo mixto en esta seccion sera una matriz de adya-cencias A donde sus elementos:

aij =

L(i, j) si eij ∈ (AH ∪ EH)L(j, i) si eji ∈ EH

∞ en otro caso

En la subrutina, esto se implementa mediante un diccionario de listas, de nombre ady,indexable por nidx y cuyo valor es una lista de pares con el nodo adyacente como primerelemento del par y el peso de la arista formada por ambos como el segundo. En estediccionario las aristas no-dirigidas del grafo H se duplican en sentido contrario pudiendointerpretarlo como un grafo dirigido.

Page 74: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

68 5. Apendice

si (ni, nj) ∈ AH → (nj , L(ni, nj)) ∈ ady[ni]si (ni, nj) ∈ EH → (nj , L(ni, nj)) ∈ ady[ni] ∧ (ni, L(ni, nj)) ∈ ady[nj ]

Se generara con esos datos un objeto de la la Clase antes mencionada, DijkstraGraph,la cual es la encargada de resolver el camino mınimo entre dos nodos utilizando el conocidoalgoritmo de Dijkstra para caminos mınimos sobre un digrafo entre un nodo y el resto conuna leve modificacion que lo hace detenerse al encontrar la distancia del par deseado.

Luego se recorren todas las claves del diccionario adj y para cada clave ni se iterasobre la lista de adyacencias consultando al DijkstraGraph por cada arco (ni, nj), connj = adj[ni][j], el camino mınimo que conduce de nj a ni.

Este camino mınimo resultante [nj , ...., ni] es convertido en el circuito simple C =[nj , ...., ni, nj ], y almacenado en un diccionario de nombre circuitos indexable por el parordenado de la consulta, i.e., circuitos[(ni, nj)] = [nj , ..., ni, nj ]

Al permitirse giros en U aristas no dirigidas seran cada una un circuito, lo cual permiteuna pequena modificacion que evita 2n llamados a la funcion de Dijkstra, cuya respuestaes conocida de antes, siendo n = |EH |, almacenando circuitos[(ni, nj)] = [nj , ni, nj ] ycircuitos[(nj , ni)] = [ni, nj , ni] ∀(ni, nj) ∈ EH .

En realidad este tipo de particion tiene mas sentido de haber restricciones de giros enU utilizando para ello solamente circuitos simples pero, como ya se aclaro, la complejidadcomputacional aumentarıa demasiado para un detalle que no es el objeto de estudio delpresente trabajo.

El conjunto ası generado es guardado en un archivo de formato osm con el nombreque figura en la variable de configuracion config.graphByCircuits filename a fin de poderrevisar visualmente el particionamiento.

Al ser una subregion de un mapa la que se desea zonificar no es sencillo prever si unacalle tiene o no circuito. Por este motivo, Cada arista que no posee circuito es almacenadacomo un error en un archivo con el mismo formato y nombre que el anterior anadiendoel sufijo errores. Luego todas ellas son eliminadas del grafo H, para poder garantizarfactibilidad.

Tambien se analizo la variante de prohibir giros en U a fin de abrir la posibilidad de,en un trabajo posterior, agregar dichas restricciones al problema estudiado. El cambioen el algoritmo fue no permitir, al buscar circuito para una arista no-dirigida, el uso desu opuesta restringiendo los circuitos unicamente al subconjunto de todos los circuitossimples del grafo. Los resultados de este algoritmo implementados en un mapa compuestode 4 zonas de las actualmente utilizadas en el municipio se observan en la figura 5.3.

Page 75: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 69

Fig. 5.3: Los errores estan dados por las aristas sin circuitos simples. Estas debieran ser las callessin salida, o las entrantes o salientes del mapa

Por una cuestion de simplificacion del problema a tratar, se paso por alto todo tipo derestriccion de giro, dando lugar a la implementacion del algoritmo visto en el capıtulo 2,y la aplicacion del mismo sobre la misma subregion se observa en la figura 5.4.

Fig. 5.4: Los errores estan dados unicamente por las calles entrantes y salientes del mapa. Dehaber otro hay que contrastar los datos de entrada con la realidad

5.1.4. Generacion de Areas

Teniendo el diccionario de circuitos indexable por todas las aristas del grafo (en ambossentidos las no-dirigidas) generado en el paso anterior, el programa agrega al GrafOSMque modela al mapa los centros de las areas guardados en el archivo en formato osm cuyo

Page 76: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

70 5. Apendice

nombre se encuentra en la variable config.knodes filename (en caso de no haber sido pasadocomo parametro utilizando el flag -k), y comienza a hacer crecer las zonas de acuerdo a laheurıstica seleccionada.

Lo primero que mira es el criterio de particionamiento del grafo en conjuntos. Si sedesea agregar de una arista por vez se llamara a la rutina growAreasByEdges, caso con-traro (i.e., agregar de a ciclos) la rutina ejecutada sera growAreasByCircuits. Ambas, quese encuentran desarrolladas en el archivo zoning/growAreas.py, difieren unicamente unica-mente en la inicializacion de dicho conjunto y en la factibilizacion de las zonas resultantes.Lo primero debido a lo ya mencionado, y lo segundo porque no es necesario factibilizar elconjunto finito de circuitos conexos generado por la heurıstica que agrega ciclos.

Ambos criterios coinciden en el resto del algoritmo, el cual cuenta con los siguientespasos:

1: function growAreas(Knodes,Edges)2: Edges.distances = calculateDistances(Knodes,Edges)3: while Edges 6= ∅ do:4: knode := getMinor(Knodes)5: Edges := orderBy(Edges, knode)6: for i ∈ [0, |Edges|) do:7: if Circuitsi ∩nodes knode = ∅ then:8: c← Circuitsi9: knode := addCircuitTo(knode, c)

10: end if11: end for12: if not c then:13: knode.ready = True14: end if15: end while16: end function

Donde Edges es el conjunto de conjuntos de aristas creado segun el criterio antesmencionado, es decir conjunto de circuitos o conjunto de aristas. Un grafo y un conjuntoconexo de aristas queda conexo si tienen al menos un nodo en comun. Esa interseccion denodos es la que se intenta indicar en el algoritmo mediante el sımbolo ∩nodes.

La rutina calculateDistances calculara las distancias de los conjuntos de aristas alos centros de los knodos segun el criterio de orden definido al ejecutar el programa. Losdesarrollados en este trabajo en principio son lejano y promedio:

1: function calculateDistanceslejano(Knodes,Edges)2: for e ∈ Edges do:3: for knode ∈ Knodes do:4: for n ∈ e.nodes do:5: dist := max(dist, distance(center, n))6: end for7: e.distancekid := dist8: end for9: end for

10: end function

Page 77: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 71

1: function calculateDistancespromedio(Knodes,Edges)2: for e ∈ Edges do:3: for knode ∈ Knodes do:4: dist := 05: for n ∈ e.nodes do:6: dist := dist+ distance(center, n)7: end for8: e.distancekid := dist9: end for

10: end for11: end function

La funcion distance se encuentra en el archivo utils/utils.py con el nombre de distan-ce on unit sphere, recibe como parametros dos latitudes y dos longitudes (lat1, long1,lat2, long2) y devuelve la distancia euclideana en kilometros entre ambos pares basandoseen la formula explicada en la teorıa para tal fin. Dichos resultados, que son almacenadosen cada conjunto de aristas, los utiliza la funcion orderBy en el algoritmo de crecimientode areas para ordenar a los mismos de menor a mayor de acuerdo al knodo seleccionado.

Por precondicion, al ser el grafo fuertemente conexo, el conjunto Edges debe terminaral finalizar el algoritmo growingAreas dado que getMinor(..) elige al menor knodo noterminado. Esta funcion dependera de la heurıstica seleccionada. Es decir puede utilizarseparcial, total, CPP o alguna combinacion de los mismos.

Si el criterio es puramente parcial, el algoritmo los primeros k pasos agregara elconjunto mas cercano a cada zona en orden aleatorio y luego en cada iteracion del algoritmoanterior devolvera aquel subgrafo (knodo) cuya suma de todas sus aristas obligatorias seamenor.

1: function getMinorPartial(Knodes)2: for knode ∈ Knodes do:3: if not knode.Ready then:4: Resultsknode := 05: for edge ∈ knode do:6: Resultsknode := Resultsknode + edge.weight7: end for8: end if9: end for

10: return minKnode(Results)11: end function

Donde lo que retorna la funcion es el knodo cuyo resultado es el mınimo.

Si el criterio es puramente total, el algoritmo agregara tambien un conjunto a cadaarea, y luego cada iteracion hara dos pequenas modificaciones sobre el anterior:

1: function getMinorTotal(Knodes)2: for knode ∈ Knodes do:3: if not knode.Ready then:4: knode := addOptativeCircuits(knode)5: Resultsknode := 0

Page 78: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

72 5. Apendice

6: for edge ∈ knode do:7: if edge.obligatory = True then:8: Resultsknode := Resultsknode + edge.weight× Fobl

9: else10: Resultsknode := Resultsknode + edge.weight× Fopt

11: end if12: end for13: knode := deleteOptativeCircuits(knode)14: end if15: end for16: return minKnode(Results)17: end function

Donde lo que retorna la funcion es el knodo cuyo resultado es el mınimo; los factoresFobl y Fopt debieron ser pasados como parametro al ejecutar el programa con un valorque representa la relacion Ftot = Fobl/Fopt. La funcion addOptativeCircuits hace unllamado a la rutina explicada en la seccion siguiente con el nombre de zoning, en la cualse factibiliza el subgrafo mediante el agregado de circuitos optativos. La funcion dele-teOptativeCircuits elimina todas las aristas optativas agregadas al subgrafo asociado adicha area.

Si el criterio es puramente CPP, entonces el algoritmo hara los primeros k pasos aligual que los anteriores, pero luego seguira los siguientes pasos:

1: function getMinorCPP (Knodes)2: for knode ∈ Knodes do:3: if not knode.Ready then:4: knode := addOptativeCircuits(knode)5: Resultsknode := 06: for edge ∈ knode do:7: Resultsknode := Resultsknode + edge.weight× (Fobl − 1)8: end for9: zpl := GraphToZimplCPP (knode)

10: lp := ZIMPL(zpl)11: Resultsknode := Resultsknode + parseResult(SCIP (lp))12: knode := deleteOptativeCircuits(knode)13: end if14: end for15: return minKnode(Results)16: end function

Donde lo que retorna la funcion es el knodo cuyo resultado es el mınimo. En este algo-ritmo se utilizan las 3 funciones que se explicaran en los pasos siguientes con mayor detalle.El grafo factibilizado por la funcion addOptativeCircuits es convertido al modelo de pro-gramacion lineal entera escrito para tal fin mediante la funcion GraphToZimplCPP quese encuentra en el archivo GraphToZimplCPP/GraphToZimplCPP.py, luego este modeloes re-escrito en el formato que acepta el solver mediante el programa ZIMPL para luegosı resolverlo mediante SCIP . El resultado es levantado de un archivo mediante la funcionparseResult la cual devuelve el valor de la funcion objetivo. Luego se eliminan todos los

Page 79: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 73

archivos intermedios generados por los diferentes programas y subrutinas, y se eliminannuevamente las aristas optativas agregadas al subgrafo del knodo.

Hasta aquı los 3 algoritmos de las heurısticas puras. Pero se ha desarrollado una 4taheurıstica que determina la combinacion de ellos. Una posibilidad es utilizar la misma entodos los pasos, como lo harıa el primer algoritmo presentado; otra es utilizar CPP cadaN pasos y luego una de las dos restante en los N-1 pasos intermedios; y por ultimo utilizarademas una funcion de realimentacion. Estas dos implican una leve modificacion en elalgoritmo original.

El algoritmo que resuelve la heurıstica CPP-N con Total o Parcial, al igual que losanterioreses resuelve los primeros k pasos agregando en orden aleatorio el circuito mascercano a cada knodo, y luego realiza lo siguiente:

1: function growAreasCPPN ,T otal/Partial(Knodes,Edges)2: Edges.distances = calculateDistances(Knodes,Edges)3: Step := k4: while Edges 6= ∅ do:5: if Step ≡ 0(N) then:6: knode := getMinorCPP (Knodes)7: else8: knode := getMinorTotal/Partial(Knodes)9: end if

10: Edges := orderBy(Edges, knode)11: for i ∈ [0, |Edges|) do:12: if Circuitsi ∩nodes knode = ∅ then:13: c← Circuitsi14: knode := addCircuitTo(knode, c)15: end if16: end for17: if not c then:18: knode.ready := True19: end if20: Step := Step+ 121: end while22: end function

Esto es, cada N pasos ejecuta la subrutina que devuelve el knodo menor utilizando elcriterio CPP (esto es, el resultado del problema del cartero chino), y luego en los pasosintermedios llama a la subrutina que utiliza el criterio Total o Partial segun se hayadecidido al ejecutar el programa.

Por otro lado, la heurıstica que utiliza CPP-N con Total o Parcial y Realimen-tacion utiliza el mismo algoritmo anterior, pero con dos modificaciones en las funcionesde getMinor: En primer lugar almacena cada N pasos los resultados del CPP y de To-tal/Parcial, y en segundo lugar, al llamar a la rutina de total (o parcial), utiliza dichosresultados en una funcion de realimentacion.

1: function growAreasCPPN ,T otal/Partial(Knodes,Edges)2: Edges.distances := calculateDistances(Knodes,Edges)3: Step := k

Page 80: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

74 5. Apendice

4: while Edges 6= ∅ do:5: if Step = k ∨ Step ≡ 0(N) then:6: knode,ResultsCPP , ResultsTotal/Partial := getMinorCPP (Knodes)7: else8: knode := getMinorTotal/Partial(Knodes,ResultsCPP , ResultsTotal/Partial)9: end if

10: Edges := orderBy(Edges, knode)11: for i ∈ [0, |Edges|) do:12: if Circuitsi ∩nodes knode = ∅ then:13: c← Circuitsi14: knode := addCircuitTo(knode, c)15: end if16: end for17: if not c then:18: knode.ready := True19: end if20: Step := Step+ 121: end while22: end function

Donde los algoritmos anteriores de getMinor estaran dados por:

1: function getMinorCPPN(Knodes)

2: for knode ∈ Knodes do:3: if not knode.Ready then:4: knode := addOptativeCircuits(knode)5: Results Totalknode := 06: for edge ∈ knode do:7: if edge.obligatory = True then:8: Results Totalknode := Results Totalknode + edge.weight× Fobl

9: else10: Results Totalknode := Results Totalknode + edge.weight× Fopt

11: end if12: end for13: zpl := GraphToZimplCPP (knode)14: lp := ZIMPL(zpl)15: Results CPPknode := Results Obligatoryknode + parseResult(SCIP (lp))16: knode := deleteOptativeCircuits(knode)17: end if18: end for19: return minKnode(Results CPP ), Results Total20: end function

Donde lo que retorna la funcion es el knodo cuyo resultado es el mınimo junto conel resultado de la heurıstica Total. Si se hubiera elegido la heurıstica Parcial, se hubieransumado unicamente las obligatorias. Por otro lado la funcion getMinor de los pasos inter-medios al finalizar llamara a una subrutina que modificara los resultados obtenidos paracada subgrafo:

Page 81: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 75

function getMinorTotal/Partial(Knodes,ResultsCPP , ResultsTotal/Partial)...Results := negativeFeedback(Results,ResultsCPP , ResultsTotal/Partial)return minKnode(Results)

end function

Dicha funcion de realimentacion tiene cuatro variantes, usando que step es una variableglobal que indica cuantas iteraciones pasaron desde la ultima corrida del CPP, varianceses una funcion que calcula las varianzas de un conjunto de datos, y Fobl

Foptes el factor que

indica cuanto mayor peso tienen las aristas obligatorias por sobre las optativas.

1: function negativeFeedback1(Results,ResultsCPP , ResultsTotal/Partial)2: edgew := 0,75858880490559343: diff := sum(variances(ResultsCPP ))4: maxfactor := (diff/edgew)5: Ffeed := maxfactor − step6: for i ∈ [0, len(Results)) do:7: Resultsi := ResultsCPPi + Ffeed × (Resultsi −ResultsTotal/Partiali)8: end for9: return Results

10: end function

1: function negativeFeedback2(Res,ResCPP , ResTot/Par)2: edgew := 0,75858880490559343: diff := sum(variances(ResCPP ))4: maxfactor := (diff/edgew)5: Ffeed := maxfactor − step6: for i ∈ [0, len(Res)) do:7: Resi := ResCPPi × (Ffeed − step) + 9× Ffeed × (Resi −ResTot/Pari)8: end for9: return Res

10: end function

1: function negativeFeedback3(Results,ResultsCPP , ResultsTotal/Partial)2: edgew := 0,75858880490559343: diff := sum(variances(ResultsCPP ))4: maxfactor := (diff/edgew)5: Ffeed := maxfactor − step6: for i ∈ [0, len(Results)) do:7: yava = Resultsi −ResultsTotal/Partiali

8: Resultsi := (ResultsCPPi + yava)× Ffeed +Resultsi × step9: end for

10: return Results11: end function

1: function negativeFeedback4(Res,ResCPP , ResTotal/Partial)2: edgew := 0,75858880490559343: diff := sum(variances(ResCPP ))

Page 82: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

76 5. Apendice

4: maxfactor := (diff/edgew)5: Ffeed := maxfactor − step6: for i ∈ [0, len(Res)) do:7: yava = (Resi −ResTotal/Partiali)×

FoblFopt

8: Resi := (ResCPPi + yava)× Ffeed +Resi × FoblFopt× (maxfactor − Ffeed)

9: end for10: return Res11: end function

Las zonas ası generadas son guardadas en un archivo con formato osm y cuyo nombre seencuentra almacenado en la variable config/config.growedAreas filename. En dicho archivocada arista tendra ademas de sus atributos el id de la zona a la cual pertenece.

5.1.5. Zonificado

Este algoritmo, que se encuentra codificado en el archivo zoning/zoning.py, es el en-cargado de factibilizar un conjunto de zonas a fin de poder garantizar que las mismastengan solucion del CPP. Esta rutina es llamada en dos situaciones, la primera durante lageneracion y crecimiento de las areas en aquellas iteraciones en las que se utilice el criterioTotal o el CPP (con la heurıstica de crecimiento por arista); la segunda luego de generadaslas zonas, a fin de obtener los recorridos resultantes.

En ambos casos la factibilizacion es llevada a cabo mediante la adicion a cada subgrafode un conjunto de aristas de caracter optativo. Esto es, todas las aristas del grafo, dirigi-das y no dirigidas, se marcan como obligatorias; luego para cada una se agrega el caminomınimo asociado generado en la rutina graphByCircuits y almacenado en un diccionarioindexable por arista. Este agregado sera unicamente de las aristas pertenecientes a dichocamino pero no pertenecientes al grafo en cuestion. Para las aristas no dirigidas se agre-garan los dos circuitos que las contienen, uno en cada sentido. Estos conjuntos de aristasse agregaran marcando cada una con la etiqueta de opcional (optative), indicando que elcircuito solucion del CPP las puede contener o no.

Antes de ejecutar dicha rutina, se ofrece al usuario la posibilidad de modificar el archivogenerado por el algoritmo anterior el cual contiene las zonas, a fin de redistribuir las aristaspara conseguir una division mas agradable a su criterio. Para esto puede abrir el archivomediante la herramienta ya mencionada y cambiar los valores a las etiquetas para moveruna arista de una a otra zona, mientras el programa espera una senal del teclado pormedio de consola. Por supuesto dichas modificaciones influiran sobre el resultado finalmuy probablemente empeorandolo en lo que respecta a la similitud de las zonas.

El resultado de esta factibilizacion es guardado en varios archivos. Durante el llamadopara la resolucion final, con objeto de un debug visual se genera uno para cada zona con elnombre almacenado en la variable config.zoning filename anadiendole como sufijo idzone,indicando a que zona pertenece. Este archivo es generado en una carpeta para cada areacuyo nombre figura en config.solutionPath nuevamente anexandole el sufijo idzone.

Ademas en cada una de estas carpetas se generara un archivo (por area) almacenandoun listado de las aristas del grafo a fin de que lo pueda abrir la siguiente subrutina quecreara el modelo de programacion lineal en formato LP . El nombre de este archivo sera elmismo que el anterior pero sin formato osm.

Cada fila de este listado representara una arista del grafo factibilizado, y sus valores,

Page 83: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

5.1. Implementacion 77

separados por una tabulacion simple, seran:

nodo1 nodo1 tipo L(nodo1, nodo2)

Los dos primeros indicaran el idx de los nodos que componen la arista (interpretadacon sentido de izquierda a derecha); el siguiente campo estara dado por el tipo de arista,ie obligatoria doble mano o mano unica, u optativa doble mano o mano unica indicadopor un valor del 0 al 3:

0 → obligatoria doble mano

1 → obligatoria mano unica

2 → optativa doble mano

3 → optativa mano unica

Al generar este archivo, escribe todas las aristas doble mano en ambos sentidos, esdecir que agrega ademas el sentido contrario al que figura en el grafo.

A su vez estos ultimos archivos son generados de manera temporal en los pasos interme-dios del crecimiento de las areas en la carpeta de salida del programa con el mismo nombre,que es el que figura en la variable config/config.growedAreas filename, en las iteracionesen las que sea necesario resolver el CPP.

Esta rutina sera llamada desde el hilo principal unicamente cuando se utilice un criterioque requiera factibilizar. Debido a los resultados negativos no se ha desarrollado todo elresto del programa para solucionar zonas generadas mediante el agregado de circuitos.

5.1.6. De Grafo a LP

En el archivo GraphToZimplCPP/GraphToZimplCPP.py se encuentra codificada lasubrutina encargada de anadir el listado de aristas dirigidas generado por el algoritmoanterior en un modelo de programacion lineal entera en formato ZPL que es el que escapaz de interpretar el programa ZIMPL, el cual se encargara de convertirlo al formatoLP que lee el solver.

El modelo de programacion lineal entera es el mencionado en los capıtulos anteriorespara el problema del cartero chino en su variante sobre grafos mixtos con aristas obliga-torias y optativas.

Para la generacion del modelo a resolver, levanta desde el archivo que contiene lasaristas con sus tipos, el conjunto de arcos y luego el conjunto de nodos y los almacenacomo E y V respectivamente. A continuacion levanta los tipos y pesos de dichos arcos, ycon dichos datos genera para las aristas (representada como dos arcos en sentido contrario)obligatorias dos conjuntos distribuyendo en ellos los arcos que simulan dichas aristas enuno y otro sentido. Las mano unica obligatorias, y todas las optativas se almacenan enotros dos conjuntos disjuntos, quedando en total 4 conjuntos, de los cuales se desprendenlas siguientes variables:

Una variable entera mayor a uno por cada arista obligatoria mano unica.

Dos variables enteras mayores o iguales a cero para cada arista obligatoria doblemano (una para cada sentido).

Una variable entera mayor o igual a cero por cada arista optativa.

Con lo cual la funcion objetivo sera minimizar la suma de dichas variables, sujeto a:

Page 84: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

78 5. Apendice

Que se mantenga el flujo, es decir que para cada nodo la cantidad de aristas queentran es igual a la cantidad de aristas que salen.

Que aparezca al menos una vez cada obligatoria. Esto es que la suma de una aristaobligatoria doble mano y su opuesta debe ser mayor o igual a 1.

El nombre del archivo .zpl generado conteniendo el modelo se encuentra en la varia-ble config.zpl filename, en el caso de los llamados a estas subrutinas una vez generadaslas areas. En los casos de las llamadas durante el crecimiento de las mismas, el nombrede los archivos intermedios generados estara dado por config/config.growedAreas filenameseguido del sufijo .zpl que indica el tipo.

En ambos casos el algoritmo genera un subproceso sobre el cual ejecuta el programaZIMPL cuya salida se guarda en dos archivos del mismo nombre que la entrada pero conformatos .tlb y .lp segun sean la tabla de conversion de variables o el modelo respectiva-mente.

El llamado a este programa se hace mediante el comando:

zimpl -o zpl filename zpl filename

indicandole el archivo de entrada y el nombre de los de salida.

5.1.7. De LP a Recorrido

Antes de ejecutar el programa solver como un subproceso, se genera mediante el codigoalmacenado en el archivo forScip/ScipScriptGenerator.py un script de nombre scriptForS-cip en la misma carpeta que el codigo generador. En este script se encontraran las ins-trucciones para que ejecute el solver, estas son: leer el modelo del archivo con formato .lpgenerado por el programa ZIMPL, optimizar al mismo, mostrar la solucion (para debug)y escribir la misma en el archivo de salida.

El nombre de este ultimo se encuentra en la variable config.solFilename para el casode la ejecucion post generacion de las areas, mientras que para las ejecuciones del solverdurante el crecimiento, el nombre del archivo de salida es el mismo que el del modelo perocon el sufijo .sol en lugar de .lp.

La llamada al solver se realiza por medio del comando:

scip -b config.scip script filename

Una vez que finaliza la ejecucion del programa SCIP, se procede al levantamiento delresultado del archivo de salida por la rutina que se encuentra codificada en solutionTo-Path/solutionToPath.py. En esta, se genera un grafo compuesto unicamente de un listadode aristas con tantas apariciones como el valor que tenga la variable entera asociada en lasalida del solver. Y con esa representacion como base se genera una matriz de adyacen-cias como las vistas en los algoritmos anteriores. Ademas se mantendran dos diccionariosindexables por arista, uno para almacenar el tipo, y otro para almacenar el peso. Conla primera de esas estructuras implementada mediante un diccionario de adyecencias in-dexable por nodo se procedera a obtener el circuito euleriano C mediante un algoritmodesarrollado para tal fin. Y con las siguientes se graficara el resultado como un mapa deformato osm basado en los valores del mapa original y anadiendo como atributo de cadaarista su numero de orden dentro de C (seleccionando antes una arista arbitraria comoinicio y fin del mismo). El pseudocodigo del algoritmo es el mencionado en el Capıtulo II.

Page 85: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

Bibliografıa

[1] Arribas C, Blazquez C and Lamas A, Urban solid waste collection systems using mat-hematical modelling and tools of geographic information systems, Waste Management& Research 28: 355–363, 2010.

[2] Chang N, Lu H and Wei L, GIS technology for vehicle routing and scheduling in solidwaste collection systems, Journal of Environmental Engineering 123: 901–933, 1997.

[3] Chen D S, Batson R G, Dang Y, Applied Integer Programming: Modeling and Solution,1:3–7, 2010.

[4] Cook S, The complexity of theorem proving procedures, Proceedings of the ThirdAnnual ACM Symposium on Theory of Computing, 151–158, 1971.

[5] Cook J D, http://www.johndcook.com/blog/python longitude latitude, 2014.

[6] Cook J D, http://www.johndcook.com/lat long details.html, 2014.

[7] Cook W J, Cunningham W H, Pulleyblank W R, and Schrijver A, CombinatorialOptimization, John Wiley & Sons Inc., 1998.

[8] Edmonds J, The chinese’s postman problem, Operations Research, 5:88–124, 1965.

[9] Edmonds J and Johnson E L, Matching, Euler tours and the chinese postman, Mat-hematical Programming, 5:88–124, 1973.

[10] Eisenstein D and Iyer A, Garbage collection in Chicago: a dynamic scheduling model,Management Science 43: 922–933, 1997.

[11] Garey M and Johnson D, Computers and Intractability: A Guide to the Theory ofNP-Completeness, San Francisco, CA: Freeman and Company, 1979.

[12] Golden B, Assad A and Wasil E, Routing vehicles in the real world: applications inthe solid waste, beverage, food, dairy, and newspaper industries. In: Toth P and VigoD (eds.) The Vehicle Routing Problem. Philadelphia, PA: SIAM, 245–286, 2002.

[13] Harary F, Graph Theory, Addison-Wesley, 1969.

[14] Hart PE, Nilsson NJ and Raphael B, A formal basis for the heuristic determinationof minimum cost paths, IEEE Transactions on Systems Science and Cybernetics 4:100–107, 1968.

[15] Kappauf H C and Koehler G J, The mixed postman problem, Discrete Applied Mat-hematics, 1:89–103, 1976.

[16] Kim B, Kim S and Sahoo S, Waste collection vehicle routing problem with time win-dows, Computers and Operations Research 33: 3624–3642, 2006.

[17] Liebman J, Models in solid waste management. In: Gass S and Sisson R (eds.) AGuide to Models in Governmental Planning and Operations. Potomac, MD: SaugerBooks, 1975.

79

Page 86: Algoritmos de zoni caci on para recolecci on de residuos · Naci on para el desarrollo de algoritmos de optimizaci on combinatoria para la programaci on de la recolecci on de residuos

80 Bibliografıa

[18] Male J and Liebman J, Districting and routing for solid waste collection, Journal ofthe Environmental Engineering Division 104-1:1–14, 1978.

[19] Mourao M and Almeida M, Lower-bounding and heuristic methods for a refuse collec-tion vehicle routing problem, European Journal of Operational Research 121: 420–434,2000.

[20] The OpenStreetMap Foundation, http://www.openstreetmap.org, 2015.

[21] The OpenStreetMap Foundation, http://josm.openstreetmap.de, 2015.

[22] The Python Software Foundation, https://www.python.org/, 2015.

[23] Ralphs T K, On the mixed chinese postman problem, Operations Research, 14:123–127, 1993.

[24] Schrijver A, Theory of linear and integer programming, Wiley-lnterscience Series inDiscrete Mathematics and Optimization, 1986.

[25] Schrijver A, Combinatorial Optimization: Polyhedra and Efficiency, Volume 1,29:518–519, 2003.

[26] Wesner F, Tecnicas de programacion lineal entera para la optimizacion de la reco-leccion de residuos reciclables en el Municipio de Moron, Departamento de Compu-tacion, Universidad de Buenos Aires, 2015.

[27] Yeomans J, Huang G and Yoogalingam R, Combining simulation with evolutionaryalgorithms for optimal planning under uncertainty: an application to municipal so-lid waste management planning in the regional municipality of Hamilton-Wentworth,Journal of Environmental Informatics 2: 11–30, 2003.

[28] Zuse Institute Berlin, http://scip.zib.de, 2015.

[29] Zuse Institute Berlin, http://zimpl.zib.de, 2015.