Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCirino Furlan Modificato 9 anni fa
1
Università degli Studi di Cagliari FACOLTA’ DI INGEGNERIA
Ricerca Operativa - RO - Dott.ssa Michela Lai Esercitazione 6
2
Dualità Esercizio: Dato il problema primale:
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 x1, x2, x3, x4, x5 ≥ 0 Risolvere il suo duale su carta e poi implementare P e D su Lindo.
3
Dualità – Relazioni P&D
Min P Max D Variabili ≥ 0 ↔ ≤ 0 Vincoli Libera =
4
Dualità Esercizio: Seguendo le relazioni P&D otteniamo:
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 w1, w2 ≥ 0
5
Soluzioni Soluzione P: Lindo P: Lindo D: Soluzione D:
OBJECTIVE FUNCTION VALUE 1) VARIABLE VALUE REDUCED COST X X X X X ROW SLACK OR SURPLUS DUAL PRICES 2) 3) Soluzione D: W W 2) 3) 4) 5) 6) 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 w1 + 2 w2 = 2 w1 - 2 w2 = 3 2 w1 + 3 w2 = 5 w1 + w2 = 2 3 w1 + w2 = 3
6
Analisi di sensitività
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 7
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) 8
9
Richiami di teoria dei grafi
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)} 9
10
Richiami di teoria dei grafi
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 10
11
Richiami di teoria dei grafi
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 11
12
Richiami di teoria dei grafi
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. 12
13
Richiami di teoria dei grafi
Esercizio Ricavare la matrice di incidenza nodi-archi del grafo 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). 13
14
Richiami di teoria dei grafi
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 14
15
Il problema del flusso di minimo costo
Dato un grafo G(N,A), ad ogni nodo i viene associata una quantità di risorsa bi Se bi > 0 il nodo i è un nodo offerta Se bi < 0 il nodo i è un nodo domanda Se bi = 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: xij : flusso di risorsa che transita sull’arco (i,j) cij : costo di transito sull’arco (i,j), il costo è unitario 15
16
Formalizzazione del MCF
Il problema del flusso di minimo costo 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 16
17
Esercizio La rete è bilanciata? SI
A cosa corrisponde un costo negativo? BENEFICIO 17
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 w1 = 2 Foglia 2 w2 = 5 Eliminiamo le foglie, le utilizziamo per correggere i bi dei nodi su cui incidono e iteriamo il calcolo dei w… 18
19
Passo I Terminati i calcoli dei flussi otteniamo: Foglia 1 w1 = 2
L’equazione ∑jЄS(i) xij – ∑kЄP(i) xki = bi è rispettata! La nostra base è ammissibile! 19
20
Passo II Effettuare il criterio di entrata
Per effettuare il criterio di entrata in generale bisogna risolvere il sistema wB = cB (w1, w2, w3, w4, w5) (matrice di incidenza) = (2, -4, 0, 3, 0-costo r-) L’equazione che usiamo per risolvere il sistema è wi-wj=cij per le variabili in base! Il costo della radice è 0 innesco da cui partire Andiamo avanti ricorsivamente esaminando un solo w alla volta! 20
21
Passo II w1 – w5 = 2 – 0 = 2 w1 = 2 w4 – w5 = 3 – 0 = 3 w4 = 3
Ora abbiamo tutto ciò che ci serve per calcolare le zij – cij = wi – wj – cij per gli archi fuori base! arco(1,2): w1 – w2 – 5 -2 arco(1,3): w1 – w3 – (-2) 1 arco(4,2): w4 – w2 – 6 -2 arco(5,3): w5 – w3 – 4 -7 21
22
Il maggiore tra i positivi!
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! 22
23
L’arco discorde al ciclo con flusso minore!
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! 23
24
Passo III Quando ci si ferma? Tutti i valori per le variabili
fuori base sono ≤ 0! 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! 24
25
Esercizio Risolvere l’istanza con Lindo 25
26
Esercizio Su Lindo: min 5 x x x x x x x 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 26
27
Esercizio Soluzione con Lindo: OBJECTIVE FUNCTION VALUE 1) -12.00000
1) VARIABLE VALUE REDUCED COST X X X X X X X X ROW SLACK OR SURPLUS DUAL PRICES 2) 3) 4) 5) 6) 27
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 (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 (il nodo 5 domanda 4 unità di risorsa) c Arc descriptor lines a (il carattere a introduce la riga relativa a un arco, riportando nell’ordine coda, a testa, limite inferiore del flusso, limite superiore del flusso e costo) a a a a a a c End of file Comandi essenziali per MCF: read nome_file.dimacs optimize display write sol_nome_file.txt 28
29
Utilizzo del solver specializzato MCF
Soluzione con MCF: 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 (il flusso da 1 a 3 vale 2 all’ottimo) f 2 3 5 f 3 4 8 f 4 5 4 c All other variables are zero 29
30
Con OPL 30
31
Con OPL {int} Nodi = { 1, 2, 3, 4, 5}; int dom[Nodi]= [2, 5, 1, -4, -4]; tuple arco { int i; int j; } {arco} archi = {<1,2>, <1,3>, <1,5>, <2,3>, <3,4>, <4,2>, <4,5>, <5,4>}; 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 (<i, s> in archi) x[<i, s>] - sum(<p, i> in archi) x[<p, i>] == dom[i]; 31
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.