ICS 1102 (3) Optimización Departamento de Ingeniería Industrial y de Sistemas Pontificia Universidad Católica de Chile Clase 27 - Flujo en Redes Prof. Claudio Seebach - 2do Semestre 2006 Modelos de Redes • Modelos de Programación Lineal que poseen una estructura muy especial • Se puede usar esta estructura para reducir considerablemente la complejidad computacional • Primera aplicación de PL que se difunde tanto en la logística industrial • Abarca un gran número de aplicaciones diversas Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Notación y Terminología • La terminología de redes no está (y jamás lo estará) estandarizada, pudiendo describirlas de muchas maneras Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Redes Dirigidas y No-dirigidas • Redes se usan para transportar “commodities” • Bienes físicos (productos, liquidos) • Comunicaciones • Electricidad • El campo de la Optimización de Redes se ocupa de estos problemas Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Aplicaciones de Optimización en Redes Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Ejemplo de términos Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Más definiciones Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Problemas clásicos de Flujo en Redes • Problema de flujo de mínimo costo • Minimum cost flow problem • Problema de máximo flujo • Maximum flow problem • Problema de la ruta más corta • Shortest path problem Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Problema de Flujo en Redes a Mínimo Costo • • • • • • • Definición del problema Formulación matemática Solución al Problema: usamos SIMPLEX? Formulación dual del modelo SIMPLEX de redes Ejemplo Integralidad? Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Definición del Problema • Dada una red con topología conocida • Cada nodo de la red se define como productor o atractor (o neutro) de viajes de tal modo que el sistema está balanceado (oferta total=demanda total). • Se conoce el costo por unidad de flujo que pase por cada arco de la red • Se conoce la capacidad máxima de cada arco de la red, así como el flujo mínimo que debe atravesarlo • Encontrar la asignación de flujos que emanan desde los productores hasta los atractores de modo de, satisfaciendo las restricciones de capacidad y flujo mínimo por arco, minimizar el costo total. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Asignación a costo mínimo? Ejemplo } ,6 ,1 {4 ,9 } {5 ,1 2 } 5 7} 7 {4,0,6} {3,0,8} } 5 ,8 } { 5 ,0 ,1 , 10 , 0 , { 2 ,2 14 ⇒ 4 ⇒ {5,1,7} ,2 6 {8,0,6} 8 ⇒10 5} {6 ⇒ ⇒ {7 {7,3,8} 3 { 3 ,0 ,8 } 7} 3 8} } ,2 , } ,1 , { 5 ,1 , 0 ,6 {3 ,6 {4 8} } ,0 ,0 , 8} {4, {3 7} ,1 , {4 {3,0,6} 0 ,6 8⇒ 1 {5 2 { 5 ,2 , 7 {3,0,6} {4, , {6 } 2 ,8 12 ⇒ ⇒ 10 9 ⇒9 A cada arco (i,j) se ha asignado una terna: {costo, flujo mín, capacidad} Supondremos en esta clase que flujo min (i,j) = 0 y capacidad = inf Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Formulación Matemática del Problema Parámetros: Red G(N,A) en que N es el conjunto de nodos (n=|N|) y A el de arcos (m=|A|). bi: Flujo neto generado (si positivo) o atraído (si negativo) en nodo i (flujo que saldrá menos flujo que entrará) cij: Costo de transportar una unidad de flujo por el arco (i,j) Variables: xij: Unidades de flujo enviadas a través del arco (i,j) Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Formulación Matemática del Problema • El modelo debe estar balanceado, esto es: Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Algunas características interesantes Función objetivo y restricciones lineales Función objetivo: sumatoria de tantos términos como arcos en la red Las restricciones garantizan conservación de flujos en la red: el flujo que entra en un nodo, menos el flujo que sale, es igual al flujo atraído o generado por el nodo Una restricción por cada nodo de la red. Todos los parámetros asociados a las variables en las restricciones son : +1 (flujos entrando al nodo) o –1 (flujosProf. saliendo del nodo) Claudio Seebach Cada variable aparece solamente dos veces: +1 (en la restricción del nodo cola del arco) –1 (en la restricción del nodo raíz del arco) ICS 1102 – Optimización / Clase 27 Solución al Problema: usamos SIMPLEX ? • El problema es lineal en función objetivo y restricciones y sus variables son continuas. Así, se puede usar herramientas de programación lineal: SIMPLEX. • El método SIMPLEX opera sobre problemas cuyas variables estén restringidas a tomar valores nonegativos, como es el caso de este problema. • SIMPLEX opera sobre una matriz de restricciones de rango máximo. • Esto no ocurre aquí, pues una de las restricciones de conservación puede expresarse como combinación lineal de las demás. • Eliminamos una de ellas, cualquiera. Este nuevo problema se puede resolver directamente vía SIMPLEX Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Solución al Problema: usamos SIMPLEX ? • Problema: La Aplicación del SIMPLEX tradicional puede ser impracticable: • La sola formulación del problema de flujo en redes como un LP representa una dificultad, dado el tamaño de las redes • Las restricciones del LP en este caso representan una matriz muy grande, que el SIMPLEX debe manipular para encontrar la solución óptima. (¿eficiencia computacional?) • El SIMPLEX tradicional no aprovecha la estructura de redes del problema planteado. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Solución al Problema: usamos SIMPLEX ? • Es posible construir una versión SIMPLEX de redes: • En cada iteración, el SIMPLEX se mueve de una solución factible a otra. • En un problema de flujo en redes cada solución factible representa un árbol de envergadura máxima • La idea del SIMPLEX de redes es moverse de una árbol de envergadura máxima a otro, hasta encontrar el óptimo (solución óptima del problema de LP) sin tener que calcular el tableau completo en cada iteración. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Formulación dual del modelo • El modelo dual del problema de flujo en redes es: • π es el vector de variables duales asociado a restricciones de continuidad • Notar que si existe solución óptima (πi) a este problema, ésta no será única. Basta observar que si se agrega una constante cualquiera a todo el vector π, la solución sigue siendo factible y su valor en la función objetivo no cambia. Esto es consecuencia de que la matriz de restricciones del problema primal no era de rango máximo. • Así, para resolver este problema es necesario dar un valor arbitrario a un πi. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Formulación dual del modelo • Toda solución factible al problema primal tiene un vector dual (π) asociado. Si la solución primal no es la óptima, entonces el vector π no será factible. • Por otro lado si ese vector π es factible, entonces la solución primal y el vector π serán óptimos para sus respectivos problemas. • En el óptimo, el valor de ambas funciones objetivo coincide. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 SIMPLEX de redes (sin restr. de capacidad) • El SIMPLEX de Redes es una adaptación del SIMPLEX tradicional, que trata de aprovechar la estructura de red del problema • El SIMPLEX tradicional construye sus soluciones factibles utilizando álgebra de matrices. El SIMPLEX de Redes construye árboles de envergadura máxima sobre la red, hasta encontrar la solución óptima. • En cada iteración el SIMPLEX de Redes construye un árbol de envergadura máxima –cuya solución factible asociada (flujos) reduce el valor de la función objetivo- hasta que eventualmente se encuentra el árbol óptimo. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 La Estructura Conceptual del SIMPLEX de Redes • PASO 1 (INICIALIZACION) • Determinar un árbol inicial factible T (variables básicas) • Determinar los flujos {xij} y los potenciales (variables duales) πi asociados al árbol T inicial y factible • PASO 2 (ITERACIÓN) crea un • Mientras existan arcos (no en T) que no cumplan la ciclo en condición de optimalidad: el árbol • Seleccionar un arco (no en T) que no cumpla la condición de optimalidad (var entrante). • Agregar ese arco a T • Seleccionar un arco saliente de T y sacarlo • Actualizar el árbol T, los flujos en los arcos y el elimina el ciclo potencial de los nodos. SIMPLEX de Redes (sin restricción de capacidad) • Preguntas pendientes: • Cómo encontrar un árbol inicial factible T, los flujos en arcos asociados a esa solución factible y los potenciales de los nodos. • Cómo elegir el arco entrante al árbol T • Cómo elegir el arco saliente del árbol T • Distintas versiones del algoritmo surgen de las distintas maneras en que se pueden resolver estas interrogantes Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Cómo determinar qué variable entra y sale de la base (árbol T)? Costo reducido en problemas de flujo en redes (sin capacidad) { ←i vector columna de A = costo del arco vector de costos duales, π Los costos reducidos de las vars básicas son cero. Esto permite identificar el vector de costos duales o potenciales πi. Luego, es posible determinar los costos reducidos de las vars no básicas. Notar que si todos los rij son no negativos, se satisfacen las condiciones duales y la solución es óptima. ←j Ejemplo (n=5, m=9) 1⇒ 2 3 ⇐2 C32=4 C23=1 =2 C 12 4⇒ 1 C 14 = 3 0⇒ Prof. Claudio Seebach C3 1 = 4 C35=4 C24=2 C4 2 = 3 4 C45=2 5 ⇒7 ICS 1102 – Optimización / Clase 27 2 C 14 = Las variables básicas son: {x14 , x23 , x35 , x45 } C32=4 0 0 C 14 = 0 C4 0 C3 =4 1 3 ⇐2 C23=1 1 C 12 5 ⇒7 C45=2 4 =2 4 3 0 =1 34 4 1⇒ 2 4⇒ 1 =2 43 3 0⇒ Sol básica factible: C 0 C 3 ⇐2 0 =3 2 3 C35=4 No, a lo más 4 xij tomarán valores positivos C24=2 2 2 C24=2 Es básica? C 12 0 C23=1 1 =2 4⇒ 1 Costo total: 33 C32=4 C35=4 1⇒ 2 Paso 1, Identificar Solución factible 3 0⇒ 4 4 C45=2 5 ⇒7 Ejemplo • Es óptima la solución? • Es necesario revisar los costos reducidos de las variables no básicas: r12 = c12 - π1 + π2 = 2 - π1 + π2 r24 = c24 - π2 + π4= 2 - π2 + π4 r32 = c32 - π3 + π2 = 4 - π3 + π2 r34 = c34 - π3 + π4 = 1 - π3 + π4 r43 = c43 - π4 + π3 = 2 - π4 + π3 • El vector π se puede identificar a través de los costos reducidos de las variables básicas, que deben ser cero. Adicionalmente como una de las restricciones del problema es redundante, uno de los valores duales toma un valor arbitrario. r14 = 2 - π1 + π4 = 0 r35 = 4 - π3 + π5 = 0 π4 = -2, π5 = -4 r23 = 1 - π2 + π3 = 0 r45 = 2 - π4 + π5 = 0 , π1 = 0 Prof. Claudio Seebach } π3 = 0, π2 = 1 ICS 1102 – Optimización / Clase 27 Ejemplo • Esto permite identificar los costos reducidos de las variables no básicas: r12 = 2 - π1 + π2 = 3 r32 = 4 - π3 + π2 = 5 r43 = 2 - π4 + π3 = 4 r24 = 2 - π2 + π4 = -1 r34 = 1 - π3 + π4 = -1 • Estamos interesados en encontrar variables no básicas con costo reducido negativo. • En este caso, x24 y x34 resultan atractivos de incorporar a la base. Típicamente se incorpora el de costo reducido mayor (en valor absoluto), en este caso cualquiera. Escogemos x24. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Cuánto es lo más que puede subir x24? Digamos que toma el valor Δ En SIMPLEX cuando se agrega una variable a la base, las variables que permanecen fuera de la base no modifican su valor. Así, se genera un ciclo de variables básicas para absorber el cambio en la variable entrante (siempre habrá sólo uno). La variable que sale es aquélla que primero alcanza uno de sus límites al subir x24. 0 1⇒ 2 C32=4 3 ⇐2 En este caso: 1- Δ C23=1 0 4⇒ 1 x23 : 1-Δ ≥ 0 4 x45 : 4+Δ ≥ 0 C x35 : 3-Δ ≥ 0 ⇒ Δ = 1, x23 sale de la base Δ C 14 = C4 0 C3 1 = 4 2 = 3 3- Δ 0 C35=4 Δ≥0 C24=2 x24 : =2 12 3 0⇒ 4 4+Δ C45=2 5 ⇒7 1⇒ 2 0 4⇒ 1 Las variables básicas son: {x14, x24 , x35 , x45 } 4 C23=1 1 C 14 = 0 C 12 C24=2 Costo total: 32 =2 3 ⇐2 C 0 C =1 43 =2 43 2 0 C35=4 Nueva sol básica factible: 0 C32=4 3 0⇒ 4 C45=2 5 5 ⇒7 Es óptima la solución? r14 = 3 - π1 + π4 = 0 r35 = 4 - π3 + π5 = 0 r24 = 2 - π2 + π4 = 0 r45 = 2 - π4 + π5 = 0, π1 = 0 r12 = 2 - π1 + π2 = 1 r32 = 4 - π3 + π2 = 4 r43 = 2 - π4 + π3 = 4 r23 = 1 - π2 + π3 = 1 r34 = 1 - π3 + π4 = -1 } } π4 = -3, π2 = -1 π5 = -5, π3 = -1 x34 entra a la base C35=4 C35=4 C24=2 C24=2 Cuánto es lo más que puede subir x34? Digamos que toma el valor Δ 1⇒ 2 C32=4 0 3 ⇐2 C23=1 0 2 = En este caso: C 12 =2 3 C4 0 1 4 ⇒ x34 : Δ≥0 1 Δ 2-Δ 0 x45 : 5+Δ ≥ 0 =1 4 3 C C 4 14 = x35 : 2-Δ ≥ 0 ⇒ Δ = 2, 3 5 ⇒7 x35 sale de la base 0 ⇒ 4 5+Δ C45=2 Nueva sol básica factible: 1⇒ 2 C32=4 0 3 ⇐2 C23=1 0 2 = 12 C Costo total: 30 =2 3 C4 1 4⇒ 1 0 2 0 0 =1 Las variables básicas son: 4 3 C 4 C14 =3 {x14 , x24 , x45 , x34 } 5 ⇒7 0⇒ 4 C45=2 7 Es óptima la solución? r14 = 3 - π1 + π4 = 0 r45 = 2 - π4 + π5 = 0 r24 = 2 - π2 + π4 = 0 r34 = 1 - π3 + π4 = 0 , π1 = 0 1⇒ 2 =2 0 4⇒ 1 4 1 0 3 ⇐2 C23=1 0 C 14 = C32=4 Sol óptima, pero no única C 12 C24=2 Si x23 entra a la base y sale x24 de la base Se obtiene esta sol básica de costo 30 } r23 = 1 - π2 + π3 = 0 r35 = 4 - π3 + π5 =1 C 3 C =1 43 =2 43 0 0 C35=4 r12 = 2 - π1 + π2 = 1 r32 = 4 - π3 + π2 = 5 r43 = 2 - π4 + π3 = 3 } π4 = -3, π2 = -1 π5 = -5, π3 = -2 3 0⇒ 4 7 C45=2 5 ⇒7 Integralidad • En muchos problemas de flujo en redes se requiere una restricción adicional, que los flujos en los arcos sean enteros. Por ejemplo, esto será de suma importancia al buscar rutas mínimas en la red o en que lo que se transporta son camionadas de carga. • A pesar de que en la formulación del problema no lo hemos escogido, la solución satisfizo esta propiedad... Es casualidad? • No. La estructura de los problemas de flujo en redes tienen esta bondad adicional. Todo poliedro definido por restricciones lineales en que el lado derecho de las restricciones son números enteros y en que la matriz de las restricciones es totalmente unimodular, posee la propiedad de que sus vértices están en puntos enteros del espacio vectorial. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27 Matrices totalmente unimodulares • Las matrices totalmente unimodulares se pueden identificar de varias formas. Por ejemplo si cada columna tiene a lo sumo dos elementos distintos de cero y son ellos 1 ó –1. • Este es el caso del problema de flujo en redes. Prof. Claudio Seebach ICS 1102 – Optimización / Clase 27