La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA Ricerca Operativa - RO - Dott.ssa Michela Lai Esercitazione.

Presentazioni simili


Presentazione sul tema: "Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA Ricerca Operativa - RO - Dott.ssa Michela Lai Esercitazione."— Transcript della presentazione:

1 Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA Ricerca Operativa - RO - Dott.ssa Michela Lai mlai@unica.it http://sorsa.unica.it/ Esercitazione 6

2 2 Esercizio: Dato il problema primale: P min 2 x 1 + 3 x 2 + 5 x 3 + 2 x 4 + 3 x 5 s.t. x 1 + x 2 + 2 x 3 + x 4 + 3 x 5 ≥ 4 2 x 1 – 2 x 2 + 3 x 3 + x 4 + x 5 ≥ 3 x 1, x 2, x 3, x 4, x 5 ≥ 0 Risolvere il suo duale su carta e poi implementare P e D su Lindo. Dualità

3 3 Dualità – Relazioni P&D Min PMax D Variabili ≥ 0↔≤ 0 Vincoli ≤ 0↔≥ 0 Libera↔= Vincoli ≥ 0↔ Variabili ≤ 0↔ =↔Libera

4 4 Esercizio: Seguendo le relazioni P&D otteniamo: D max 4 w 1 + 3 w 2 s.t. w 1 + 2 w 2 ≤ 2 w 1 – 2 w 2 ≤ 3 2 w 1 + 3 w 2 ≤ 5 w 1 + w 2 ≤ 2 3 w 1 + w 2 ≤ 3 w 1, w 2 ≥ 0 Dualità

5 5 Lindo P: min 2 x1 + 3 x2 + 5 x3 + 2 x4 + 3 x5 s.t. x1 + x2 + 2 x3 + x4 + 3 x5 = 4 2 x1 - 2 x2 + 3 x3 + x4 + x5 = 3 end Lindo D: max 4 w1 + 3 w2 s.t. w1 + 2 w2 = 2 w1 - 2 w2 = 3 2 w1 + 3 w2 = 5 w1 + w2 = 2 3 w1 + w2 = 3 end Soluzioni Soluzione P: OBJECTIVE FUNCTION VALUE 1) 5.000000 VARIABLE VALUE REDUCED COST X1 1.000000 0.000000 X2 0.000000 3.400000 X3 0.000000 1.600000 X4 0.000000 0.600000 X5 1.000000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 -0.800000 3) 0.000000 -0.600000 Soluzione D: OBJECTIVE FUNCTION VALUE 1) 5.000000 VARIABLE VALUE REDUCED COST W1 0.800000 0.000000 W2 0.600000 0.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 1.000000 3) 3.400000 0.000000 4) 1.600000 0.000000 5) 0.600000 0.000000 6) 0.000000 1.000000

6 6 Analisi di sensitività

7 7 Introduzione I problemi di flusso su rete presentano una speciale struttura che consente di adottare algoritmi particolarmente efficienti per la loro risoluzione Tra i vari problemi di flusso, ci occuperemo del Problema del Flusso di Minimo Costo (MCF). In questa esercitazione:  faremo brevi richiami della teoria dei grafi e del MCF  vedremo possibili applicazioni del MCF  utilizzeremo un solver specializzato per problemi di MCF

8 8 Richiami di teoria dei grafi Un grafo G(N, A) è definito da una coppia di insiemi N e A  N, detto insieme dei nodi, è l’insieme dei primi n numeri naturali  A, detto insieme degli archi, è un sottoinsieme del prodotto cartesiano N x N Dato un nodo i Є N  P(i) = {j: (j, i) Є A}, è l’insieme dei predecessori di i  S(i) = {k: (i, k) Є A}, è l’insieme dei successori di i Dato un arco (i, j) Є A  Il nodo i rappresenta la coda dell’arco  Il nodo j rappresenta la testa dell’arco  Si ha un grafo orientato quando (i, j)≠(j,i)

9 9 G(N, A) orientato  N = {1, 2, 3, 4, 5}  A = {(1, 2), (1, 4), (2, 3), (2, 5), (3, 1), (3, 5), (4, 5), (5, 4)} Si dice cammino un insieme di archi in cui ogni coppia contiene un nodo della coppia precedente. Esempio: {(1, 2), (2, 5), (4, 5)} Si dice cammino orientato un insieme di archi in cui la testa di ogni arco coincide con la coda dell’arco seguente. Esempio: {(1, 2), (2, 5), (5, 4)} Richiami di teoria dei grafi

