FLUJOS SOBRE REDES Presentación y definiciones. Modelos de flujos sobre redes (I). Modelo de transporte y asignación. Problema de Coste Mínimo (Min-Cost). EL ALGORITMO DEL SIMPLEX PARA Min-Cost. Soluciones básicas y árboles. Cálculo de variables duales y costes reducidos. Elección de la v. no básica y de la v. básica. Problema de Flujo máximo. PROBLEMAS DE CAMINOS MÍNIMOS. Algoritmo genérico. Caminos mínimos y árboles. Algoritmos Label-setting y Labelcorrecting. Implementaciones. Caminos mínimos de todos a todos. EL MODELO CPM-PERT. Sesión de laboratorio. PRÁCTICA. UPC
FLUJOS SOBRE REDES 0 5 i + j - 3 6 9 3 0 5 MATRIZ DE INCIDENCIAS A VECTOR DE FLUJOS x INYECCIONES b UPC
= CASO EQUILIBRADO UPC
PROBLEMA DE COSTE MÍNIMO 0 5 i + j - 3 6 9 3 0 5 MATRIZ DE INCIDENCIAS A VECTOR DE FLUJOS x INYECCIONES b UPC
LENGUAJE AMPL: DECLARACIONES NODE, ARC set CIUDADES; set ARCOS within (CIUDADES cross CIUDADES); param oferta {CIUDADES} >= 0; # inyecciones param demanda {CIUDADES} >= 0; # extracciones check: sum {i in CIUDADES} oferta[i] = sum {j in CIUDADES} demanda[j]; param coste {ARCOS} >= 0; # costes de transp. minimize Total_Coste; node Nodo {k in CIUDADES}: net_in=demanda[k]-oferta[k]; arc enlace {(i,j) in ARCOS} >= 0, from Nodo[i], to Nodo[j], obj Total_Coste coste[i,j];
BASES DEL PROBLEMA DE COSTE MÍNIMO EN LA MATRIZ A HAY UNA FILA REDUNDANTE: LAS BASES SON DE (m-) (m-) Deben escogerse m- arcos para formar la matriz base B; Debe eliminarse una fila cualquiera. 5 3 6 9 3 0 A x = b, x 0 0 5 PROCEDIMIENTO: A) Construir sobre el grafo no direccional asociado un árbol de recubrimiento. B) Los arcos de la red correspondientes al árbol de recubrimiento forman una base B de A.
A) CONSTRUCCIÓN DEL GRAFO NO DIRECCIONAL Y DEL ÁRBOL DE RECUBRIMIENTO. 5 3 6 9 0 ÁRBOL DE RECUBRIMIENTO: m- arcos; Sin ciclos; Tomar un nodo como raíz SI SI NO
0 5 3 6 9 3 0 5
0 5 3 6 9 3 0 0 0 0 6 3 5 0-5 6 3 5 BASE NO FACTIBLE 6-5 0-3 3-3 3 5 6-5 0 3 3 0 3 3 0 5
5 0 3 0-5 6-5 0 3 0 5 3 5 0 3 3 3 6 3 SOLUCIÓN BÁSICA NO FACTIBLE
5 0 6 3 0 5 0 5 5 3 3 6 5 0 3 3 3 0 5 3 SOLUCIÓN BÁSICA FACTIBLE
I.O.E. I.O.D. Diplomatura de Estadística UPC
0 5 BASE FACTIBLE 3 6 9 3 0 5 λi = - Coste unitario raíz i
0 - -5 0 3 3 5 5 0 - - -9 0 5 Variables duales 3 6 9 3 0 5
0 5 0 3 3 5 - -5 DETERMINACIÓN DE LA VARIABLE NO BÁSICA DE ENTRADA - - -9 0
5 0 3 0 5 3 5 3 6
0 0 0 0 5 3 6 3 NUEVA SOLUCIÓN BÁSICA FACTIBLE
0 0 0 3 SOLUCIÓN BÁSICA FACTIBLE ALTERNATIVA
REDES MULTIARTÍCULO 0 5 5 3 6 9 0 0 3 3 6 9 0 5
0 5 5 3 6 9 3 0 0 5 = 3 6 9 0 0 5 3 3 6 9 0 5 UPC
0 0 0 0 0 0 3 3 5 = 3 3 5 UPC
set CIUDADES; set ARCOS within (CIUDADES cross CIUDADES); set PRODS; param OFERTA {CIUDADES,PRODS} >= 0; param DEMANDA {CIUDADES,PRODS} >= 0; check {p in PRODS}: sum {i in CIUDADES} OFERTA[i,p]=sum{j in CIUDADES}DEMANDA[j,p]; param coste {ARCOS,PRODS} >= 0; param CAP_CONJ {ARCOS} >= 0; minimize Total_Coste; node Nodo {k in CIUDADES, p in PRODS}: net_in = DEMANDA[k,p] - OFERTA[k,p]; arc ENLACE {(i,j) in ARCOS, p in PRODS} >= 0, from Nodo[i,p], to Nodo[j,p], obj Total_Coste coste[i,j,p]; subject to Multi {(i,j) in ARCOS}: sum {p in PRODS} ENLACE[i,j,p] <= CAP_CONJ[i,j];
Artículo : 00 unidades de a Artículo : 00 unidades de 3 a PRACTICA
Para el problema de flujos sobre redes multiartículo que describe el código AMPL siguiente: Formula el problema utilizando la matriz de incidencias nodos-arcos que contine el fichero de parámetros. Resuelve el problema y dibuja su solución. Suponiendo que hay un único artículo con demanda de 00 unidades en los nodos y respectivamente y oferta de 00 en cada nodo y 3, escribe el fichero de parámetros y utiliza el modelo AMPL visto en clase para hallar la solución.
set nusos; set centr within nusos; set links within ( nusos cross nusos ); set origens within centr; set destins within centr; set odpair within ( origens cross destins ); set destperorig { i in origens } := setof { (i, j) in odpair : i = i } j; param g{odpair} >0; param t0{links}; param Tdreta { i in nusos, k in origens }:= if i in destperorig[k] then -.0*g[k, i] else if i = k then sum {j in destperorig[k]} g[k, j] else 0; node N {i in nusos, k in origens}: net_out = Tdreta[i, k]; arc v_k { (i, j) in links, k in origens } >= 0, from N[i, k], to N[j, k] ; var v { (i, j) in links }; subject to flux_total { (i, j) in links }: v[i, j] = sum { k in origens } v_k[i, j, k]; minimize Vg: sum { (i, j) in links } v[i, j]*t0[i, j];