Tema 7: Optimización sobre Redes Muchos de los problemas de Investigación Operativa pueden modelizarse y resolverse sobre un grafo: conjunto de vértices o nodos conectados con arcos y/o aristas. Diseñar el trazado de una red de fibra óptica de manera que se cubran ciertos puntos de la manera más económica posible. Árbol generador de coste mínimo. Determinar la ruta más corta entre dos ciudades. Camino más corto. Determinar la cantidad máxima de electricidad que se puede enviar a través de una red eléctrica. Problema de flujo máximo. Decidir el programa de fechas en el que deben iniciarse y terminarse una serie de tareas para llevar a cabo un proyecto. Camino crítico (CPM). 1
Todos estos problemas se pueden modelizar como un Problema de Programación Lineal y resolverse con el Algoritmo del Simplex para Redes (Bazaraa et al. 1990, Capítulo 9) El algoritmo realiza las operaciones del Simplex directamente sobre el grafo lo que, en algunos casos, permite resolver problemas 200 o 300 veces más rápido que el algoritmo del simplex normal. 7.1 Definiciones Un grafo consta de un conjunto de vértices (nodos), V, de un conjunto de aristas, E, y/o de un conjunto de arcos, A, que unen los vértices. Si en el grafo solamente hay: Aristas, se dice que es un grafo no dirigido. Arcos, se dice que es un grafo dirigido. En otro caso se trata de un grafo mixto. 2
Se denomina flujo a cualquier bien (tangible o no) que circule por las conexiones del grafo (o red) (electricidad, vehículo, mensaje, tiempo). Una ruta es una secuencia de arcos y/o aristas que unen dos vértices. Un ciclo es una ruta que une un vértice consigo mismo. Un grafo es conexo si cualquier pareja de vértices puede unirse con una ruta sobre el grafo. Un árbol generador es un subconjunto de V 1 arcos que conecta todos los vértices del grafo y no contiene ciclos. Una cortadura se define a partir de un subconjunto de vértices S V, como el conjunto de arcos (S, V \ S). 3
7.2 Árbol generador de coste mínimo ONO se está planteando trazar una red de televisión por cable para dar servicio a cinco nuevas áreas recientemente urbanizadas. La siguiente figura representa los enlaces que podrían establecerse entre las cinco zonas. El coste asociado a cada arista indica los kilómetros de cable que serían necesarios. La empresa desea encontrar el trazado de red de coste mínimo. From \ To Node1 Node2 Node3 Node4 Node5 Node6 Node1 1 5 7 9 Node2 6 4 3 Node3 5 10 Node4 8 3 Node5 Node6 4
Se puede resolver utilizando un algoritmo greedy por lo que no es necesaria la Programación Lineal. 1 5 1 9 6 2 3 5 7 3 5 4 10 8 3 6 4 (1, 2) (2, 5) (2, 4) (4, 6) (1, 3) 5
7.3 Problema de flujo de coste mínimo Dado G = (V, A) un grafo dirigido, V = {1,...,m} el conjunto de vértices y A = {(i, j),...,i, j V }, su conjunto de arcos. En el que, Cada vértice tiene asociado un número b i que representa la oferta o demanda en ese vértice de un determinado bien. Si b i > 0, se dice que i es un vértice origen Si b i < 0, se dice que i es un vértice destino Si b i = 0, se dice que i es un vértice de transbordo Cada arco tiene asociada una variable x ij 0 que indica el flujo enviado desde i hasta j, y una cantidad c ij que indica el coste de enviar una unidad desde i a j. 6
El Problema de Flujo de Coste Mínimo consiste en determinar cómo enviar la oferta disponible a través de la red a fin de satisfacer la demanda con un coste mínimo. Min m i=1 m j=1 c ijx ij sa: m j=1 x ij m k=1 x ki = b i, i = 1, 2,...,m x ij 0, (i, j) Se trata del Problema del Transbordo introducido en el tema anterior. Hay situaciones en las que el flujo que puede pasar por cada arista está limitado, esto se traduce en cotas para las variables: l ij x ij u ij 7
7.4 Problema de flujo máximo Determinar el flujo máximo que se puede enviar a través de una red dirigida desde un punto origen, 1, a un punto de destino, m, teniendo en cuenta que cada arco tiene asociado un valor u ij que indica el flujo máximo que puede pasar por dicho segmento de la red. Max sa: f m j=1 x ij m k=1 x ki = 0 x ij u ij, (i, j) f i = 1 0 i 1 o m f i = m Encontrar una cortadura en el grafo de capacidad mínima. 8
Ejemplo: Tres refinerías envían gasolina a dos terminales de distribución a través de la siguiente red de oleoductos. La gasolina fluye en la dirección marcada por los arcos. La capacidad de cada segmento del oleoducto en miles de barriles diarios se indica en el arco. Determinar el número máximo de barriles que pueden distribuirse diariamente y cómo se llevaría a cabo la distribución. 1 20 10 4 10 7 2 10 50 50 20 20 30 6 20 5 30 8 15 3 9
7.5 Camino más corto El problema del camino más corto consiste en encontrar sobre una red la ruta más corta entre un origen, 1, y un destino, m. Se puede modelizar como un problema de flujo de coste mínimo en el que el vértice asociado al origen oferta una unidad y la demanda el vértice asociado al destino también es uno. Min m i=1 m j=1 c ijx ij sa: m j=1 x ij m k=1 x ki = x ij 0, (i, j) 1 i = 1 0 i 1 o m 1 i = m Algoritmos: Simplex para Redes, Dijkstra, Floyd 10
Ejemplo: RentaCar quiere diseñar un plan renove para su flota de automóviles para los próximos cinco años. Al principio de cada año debe decidirse si se reemplaza un automóvil o si por el contrario conviene dejarlo en activo. Un automóvil debe estar en servicio por lo menos un año, pero debe reemplazarse después de tres años. La siguiente tabla proporciona el coste en euros de reemplazar un vehículo en función del año en el que se adquiere y del número de años que lleva en funcionamiento. Coste de reemplazamiento Año Compra 1 2 3 2003 4000 5400 9800 2004 4300 6200 8700 2005 4800 7100-2006 4900 - - 11
2003 2007 4000 9800 8700 4900 5400 7100 2004 6200 2006 4300 4800 2005 12
7.6 CPM, Método del Camino Crítico Proyecto: conjunto de actividades interrelacionadas, en el cuál la realización de cada actividad requiere tiempo y recursos. CPM: método de ayuda en la planificación, programación y control de proyectos, cuando se conoce con certeza la duración de las actividades. El objetivo suele ser llevar a cabo el proyecto en el menor tiempo posible. Procedimiento: 1. Definir las actividades del proyecto 2. Diseñar la red que representa el proyecto 3. Resolver el problema 4. Traducir la solución a un programa de tiempo 13
1. Elaborar una lista con todas las actividades del proyecto indicando para cada una de ellas: Las actividades predecesoras. La duración y cantidad de recursos (si los hay) necesarios para su ejecución. 2. Diseñar la red que representa el proyecto: Cada actividad se representa mediante un vértice. Se añaden dos vértices ficticios que representan, respectivamente, las actividades principio y final del proyecto. Las relaciones de precedencia entre actividades se modelizan mediante arcos. Cada arco (i, j) tiene asociado un coste que indica el tiempo de ejecución de la actividad i. Cada vértice puede tener asociado un peso que representa la cantidad de recursos que consume la actividad i. 14
Ejemplo: New Computer está a punto de lanzar una oferta de nuevos ordenadores. Cada ordenador consta de dos partes, una pantalla y un pack formado por, la CPU, el teclado y el ratón. Antes de producir cualquiera de las componentes es necesario conseguir los materiales y formar a los trabajadores que deben realizar el montaje. El pack que incluye la CPU requiere pasar por un control de calidad antes de ser embalado con la pantalla. La siguiente tabla indica la duración de cada actividad y sus predecesores. Diseñar la red que permite describir el proyecto. 15
Actividad Predecesores Duración A = Formación de trabajadores No tiene 6 B = Conseguir materiales No tiene 9 C = Producción de 1 pantalla A,B 8 D = Producción de un Pack A,B 7 E = Control de calidad del Pack D 10 F = Embalado C,E 12 A 6 C 0 8 Inicio 9 6 10 F 12 Final 0 7 E B 9 D 16
Para cada actividad i definimos: x i = instante en el que comienza i Min sa: x Final x Inicio x A x Inicio x B x Inicio x C x A + 6 x C x B + 9 x D x A + 6 x D x B + 9 x E x D + 7 x F x C + 8 x F x E + 10 x Final x F + 12 x Final x Inicio = duración total del proyecto 17
Árbol Generador de Coste Mínimo
Camino más corto Algoritmo de Dijkstra: calcula los caminos más cortos desde un vértice origen a todos los demás vértices de la red
Flujo máximo
Método del Camino Crítico