ICS 1102 (3) Optimización Departamento de Ingeniería Industrial y de Sistemas Pontificia Universidad Católica de Chile Clase 28 - Flujo en redes II Prof. Claudio Seebach - Semestre II 2006 Problemas clásicos de Flujo en Redes • Problema de flujo de mínimo costo • Minimum cost flow problem • Problema de la ruta más corta • Shortest path problem • Problema de máximo flujo • Maximum flow problem Una aplicación de flujo de mínimo costo • Enviar de productores a consumidores, a través de bodegas, a mínimo costo y satisfaciendo la demanda El problema de Transporte • Corresponde a un problema de flujo de mínimo costo • Supongamos que deseamos enviar productos desde las bodegas a los lugares de venta • Ejemplo: • 3 bodegas • 4 puntos de venta • ai: oferta en bodega i • bj: demanda de vendedor j • cij: costo de envio de i a j • Sea xij la cantidad enviada de i a j • Formule el LP El problema de Transporte • En general, la formulación es • Min Nodos de oferta Nodos de demanda El problema de Asignación • Supongamos que una empresa tiene que cumplir con cuatro tareas y tiene cuatro máquinas • Estás máquinas tienen los siguientes tiempos de setup tiempo T1 T2 T3 T4 M1 14 5 8 7 M2 2 12 6 5 M3 7 8 3 9 M4 2 4 6 10 • Formule un LP para optimizar la asignación El problema de Asignación • En general, formulación es: • Min Cada demanda suma 1 Cada oferta suma 1 • Nuevamente el problema es unimodular, por lo que el problema relajado entregará la solución óptima Problema de la ruta más corta • ¿ cuál es el camino más corto desde la origen (s de “source”) hasta el destino (t) ? • Supuestos: • Existe un camino de la fuente a todos los demás nodos • Todos los largos de los arcos son no negativos • ¿ cuál es el camino más corto del nodo 1 al 6 ? Problema de la ruta más corta • En general la formulación con LP de este problema, desde una origen s a un destino t está dada por Min S.a En los demás casos Problema de la ruta más corta • Otra formulación, para determinar la ruta más corta a n nodos es enviar “un” paquete a desde s a cada n-1 nodos. Min S.a El algoritmo de Dijkstra • La ruta más corta es un caso especial de mínimo costo • El algoritmo de Dijkstra nos permite encontrar la ruta más corta, definiendo: • • • • • d(i): la distancia del nodo i al nodo s pred(i): el nodo antecesor de i d(1) = 0, pred(1) = 0 d(2) = 2, pred(2) = 1 Encontrar las demás distancias en orden de distancia decreciente del nodo 1 (=s) • Sea d() un vector con distancia temporales • d(j): la distancia por alguna ruta del nodo 1 al nodo j. • Procedimiento de actualización: • Para todo (i,j): • Si d(j) > d(i) + cij hacer d(j):= d(i) + cij y hacer pred(j):= i El algoritmo de Dijkstra • Nodo 2 d(2) = 2 pred(2) = 1 d(4) = ! pred(4) = d(1) = 0 pred(1) = 0 d(6) = ! pred(6) = d(3) = ! pred(3) = d(5) = ! pred(5) = El algoritmo de Dijkstra • Nodo 3 d(2) = 2 pred(2) = 1 d(4) = ! pred(4) = d(1) = 0 pred(1) = 0 d(6) = ! pred(6) = d(3) = !, 4 pred(3) = 1 d(5) = ! pred(5) = El algoritmo de Dijkstra • Nodo 3 d(2) = 2 pred(2) = 1 d(4) = ! pred(4) = d(1) = 0 pred(1) = 0 d(6) = ! pred(6) = d(3) = !, 4, 3 pred(3) = 1, 2 d(5) = ! pred(5) = El algoritmo de Dijkstra • Nodo 4 d(2) = 2 pred(2) = 1 d(4) = !, 6 pred(4) = 2 d(1) = 0 pred(1) = 0 d(6) = ! pred(6) = d(3) = !, 4, 3 pred(3) = 1, 2 d(5) = ! pred(5) = El algoritmo de Dijkstra • Nodo 5 d(2) = 2 pred(2) = 1 d(4) = !, 6 pred(4) = 2 d(1) = 0 pred(1) = 0 d(6) = ! pred(6) = d(3) = !, 4, 3 pred(3) = 1, 2 d(5) = !, 4 pred(5) = 2 El algoritmo de Dijkstra • Nodo 6 d(2) = 2 pred(2) = 1 d(4) = !, 6 pred(4) = 2 d(1) = 0 pred(1) = 0 d(6) = !, 6 pred(6) = 5 d(3) = !, 4, 3 pred(3) = 1, 2 d(5) = !, 4 pred(5) = 2 El algoritmo de Dijkstra • Para encontrar la ruta más corta a k, basta retroceder desde el nodo k al nodo 1. • El algoritmo provee el árbol de menor distancia del nodo 1 a todos los demás nodos