10 10 Grafo connesso  esiste sempre un cammino tra qualsiasi coppia di nodi Grafo fortemente connesso  esiste un cammino orientato tra ogni coppia di nodi Ciclo  cammino chiuso, inizia e termina nello stesso nodo. Se il cammino è orientato, anche il ciclo è orientato. Ciclo Hamiltoniano  ciclo che passa per ogni nodo del grafo una sola volta Richiami di teoria dei grafi

11 11 Foglia  nodo testa/coda di un solo arco Albero  grafo connesso privo di cicli  ha almeno due foglie  Estraendo un qualsiasi arco l’albero viene suddiviso in due sottoalberi distinti  un albero con n nodi presenta n-1 archi Dato un grafo G=(N, A)  Grafo parziale G‘=(N, A‘)  grafo in cui Albero ricoprente di un grafo  albero che costituisce un grafo parziale che tocca tutti i nodi del grafo Richiami di teoria dei grafi

12 12 Matrice di incidenza nodi-archi  uno dei possibili modi in cui rappresentare un grafo  Ha un numero di righe pari al numero dei nodi  Ha un numero di colonne pari al numero degli archi  In ogni colonna solo due elementi sono non-nulli:  1 in corrispondenza della coda di quell’arco  -1 in corrispondenza della testa di quell’arco La matrice di incidenza è una struttura adatta a ricavare algoritmi, ma non consente una buona implementazione. Richiami di teoria dei grafi

13 13 Esercizio Ricavare la matrice di incidenza nodi-archi del grafo Richiami di teoria dei grafi Una matrice di incidenza con n nodi ha rango n-1. Esiste una corrispondenza biunivoca tra gli alberi ricoprenti del grafo e le basi della matrice di incidenza (purché rendiamo la matrice di incidenza a rango pieno).

14 14 Dimostrazione rango n-1: Il suo rango non è n, infatti, comunque si estragga un minore di ordine n la somma delle sue colonne risulta sempre nulla Considerato un albero ricoprente del grafo, il minore ad esso corrispondente ha n righe e n-1 colonne. Questo albero presenta almeno 2 foglie e la sua matrice di incidenza presenta almeno 2 righe con un coefficiente non nullo Con delle permutazioni si porta il coefficiente non nullo di una foglia in prima riga sulla diagonale principale Si cancella quella foglia e quel ramo, si ottiene un nuovo albero con almeno 2 foglie che possono essere portate in seconda riga sulla diagonale principale Iterando questo procedimento, si portano n-1 coefficienti non nulli sulla diagonale principale Richiami di teoria dei grafi

15 15 Il problema del flusso di minimo costo Dato un grafo G(N,A), ad ogni nodo i viene associata una quantità di risorsa b i  Se b i > 0 il nodo i è un nodo offerta  Se b i < 0 il nodo i è un nodo domanda  Se b i = 0 il nodo i è un nodo di transito Si assume che l’offerta totale di risorsa sia uguale alla domanda, in questo caso la rete si dice bilanciata Notazione:  x ij : flusso di risorsa che transita sull’arco (i,j)  c ij : costo di transito sull’arco (i,j), il costo è unitario

16 16 Formalizzazione del MCF dove E è la matrice di incidenza nodi archi Se una rete non è bilanciata, occorre bilanciarla con opportuni valori di domande/offerte in nodi artificiali connessi da archi di costo molto elevato Il problema del flusso di minimo costo

17 17 Esercizio  La rete è bilanciata? SI  A cosa corrisponde un costo negativo? BENEFICIO

18 18 Passo I Trovare una base ammissibile e calcolare il flusso delle variabili di base. Partiamo dalla base segnata in verde:  Scrivere la matrice di incidenza  Calcolare il flusso sugli archi a partire dalle foglie (1 solo elemento sulla riga ≠ 0) Foglia 1  w 1 = 2 Foglia 2  w 2 = 5  Eliminiamo le foglie, le utilizziamo per correggere i b i dei nodi su cui incidono e iteriamo il calcolo dei w…

19 19 Passo I Terminati i calcoli dei flussi otteniamo: Foglia 1  w1 = 2 Foglia 2  w2 = 5 Foglia 3  w3 = 6 Foglia 4  w4 = 2 L’equazione ∑ jЄS(i) x ij – ∑ kЄP(i) x ki = b i è rispettata! La nostra base è ammissibile!

20 20 Passo II Effettuare il criterio di entrata Per effettuare il criterio di entrata in generale bisogna risolvere il sistema wB = c B (w1, w2, w3, w4, w5) (matrice di incidenza) = (2, -4, 0, 3, 0-costo r-) L’equazione che usiamo per risolvere il sistema è w i -w j =c ij per le variabili in base! Il costo della radice è 0  innesco da cui partire Andiamo avanti ricorsivamente esaminando un solo w alla volta!

