Proyecto IO

73
Pontifica Universidad Católica de Valparaíso Facultad de Ingeniería Escuela de Ingeniería Industrial Proyecto de Investigación de Operaciones “Diseño de Sistemas de Transporte“ Por Kevin Aldair Castillo Iturrieta Marco Andrés Sanhueza Marcoleta

Transcript of Proyecto IO

Page 1: Proyecto IO

Pontifica Universidad Católica de ValparaísoFacultad de Ingeniería

Escuela de Ingeniería Industrial

Proyecto de Investigación de Operaciones“Diseño de Sistemas de Transporte“

Por

Kevin Aldair Castillo IturrietaMarco Andrés Sanhueza Marcoleta

Investigación Operacional 1, EII 445

7 de Julio, 2012

Page 2: Proyecto IO

2

Índice

1 Introducción...........................................................................................................................2

2 Objetivo de estudio y Revisión del problema......................................................................42.1 Objetivo de estudio...............................................................................................................42.2 Entorno y limites del sistema de transporte..........................................................................42.3 Variables y medidas de desempeño......................................................................................52.4 Revisión................................................................................................................................5

3 Aplicación del problema.........................................................................................................7

4 Formulación...........................................................................................................................8

5 Modelo programación lineal entera-mixta..........................................................................9

6 Heurística para una solución factible................................................................................11

7 Pruebas se comportaciento.................................................................................................127.1 Generalidades.....................................................................................................................127.2 Resolución de instancia en AMPL.....................................................................................13

7.2.1 Datos del Modelo.........................................................................................................137.2.2 Solución en AMPL......................................................................................................16

7.3 Comparación Heurística V/S Solución...............................................................................177.4 Análisis...............................................................................................................................19

8 Extensiones...........................................................................................................................21

9 Conclusiones.........................................................................................................................22

10 Agradecimientos................................................................................................................23

11 Bibliografía.........................................................................................................................24

12 Anexos.................................................................................................................................2512.1 Anexo A ...........................................................................................................................25

12.1.1 Código Generacion de Datos.....................................................................................2512.1.2 Código Heurística......................................................................................................30

12.2 Anexo B............................................................................................................................3312.2.1 Archivo.Mod..............................................................................................................3312.2.2 Archivo.Run...............................................................................................................34

12.3 Anexo C............................................................................................................................3612.3.1 Instancia 1..................................................................................................................3612.3.2 Instancia 2..................................................................................................................4112.3.3 Instancia 3..................................................................................................................4612.3.4 Instancia 4..................................................................................................................51

Page 3: Proyecto IO

3

1 Introducción

Nuestro proyecto consiste en exponer un modelo que permita diseñar sistemas de transporte cuyo objetivo sea minimizar costos y maximizar tráfico. El modelo que exponemos ubica la línea o ruta principal, de tal manera que se minimizan los costos de construcción de la ruta o la distancia que recorre dentro de la ciudad, y se maximiza la captura de tráfico por la misma. El tráfico es capturado entre 2 pares de nodos si ambos son visitados por el camino. Los nodos origen y destino del camino son fijados, es decir, presenta nodos extremos.

Las aplicaciones del modelo pueden ser variadas, tales como diseño de líneas de buses o metro, en el cual la forma de la ruta y el número de paradas es determinada por la solución del problema de optimización. También puede ser aplicado para un ámbito de conexiones de redes informáticas como sería un diseño de red de fibra óptica que permita interconectar antenas de wifi en un sector determinado.

En este proyecto se propone un método de solución exacto y además se presenta una heurística, con el objetivo de comparar resultados. Se exponen también los resultados de las experiencias computacionales y los respectivos análisis. Además se presenta un programa que permite generar en forma automática datos para problemas de redes.

Page 4: Proyecto IO

4

2 Objetivo de estudio y Revisión del problema

2.1 Objetivo de estudio

El objetivo de estudio de este informe es el “Diseño de sistemas de Transportes”, por lo cual, se procede hacer el análisis sistémico de este mismo.

¿Qué es un Sistema de Transporte?

“Un Sistema de transporte es un conjunto de instalaciones fijas (redes y terminales), entidades de flujo (Paquetes de información, Vehículos, Trenes, etc.) y un Sistema de control que permiten movilizar eficientemente personas, bienes e información para

satisfacer necesidades de movilidad”.

Por lo tanto, nuestro objetivo de estudio se enfocara en como poder localizar nuestras instalaciones fijas en cierta ruta, que desde ahora en adelante llamaremos nodos, de forma de poder transportar entidades de flujo de un cierto origen a un destino de manera eficiente, es decir, intentando maximizar la captura de tráfico y minimizando el costo de construcción de la ruta, en la cual, circula el tráfico. Por consiguiente, el alcance de nuestro problema engloba a cualquier problema en el cual se requieran necesidades de movilidad entre un origen y un destino.

2.2 Entorno y limites del Sistema de Transporte

El entorno de nuestro sistema es el lugar físico colindante, en donde se presente nuestro problema. Dependiendo de la aplicación que puede ser variada, nuestro entorno puede ser las distintas comunas donde se emplaza un sistema de metro o puede ser el campus de una universidad si es que se quisiera realizar un sistema que permita conectar antenas de WIFI, por medio de fibra óptica, de manera de maximizar la captura de tráfico y minimizar el costo de construcción de la red de fibra óptica. De aquí nuestro entorno puede ser un edificio concreto, un campus, un centro comercial, una ciudad, etc. Es importante mencionar que en relación con el entorno este es un sistema abierto, ya que, hay un continuo intercambio de información, materia y/o energía, que pueden ser las personas que ingresan al sistema para ser movilizadas desde un origen y luego lo abandonan una vez que llegan a su destino. Es un sistema en equilibrio dinámico, debido a que esta en un constante cambio, actualización y movimiento de flujos de información y personas. El límite de nuestro sistema, será aquella línea física que separa el sistema del entorno, la cual dependiendo del caso puede ser un ducto, la misma línea de metro con sus estaciones, etc. En especifico el espacio físico donde es emplazado y también toda la comunidad que pertenece al sistema.

Page 5: Proyecto IO

5

2.3 Variables y medidas de desempeño

Las variables de nuestro sistema serán los nodos (Paraderos, Estaciones, Antenas, etc.), La demanda de tráfico (Personas, bienes e información), los arcos o aristas (Las conexiones entre los nodos, ósea, los caminos) y finalmente las restricciones que dependerán del modelo elegido para abordar el problema.

Nuestras medidas de desempeño serán el tráfico capturado y los costos de construcción del camino. También se consideran como medidas de desempeño a todas aquellas que nacen del “Análisis de sensibilidad“, precios duales, intervalos de factibilidad, costos reducidos, etc.

2.4 Revisión del problema

Muchos problemas en la literatura se centran en la maximización de utilidades o la minimización de costos. El problema de Diseño de Sistemas de Transporte es a diferencia, un problema con multi-objetivos en el cual se maximiza el flujo capturado y al mismo tiempo se minimizan los costos, de ambos objetivos contrapuestos se debe conseguir el más óptimo dentro de nuestra región factible, algunos autores que hicieron aportes son: Neufville y Keeney (1973), Lee y Moore (1973, 1977), Moore et al. (1978), Aneja y Nair (1979), Nijkamp (1979), Jara-Díaz y Han (1980), entre otros.

Toregas (Toregas et al, 1971; Toregas y Re- Velle, 1972) aplicó un programa lineal entero a la ubicación de instalaciones públicas. El objetivo de Toregas fue para localizar el número mínimo de instalaciones, de manera que ningún nodo de demanda se encuentre demasiado lejos de la distancia máxima de servicio, S, de una instalación. Toregas propone que este servicio de máxima distancia, S, es un buen sustituto para la eficiencia que presta un esquema de localización. La intuición sugiere que el uso de una instalación se reducirá en gran medida si los usuarios deben viajar más de un máximo de distancia, S, para llegar al centro.

Schilling (1976, Schilling cols., 1980), estudio como maximizar la cobertura, es decir, capturar el mayor flujo de demanda posible, iniciando la formulación de problemas multiobjetivos, Schilling también propuso criterios adicionales para la cobertura como un enfoque para el problema de la equidad en la ubicación de las instalaciones públicas y para capturar el hecho de que otros tipos de demandas existen.

“The maximum covering shortest path problem” (MCSPP) se introdujo por primera vez por (J. R. Current, C. S. Re Velle and J. L. Cohon, 1985). En este problema, el camino necesitaba estar construido entre el origen y el destino, con 2 objetivos a la vista: minimizar el costo de construcción de la ruta y maximizar la satisfacción del nodo de demanda. En este problema la cobertura se define por unos nodos de demanda individuales, en oposición a pares de nodos (tráfico).

Page 6: Proyecto IO

6

Este modelo sirvió de base para distintas formulaciones de problemas de redes en las cuales se deseaba capturar demanda y minimizar costos de construcción de ruta. Específicamente en un nuestro proyecto sirvió como un peldaño de apoyo para poder entender el problema base en el cual se basa nuestro trabajo. En la literatura existen muchos problemas en los cuales el MCSPP sirvió como base para su formulación, entre los cuales podemos mencionar (Boffey and Narula, 1985) que extendieron el MCSPP a multipath, The median-path (MPP) (J. R. Current, C. S. Re Velle and J. L. Cohon, 1987), The hierarchical network design problmem (HNDP) (J. R. Current, C. S. Re Velle and J. L. Cohon, 1986) y así sucesivamente. La mayoría de estos problemas son muy difíciles de resolver a optimalidad, debido a la naturaleza multi-objetivo, que ocasiona que la satisfacción ficticia de los nodos de demanda que están lejos del camino se pueda lograr por medio de sub-tours, que son rutas circulares que están desconectadas de la ruta principal. Al remover estos sub-tours se añade complejidad a la tarea de resolver el problema, por lo que estos problemas suelen comúnmente resolverse mediante heurísticas, en lugar de métodos exactos.

Nuestro proyecto se ha basado específicamente en el “The minimum cost path location for maximum traffic capture”, eligiendo uno de los 2 modelos que presenta, “The máximum traffic, shortest path problem- Costless nodes” (MTSPP), el cual es formulado como un modelo de programación lineal entera mixta de un problema de ruta más corta, más restricciones que definen la cobertura de tráfico y los nodos activos (Antenas y paradas) en la ruta principal. Un segundo objetivo se añade, de tal manera, que maximiza el tráfico entre pares de nodos.En este problema no existen nodos inactivos en la ruta principal, es decir, aquellos nodos por los cuales pasa la ruta principal pero no los visita. En el (MTSPP) los nodos extremos son libres, es decir, no están prefijados. El modelo está hecho para bordes, no para arcos lineales, cuya formulación es más complicada. Para simplificar el problema, se formulara el problema para arcos lineales y se fijara tanto el origen como el destino, es decir, el modelo estará hecho para nodos extremos.

Page 7: Proyecto IO

7

3 Aplicación del problema

La aplicación de nuestro problema como fue explicado antes, engloba a cualquier problema en el cual se requieran necesidades de movilidad entre un origen y un destino, y se necesiten ubicar nodos activos (paraderos, estaciones etc.) en la ruta de manera de maximizar el tráfico entre estos y minimizar el costo de la ruta principal. Un ejemplo clásico de aplicación puede ser el diseño de ruta de buses, una línea de metro o cualquier sistema de líneas de transporte. Que tenga la forma de un solo camino. Este camino debe seguir algunos caminos ya existentes, como una línea de buses que sigue los caminos o calles de una ciudad en particular. En el caso de una línea de buses el path principal representa el troncal y los caminos secundarios son rutas de acceso, algo similar ocurre con una línea de metro. Las personas se acercan a las paradas de los buses, las cuales son los nodos del camino principal. Los usuarios del sistema de transporte no usan la línea a menos que haya paradas dentro de un umbral o radio de distancia entre su origen y destino. Hay una estimación del tráfico demandado entre distintos pares de nodos, el cual puede ser obtenido a través de modelos econométricos y estimaciones de demanda por medio de proxies. Las paradas o estaciones son abiertas dependiendo del tráfico capturado deseado.

