Claudio Arbib Università dell’Aquila Ricerca Operativa Metodo del simplesso per problemi di distribuzione single-commodity
Scenario Un insieme di produttori (consumatori) offre (richiede) determinati quantitativi di un medesimo bene rappresentati da un vettore di domanda d Ipotesi single commodity: non ha importanza da quali produttori ciascuno dei consumatori ottenga la quantità richiesta La distribuzione avviene mediante una rete conservativa, dove produttori e consumatori sono rappresentati da nodi e la distribuzione avviene attraverso un insieme di archi che li collega gli uni agli altri (grafo connesso G = (V, E)) Attraversare l’arco ij comporta un costo c ij per unità di bene trasportato (costi lineari) Il flusso nel generico arco ij E dev’essere compreso fra una soglia l ij e una capacità u ij
Problema Calcolare una distribuzione di flusso che attribuisca a ciascun arco ij di G un flusso reale x ij compreso tra l ij e u ij e in tal modo soddisfi il vettore di domanda d al costo più basso possibile: mincx Ax = d l < x < u –1– – – – –1 – =A – –1– – –10 0 –1 –2 7 6 d=d= a b c d e f g h i j k cluclu –10 –2 –1 0 6 ab c d e fg h i jk 0
Basi Una base è un insieme massimale di colonne di A linearmente indipendenti Teorema: k colonne di A sono linearmente indipendenti se e solo se gli archi corrispondenti non formano cicli Dimostrazione: se C è un ciclo corrispondente a colonne di A, scegliamo un verso di percorrenza e moltiplichiamo per +1 ogni colonna associata a un arco concorde col verso e per –1 ogni colonna associata a un arco discorde. Sommando si ottiene la colonna –1– – – – –1 – =A – –1– – a b c d e f g h i j k ab c d e fg h i jk ab c d –1+1+1–1 1–1 0 0 – – –
Basi Una base è un insieme massimale di colonne di A linearmente indipendenti Teorema: k colonne di A sono linearmente indipendenti se e solo se gli archi corrispondenti non formano cicli Dimostrazione: Viceversa, sia B un insieme massimale di archi di G che non formano cicli (albero ricoprente T). Si visitino i nodi e gli archi di di T in post-ordine permutando le righe (nodi) e le colonne (archi) della matrice via via che si visitano. Con una colonna unitaria, la matrice è triangolare e ha determinante ab c d e fg h i jk 1 b b 2 c 3 c d 4 d i 6 i j 7 j e 5 e – – –1–1–10 0 0–
Soluzioni di base In una soluzione di base, le variabili in base (archi di T ) assumono valori compresi tra l ij e u ij Una variabile fuori base invece è fissata o al valore di soglia l ij oppure al valore della capacità u ij Siano B, L, U gli insiemi di archi corrispondenti a variabili in base oppure fuori base dei due tipi. Il problema mincx Ax = d l < x < u si riscrive (eliminando una riga in modo che A B sia quadrata) minc B x B + c L x L + c U x U A B x B + A L x L + A U x U = d l < x < u Sostituendo nella funzione obiettivo x B = A B –1 (d – A L x L – A U x U ) questa diventa c B A B –1 d + (c L – A B –1 A L )x L + (c U – A B –1 A U )x U Per i costi ridotti fuori base si ha quindic L ’ = (c L – A B –1 A L ) c U ’ = (c U – A B –1 A U ) Poiché le variabili fissate alla soglia (alla capacità) possono solo aumentare (diminuire) il loro valore, la base corrente sarà ottima se c L ’ > 0, c U ’ < 0 (criterio di ottimalità)
Calcolo di una prima soluzione ab c d e fg k i j Trasformare il problema ponendo x’ = x – l > 0 e quindi sostituendo x = x’ + l h mincx Ax = d l < x < u mincx’ + cl Ax’ = (d – Al) = d’ 0 < x’ < u’ = u – l –1– – – – –1 – =A – –1– – – d’ = a b c d e f g h i j k clu’clu’ –10 6 4
Calcolo di una prima soluzione ab c d e fg k i j t 6 4 s 10 Aggiungere i nodi s e t, collegarli alle sorgenti e ai pozzi k con capacità pari a |d k |, trovare il max (s, t)-flusso; h se è < kP kP dk dk non c’è soluzione –1– – – – –1 – =A – –1– – – d’ = a b c d e f g h i j k clu’clu’ Altrimenti, ricavare x = x’ + l (ammissibile) x’x’ x
Calcolo di una prima soluzione ab c d e fg k i j –10 Aggiungere i nodi s e t, collegarli alle sorgenti e ai pozzi k con capacità pari a |d k |, trovare il max (s, t)-flusso; h se è < k P d k non c’è soluzione –1– – – – –1 – =A – –1– – –10 0 –1 –2 4 6 d = a b c d e f g h i j k cluclu Altrimenti, ricavare x = x’ + l (ammissibile) x –2 –1 0
x Calcolo di una prima base ab c d e fg k i j –10 Una soluzione di base ha almeno m – n + 1 variabili fissate ai valori di soglia o capacità (variabili fuori base); se quindi vi sono più di n – 1 variabili con valori strettamente compresi tra l ij e u ij la x trovata non è di base h –1– – – – –1 – =A – –1– – –10 0 –1 –2 4 6 d = a b c d e f g h i j k cluclu n = 7, m = 11l ij n – 1 variabili x –2 –
x Calcolo di una prima base ab c d e fg k i j Gli archi associati a queste variabili formano 2 cicli, da eliminare con operazioni di pivot. Nella prima, = min{9 – 8, 6 – 1, 2 – 0, 2 – 0} = 1 h –1– – – – –1 – =A – –1– – –10 0 –1 –2 4 6 d = a b c d e f g h i j k cluclu n = 7, m = 11l ij n – 1 variabili x 8 + 2 –
x Calcolo di una prima base ab c d e fg k i j Gli archi associati a queste variabili formano 2 cicli, da eliminare con operazioni di pivot. Nella seconda, = min{2 – 0, 9 – 7, 4 – 1} = 2 h –1– – – – –1 – =A – –1– – –10 0 –1 –2 4 6 d = a b c d e f g h i j k cluclu n = 7, m = 11l ij n – 1 variabili x 4 – 6 2 –
x Calcolo di una prima base ab c d e fg k i j Nella soluzione ottenuta gli archi (viola) associati alle variabili strettamente comprese tra l ij e u ij non formano cicli, ma sono meno di n – 1 e quindi non ricoprono il grafo. Un albero ricoprente (base degenere) si ottiene aggiungendo archi associati a variabili fuori base che non formino cicli con gli archi viola h –1– – – – –1 – =A – –1– – –10 0 –1 –2 4 6 d = a b c d e f g h i j k cluclu
Calcolo dei costi ridotti b e j Per ottenere il costo ridotto c’ = (c – c B A B –1 A) non è necessario invertire A B. Sia y = c B A B –1, cioè y risolve il sistema di n – 1 equazioni in n incognite – y i + y j = c ij ij B Siccome righe e colonne di B possono essere permutate con una visita in post- ordine ricavando una matrice triangolare, il sistema è di facile risoluzione h – – – –1 0 – – k c a d g i cBcB a c d fg k i y 7 – y 6 = 5 y 4 – y 3 = 8 y 2 – y 1 = 2 y 4 – y 2 = 5 y 6 – y 4 = 10 y 6 – y 5 = 4 Per il potenziale d’ingresso y 5 si sceglie un valore arbitrario (es., y 5 = 10) y 7 = 19 y 3 = – 4 y 1 = – 3 y 2 = – 1 y 4 = 4 y 6 = 14
b Calcolo dei costi ridotti b e j Servendosi di y si calcola ora il costo ridotto c’ = (c – yA) delle variabili fuori base c ij ’ = c ij + y i – y j ij L U h a c d fg k i Per il potenziale d’ingresso y 5 si sceglie un valore arbitrario (es., y 5 = 10) y 7 = 19 y 3 = – 4 y 1 = – 3 y 2 = – 1 y 4 = 4 y 6 = 14 c b ’ = c b + y 1 – y 3 = 10 – 3 + 4= 11 c h ’ = c h + y 3 – y 6 = 12 – 4 – 14= –6 c e ’ = c e + y 5 – y 2 = = 18 c f ’ = c f + y 4 – y 5 = – 10 = 0 c j ’ = c j + y 5 – y 7 = – 19= –6 Si ha x b = x h = 9 x e = x f = x j = 0 Quindi x b e x j sono candidate a entrare in base: scegliamo x b
h Calcolo della nuova base b e j L’aggiunta dell’arco b genera un ciclo. Lo si elimina con un pivot cercando di far diminuire il flusso su b a c d fg k i Si ha x b = x h = 9 x e = x f = x j = 0 Quindi x b e x j sono candidate a entrare in base: scegliamo x b 1 + 9 – – 2 2 –1 – – a b c d e f g h i j k cluclu Dalla tabella risulta = min{3 – 1, 9 – 0, 0 – 0, 5 – 1} = 0
j h Calcolo della nuova base b e j L’aggiunta dell’arco b genera un ciclo. Lo si elimina con un pivot cercando di far diminuire il flusso su b a c d fg k i La variabile x b è entrata in base con valore 9, la variabile x c è uscita dalla base con valore 0 I flussi non sono stati alterati, perché le basi coinvolte nell’operazione sono degeneri Proviamo allora a far entrare in base x j, il cui flusso può crescere con costo ridotto – a b c d e f g h i j k cluclu Dalla tabella risulta = min{3 – 1, 9 – 0, 0 – 0, 5 – 1} = –1 – –2 0
j h Calcolo della nuova base b e Il flusso nell’arco i deve decrescere, e così quello nell’arco k. a c d fg k i L’arco i ha infatti soglia 2, pari al flusso attuale: ancora una volta la distribuzione è inalterata a b c d e f g h i j k cluclu Dalla tabella di soglie e capacità si ha = min{2 – 2, 5 – 0, 6 – 0} = – 2 – 2 –1 – –2 0 +
j h Calcolo della nuova base b e Il flusso nell’arco i deve decrescere, e così quello nell’arco k. a c d fg k i L’arco i ha infatti soglia 2, pari al flusso attuale: ancora una volta la distribuzione è inalterata Il calcolo dei costi ridotti offre ora c f ’ = –6 con x f fissata alla soglia u f = a b c d e f g h i j k cluclu Dalla tabella di soglie e capacità si ha = min{2 – 2, 5 – 0, 6 – 0} = –1 – –2 0
f j h Calcolo della nuova base b e Il flusso nell’arco i deve decrescere, e così quello nell’arco k. a c d g k i a b c d e f g h i j k cluclu Il ciclo introdotto coinvolge f, g, j, k Il flusso in f e j aumenta, quello in g e k diminuisce di = min{4 – 0, 2 – 1, 5 – 0, 6 – 0} = –1 – – – 2 – 0 +
f j h Calcolo della nuova base b e Il flusso nell’arco i deve decrescere, e così quello nell’arco k. a c d g k i L’arco g esce di base fissando il proprio flusso al valore di soglia a b c d e f g h i j k cluclu Il ciclo introdotto coinvolge f, g, j, k Il flusso in f e j aumenta, quello in g e k diminuisce di = min{4 – 0, 2 – 1, 5 – 0, 6 – 0} = –1 – –