21 21 Passo II w 1 – w 5 = 2 – 0 = 2  w 1 = 2 w 4 – w 5 = 3 – 0 = 3  w 4 = 3 w 3 – w 4 = w 3 – 3 = 0  w 3 = 3 w 2 – w 3 = w 2 – 3= -4  w 2 = -1 Ora abbiamo tutto ciò che ci serve per calcolare le z ij – c ij = w i – w j – c ij per gli archi fuori base! arco(1,2): w 1 – w 2 – 5  -2 arco(1,3): w 1 – w 3 – (-2)  1 arco(4,2): w 4 – w 2 – 6  -2 arco(5,3): w 5 – w 3 – 4  -7

22 22 Passo II arco(1,2)  -2 arco(1,3)  1 arco(4,2)  -2 arco(5,3)  -7 Chi entra? Il maggiore tra i positivi!

23 23 Passo III Chi esce? L’arco discorde al ciclo con flusso minore! Questo è il nuovo albero! Non ripetiamo la fase di ammissibilità perché i nuovi flussi sono stati calcolati con il criterio di uscita. Ripartiamo dal calcolo dei w perché ci aspettiamo una nuova configurazione!

24 24 Passo III Quando ci si ferma? 1.Tutti i valori per le variabili fuori base sono ≤ 0! 2.Troviamo un ciclo che non migliora! Completare l’esercizio e trovare la soluzione ottima! Trovata la soluzione ottima risolvere l’istanza sul Lindo e confrontarla!

25 25 Esercizio Risolvere l’istanza con Lindo

26 26 Esercizio Su Lindo: min 5 x12 - 2 x13 + 2 x15 - 4 x23 + 0 x34 + 6 x42 + 3 x45 + 4 x53 s.t. x12 + x13 + x15 = 2 x23 - x12 - x42 = 5 x34 - x13 - x23 - x53 = 1 x42 + x45 - x34 = -4 x53 - x15 - x45 = -4 end

27 27 Soluzione con Lindo: OBJECTIVE FUNCTION VALUE 1) -12.00000 VARIABLE VALUE REDUCED COST X12 0.000000 3.000000 X13 2.000000 0.000000 X15 0.000000 1.000000 X23 5.000000 0.000000 X34 8.000000 0.000000 X42 0.000000 2.000000 X45 4.000000 0.000000 X53 0.000000 7.000000 ROW SLACK OR SURPLUS DUAL PRICES 2) 0.000000 0.000000 3) 0.000000 2.000000 4) 0.000000 -2.000000 5) 0.000000 -2.000000 6) 0.000000 1.000000 Esercizio

28 28 Utilizzo del solver specializzato MCF c Problem line (il carattere c introduce righe utilizzate per commenti) p min 5 8(il carattere p introduce la riga della f.o. questo problema ha 5 nodi e 8 archi) c c Node descriptor lines (per convenzione l’offerta è positiva e la domanda è negativa) n 1 2 (il carattere n introduce la riga relativa a un nodo; ad esempio il nodo 1 offre 2 unità di risorsa) n 2 5 n 3 1 n 4 -4 n 5 -4 (il nodo 5 domanda 4 unità di risorsa) c c Arc descriptor lines a 1 2 0 10 5(il carattere a introduce la riga relativa a un arco, riportando nell’ordine coda, a 1 3 0 10 -2 testa, limite inferiore del flusso, limite superiore del flusso e costo) a 1 5 0 10 2 a 2 3 0 10 -4 a 3 4 0 10 0 a 4 2 0 10 6 a 4 5 0 10 3 a 5 3 0 10 4 c c End of file  read nome_file.dimacs  optimize  display  write sol_nome_file.txt Comandi essenziali per MCF:

29 29 c Output to minimum-cost flow problem sample3.dimacs c The problem was solved with a network simplex code c c need 4 iteration(s) in 0 second(s). s -12(questo è il valore ottimo della f.o.) f 1 3 2(il flusso da 1 a 3 vale 2 all’ottimo) f 2 3 5 f 3 4 8 f 4 5 4 c c All other variables are zero Utilizzo del solver specializzato MCF Soluzione con MCF:

30 30 Con OPL

31 31 {int} Nodi = { 1, 2, 3, 4, 5}; int dom[Nodi]= [2, 5, 1, -4, -4]; tuple arco { int i; int j; } {arco} archi = {,,,,,,, }; int costi[archi] = [5, -2, 2, -4, 0, 6, 3, 4]; dvar int+ x[archi]; minimize sum(a in archi)costi[a] * x[a]; subject to { forall(i in Nodi) sum ( in archi) x[ ] - sum( in archi) x[ ] == dom[i]; } Con OPL


Scaricare ppt "Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA Ricerca Operativa - RO - Dott.ssa Michela Lai Esercitazione."

Presentazioni simili


Annunci Google