Entre otras aplicaciones podemos encontrar el diseño de ruta y localización de buzones para una compañía especializada en Courier, servicios expresos de transporte en logística, que opera dentro de una ciudad. Un solo vehículo lleva los paquetes o mensajes entre 2 pares de buzones (el origen y el destino), localizado por la misma compañía. La solución del modelo contiene la localización de los buzones y la forma de la ruta.

El modelo también puede ser implementado para la construcción de una red de WIFI en algún lugar en particular como un centro comercial, un campus de una universidad, un edificio público, etc. El punto de acceso, es decir, el lugar donde se ubican las antenas, son conectadas por medio de fibra óptica. Las antenas son los nodos activos en el camino, que reciben y transmiten paquetes de información conocidos a dispositivos fijos o móviles que se encuentran de un radio de distancia de los nodos (AP o Gateway), el cual será mayor o menor dependiendo de la tecnología. El bus (o canal) de fibra óptica tiene que usarse en un ducto existente para su implementación. El número de antenas que son instaladas y conectadas por medio del camino es definido por la solución, dependiendo del tráfico transportado por esas antenas.

Page 8: Proyecto IO

8

4 Formulación

La definición formal de nuestro problema visto como un modelo de redes consiste en lo siguiente:

En una formulación de 2 objetivos, La ruta más corta (o la ruta con costo mínimo) es construida, de tal manera que su forma maximiza el tráfico transportado por la ruta entre dos pares de nodos en el camino. Se tiene un Grafo G=(N,A) no conexo, donde N es el conjunto de nodos y A el conjunto de arcos bidireccionales, donde cada arco (i,j) del grafo puede contener una arco de la trayectoria de la ruta principal, donde esta ruta tiene la forma de un camino individual. Cada nodo son las posibles ubicaciones de las paradas, estaciones, antenas, etc. Cada arco de la ruta del camino resultante debe coincidir un arco de la red original G. La red original G debe representar, por ejemplo un sistema de calles y carreteras de una ciudad, en caso que quisiéramos instalar un sistema de metro o una línea de buses,

taxis, etc. Se definen los Nodos (O y D) N, los cuales representan el nodo origen y el nodo destino, que a su vez representan el inicio y el termino de la ruta o path principal. Solo puede conectarse un solo arco al origen y un solo arco al destino. Hay una estimación del tráfico demandado entre los distintos pares de nodos. El tráfico es capturado solo si el nodo i y j pertenecen a la ruta. Las paradas o estaciones son abiertas dependiendo del tráfico capturado deseado y los usuarios no usan el sistema al menos, que se ubiquen paradas dentro de un umbral de distancia de su origen y destino.

Parámetros

N=¿Conjunto de nodos A=¿Conjunto de arcos c ij=¿ Costo de construcción del arco (i, j)

t ij=Tráfico Total entre los nodos i y j O=¿Nodo origen D=¿ Nodo destino S=¿Subconjunto no vacio de N ¿ S∨¿ Cardinalidad del conjunto S

Variables de decisión

x ij={1 Siel arco ( i , j ) pertenecea la ruta principal0 e . o . c

y i={1Si el nodo ies visitado por la ruta0e . o . c

v ij={1 si el el tráfico entre los nodos i y jes capturado por laruta0 e .o . c

Page 9: Proyecto IO

9

5 Modelo Programación lineal entera-mixta

Minimizar ∑(i , j)∈ A

c ij x ij (1)

Maximizar ∑i , j∈N , i> j

tij v ij (2)

Sujeta a∑

jϵN /(O, j)∈ A

xOj=1 (3)

∑iϵN /(i , D )∈ A

x iD=1(4)

¿

vkj≤ yk ∀ k , jϵN :k> j(7)vkj≤ y j∀ k , jϵN :k> j(8)

∑{i , j}∈ E (S)

x ij ≤|S|−1∀ S⊆N :2≤|S|≤|N|−1(9) x ij, y j∈ {0,1 }(10) 0 ≤ v ik ≤ 1∀ i , kϵN : i>k

Objetivo (1) minimiza el costo de construcción del camino. Objetivo (2) Maximiza el tráfico capturado, es decir, el tráfico cuyo origen y destino son nodos de la ruta principal. Restricción (3) se requiere exactamente un arco conectado al nodo origen. Restricción (4) se requiere exactamente un arco conectado al nodo destino. Restricciones (5) y (6) Fuerza la continuidad de la ruta y define los nodos cuyo tráfico de demanda es satisfecho, es decir, si es visitado por el camino principal. Restricciones (7) y (8) Capturan el tráfico entre 2 pares de nodos siempre y cuando los nodos pertenezcan a la ruta. Hay que tener en cuenta que si la ruta visita a un par de nodos, el tráfico es capturado en ambos sentidos, por lo que es suficiente para definir las variables para k>j. Restricción (9) debido a la naturaleza multi-objetivo, la satisfacción ficticia de los nodos de demanda que están lejos del camino se puede lograr, por medio de rutas circulares que están desconectadas de la ruta principal. Con el fin de evitar estos sub-tours en el modelo se propone un procedimiento que consiste en añadir una restricción de ruptura de sub-tours cada vez que un sub-tour aparece en la solución, donde E(S) es el conjunto de todas las aristas conectado a cualquier par de nodos que pertenecen al conjunto S, y se resuelve de nuevo hasta que se encuentre una solución sin sub-tours. Para observar de manera gráfica la restricción (9), ver Fig. 1.

Page 10: Proyecto IO

10

Restricción (10) Se definen los valores apropiados para las variables. No hay necesidad de declarar variables comov ij en forma binaria, ya que se llevara a valores binarios en la solución, debido a la estructura del modelo.

Figura 1 - La ruta negra representa el camino principal y la ruta roja representa los posibles sub-tours que se pueden generar al no existir la restricción (9)

Page 11: Proyecto IO

11

6 Heurística para una solución factible

Nuestra Heurística consiste en un algoritmo simple de búsqueda de posible tráfico entre los posibles puntos sucesivos, partiendo desde el origen.

Se parte desde el nodo origen, la heurística considerara para sus cálculos todos aquellos nodos cuya distancia euclidiana al nodo destino sea menor o igual a la distancia del nodo de búsqueda al destino. El nodo de búsqueda es aquel nodo de donde se buscara encontrar la ruta con mayor captura de tráfico. Partiendo desde el origen (Nodo de búsqueda) se analizan todas las posibles rutas desde este nodo, es decir, todas las conexiones a los nodos (en fig. 2.) Nodo origen (1) y nodos sucesivos (4,2 y 3). Luego la heurística toma el costo entre el nodo de búsqueda y los nodos sucesivos, y los guarda. A (1-3), B (1-4) y C (1-2). Ahora busca el tráfico entre los posibles rutas, por ejemplo (1-2) y el tráfico entre el nodo sucesivo, es decir, el nodo 2 y todas sus conexiones, en este caso (2-9), (2,10), (2-5) y suma todos los tráficos. Una vez hecho esto para todos los posibles nodos sucesivos, es decir, sumar todas las posibles capturas de tráfico. Se procede a dividir esta suma por el costo o distancia guardado previamente (A, B, C), el que tenga un mejor ratio (Tráfico/Costo) es entonces el nodo candidato a formar parte de el camino principal, si en este caso particular, el nodo 2 hubiese sido el nodo con el mayor ratio se conecta el nodo 1 al nodo 2 (Camino rojo). Se actualiza el nodo de búsqueda a nodo 2 y se procede a buscar nuevamente los nodos sucesivos y las posibles capturas de tráfico. El algoritmo finaliza al llegar al destino. En el Anexo A, Se tiene la formulación en Java de esta heurística.

Figura 2 - Heurística para una solución factible. El camino negro representa las conexiones en el grafo y la conexión roja representa que ese arco forma parte del camino principal.

Page 12: Proyecto IO

12

7 Pruebas de comportamiento

7.1 Generalidades

Nuestra experiencia computacional se realizo en un computador con un procesador AMD Phenom II 3,2 Ghz (Quad-Core) y 4 GB de RAM. Hemos usado como solver AMPL con Cplex 11.2. Para la generación de datos (Nodos, Arcos, Tráfico) se ha usado un algoritmo programado en java, que consiste en utilizar el método Math.Random (), el cual entrega, valores aleatorios entre (0 y 1). Al usuario se le permite ingresar las distancias del plano donde desea ubicar los nodos, la cantidad de nodos a ubicar y el máximo tráfico que puede existir entre 2 pares de nodos. Con esta información el programa genera las coordenadas de ubicación de los nodos, dispersando los datos con el coeficiente de RPearson, el cual, cuando tiende a 0 nos dice que los datos están dispersados. A sí mismo el programa genera las aristas a través de un algoritmo que busca la ruta más corta entre los nodos generados y va guardando las conexiones una matriz de variables boolean (True or False) de tal manera que para todos los nodos va existir una conexión. Entregando un a veces un perfecto árbol. El programa permite modificar las coordenadas de los nodos, agregar aristas, eliminar aristas, modificar el tráfico y permitir una nueva conexión de más aristas de forma automática utilizando el mismo criterio que para generar el árbol, pero sin perder las conexiones ya hechas. Se estima que puede generar para un grafo con 5000 nodos todos los datos en un tiempo no superior a 20 minutos. Cabe destacar que la heurística esta indexada a este programa. Código en Anexo A.

En cuanto a la programación en AMPL, lo más importante es el algoritmo de eliminación de subtours. Este algoritmo permite la eliminación inteligente de subtours, es decir, agregando la restricción cada vez que se encuentre un subtour, capturándolo y eliminándolo. Luego se procede a resolver de nuevo el problema en forma iterativa hasta que no se encuentra ningún subtour, esa solución es la óptima. Código en Anexo B.

Para las pruebas de comportamiento se generaron 5 instancias distintas. Con una cantidad predefinida de 15 nodos, cabe destacar que no se utilizaron más nodos dado que AMPL está disponible solo en su versión para estudiante en forma gratuita que tan solo soporta 300 variables y 300 restricciones. Todos los datos obtenidos están en el Anexo C. Se procede ahora a examinar una instancia en particular.

Page 13: Proyecto IO

13

7.2 Resolución de instancia en AMPL

7.2.1 Datos del modelo

Para la instancia de prueba se considera una red de 15 nodos con 56 arcos dirigidos en un plano de 5000x5000[m]. El tráfico entre pares de nodos se mueve en un rango [0,7000], ver fig. 3.

Instancia Nodos: 15 516993 Iteraciones Coef Rp: 1.0E-6 El Tiempo de Generación de Datos: 14.758[seg]

Figura 3 - Red de 15 nodos y 56 arcos dirigidos

Se considera que la distancia entre los nodos es igual al costo y que C (i, j) = C (j, i).

Coordenadas:

Nodo X Y

1 4730 3119

2 2368 4798

3 4433 2604

4 1000 4047

5 1433 1066

6 4363 4523

7 90 3558

8 2243 3971

9 3735 4885

10 2702 1102

11 2332 2959

12 3245 2996

13 3526 4252

14 3405 1914

15 998 3160

Page 14: Proyecto IO

14

I J Costo I J Costo

1 3 594,5 10 5 1269,51

1 6 1451,17 10 11 1893,5

1 14 1790,99 10 14 1074,04

2 8 836,39 11 4 1719,87

2 9 1369,77 11 5 2095,63

2 13 1280,27 11 8 1015,91

3 1 594,5 11 10 1893,5

3 14 1238,1 11 12 913,75

4 7 1033,06 11 14 1497,78

4 8 1245,32 11 15 1349,06

4 11 1719,87 12 6 1892,53

4 15 887 12 11 913,75

5 10 1269,51 12 13 1287,05

5 11 2095,63 12 14 1093,77

5 15 2138,71 13 2 1280,27

6 1 1451,17 13 6 879,78

6 9 724,86 13 8 1313,41

6 12 1892,53 13 9 666,61

6 13 879,78 13 12 1287,05

7 4 1033,06 14 1 1790,99

7 15 991,4 14 3 1238,1

8 2 836,39 14 10 1074,04

8 4 1245,32 14 11 1497,78

8 11 1015,91 14 12 1093,77

8 13 1313,41 15 4 887

9 2 1369,77 15 5 2138,71

9 6 724,86 15 7 991,4

9 13 666,61 15 11 1349,06

Tabla 1. – Costos entre arcos.

Page 15: Proyecto IO

15

Tabla 2.- Matriz de tráfico

1 2 3 4 5 6 7 8 9 10 11 13 14 15

1 0.0 786.0 6114.0 4154.0 6055.0 2635.0 1558.0 5130.0 1246.0 3724.0 5778.0 4580.0 3261.0 273.0

2 786.0 0.0 4812.0 5636.0 5553.0 529.0 4423.0 4803.0 1260.0 3308.0 997.0 1614.0 4009.0 3156.0

3 6114.0 4812.0 0.0 1164.0 1603.0 3392.0 881.0 800.0 6948.0 483.0 334.0 5262.0 2955.0 4311.0

4 4154.0 5636.0 1164.0 0.0 5373.0 904.0 1713.0 1010.0 5499.0 3211.0 1506.0 2456.0 3198.0 2466.0

5 6055.0 5553.0 1603.0 5373.0 0.0 3978.0 5334.0 1180.0 6794.0 6313.0 2052.0 4196.0 5638.0 1928.0

6 2635.0 529.0 3392.0 904.0 3978.0 0.0 4691.0 2394.0 5844.0 4914.0 3398.0 2188.0 3180.0 1785.0

7 1558.0 4423.0 881.0 1713.0 5334.0 4691.0 0.0 3948.0 473.0 4416.0 1334.0 6258.0 6470.0 5419.0

8 5130.0 4803.0 800.0 1010.0 1180.0 2394.0 3948.0 0.0 2830.0 382.0 4080.0 4133.0 2205.0 2722.0

9 1246.0 1260.0 6948.0 5499.0 6794.0 5844.0 473.0 2830.0 0.0 3647.0 1261.0 1901.0 47.0 338.0

10 3724.0 3308.0 483.0 3211.0 6313.0 4914.0 4416.0 382.0 3647.0 0.0 1817.0 1228.0 1731.0 3369.0

11 5778.0 997.0 334.0 1506.0 2052.0 3398.0 1334.0 4080.0 1261.0 1817.0 0.0 109.0 2793.0 4209.0

13 4580.0 1614.0 5262.0 2456.0 4196.0 2188.0 6258.0 4133.0 1901.0 1228.0 109.0 0.0 2531.0 1071.0

14 3261.0 4009.0 2955.0 3198.0 5638.0 3180.0 6470.0 2205.0 47.0 1731.0 2793.0 2531.0 0.0 4868.0

15 273.0 3156.0 4311.0 2466.0 1928.0 1785.0 5419.0 2722.0 338.0 3369.0 4209.0 1071.0 4868.0 0.0

Tabla 3.- Matriz de Distancias

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 2897,94 594,5 3843,713883,9

4 1451,174660,7

2 2628,89 2027,012860,2

6 2403,331490,0

9 1653,271790,9

9 3732,23

2 2897,94 03012,9

5 1560,583847,3

4 2013,862593,6

2 836,39 1369,773711,0

6 1839,352004,0

8 1280,273064,7

7 2135,4

3 594,5 3012,95 0 3723,943371,2

7 1920,284446,5

5 2581,63 2385,41 2291,8 2130,78 1251 1881,1 1238,1 3479,71

4 3843,71 1560,583723,9

4 03012,2

8 3396,521033,0

6 1245,32 2860,53401,4

5 1719,872478,8

4 2534,33214,6

1 887

5 3883,94 3847,343371,2

7 3012,28 0 4531,642830,8

5 3015,81 4459,141269,5

1 2095,632647,3

1 3811,99 2146,6 2138,71

6 1451,17 2013,861920,2

8 3396,524531,6

4 04380,6

1 2190,69 724,863802,9

1 2563,411892,5

3 879,782779,3

2 3630,56

7 4660,72 2593,624446,5

5 1033,062830,8

5 4380,61 0 2192,25 3879,043585,3

1 2320,643204,6

6 3505,393700,2

6 991,4

8 2628,89 836,392581,6

3 1245,323015,8

1 2190,692192,2

5 0 1749,72905,4

8 1015,911398,0

8 1313,412362,5

2 1485,85

9 2027,01 1369,772385,4

1 2860,54459,1

4 724,863879,0

4 1749,7 0 3921,5 2382,831951,5

2 666,612989,2

7 3235,2410 2860,26 3711,06 2291,8 3401,45

1269,51 3802,91

3585,31 2905,48 3921,5 0 1893,5 1970,3 3255,99

1074,04 2671,89

11 2403,33 1839,35

2130,78 1719,87

2095,63 2563,41

2320,64 1015,91 2382,83 1893,5 0 913,75 1759,97

1497,78 1349,06

12 1490,09 2004,08 1251 2478,84

2647,31 1892,53

3204,66 1398,08 1951,52 1970,3 913,75 0 1287,05

1093,77 2252,98

13 1653,27 1280,27 1881,1 2534,3

3811,99 879,78

3505,39 1313,41 666,61

3255,99 1759,97

1287,05 0

2341,13 2753,77

14 1790,99 3064,77 1238,1 3214,61 2146,6 2779,32

3700,26 2362,52 2989,27

1074,04 1497,78

1093,77 2341,13 0 2710,38

15 3732,23 2135,4

3479,71 887

2138,71 3630,56 991,4 1485,85 3235,24

2671,89 1349,06

2252,98 2753,77

2710,38 0

Page 16: Proyecto IO

16

7.2.2 Solución en AMPL

La solución de este modelo dado que es multi-objetivo debería usar un método para estimar soluciones no inferiores, tal como Noninferior set estimation Method (NISE) (Cohon, 1978). Para simplificar el análisis de este modelo no se utilizan soluciones no inferiores y en su defecto se agrega un peso al tráfico, el cual se puede variar. Se definió para las pruebas el nodo 7 como origen y al nodo 1 como destino.

1º Solución en Ampl:

Al correr el programa con un peso de tráfico de 0.05 en la función objetivo se obtienen los siguientes valores:##CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective -1116.7207 MIP simplex iterations0 branch-and-bound nodesIteración= 4 Tiempo= 0.015600 Acumulado= 0.031200OBJ = -1116.7Camino Principal: (7 -> 15 -> 4 -> 8 -> 2 -> 9 -> 6 -> 13 -> 12 -> 11 -> 5 -> 10 -> 14 -> 3 -> 1)

Al analizar los datos encontramos que el problema se resolvió 4 veces, es decir, se encontraron subtours en las iteraciones 1,2 y 3, los cuales fueron eliminados. Se necesitaron 207 iteraciones simplex y el tiempo acumulado de ejecución fue de 0.0312000 (No se analizara el tiempo, ya que, al ser una instancia bastante pequeña este factor es despreciable). El valor de la función objetivo fue de -1116.7, negativo dado a la maximización de tráfico. Y el camino principal con este peso de tráfico corresponde al path Hamiltoniano (Fig. 4). El path Hamiltoniano corresponde a la solución menos costosa que pasa por todos los nodos, y es a la vez la solución más costosa desde el punto de vista de la construcción del path principal, ya que en ésta solución, no existen costos de accesibilidad. Por ejemplo, si se tratara de construir una línea del metro, y los nodos fueran ciudades, entonces la línea del metro pasaría por todas las ciudades, lo que claramente implicaría un costo muy alto para el operador del sistema.

2 º Solución en Ampl:

Al correr el programa con un peso de tráfico de 0.025 en la función objetivo se obtienen los siguientes valores:

CPLEX 11.2.0: sensitivity

CPLEX 11.2.0: optimal integer solution; objective 3999.91

Page 17: Proyecto IO

17

482 MIP simplex iterations

0 branch-and-bound nodes

Iteración= 2 Tiempo= 0.078001 Acumulado= 0.109201

OBJ = 3999.91Camino Principal: (7 -> 15 -> 11 -> 12 -> 14 -> 3 -> 1 )

Figura 4.- Path Hamiltoniano para la red de 15 nodos.

Al analizar los nuevos datos encontramos que el problema se resolvió 2 veces, es decir, se encontraron subtours, los cuales fueron eliminados. Se necesitaron 482 iteraciones simplex, Más iteraciones que el de la prueba anterior, esto nos dice que el modelo tuvo que trabajar más en la búsqueda de la solución óptima (Más del doble). El valor de la función objetivo fue de 3999.1 es decir influyo más el costo que el tráfico y el path principal no formo un path hamiltoniano. Se analizara este caso con la solución de la heurística.

Todos los resultados de las distintas Instancias se encuentran en el Anexo C

7.3 Comparación Heurística V/S Solución

Se procedió a solución del modelo mediante la heurística propuesta en el apartado 5 y ejecutada en la plataforma Netbeans 7.1.1.

Al correr la heurística con el mismo peso señalado en 2º Solución de ampl del apartado 7.2.3 (Peso = 0.025), la solución es:

Page 18: Proyecto IO

18

La Ruta Generada es:7-> 15-> 11-> 14-> 3-> 1Valor Objetivo: 4154.097922500713El Tiempo de Solución: 0.0[Seg]

Si analizamos el resultado obtenido por la heurística la ruta es bastante parecida a la del apartado anterior solo que tiene un nodo menos en el camino principal (Fig. 5). Los valores de la función Objetivo son bastantes parecidos con una diferencia del 3.85% entre la solución óptima (Modelo PLEM) y la solución “Buena” (Heurística). Obviamente no nos podemos quedar con estos resultados tan básicos y al analizar el resto de las instancias obtenemos:

PLEM Heurística %Diff 3495,54 3642,27 4,19763472498,63 3703,99 48,2408364638,55 6088,4 31,25653493906,03 5346,11 36,8681244

Tabla 4 – Soluciones Instancias v/s heurísticas

El promedio de las diferencias entre las instancias y la heurística es de 24.878%, lo cual, no nos parece bastante alentador, de todas formas este análisis sigue siendo básico y necesitaríamos analizar al menos, según nos dice la teoría estadística, unas 30 veces para obtener recién algún comportamiento. Aun así nuestra heurística es bastante buena porque puede generar una ruta para una instancia de 1000 nodos y realizarlo tan solo en segundos, mientras que esto sería imposible para el caso del modelo PLEM, que lo más probable es que pase un tiempo bastante razonable iterando.

Page 19: Proyecto IO

19

Figura 5 – Ruta principal, Heurística v/s PLEM.

7.4 Análisis

Se hicieron 2 análisis al modelo principalmente para observar el comportamiento el primero fue subir el tráfico entre nodos a algún sector, es decir, que aumentara la demanda en cierto lugar, lo que se esperaba era que la ruta se fuera hacia ese sector en particular y cambiara la forma de la ruta. El segundo análisis que se hizo fue eliminar un nodo del grafo y específicamente uno que perteneciera al camino para ver como el programa se las arreglaba para seguir satisfaciendo la factibilidad.

Análisis vía trafico

Se subió la demanda entre los siguientes pares de nodos (12-6), (12-13) y (6-1), al doble del máximo fijado al crear los datos (7000x2 =14000).

Recordemos que la solución anterior fue:

OBJ = 3999.91Camino Principal: (7 -> 15 -> 11 -> 12 -> 14 -> 3 -> 1 )

La nueva solución con el tráfico aumentado es:

CPLEX 11.2.0: sensitivity

CPLEX 11.2.0: optimal integer solution; objective 3808.79

1418 MIP simplex iterations

0 branch-and-bound nodes

absmipgap = 63.3101, relmipgap = 0.0166221

Iteración= 4 Tiempo= 0.577204 Acumulado= 0.873606

OBJ = 3808.79

Camino Principal: (7 -> 15 -> 11 -> 12 -> 13 -> 6 -> 1 )

Como se esperaba la ruta se fue por los nodos que tenían más tráfico, lo que concluye que el modelo funciona, es decir, maximiza el tráfico y no solo se va por la ruta más corta. Respecto a las funciones objetivos, Mejora en un 4,78%. Lo más notable es la diferencia de iteraciones, siendo la de la iteración anterior 482 Iteraciones simplex y la de la nueva solución 1418 Iteraciones Simplex, es decir, más del triple. Esto nos dice que el modelo “Piensa” Bastante para obtener la optimalidad. Se concluye que mientras más diverso sea el tráfico y contenga puntos atípicos el modelo tardara más en su solución.

Page 20: Proyecto IO

20

Análisis vía eliminación nodo

Se procede a eliminar el nodo el nodo 12.

La nueva solución es:

CPLEX 11.2.0: sensitivity

CPLEX 11.2.0: optimal integer solution; objective 4154.1

278 MIP simplex iterations

0 branch-and-bound nodes

suffix up OUT;

suffix down OUT;

suffix current OUT;

Iteración= 1 Tiempo= 0.031200 Acumulado= 0.031200

Como se observa comparado con la solución anterior es que el modelo simplemente

no selecciona el nodo 12 y pasa directamente al 14, es decir, la ruta no cambia sigue siendo la misma. Recuerde que la ruta anterior era (Camino Principal: (7 -> 15 -> 11 -> 12 -> 14 -> 3 -> 1)). No se esperaba este comportamiento antes de obtener la solución. Lo que se esperaba era que se formulara una ruta totalmente distinta en comparación a la solución anterior. Lo que podemos concluir es que el modelo sigue siendo consecuente con la ruta antes descrita, es decir, los nodos del camino principal son lo que tienen mayor demanda de tráfico, por lo tanto, aunque saque algún nodo del camino, el modelo no tendera a bordear pasando otro nodo a la ruta si no intentar seguir el camino más directo al que se tenía antes. Respecto a la función objetivo empeora en un 3,87%.

OBJ = 4154.1

Camino Principal: (7 -> 15 -> 11 -> 14 -> 3 -> 1 )

Page 21: Proyecto IO

21

8 Extensiones

Al modelo presentado se le pueden hacer extensiones, entre las cuales mencionamos:

Máximum traffic capture – mínimum cost with fixed cost: Esta extensión permite que se determine la ruta menos costosa para maximizar la captura de tráfico, localizando ciertos nodos que concentran el tráfico (paraderos), así, Como nodos inactivos que están en el camino solo para permitir la reducción de costos. Respecto al modelo original equivale netamente a que ahora no todos los nodos del camino son visitados. Se agrega una variable que indica si un nodo pertenece al path y a la vez es inactiva

Multipath: Esta extensión permite que en vez de solo tener una ruta principal tener muchas rutas interconectadas en puntos específicos para hacer transbordos. Esto es muy común verlo en los sistemas de metro de las grandes ciudades. También puede ser visto como un modelo de línea de buses donde existe una línea principal (Buses troncales) y líneas secundarias (Buses de acercamiento). Se tendría que agregar una variable que permita poder compartir un nodo con una red existente.

Minimizar Tiempo de Viaje: Esta extensión permitiría minimizar los tiempos de viajes entre los nodos. Sucede que el modelo original al ser su formulación simple no permite minimizar tiempos de viaje y suele suceder que para instancias grandes, por ejemplo: que una persona tenga que recorrer toda la ciudad para poder llegar a su destino. Esto se podría lograr agregando una variable que cuente el tiempo que se demora en ser cubierto el tráfico entre dos nodos. Se tendría que incluir una variable de velocidad promedio para poder sacar los tiempos respecto a la distancia recorrida.

Page 22: Proyecto IO

22

9 Conclusiones

Del desarrollo del tema, se obtuvieron las siguientes conclusiones. El problema planteado de programación lineal entera-mixta es aplicable a un problema de diseño de redes en el cual se quiera construir una ruta o línea de transporte que esté conectada a un nodo origen y un nodo destino (Ambos predeterminados), y además, que la accesibilidad al path principal sea un objetivo a considerar (Umbral de distancia). Siempre que los objetivos sean minimizar costos y maximizar captura de tráfico entre los distintos pares de nodos. Estos problemas surgen en el diseño de redes de fibra óptica, líneas de buses o líneas de metro y distribuciones de ruta. Respecto a la experiencia computacional se concluyo que el modelo se comportaba acorde a lo esperado con tiempos de resolución bastante pequeños para una instancia de 15 nodos. Lo más complicado de la experiencia computacional es el proceso de eliminación de subtours, el cual es computacionalmente intenso, por lo cual que las estrategias de búsqueda y eliminación de subtours, en cualquier algoritmo redes que los incluya, debe ser muy bien pensada y analizada. Se propone un programa bastante útil para la generación de datos, el cual fue indispensable para la resolución de los problemas. Respecto a la heurística propuesta v/s PLEM, se vio que el promedio para de diferencia entre las soluciones objetivo fue de 24.878%, lo cual, bajo el punto de vista de la teoría no es bastante alentador. Si fuera menos de un 10% sería bastante prometedor. De todas formas la heurística fue capaz de resolver una instancia de 1000 nodos y encontrar una buen path principal, en un tiempo bastante pequeño. Nos hubiese gustado haber evaluado las condiciones de tiempo de resolución para una instancia más grande, pero dado las condiciones descritas en cuanto a la capacidad de los solvers, no se pudieron analizar más que una instancia de 15 nodos, lo cual es bastante decepcionante y se espera poder contar con los solvers necesarios para el siguiente proyecto, para evaluar de mejor forma el comportamiento de algún modelo.

Page 23: Proyecto IO

23

10 Agradecimientos

Damos las gracias al Dr. Gabriel Gutiérrez, Profesor a cargo de la asignatura de investigación operacional I, por toda la ayuda entregada en cuanto a las referencias para poder realizar el trabajo y la orientación para la construcción de un algoritmo de eliminación de subtours.

También Agradecemos a Pablo Ibacache, Ayudante de taller de Investigación operacional 1, por guiarnos en la programación del modelo en AMPL.

Page 24: Proyecto IO

24

11 Bibliografía

J. R. Current, C. S. Re Velle and J. L. Cohon, 1985. The Maximum Covering Shortest Path Problem a Multiobjective Network Design and Routing Formulation.

Gabriel Gutiérrez Jarpa, Macarena Donoso, Carlos Obreque, Vladimir Marianov, 2009. Minimum cost path location for maximum traffic capture

Hamdy A. Taha, 2004. Investigaciones de operaciones, 7ª. Edición. Editorial Pearson Prentice Hall, México.

Frederick S. Hillier. Gerald J. Lieberman. Introduction to Operations Research, 8th edition. Editorial McGraw-hill College.

Germán Enrique Paredes Belmar, 2008. Un Procedimiento Optimal para resolver el median Shortest path problem.“http://cybertesis.ubiobio.cl/tesis/2008/paredes_g/doc/paredes_g.pdf”

Giacomo Nannicin, 2009. Mathematical Programming: Modeling and Applications“http://www.lix.polytechnique.fr/~giacomon/teaching/td8-slides.pdf”

Page 25: Proyecto IO

25

12 Anexos

12.1 Anexo A

12.1.1 Código Generación de Datos

/* * To change this template, choose Tools | Templates * and open the template in the editor. */package instanciaio;/** * * @author Kevin */public class GeneradorDeDatos { private int X[]; private int Y[]; private double array[][]; private double traffic[][]; private boolean edge[][]; private double graph[][]; private int nNodos; private int rangoA; private int rangoB; public GeneradorDeDatos() {

} public void GenenerarPuntos(int ranA,int ranB, int nN){ nNodos=nN; rangoA=ranA; rangoB=ranB; X= new int[nNodos]; Y= new int[nNodos]; X = setArray(X); Y = setArray(Y); int contX= contDig(rangoA); int contY= contDig(rangoB); double rPvalue = 0.000001; int iter=0; long tiempoInicio = System.currentTimeMillis(); for(int i=0; i<nNodos ; i++){ boolean bool=true; do{ X[i] = (int)(Math.random()*Math.pow(10, contX)); Y[i] = (int)(Math.random()*Math.pow(10, contY)); if(X[i]>=0 && X[i]<=rangoA && Y[i] >=0 && Y[i]<=rangoB){ bool=false; } }while(bool); if(i==nNodos-1){ if(System.currentTimeMillis()-tiempoInicio>=300000){

Page 26: Proyecto IO

26

rPvalue = rPvalue*10; tiempoInicio= System.currentTimeMillis(); } if(rPearson(X,Y,rPvalue)==false){ iter = iter+1; System.out.println("Iterando..."); i=0; } } } System.out.println(""); System.out.println("Instancia Nodos: "+nNodos); System.out.println(iter+" Iteraciones"); System.out.println("Coef Rp: "+rPvalue);

} public void GenerarArcos(int disT){ if(disT==0){ distEuclidiana(nNodos); } if(disT==1){ distManhattan(nNodos); } } public void GenerarTrafico(int maxTraffic){ traffic = new double[nNodos][nNodos]; int contT=contDig(maxTraffic); for(int i=0; i<traffic.length;i++){ for(int j=0; j<traffic[i].length;j++){ boolean bool=true; do{ traffic[i][j] = (int)(Math.random()*Math.pow(10, contT)); traffic[j][i] =traffic[i][j]; if(i==j){ traffic[i][j]=0; bool=false; } if(traffic[i][j]>0 && traffic[i][j]<=maxTraffic){ bool=false; } }while(bool); } } } public void GenerarGrafo(){ for(int i = 0 ; i<edge.length;i++){ int posX = 0; int posY = 0; double min = 1000000000; for(int j=0; j<edge[i].length;j++){ if(i!=j){ if(edge[i][j]==false){ if(array[i][j]<min){ min = array[i][j]; posX=i; posY=j; } } } } edge[posX][posY]=true; edge[posY][posX]=true;

Page 27: Proyecto IO

27

} copiarMatriz(); setearDistancias(); }

public void setEdge(){ edge = new boolean[nNodos][nNodos]; edge=setArray(edge); } public boolean agregarArista(int i,int j){ if(i>nNodos || i<0 || j>nNodos || j<0){ return false; } graph[i-1][j-1]=array[i-1][j-1]; graph[j-1][i-1]=array[j-1][i-1]; edge[i-1][j-1]=true; edge[j-1][i-1]=true; return true; } public boolean eliminarArista(int i,int j){ if(i>nNodos || i<0 || j>nNodos || j<0){ return false; } graph[i-1][j-1]=0; graph[j-1][i-1]=0; edge[i-1][j-1]=false; edge[j-1][i-1]=false; return true; } private void setearDistancias(){ for(int i = 0 ; i<edge.length; i++){ for(int j=0;j<edge.length;j++){ if(edge[i][j]==false){ graph[i][j]=0; } } } }

private void copiarMatriz(){ graph= new double[nNodos][nNodos]; for(int i=0;i<graph.length;i++){ for(int j=0;j<graph[i].length;j++){ graph[i][j]=array[i][j]; } } } public boolean modificarPunto(int nodo,int x1,int y1){ if(nodo>nNodos || nodo<0 || x1<0 || x1>=rangoA || y1<0 || y1>rangoB){ return false; } X[nodo-1]= x1; Y[nodo-1]= y1; return true; } public boolean modificartrafico(int nodoI,int nodoJ, int traf){ if(nodoI>nNodos || nodoI<0 || nodoJ>nNodos || nodoJ<0){ return false;

Page 28: Proyecto IO

28

} traffic[nodoI-1][nodoJ-1] = traf; traffic[nodoJ-1][nodoI-1] = traf; return true; }

private double[][] distEuclidiana(int nNodos){ array = new double[nNodos][nNodos]; for(int i=0 ; i<array.length;i++){ for(int j=0; j<array[i].length;j++){ array[i][j]=Math.sqrt(Math.pow((X[j]-X[i]), 2)+Math.pow((Y[j]-Y[i]), 2)); } } return array; } private double[][] distManhattan(int nNodos){ array = new double[nNodos][nNodos]; for(int i=0 ; i<array.length;i++){ for(int j=0; j<array[i].length;j++){ array[i][j]=Math.abs(X[i]-X[j])+Math.abs(Y[i]-Y[j]); } } return array; }

private int contDig(int rango){ int cont=0; while(rango!=0){ rango= (int)rango/10; cont++; } return cont; } private boolean rPearson(int X[],int Y[], double rPvalue){ double promX = prom(X); double promY = prom(Y); double X2=0; double Y2=0; double XY=0; for( int i = 0 ; i<X.length && i<Y.length && X[i]!=-1 && Y[i]!=-1 ; i++){ X2 = X2 + (X[i]-promX)*(X[i]-promX); Y2 = Y2 + (Y[i]-promY)*(Y[i]-promY); XY = XY + (X[i]-promX)*(Y[i]-promY); } double rPearson = XY/(Math.sqrt(X2*Y2)); if(rPearson<rPvalue && rPearson>-rPvalue){ return true; } return false; } private double prom(int X[]){ int cont=0; while(cont<X.length && X[cont]!=-1){ cont++; } double suma = 0; for(int i=0; i<X.length && X[i]!=-1 ; i++){ suma = suma + X[i]; } return (suma/cont); }

Page 29: Proyecto IO

29

private int[] setArray(int X[]){ for(int i=0 ; i<X.length; i++){ X[i]=-1; } return X; }

private boolean[][] setArray(boolean edge[][]){ for(int i=0 ; i<edge.length;i++){ for(int j=0;j<edge[i].length;j++){ edge[i][j]=false; } } return edge; }

public int[] getX() { return X; }

public int[] getY() { return Y; }

public double[][] getArray() { return array; }

public double[][] getTraffic() { return traffic; }

public double[][] getGraph() { return graph; }

/* * To change this template, choose Tools | Templates * and open the template in the editor. */

Page 30: Proyecto IO

30

12.1.2 Código Heurística * @author Kevin */public class Heurística {

private double Obj; private boolean X[][]; private boolean Y[]; private boolean V[][]; private int path[]; public Heurística(int nNodos) { X = new boolean [nNodos][nNodos]; Y = new boolean [nNodos]; V = new boolean [nNodos][nNodos]; path = new int [nNodos]; } private void routeConnection(double graph[][], double traffic[][], double array[][], int Or, int Dt){ setearX(); setearY(); setearV(); int pl = 0; int i = Or-1; while(i!=Dt-1){ double max=0; double cost=0 ; double sum =0; int posX = 0; int posY = 0; for(int j=0; j<graph[i].length;j++){ if(Y[j]!=true){ if(graph[i][j]!=0){ if(array[j][Dt-1]<=array[i][Dt-1]){ cost = graph[i][j]; sum = traffic[i][j]; for(int k=0; k<graph[j].length;k++){ if(Y[k]!=true){ if(array[k][Dt-1]<=array[j][Dt-1]){ if(graph[j][k]!=0){ sum = sum + traffic[j][k]; } } } } if(max<(sum/cost)){ max=sum/cost; posX = i; posY = j; } } } } } X[posX][posY]=true; Y[posX]=true; Y[posY]=true; path[pl]=posY; i=posY; pl++;

Page 31: Proyecto IO

31

} } public double FunObjet(double fact, double graph[][], double traffic[][], double array[][], int Or, int Dt){ double z=0; routeConnection(graph,traffic,array,Or,Dt); trafficCapture(); for(int i = 0; i<X.length ;i++){ for(int j=0 ; j<X[i].length;j++){ if(X[i][j]==true){ z = z + array[i][j]; } if(V[i][j]==true){ z = z - traffic[i][j]*fact; } } } return z; } private void trafficCapture(){ for(int i = 0; i<X.length ;i++){ for(int j=0 ; j<X[i].length;j++){ if(Y[i]==true && Y[j]==true && i>j){ V[i][j]=true; } } } }

private void setearX(){ for(int i=0; i<X.length; i++){ for(int j=0; j<X[i].length ;j++){ X[i][j]=false; } } }

private void setearY(){

for(int i=0; i<Y.length; i++){ Y[i]=false; } }

private void setearV(){

for(int i=0; i<V.length; i++){ for(int j=0; j<V[i].length ;j++){ V[i][j]=false; } }

}

Page 32: Proyecto IO

32

public int[] getPath() { return path; }

public double getObj() { return Obj; }

public void setObj(double Obj) { this.Obj = Obj; }

public boolean[][] getV() { return V; }

public void setV(boolean[][] V) { this.V = V; }

public boolean[][] getX() { return X; }

public void setX(boolean[][] X) { this.X = X; }

public boolean[] getY() { return Y; }

public void setY(boolean[] Y) { this.Y = Y; } }

Page 33: Proyecto IO

33

12.2 Anexo B

12.2.1 Archivo.Mod

param nNodos;set N:= 1..nNodos;set A within N cross N;param subtours >= 0, integer, default 0;set S{1..subtours};

param Or;param Dt;

param T{i in N,j in N};param C{A};param fact;

var X{A} binary;var Y{N} binary;var V{i in N, j in N} >=0, <=1;

minimize OBJ: sum{(i,j) in A}C[i,j]*X[i,j] - sum{ i in N, j in N: i>j}fact*T[i,j]*V[i,j];

s.t. R1: sum{j in N: (Or,j) in A}X[Or,j]=1;s.t. R2: sum{i in N: (i,Dt) in A}X[i,Dt]=1;

s.t. R3 {j in N: j!=Or && j!= Dt}: sum{i in N: (i,j) in A && i!=Dt}X[i,j] = sum{k in N: (j,k) in A && k!=Or }X[j,k];s.t. R4 {j in N: j!=Or && j!= Dt}: sum{i in N: (i,j) in A}X[i,j] = Y[j];s.t. R5 {k in N, j in N: k>j}: V[k,j]<=Y[k];s.t. R6 {k in N, j in N: k>j}: V[k,j]<=Y[j];s.t. subtour_elim {k in 1..subtours} :sum{i in S[k], j in S[k] : (i,j) in A} X[i,j] <= card(S[k])-1;# Restricciones Auxiliaress.t. RR2:sum{j in N: (Dt,j) in A}X[Dt,j]=0;s.t. RR1: sum{i in N: (i,Or) in A}X[i,Or]=0;

Page 34: Proyecto IO

34

12.2.2 Archivo.Run

model proyecto.mod;data proyecto.dat;

# Selección de Solveroption solver cplex;option cplex_options 'timing=1 integrality=0 mipgap=0'; option presolve 0;option cplex_options 'sensitivity';

param TCPU; #Tiempo de CPU let TCPU:=0; param Iter; let Iter:=0;

# Estructura de Datoslet subtours := 0;param successorvertex{N} >= 0, integer;param currentvertex >= 0, integer;param global binary;param subbool binary;let global := 0;set SP;set SS;set SS1;

# Parte Iterativarepeat while (global == 0) {

# Resolversolve;

#Imprime tiempos de CPU e iteraciones let Iter:= Iter+1; let TCPU:= TCPU + _solve_user_time; printf "Iteración= %d Tiempo= %f Acumulado= %f\n", Iter, _solve_user_time, TCPU;

# Buscar Los caminos de cada verticefor {i in N} {let successorvertex[i] := sum{j in N : j != i && (i,j) in A} j * X[i,j];}

# Busco Todos los Nodos Visitadoslet SS:={};for {i in N}{if Y[i] != 0 then { let SS:= SS union {i};}}

# CaminoPrincipallet currentvertex := Or;let SP := {};repeat {let SP:= SP union {currentvertex};let currentvertex := successorvertex[currentvertex];} until (currentvertex = successorvertex[Dt]);

Page 35: Proyecto IO

35

# Condicion de terminolet SS1:= SS diff SP;

if card(SS1) != 0 then{

# Agrego todos los posibles Subtours let subbool:=0;repeat while ( subbool == 0){let subtours := subtours + 1;for { i in SS1}{let currentvertex := i;let S[subtours] := {};repeat {let S[subtours] := S[subtours] union {currentvertex};let currentvertex := successorvertex[currentvertex];} until (currentvertex = i);}

let SS1:= SS1 diff S[subtours];if card(SS1)==0 then{let subbool:=1;}}}else{

let global:= 1;

}}

display X;display Y;display V;display OBJ;

printf "Camino Principal: (";for {i in SP: i!=Dt} {printf "%d -> ", i ;}print Dt,")";print "";

display X.rc, X.current, X.down, X.up;

display R1,R1.down,R1.up,R1.slack;display R2,R2.down,R2.up,R2.slack;display R3,R3.down,R3.up,R3.slack;display R4,R4.down,R4.up,R4.slack;display R5,R5.down,R5.up,R5.slack;display R6,R6.down,R6.up,R6.slack;

Page 36: Proyecto IO

36

12.3 Anexo C

12.3.1 Instancia 1

Instancia Nodos: 1581720 IteracionesCoef Rp: 1.0E-6El Tiempo de Generacion de Datos: 8.037[seg]Coordenadas:Nodo X Y

1 4594 13962 4283 8263 157 23004 3500 15005 200 13026 3700 36417 1862 30908 4798 32379 3027 4083

10 1584 368611 3059 213312 676 465313 2814 314714 4189 496915 4761 4043

Page 37: Proyecto IO

37

0 1000 2000 3000 4000 5000 6000

1

2

3

45

6

7 8

910

11

12

13

14

15

NodosSeries2

Matriz Distancias

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 649,32

4528,15

1098,93

4395,01

2416,46

3214,57

1852,27

3110,54

3782,09

1702,76

5094,98

2496,88

3595,88

2652,26

2 649,32

0 4381,39

1033,13

4110,65

2874,74

3314,65

2465,39

3490,79

3932,45

1790,65

5258,93

2746,82

4144,07

3252,32

3 4528,15

4381,39

0 3437,39

998,93

3788,29

1879,13

4734,64

3378,76

1989,3

2906,8

2409,56

2788,74

4835,35

4922,89

4 1098,93

1033,13

3437,39

0 3305,93

2150,32

2282,79

2168,4

2625,95

2906,83

771,47

4232,78

1784,15

3536,76

2838,48

5 4395,01

4110,65

998,93

3305,93

0 4209,62

2441,14

4988,57

3965,59

2756,61

2977,32

3384,64

3199,53

5418,4

5321,26

6 2416,46

2874,74

3788,29

2150,32

4209,62

0 1918,81

1169,97

805,17

2116,48

1638,58

3188,84

1014,41

1415,17

1134,6

7 3214,57

3314,65

1879,13

2282,79

2441,14

1918,81

0 2939,68

1530,78

657,65

1532,53

1962,03

953,7

2990,91

3051,62

8 1852,27

2465,39

4734,64

2168,4

4988,57

1169,97

2939,68

0 1962,69

3245,21

2059,84

4358,43

1986,04

1835,95

806,85

9 3110,54

3490,79

3378,76

2625,95

3965,59

805,17

1530,78

1962,69

0 1496,62

1950,26

2419,11

959,93

1461,25

1734,46

10 3782,09

3932,45

1989,3

2906,83

2756,61

2116,48

657,65

3245,21

1496,62

0 2141,83

1326,48

1342,92

2903,81

3197

11 1702,76

1790,65

2906,8

771,47

2977,32

1638,58

1532,53

2059,84

1950,26

2141,83

0 3468,3

1043,18

3052,83

2558,3

12 5094,98

5258,93

2409,56

4232,78

3384,64

3188,84

1962,03

4358,43

2419,11

1326,48

3468,3

0 2615,16

3527,18

4130,29

13 2496,88

2746,82

2788,74

1784,15

3199,53

1014,41

953,7

1986,04

959,93

1342,92

1043,18

2615,16

0 2282,61

2143,27

14 3595,88

4144,07

4835,35

3536,76

5418,4

1415,17

2990,91

1835,95

1461,25

2903,81

3052,83

3527,18

2282,61

0 1088,42

15 2652,26

3252,32

4922,89

2838,48

5321,26

1134,6

3051,62

806,85

1734,46

3197 2558,3

4130,29

2143,27

1088,42

0

Matriz Tráfico  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0.0 1761.0

3300.0

5363.0

3397.0

40.0 1066.0

3088.0

1875.0

3653.0

555.0

3770.0

761.0

4749.0

6789.0

2 1761 0.0 642. 602. 4406 2714 6167 2846 6927 4936 4286 5771 5116 887. 2943

Page 38: Proyecto IO

38

.0 0 0 .0 .0 .0 .0 .0 .0 .0 .0 .0 0 .03 3300

.0642.0

0.0 2136.0

3322.0

5289.0

6652.0

3058.0

6322.0

5556.0

4609.0

3641.0

376.0

4854.0

6729.0

4 5363.0

602.0

2136.0

0.0 4942.0

2312.0

15.0 6511.0

99.0 5475.0

4053.0

2683.0

950.0

3479.0

4829.0

5 3397.0

4406.0

3322.0

4942.0

0.0 3935.0

1694.0

2137.0

6216.0

5264.0

1484.0

349.0

6989.0

6754.0

2054.0

6 40.0 2714.0

5289.0

2312.0

3935.0

0.0 4126.0

4732.0

1486.0

2368.0

3078.0

2354.0

3407.0

2739.0

4783.0

7 1066.0

6167.0

6652.0

15.0 1694.0

4126.0

0.0 1626.0

6916.0

1962.0

6434.0

5172.0

951.0

6238.0

3476.0

8 3088.0

2846.0

3058.0

6511.0

2137.0

4732.0

1626.0

0.0 5195.0

67.0 5839.0

3039.0

1778.0

931.0

6384.0

9 1875.0

6927.0

6322.0

99.0 6216.0

1486.0

6916.0

5195.0

0.0 3109.0

1287.0

5571.0

1465.0

4040.0

6072.0

10 3653.0

4936.0

5556.0

5475.0

5264.0

2368.0

1962.0

67.0 3109.0

0.0 6651.0

1141.0

6144.0

549.0

3212.0

11 555.0

4286.0

4609.0

4053.0

1484.0

3078.0

6434.0

5839.0

1287.0

6651.0

0.0 2058.0

4190.0

4227.0

1312.0

12 3770.0

5771.0

3641.0

2683.0

349.0

2354.0

5172.0

3039.0

5571.0

1141.0

2058.0

0.0 4344.0

1948.0

6460.0

13 761.0

5116.0

376.0

950.0

6989.0

3407.0

951.0

1778.0

1465.0

6144.0

4190.0

4344.0

0.0 2729.0

5864.0

14 4749.0

887.0

4854.0

3479.0

6754.0

2739.0

6238.0

931.0

4040.0

549.0

4227.0

1948.0

2729.0

0.0 5375.0

15 6789.0

2943.0

6729.0

4829.0

2054.0

4783.0

3476.0

6384.0

6072.0

3212.0

1312.0

6460.0

5864.0

5375.0

0.0

Grafo

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 649,32

0 1098,93

0 0 0 1852,27

0 0 0 0 0 0 0

2 649,32

0 0 1033,13

0 0 0 0 0 0 0 0 0 0 0

3 0 0 0 0 998,93

0 1879,13

0 0 0 0 2409,56

0 0 0

4 1098,93

1033,13

0 0 0 0 0 0 0 0 771,47

0 0 0 0

5 0 0 998,93

0 0 0 2441,14

0 0 0 2977,32

0 0 0 0

6 0 0 0 0 0 0 0 1169,97

805,17

0 0 0 1014,41

1415,17

1134,6

7 0 0 1879,13

0 2441,14

0 0 0 1530,78

657,65

1532,53

1962,03

953,7

0 0

8 1852,27

0 0 0 0 1169,97

0 0 0 0 0 0 1986,04

0 806,85

9 0 0 0 0 0 805,17

1530,78

0 0 0 0 0 959,93

1461,25

0

10 0 0 0 0 0 0 657,65

0 0 0 0 1326,48

0 0 0

11 0 0 0 771,47

2977,32

0 1532,53

0 0 0 0 0 1043,18

0 0

12 0 0 2409,56

0 0 0 1962,03

0 0 1326,48

0 0 0 0 0

13 0 0 0 0 0 1014,41

953,7

1986,04

959,93

0 1043,18

0 0 0 0

14 0 0 0 0 0 1415,17

0 0 1461,25

0 0 0 0 0 1088,42

15 0 0 0 0 0 1134,6

0 806,85

0 0 0 0 0 1088,42

0

Page 39: Proyecto IO

39

Page 40: Proyecto IO

40

CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 2119.725137 MIP simplex iterations0 branch-and-bound nodes

suffi x up OUT;suffi x down OUT;suffi x current OUT;Iteracion= 1 Tiempo= 0.000000 Acumulado= 0.000000CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 3052.605291 MIP simplex iterations0 branch-and-bound nodesIteracion= 2 Tiempo= 0.046800 Acumulado= 0.046800CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 3302.785313 MIP simplex iterations0 branch-and-bound nodesIteracion= 3 Tiempo= 0.078001 Acumulado= 0.124801CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 3495.54457 MIP simplex iterations0 branch-and-bound nodesIteracion= 4 Tiempo= 0.093601 Acumulado= 0.218401X [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 . 0 . 0 . . . 0 . . . . . . .2 0 . . 0 . . . . . . . . . . .3 . . . . 0 . 1 . . . . 0 . . .4 0 0 . . . . . . . . 0 . . . .5 . . 0 . . . 0 . . . 0 . . . .6 . . . . . . . 0 0 . . . 0 0 17 . . 0 . 0 . . . 0 0 0 0 1 . .8 0 . . . . 0 . . . . . . 0 . 09 . . . . . 1 0 . . . . . 0 0 .10 . . . . . . 0 . . . . 0 . . .11 . . . 0 0 . 0 . . . . . 0 . .12 . . 0 . . . 0 . . 0 . . . . .13 . . . . . 0 0 0 1 . 0 . . . .14 . . . . . 0 . . 0 . . . . . 015 . . . . . 0 . 0 . . . . . 0 .;

Page 41: Proyecto IO

41

Y [*] := 1 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 110 011 012 013 114 015 1;V [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 06 0 0 1 0 0 0 0 0 0 0 0 0 0 0 07 0 0 1 0 0 1 0 0 0 0 0 0 0 0 08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 09 0 0 1 0 0 1 1 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 0 0 0 0 0 0 011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 012 0 0 0 0 0 0 0 0 0 0 0 0 0 0 013 0 0 1 0 0 1 1 0 1 0 0 0 0 0 014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 015 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0;

Utilizando HeuristicaOBJ = 3495.54 La Ruta Generada es:

3-> 7-> 9-> 6-> 8-> 15Camino Principal: (3 -> 7 -> 13 -> 9 -> 6 -> 15 ) Valor Objetivo: 3642.2754704178205

El Tiempo de Solución: 0.002[Seg]

Page 42: Proyecto IO

42

12.3.2 Instancia 2

Instancia Nodos: 1581720 IteracionesCoef Rp: 1.0E-6El Tiempo de Generacion de Datos: 8.037[seg]

Coordenadas:  Nodo X Y1 475 17972 258 3303 1804 8154 1814 25695 1117 22686 1566 29897 4911 5848 997 41569 4193 5410 4600 320011 1298 473412 3393 325913 3285 211214 2260 346815 4090 4633

Page 43: Proyecto IO

43

Matriz Distancias  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 1482,96

1652,44

1545,61

796,24

1615,9

4598,85

2416,06

4106,28

4357,07

3050,13

3263,77

2827,6

2445,09

4594,68

2 1482,96

0 1620,29

2726,58

2119,84

2963,3

4659,93

3896,72

3944,67

5204,79

4525,13

4290,37

3512,58

3722,24

5761,95

3 1652,44

1620,29

0 1754,03

1607,23

2186,99

3115,58

3437,08

2507,28

3675,03

3951,53

2915,14

1968,65

2691,9

4450,05

4 1545,61

2726,58

1754,03

0 759,22

487,75

3678,54

1784,95

3461,92

2856,56

2225,64

1723,18

1540,35

1003,55

3072,5

5 796,24

2119,84

1607,23

759,22

0 849,38

4150,94

1891,81

3789,93

3605,54

2472,63

2482,39

2173,61

1657,24

3798,94

6 1615,9

2963,3

2186,99

487,75

849,38

0 4119,84

1298,33

3938,95

3041,33

1765,46

1846,84

1929,79

843,25

3012,19

7 4598,85

4659,93

3115,58

3678,54

4150,94

4119,84

0 5298,92

892,43

2634,42

5502,39

3075,7

2231,29

3917,3

4131,4

8 2416,06

3896,72

3437,08

1784,95

1891,81

1298,33

5298,92

0 5200,08

3727,67

651,68

2558,4

3068,04

1438,23

3129,57

9 4106,28

3944,67

2507,28

3461,92

3789,93

3938,95

892,43

5200,08

0 3172,22

5503,04

3303,34

2249,41

3923,25

4580,16

10 4357,07

5204,79

3675,03

2856,56

3605,54

3041,33

2634,42

3727,67

3172,22

0 3640,93

1208,44

1706,74

2355,3

1521,05

11 3050,13

4525,13

3951,53

2225,64

2472,63

1765,46

5502,39

651,68

5503,04

3640,93

0 2562,16

3289,84

1590,03

2793,83

12 3263,77

4290,37

2915,14

1723,18

2482,39

1846,84

3075,7

2558,4

3303,34

1208,44

2562,16

0 1152,07

1152,12

1540,68

13 2827,6

3512,58

1968,65

1540,35

2173,61

1929,79

2231,29

3068,04

2249,41

1706,74

3289,84

1152,07

0 1699,81

2646,41

14 2445,09

3722,24

2691,9

1003,55

1657,24

843,25

3917,3

1438,23

3923,25

2355,3

1590,03

1152,12

1699,81

0 2169,36

15 4594,68

5761,95

4450,05

3072,5

3798,94

3012,19

4131,4

3129,57

4580,16

1521,05

2793,83

1540,68

2646,41

2169,36

0

Matriz de Trafico  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0.0 1544.0

1842.0

2973.0

5934.0

3571.0

6535.0

3548.0

1765.0

645.0

1530.0

2319.0

4590.0

2591.0

5836.0

2 1544.0

0.0 6863.0

4770.0

658.0

5364.0

115.0

6782.0

4941.0

5169.0

873.0

1197.0

3380.0

1050.0

1016.0

3 1842.0

6863.0

0.0 2947.0

337.0

1346.0

3452.0

1115.0

1433.0

1939.0

6363.0

543.0

1762.0

801.0

6536.0

4 2973.0

4770.0

2947.0

0.0 428.0

3631.0

1223.0

3382.0

1045.0

2324.0

3289.0

296.0

2400.0

2920.0

4605.0

5 5934.0

658.0

337.0

428.0

0.0 6528.0

1314.0

4540.0

4823.0

2014.0

440.0

4645.0

2708.0

2209.0

3692.0

6 3571.0

5364.0

1346.0

3631.0

6528.0

0.0 134.0

3320.0

5313.0

2291.0

4217.0

4699.0

600.0

6175.0

189.0

7 6535.0

115.0

3452.0

1223.0

1314.0

134.0

0.0 1466.0

5751.0

991.0

3409.0

6037.0

3840.0

434.0

3787.0

8 3548.0

6782.0

1115.0

3382.0

4540.0

3320.0

1466.0

0.0 6012.0

6811.0

478.0

1865.0

3765.0

1701.0

1486.0

9 1765.0

4941.0

1433.0

1045.0

4823.0

5313.0

5751.0

6012.0

0.0 6939.0

1995.0

5366.0

1712.0

4964.0

445.0

10 645.0

5169.0

1939.0

2324.0

2014.0

2291.0

991.0

6811.0

6939.0

0.0 4106.0

655.0

6937.0

6255.0

2733.0

11 1530.0

873.0

6363.0

3289.0

440.0

4217.0

3409.0

478.0

1995.0

4106.0

0.0 6366.0

1165.0

6864.0

6641.0

12 2319.0

1197.0

543.0

296.0

4645.0

4699.0

6037.0

1865.0

5366.0

655.0

6366.0

0.0 309.0

1772.0

1417.0

13 4590.0

3380.0

1762.0

2400.0

2708.0

600.0

3840.0

3765.0

1712.0

6937.0

1165.0

309.0

0.0 3275.0

5685.0

14 2591.0

1050.0

801.0

2920.0

2209.0

6175.0

434.0

1701.0

4964.0

6255.0

6864.0

1772.0

3275.0

0.0 2861.0

15 5836.0

1016.0

6536.0

4605.0

3692.0

189.0

3787.0

1486.0

445.0

2733.0

6641.0

1417.0

5685.0

2861.0

0.0

Page 44: Proyecto IO

44

Grafo

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 1482,96

1652,44

0 796,24

1615,9

0 2416,06

0 0 0 0 0 0 0

2 1482,96

0 1620,29

0 0 0 0 0 0 0 0 0 0 0 0

3 1652,44

1620,29

0 1754,03

1607,23

0 0 0 2507,28

0 0 0 0 0 0

4 0 0 1754,03

0 759,22

487,75

0 0 0 0 0 0 1540,35

1003,55

0

5 796,24

0 1607,23

759,22

0 849,38

0 0 0 0 0 0 0 1657,24

0

6 1615,9

0 0 487,75

849,38

0 0 0 0 0 0 0 0 843,25

0

7 0 0 0 0 0 0 0 0 892,43

2634,42

0 0 2231,29

0 0

8 2416,06

0 0 0 0 0 0 0 0 0 651,68

0 0 1438,23

0

9 0 0 2507,28

0 0 0 892,43

0 0 0 0 0 2249,41

0 0

10 0 0 0 0 0 0 2634,42

0 0 0 0 1208,44

1706,74

2355,3

1521,05

11 0 0 0 0 0 0 0 651,68

0 0 0 0 0 1590,03

2793,83

12 0 0 0 0 0 0 0 0 0 1208,44

0 0 1152,07

1152,12

1540,68

13 0 0 0 1540,35

0 0 2231,29

0 2249,41

1706,74

0 1152,07

0 1699,81

0

14 0 0 0 1003,55

1657,24

843,25

0 1438,23

0 2355,3

1590,03

1152,12

1699,81

0 2169,36

15 0 0 0 0 0 0 0 0 0 1521,05

2793,83

1540,68

0 2169,36

0

Page 45: Proyecto IO

45

CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective -1222.18108 MIP simplex iterations0 branch-and-bound nodes

suffi x up OUT;suffi x down OUT;suffi x current OUT;Iteracion= 1 Tiempo= 0.000000 Acumulado= 0.000000CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 1329.81175 MIP simplex iterations0 branch-and-bound nodesIteracion= 2 Tiempo= 0.000000 Acumulado= 0.000000CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 2498.63312 MIP simplex iterations0 branch-and-bound nodesIteracion= 3 Tiempo= 0.062400 Acumulado= 0.062400X [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 . 0 0 . 1 0 . 0 . . . . . . .2 1 . 0 . . . . . . . . . . . .3 0 0 . 0 0 . . . 0 . . . . . .4 . . 0 . 0 1 . . . . . . 0 0 .5 0 . 0 1 . 0 . . . . . . . 0 .6 0 . . 0 0 . . . . . . . . 1 .7 . . . . . . . . 0 0 . . 0 . .8 0 . . . . . . . . . 0 . . 0 .9 . . 0 . . . 0 . . . . . 0 . .10 . . . . . . 0 . . . . 0 0 0 011 . . . . . . . 0 . . . . . 0 012 . . . . . . . . . 1 . . 0 0 013 . . . 0 . . 0 . 0 0 . 0 . 0 .14 . . . 0 0 0 . 0 . 0 0 1 0 . 015 . . . . . . . . . 0 0 0 . 0 .;

Page 46: Proyecto IO

46

Y [*] := 1 1 2 1 3 0 4 1 5 1 6 1 7 0 8 0 9 010 111 012 113 014 115 0;V [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02 1 0 0 0 0 0 0 0 0 0 0 0 0 0 03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04 1 1 0 0 0 0 0 0 0 0 0 0 0 0 05 1 1 0 1 0 0 0 0 0 0 0 0 0 0 06 1 1 0 1 1 0 0 0 0 0 0 0 0 0 07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 010 1 1 0 1 1 1 0 0 0 0 0 0 0 0 011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 012 1 1 0 1 1 1 0 0 0 1 0 0 0 0 013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 014 1 1 0 1 1 1 0 0 0 1 0 1 0 0 015 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

Utilizando HeuristicaOBJ = 2498.63 La Ruta Generada es:

2-> 5-> 6-> 14-> 13-> 10Camino Principal: (2 -> 1 -> 5 -> 4 -> 6 -> 14 -> 12 -> 10 ) Valor Objetivo: 3703.9923875655795

El Tiempo de Solución: 0.0[Seg]

Page 47: Proyecto IO

47

12.3.3 Instancia 3

Instancia Nodos: 1581720 IteracionesCoef Rp: 1.0E-6El Tiempo de Generacion de Datos: 8.037[seg]

Coordenadas:  Nodo X Y1 4605 9632 438 39733 1118 39544 95 23755 3700 33006 567 15997 907 8308 2063 8789 2725 322710 1960 481411 1151 489712 3500 450013 1788 245214 1889 5015 4471 4967

MATRIZ DE DISTANCIAS

Page 48: Proyecto IO

48

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 5140,43

4594,05

4725,87

2506,11

4087,78

3700,39

2543,42

2942,8

4671,85

5235,12

3705,59

3186,32

2865,35

4006,24

2 5140,43

0 680,27

1634,4

3330,7

2377,5

3177,8

3495,66

2405,59

1738,9

1167,11

3107,02

2033,7

4182,74

4153,69

3 4594,05

680,27

0 1881,43

2663,54

2418,6

3131,12

3217,89

1763,8

1203,56

943,58

2443,78

1644,66

3979,4

3502,68

4 4725,87

1634,4

1881,43

0 3721,78

908,27

1745,39

2472,66

2764,56

3070,33

2734,16

4013,68

1694,75

2936,68

5086,04

5 2506,11

3330,7

2663,54

3721,78

0 3564,98

3728,5

2923,33

977,73

2306,47

3007,96

1216,55

2091,61

3720,51

1836,66

6 4087,78

2377,5

2418,6

908,27

3564,98

0 840,81

1660,68

2703,21

3503,81

3349,31

4125,32

1489,45

2036,44

5156,03

7 3700,39

3177,8

3131,12

1745,39

3728,5

840,81

0 1157 3008,44

4120,81

4074,31

4493,61

1845,82

1254,08

5460,48

8 2543,42

3495,66

3217,89

2472,66

2923,33

1660,68

1157 0 2440,5

3937,35

4121,18

3896,65

1597,84

846,09

4745,35

9 2942,8

2405,59

1763,8

2764,56

977,73

2703,21

3008,44

2440,5

0 1761,76

2294,86

1490,35

1215,97

3285,15

2464,98

10 4671,85

1738,9

1203,56

3070,33

2306,47

3503,81

4120,81

3937,35

1761,76

0 813,25

1571,69

2368,25

4764,53

2515,66

11 5235,12

1167,11

943,58

2734,16

3007,96

3349,31

4074,31

4121,18

2294,86

813,25

0 2382,31

2526,62

4902,86

3320,74

12 3705,59

3107,02

2443,78

4013,68

1216,55

4125,32

4493,61

3896,65

1490,35

1571,69

2382,31

0 2669,32

4732,63

1077,46

13 3186,32

2033,7

1644,66

1694,75

2091,61

1489,45

1845,82

1597,84

1215,97

2368,25

2526,62

2669,32

0 2404,12

3677,46

14 2865,35

4182,74

3979,4

2936,68

3720,51

2036,44

1254,08

846,09

3285,15

4764,53

4902,86

4732,63

2404,12

0 5553,7

15 4006,24

4153,69

3502,68

5086,04

1836,66

5156,03

5460,48

4745,35

2464,98

2515,66

3320,74

1077,46

3677,46

5553,7

0

MATRIZ DE TRÁFICO  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0.0 3136.0

5297.0

5850.0

3245.0

6325.0

116.0

430.0

6388.0

6206.0

2087.0

566.0

6768.0

4431.0

460.0

2 3136.0

0.0 5320.0

5442.0

6241.0

4739.0

3845.0

1549.0

6524.0

1258.0

3340.0

4695.0

67.0 5307.0

5931.0

3 5297.0

5320.0

0.0 6072.0

2095.0

2323.0

2296.0

5354.0

6528.0

2057.0

40.0 4396.0

3968.0

5905.0

4537.0

4 5850.0

5442.0

6072.0

0.0 170.0

1652.0

5147.0

3646.0

5276.0

3120.0

4140.0

6861.0

900.0

2747.0

3202.0

5 3245.0

6241.0

2095.0

170.0

0.0 4790.0

5690.0

6327.0

2187.0

6276.0

294.0

5406.0

5563.0

5681.0

421.0

6 6325.0

4739.0

2323.0

1652.0

4790.0

0.0 2243.0

6618.0

2328.0

6742.0

3361.0

1841.0

2418.0

4124.0

1669.0

7 116.0

3845.0

2296.0

5147.0

5690.0

2243.0

0.0 4964.0

5575.0

5596.0

1153.0

6719.0

5986.0

2358.0

5941.0

8 430.0

1549.0

5354.0

3646.0

6327.0

6618.0

4964.0

0.0 170.0

6678.0

1359.0

4246.0

642.0

2316.0

5517.0

9 6388.0

6524.0

6528.0

5276.0

2187.0

2328.0

5575.0

170.0

0.0 4405.0

181.0

5209.0

5786.0

1148.0

5031.0

10 6206.0

1258.0

2057.0

3120.0

6276.0

6742.0

5596.0

6678.0

4405.0

0.0 1661.0

63.0 51.0 3179.0

1800.0

11 2087.0

3340.0

40.0 4140.0

294.0

3361.0

1153.0

1359.0

181.0

1661.0

0.0 2811.0

2749.0

539.0

4864.0

12 566.0

4695.0

4396.0

6861.0

5406.0

1841.0

6719.0

4246.0

5209.0

63.0 2811.0

0.0 4751.0

5152.0

243.0

13 6768.0

67.0 3968.0

900.0

5563.0

2418.0

5986.0

642.0

5786.0

51.0 2749.0

4751.0

0.0 972.0

4740.0

14 4431.0

5307.0

5905.0

2747.0

5681.0

4124.0

2358.0

2316.0

1148.0

3179.0

539.0

5152.0

972.0

0.0 1936.0

15 460.0

5931.0

4537.0

3202.0

421.0

1669.0

5941.0

5517.0

5031.0

1800.0

4864.0

243.0

4740.0

1936.0

0.0

Grafo

Page 49: Proyecto IO

49

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 0 0 0 2506,11

0 0 2543,42

2942,8

0 0 0 0 0 4006,24

2 0 0 680,27

1634,4

0 0 0 0 0 0 1167,11

0 0 0 0

3 0 680,27

0 1881,43

0 0 0 0 0 1203,56

943,58

0 1644,66

0 0

4 0 1634,4

1881,43

0 0 908,27

0 0 0 0 0 0 1694,75

0 0

5 2506,11

0 0 0 0 0 0 0 977,73

0 0 0 0 0 1836,66

6 0 0 0 908,27

0 0 840,81

0 0 0 0 0 1489,45

0 0

7 0 0 0 0 0 840,81

0 1157 0 0 0 0 0 1254,08

0

8 2543,42

0 0 0 0 0 1157 0 2440,5

0 0 0 1597,84

846,09

0

9 2942,8

0 0 0 977,73

0 0 2440,5

0 1761,76

0 1490,35

1215,97

0 0

10 0 0 1203,56

0 0 0 0 0 1761,76

0 813,25

1571,69

2368,25

0 0

11 0 1167,11

943,58

0 0 0 0 0 0 813,25

0 0 0 0 0

12 0 0 0 0 0 0 0 0 1490,35

1571,69

0 0 0 0 1077,46

13 0 0 1644,66

1694,75

0 1489,45

0 1597,84

1215,97

2368,25

0 0 0 0 0

14 0 0 0 0 0 0 1254,08

846,09

0 0 0 0 0 0 0

15 4006,24

0 0 0 1836,66

0 0 0 0 0 0 1077,46

0 0 0

Page 50: Proyecto IO

50

CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 4638.55171 MIP simplex iterations0 branch-and-bound nodes

suffi x up OUT;suffi x down OUT;suffi x current OUT;Iteracion= 1 Tiempo= 0.015600 Acumulado= 0.015600X [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 . . . . 0 . . 0 0 . . . . . 02 . . 0 0 . . . . . . 0 . . . .3 . 0 . 0 . . . . . 0 0 . 0 . .4 . 0 0 . . 0 . . . . . . 1 . .5 0 . . . . . . . 0 . . . . . 06 . . . 0 . . 0 . . . . . 0 . .7 . . . . . 0 . 0 . . . . . 0 .8 0 . . . . . 0 . 0 . . . 0 0 .9 0 . . . 0 . . 0 . 0 . 1 0 . .10 . . 0 . . . . . 0 . 0 0 0 . .11 . 0 0 . . . . . . 0 . . . . .12 . . . . . . . . 0 0 . . . . 113 . . 0 0 . 0 . 0 1 0 . . . . .14 . . . . . . 0 0 . . . . . . .15 0 . . . 0 . . . . . . 0 . . .;

Page 51: Proyecto IO

51

Y [*] := 1 0 2 0 3 0 4 1 5 0 6 0 7 0 8 0 9 110 011 012 113 114 015 1;V [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 09 0 0 0 1 0 0 0 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 0 0 0 0 0 0 011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 012 0 0 0 1 0 0 0 0 1 0 0 0 0 0 013 0 0 0 1 0 0 0 0 1 0 0 1 0 0 014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 015 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0;

Utilizando HeuristicaOBJ = 4638.55 La Ruta Generada es:

4-> 2-> 3-> 10-> 9-> 12-> 15Camino Principal: (4 -> 13 -> 9 -> 12 -> 15 ) Valor Objetivo: 6088.402309864763

El Tiempo de Solución: 0.016[Seg]

Page 52: Proyecto IO

52

12.3.4 Instancia 4

Instancia Nodos: 15151753 IteracionesCoef Rp: 1.0E-6 El Tiempo de Generacion de Datos: 18.205000000000002[seg]Coordenadas:Nodo X Y

1 1251 16872 1703 32303 4669 37904 2698 13065 311 49026 3660 3827 3033 37508 3204 22999 3496 4799

10 1980 1211 2113 498812 1083 466613 335 360014 631 29115 981 3382

Page 53: Proyecto IO

53

MATRIZ DE DISTANCIAS  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 1607,84

4013,15

1496,32

3349,6

2739,76

2726,08

2046,64

3837,26

1826,76

3411,69

2983,73

2121 1527,49

1716,37

2 1607,84

0 3018,4

2166,06

2175,6

3455,57

1428,04

1766,28

2382,56

3229,9

1805,18

1564,13

1417,15

3128,4

737,83

3 4013,15

3018,4

0 3170,98

4497,63

3554,23

1636,49

2090,29

1547,26

4637,24

2822,82

3691,45

4338,16

5343,07

3710,5

4 1496,32

2166,06

3170,98

0 4316,13

1333,87

2466,85

1114,49

3582,99

1479,85

3728,18

3727,98

3293,36

2302,76

2694,04

5 3349,6

2175,6

4497,63

4316,13

0 5625,5

2955,74

3891,67

3186,67

5166,98

1804,05

807,27

1302,22

4622,09

1661,11

6 2739,76

3455,57

3554,23

1333,87

5625,5

0 3425,87

1970,49

4420,04

1720,26

4858,85

4999,36

4627,22

3030,37

4022,07

7 2726,08

1428,04

1636,49

2466,85

2955,74

3425,87

0 1461,04

1146,63

3883,48

1542,41

2154,43

2702,17

4211,21

2084,74

8 2046,64

1766,28

2090,29

1114,49

3891,67

1970,49

1461,04

0 2517 2593,94

2901,9

3178,26

3150,2

3263,8

2472,78

9 3837,26

2382,56

1547,26

3582,99

3186,67

4420,04

1146,63

2517 0 5021,32

1395,85

2416,66

3380,76

5341,38

2886,71

10 1826,76

3229,9

4637,24

1479,85

5166,98

1720,26

3883,48

2593,94

5021,32

0 4977,78

4739,65

3947,12

1377,55

3514,95

11 3411,69

1805,18

2822,82

3728,18

1804,05

4858,85

1542,41

2901,9

1395,85

4977,78

0 1079,16

2255,62

4925,25

1964,86

12 2983,73

1564,13

3691,45

3727,98

807,27

4999,36

2154,43

3178,26

2416,66

4739,65

1079,16

0 1302,25

4398,29

1288,05

13 2121 1417,15

4338,16

3293,36

1302,22

4627,22

2702,17

3150,2

3380,76

3947,12

2255,62

1302,25

0 3322,21

681,79

14 1527,49

3128,4

5343,07

2302,76

4622,09

3030,37

4211,21

3263,8

5341,38

1377,55

4925,25

4398,29

3322,21

0 3110,75

15 1716,37

737,83

3710,5

2694,04

1661,11

4022,07

2084,74

2472,78

2886,71

3514,95

1964,86

1288,05

681,79

3110,75

0

MATRIZ DE TRÁFICO   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0.0 5975.0

3169.0

2455.0

4136.0

5239.0

5341.0

2315.0

2960.0

5689.0

3064.0

1471.0

2493.0

1886.0

6353.0

2 5975.0

0.0 1911.0

6019.0

2192.0

4728.0

1549.0

1358.0

5017.0

1411.0

700.0

6506.0

5260.0

3974.0

1845.0

3 3169.0

1911.0

0.0 4730.0

2142.0

2294.0

1329.0

5184.0

5661.0

3036.0

1697.0

1458.0

5078.0

3534.0

1573.0

4 2455.0

6019.0

4730.0

0.0 4850.0

3399.0

1690.0

5504.0

1994.0

6608.0

6476.0

3506.0

3379.0

6382.0

856.0

5 4136.0

2192.0

2142.0

4850.0

0.0 6422.0

2927.0

2942.0

3756.0

1578.0

1553.0

380.0

1040.0

2798.0

6048.0

6 5239.0

4728.0

2294.0

3399.0

6422.0

0.0 5697.0

6200.0

6895.0

360.0

1412.0

4244.0

3283.0

4512.0

492.0

7 5341.0

1549.0

1329.0

1690.0

2927.0

5697.0

0.0 47.0 3121.0

3648.0

2006.0

4371.0

4321.0

5045.0

748.0

8 2315.0

1358.0

5184.0

5504.0

2942.0

6200.0

47.0 0.0 4167.0

1132.0

2777.0

2978.0

1210.0

1299.0

4976.0

9 2960.0

5017.0

5661.0

1994.0

3756.0

6895.0

3121.0

4167.0

0.0 5424.0

1604.0

6753.0

426.0

3587.0

6052.0

10 5689.0

1411.0

3036.0

6608.0

1578.0

360.0

3648.0

1132.0

5424.0

0.0 1379.0

4255.0

2145.0

4200.0

3143.0

11 3064.0

700.0

1697.0

6476.0

1553.0

1412.0

2006.0

2777.0

1604.0

1379.0

0.0 4004.0

5354.0

2825.0

6853.0

12 1471.0

6506.0

1458.0

3506.0

380.0

4244.0

4371.0

2978.0

6753.0

4255.0

4004.0

0.0 250.0

2898.0

3099.0

13 2493.0

5260.0

5078.0

3379.0

1040.0

3283.0

4321.0

1210.0

426.0

2145.0

5354.0

250.0

0.0 933.0

202.0

14 1886.0

3974.0

3534.0

6382.0

2798.0

4512.0

5045.0

1299.0

3587.0

4200.0

2825.0

2898.0

933.0

0.0 6696.0

15 6353.0

1845.0

1573.0

856.0

6048.0

492.0

748.0

4976.0

6052.0

3143.0

6853.0

3099.0

202.0

6696.0

0.0

GRAFO

Page 54: Proyecto IO

54

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1 0 1607,84

0 1496,32

0 0 0 2046,64

0 1826,76

0 0 2121 1527,49

1716,37

2 1607,84

0 0 0 0 0 1428,04

1766,28

2382,56

0 0 0 0 0 737,83

3 0 0 0 0 0 3554,23

1636,49

2090,29

1547,26

0 0 0 0 0 0

4 1496,32

0 0 0 0 1333,87

0 1114,49

0 1479,85

0 0 0 0 0

5 0 0 0 0 0 0 0 0 0 0 0 807,27

1302,22

0 1661,11

6 0 0 3554,23

1333,87

0 0 0 1970,49

0 1720,26

0 0 0 0 0

7 0 1428,04

1636,49

0 0 0 0 1461,04

1146,63

0 0 0 0 0 0

8 2046,64

1766,28

2090,29

1114,49

0 1970,49

1461,04

0 0 0 0 0 0 0 0

9 0 2382,56

1547,26

0 0 0 1146,63

0 0 0 1395,85

0 0 0 0

10 1826,76

0 0 1479,85

0 1720,26

0 0 0 0 0 0 0 1377,55

0

11 0 0 0 0 0 0 0 0 1395,85

0 0 1079,16

0 0 0

12 0 0 0 0 807,27

0 0 0 0 0 1079,16

0 0 0 1288,05

13 2121 0 0 0 1302,22

0 0 0 0 0 0 0 0 3322,21

681,79

14 1527,49

0 0 0 0 0 0 0 0 1377,55

0 0 3322,21

0 0

15 1716,37

737,83

0 0 1661,11

0 0 0 0 0 0 1288,05

681,79

0 0

Page 55: Proyecto IO

55

CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 3191.99282 MIP simplex iterations0 branch-and-bound nodes

suffi x up OUT;suffi x down OUT;suffi x current OUT;Iteracion= 1 Tiempo= 0.078001 Acumulado= 0.078001CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 3193.66269 MIP simplex iterations0 branch-and-bound nodesIteracion= 2 Tiempo= 0.093601 Acumulado= 0.171601CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 3230.79314 MIP simplex iterations0 branch-and-bound nodesIteracion= 3 Tiempo= 0.046800 Acumulado= 0.218401CPLEX 11.2.0: sensitivityCPLEX 11.2.0: optimal integer solution; objective 3906.03628 MIP simplex iterations0 branch-and-bound nodesIteracion= 4 Tiempo= 0.187201 Acumulado= 0.405603X [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 . 0 . 0 . . . 0 . 0 . . 0 0 02 0 . . . . . 0 0 0 . . . . . 13 . . . . . 0 0 0 0 . . . . . .4 0 . . . . 0 . 1 . 0 . . . . .5 . . . . . . . . . . . 0 0 . 06 . . 0 1 . . . 0 . 0 . . . . .7 . 0 0 . . . . 0 0 . . . . . .8 0 1 0 0 . 0 0 . . . . . . . .9 . 0 0 . . . 0 . . . 0 . . . .10 0 . . 0 . 0 . . . . . . . 0 .11 . . . . . . . . 0 . . 0 . . .12 . . . . 1 . . . . . 0 . . . 013 0 . . . 0 . . . . . . . . 0 014 0 . . . . . . . . 0 . . 0 . .15 0 0 . . 0 . . . . . . 1 0 . .;

Page 56: Proyecto IO

56

Y [*] := 1 0 2 1 3 0 4 1 5 1 6 1 7 0 8 1 9 010 011 012 113 014 015 1;V [*,*]: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 :=1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 04 0 1 0 0 0 0 0 0 0 0 0 0 0 0 05 0 1 0 1 0 0 0 0 0 0 0 0 0 0 06 0 1 0 1 1 0 0 0 0 0 0 0 0 0 07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 08 0 1 0 1 1 1 0 0 0 0 0 0 0 0 09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 010 0 0 0 0 0 0 0 0 0 0 0 0 0 0 011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 012 0 1 0 1 1 1 0 1 0 0 0 0 0 0 013 0 0 0 0 0 0 0 0 0 0 0 0 0 0 014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 015 0 1 0 1 1 1 0 1 0 0 0 1 0 0 0;

Utilizando HeurísticaOBJ = 3906.03 La Ruta Generada es:

6-> 10-> 15-> 5Camino Principal: (6 -> 4 -> 8 -> 2 -> 15 -> 12 -> 5 ) Valor Objetivo: 5346.109212612864

El Tiempo de Solución: 0.001[Seg]