gestione della produzione e della supply chain logistica ...detti/minimumcostflow1.pdf · gestione...
Post on 08-Jul-2020
4 Views
Preview:
TRANSCRIPT
Paolo Detti Dipartimento di Ingegneria dell’Informazione e Scienze
Matematiche Università di Siena
Gestione della produzione e della supply chain
Logistica distributiva
Struttura delle reti logistiche
Sistemi produttivi multistadio Struttura logistica lineare
1 2 3 4
2 3 1
Sist. prod. / Fornitore
Sist. prod. / Fornitore
Sist. prod. / Fornitore
Struttura logistica ad assemblaggio
1
7
3
2
4
5 6
8
Struttura delle reti logistiche
Struttura logistica arborescente (rete di distribuzione)
6
2
7
3
4
8 5
1
Struttura delle reti logistiche
Costi in logistica
• Costo per l’acquisizione dei materiali (soggetto a sconti e incertezze sul valore futuro) • Costi di ordinazione • Costi di mantenimento o perdita del valore delle scorte • Costi fissi e variabili di trasporto • Costi per la realizzazione di impianti e centri di distribuzione • Costi legati alla movimentazione dei materiali nei magazzini
Progetto di reti logistiche e trasporti
• Determinare la struttura di una rete logistica significa dimensionare impianti di produzione, centri di distribuzione, punti vendita, flussi dei materiali. • Il problema si pone ad un livello strategico. Tuttavia, il problema può porsi ad un livello tattico, nel caso in cui sia possibile acquisire risorse (mezzi di trasporto, siti di stoccaggio, ecc…) in affitto da fornitori di servizi logistici.
La Teoria dei Grafi costituisce, al pari della Programmazione Matematica, un corpo metodologico per la modellazione e soluzione di problemi decisionali Molti problemi di ottimizzazione hanno una naturale rappresentazione grafica. Sono note efficienti tecniche risolutive basate sui Grafi.
Teoria dei grafi
Origini
La Teoria dei Grafi è stata introdotta dal matematico svizzero Eulero (1707 - 1783) che formulò utilizzando i grafi il problema dei ponti di Könisberg (città Prussiana): Partendo da una qualsiasi area di terra è possibile tornare al punto di partenza attraversando tutti i ponti una ed una sola volta?
C
A D
B
Fiume Pregel
Se si associano alle zone di terra dei punti (nodi o vertici) e ai ponti dei tratti di linea (archi o spigoli) il problema dei ponti di Könisberg è modellato dal Grafo
D
B
A
C
Eulero si servì di questo grafo per stabilire che era impossibile trovare il percorso richiesto, con i ponti così distribuiti. E’ invece possibile se il numero di archi incidente in ogni nodo è pari.
Definizioni
Un grafo G=(V,E) è definito da: • un insieme V di nodi; • un insieme E di archi. Un grafo si dice orientato se gli archi hanno un orientamento altrimenti si dice non orientato
D
B
A
C
D
B
A
C
Definizioni (grafi non orientati)
Dato l’arco e=(a, b) • a, b sono detti i nodi estremi di e • e è detto arco incidente in a e b • a, b sono detti nodi adiacenti • due archi si dicono adiacenti se hanno un nodo in comune
b
a
Dato il nodo a di G • l’Intorno di a, indicato con N(a), è l’insieme dei nodi adiacenti ad a • la stella di a, indicata con δ(a), è l’insieme degli archi incidenti in a
1
2
3
4
5
N(1) = {2, 3} δ(3) = {(1,3), (3,4), (3,5)}
Definizioni (grafi orientati)
Dato un nodo a di un grafo orientato G • δ+(a) è l’insieme degli archi uscenti da a • δ-(a) è l’insieme degli archi entranti in a • un nodo con soli archi entranti è detto pozzo • un nodo con soli archi uscenti è detto sorgente
1
2
3
4
5
δ+(5) = {(5,3), (5,4)} δ-(2) ={(0,2), (1,2)}
Dato un arco orientato e=(a, b) • e è detto arco uscente da a (nodo coda) • e è detto arco entrante in b (nodo testa) • a si dice predecessore diretto di b • b si dice successore diretto di a
b
a
0
Definizioni
1
2
3
4
5
Dato un Grafo G=(V, E) con V={v1, …, vn} ed E={e1, …, em} un cammino è una sequenza di archi p={eh1, eh2, …, ehq}, tali che ogni due archi consecutivi sono adiacenti
0 1
2
3
4
5
0
Definizioni
Un cammino è detto semplice se gli archi e i nodi del cammino sono tutti distinti altrimenti si dice non semplice
1
2
3
4
5
0 1
2
3
4
5
0
un cammino è orientato se per ogni arco e=(i, j) del cammino, il nodo i è la coda di e ed il nodo j è la testa di e
2
4
5
0
Definizioni
Un cammino è detto chiuso se i nodi estremi del cammino coincidono Un cammino semplice e chiuso è detto ciclo
1
2
3
4
5
0
Un Grafo G si dice connesso se per ogni coppia di nodi a e b esiste un cammino da a a b
1
2
3
4
5
0 1
2
3
4
5
0
Definizioni
Un ciclo orientato
1
2
3
4
5
0
Un ciclo non orientato
1
2
3
4
5
0
Definizioni
Un cammino chiuso in un grafo è detto ciclo Euleriano se passa una ed una sola volta su tutti gli archi del grafo. Un ciclo Euleriano può non esistere in un grafo.
D
B
A
C
1
2
3
4
5
0
Grafo non Euleriano Grafo Euleriano
Definizioni
Un ciclo in un grafo è detto ciclo Hamiltoniano se passa una ed una sola volta su tutti i nodi del grafo. Un ciclo Hamiltoniano può non esistere in un grafo.
D
B
A
C
1
2
3
4
5
0
Grafi Hamiltoniani
Definizioni
Dato un grafo non orientato G=(V,A) e un sottoinsieme S di V Taglio in un grafo Una taglio δ (S) è l’insieme di archi con un estremo in S e l’altro in V\S
1
2
3
4
5
S= {1, 3} δ(S) = {(1,2), (3,4), (3,5)}
Definizioni
Dato un grafo G=(V,A) orientato e un sottoinsieme S di V Taglio in un grafo Il taglio δ+ (S) è l’insieme di archi con coda in S e testa in V\S Il taglio δ- (S) è l’insieme di archi con testa in S e coda in V\S
1
2
3
4
5
S ={0,1,3}δ+(S) = {(0,2),(1,2),(3,4)} δ-(S) ={(5,3)}
0
Definizioni
Grafo bipartito G=(V1, V2, A) L’insieme dei nodi V è divisibile in due sottoinsiemi V1 e V2 Non ci sono archi in A che collegano due nodi di V1 o due nodi di V2
4
3
2
1
5
Definizioni
Una foresta è un grafo senza cicli
1
2
3
4
5
0
1
2
3
4
5
0
Definizioni
Un Albero T=(V,A) è un grafo che soddisfa una delle seguenti definizioni: • è una foresta conessa • è connesso e non contiene cicli • è connesso ed ha |V|-1 archi • per ogni coppia di nodi esiste un solo cammino che li connette • è connesso e la rimozione di un arco lo rende disconnesso
1
2
3
4
5
0
Definizioni
Dato un grafo G=(V,A) una foresta ricoprente F =(V’,A’) di G è una foresta tale che V’=V
1
2
3
4
5
0
1
2
3
4
5
0
1
2
3
4
5
0
Definizioni
Dato un grafo G=(V,A) albero ricoprente T =(V’,A’)di G è un albero tale che V’=V
1
2
3
4
5
0
1
2
3
4
5
0
1
2
3
4
5
0
Il Problema del Flusso su Reti a Costo Minimo (Minimum Cost Network Flow)
Il problema di Flusso su Reti a Costo Minimo consiste nel determinare il modo più conveniente per trasportare una determinata quantità di bene da uno o più punti di produzione o immagazzinamento ad uno o più punti di consumo, attraverso una rete di trasporto data. Esistono algoritmi di soluzione estremamente efficienti per il calcolo della soluzione di Problemi di Flusso su Reti a Costo Minimo (più efficienti dei metodi utilizzati per la soluzione di problemi di PL generici).
Dati • Il grafo G=(V, E) della rete • Un insieme di nodi fornitori S⊂V e la quantità di bene disponibile a(i) per ogni i ∈ S • Un insieme di nodi domanda D⊂V e la quantità di bene richiesta b(i) per ogni i ∈ D • I costi unitari di trasporto cij, le capacità superiori uij e inferiori lij ad ogni arco (i,j) di E
Il Modello del Flusso su Reti a Costo Minimo (Minimum Cost Network Flow)
Il Problema Decidere quanto flusso inviare su ciascun arco in modo tale che • le capacità sugli archi siano rispettate • ad ogni nodo sia soddisfatto il bilanciamento del flusso:
• il costo totale del flusso sulla rete sia minimo
⎪⎩
⎪⎨
⎧
−=−
ltrimenti 0domanda nodo un è se )(
fornitore nodo un è se )( in entrante Flusso da uscente Flusso
aiib
iiaii
Il Modello del Flusso su Reti a Costo Minimo (Minimum Cost Network Flow)
1
2
3
4
5
6
7
Nodi fornitori Nodi domanda
a(1)=10 a(2)=15 a(3)=10
b(6)=20
b(7)=15
Il Modello del Flusso su Reti a Costo Minimo (Minimum Cost Network Flow)
i
j
lij, uij, cij
⎪⎩
⎪⎨⎧
+∞=
=
ij
ij
ul 0
10 10
10
5
10 10
Un esempio ed una soluzione ammissibile (i costi degli archi non sono riportati)
Il Modello del Flusso su Reti a Costo Minimo : Una formulazione di PL
Definizione delle variabili:
xij la quantità di flusso che scorre nell’arco (i,j), per ogni (i,j) ∈ E
Funzione obiettivo:
∑∈Eji
ijij xc),(
min
Upper bound sulle variabili:
E(i,j) ux ijij ∈∀≤
Lower bound sulle variabili:
E(i,j) lx ijij ∈∀≥
Vincolo sul bilanciamento del flusso:
⎪⎩
⎪⎨
⎧
∈∀−
∈∀
=− ∑∑−+ ∈∈ altrimenti 0
)( )(
)(),()(),(
DiibSiia
xxiijji
ijiij
δδ
Condizione: affinché il problema abbia una soluzione ammissibile deve essere:
∑∑∈∈
=DiSiibia )()(
∑∈Eji
ijij xc),(
min
E(i,j) ux ijij ∈∀≤
E(i,j) lx ijij ∈∀≥
⎪⎩
⎪⎨
⎧
∈∀−
∈∀
=− ∑∑−+ ∈∈ altrimenti 0
)( )(
)(),()(),(
DiibSiia
xxiijji
ijiij
δδ
Formulazione complessiva
Proprietà: La matrice dei coefficienti è Totalmente Unimodulare (matrice di incidenza di un grafo diretto e matrici identità) Se le quantità sono intere allora esiste un flusso ottimo x* intero (calcolabile).
ijij ulibia ,),(),(
Il Modello del Flusso su Reti a Costo Minimo (Minimum Cost Network Flow)
Metodi di soluzione: • In pratica, un problema di flusso su reti a costo minimo può
essere risolto con algoritmi combinatori estremamente efficienti (polinomiali), che sfruttano la struttura della rete.
• Inoltre, esiste una versione del metodo del simplesso, nota con il nome di simplesso su reti, messa a punto proprio per la soluzione di problemi di flusso su reti a costo minimo.
Ottimizzazione dei costi di trasporto e dimensionamento della capacità produttiva
Descrizione del problema Un’industria alimentare produce alimenti in 3 diversi impianti. Gli alimenti una volta prodotti possono essere trasportati direttamente a 2 diversi clienti, oppure trasportati e stoccati in 2 magazzini e poi consegnati ai clienti.
Dati Il costo di produzione è lo stesso per ogni impianto. Il costo di stoccaggio è lo stesso per ogni magazzino. Ogni impianto ha una capacità produttiva limitata. E’ nota la domanda di alimenti di ogni cliente. Sono dati i costi di trasporto e produzione/stoccaggio, per tonnellata di alimenti, tra ogni coppia di punti. Possono essere trasportate al più 200 tonnellate di alimenti tra ogni coppia di punti.
Obiettivo L’industria vuole decidere quanto produrre in ogni impianto e quanto stoccare in ogni magazzino, in modo tale che il costo totale di trasporto dagli impianti verso i clienti sia minimo e la domanda dei clienti sia soddisfatta.
Impianti Clienti
Capacità (ton per anno) Domande (ton per anno)
200 300 100
400
180
Magazzino 1 Magazzino 2 Cliente 1 Cliente 2Impianto 1 2,0 1,0 2,0 4,0Impianto 2 1,0 1,0 8,0 9,0Impianto 3 1,0 0,5 10,0 8,0Magazzino 1 - - 5,0 1,0Magazzino 2 - - 2,0 7,0
Costi di trasporto e produzione/stoccaggio (migliaia di Euro per ton)
Ottimizzazione dei costi di trasporto e dimensionamento della capacità produttiva
Il problema può essere modellato con un grafo orientato, associando un nodo ad ogni impianto, magazzino e cliente. Un arco orientato esprime il fatto che può essere trasportata una certa quantità di alimenti tra i due nodi estremi dell’arco.
1
2
3
4
5
6
7
Impianti Magazzini Clienti
Capacità (ton per anno) Domande (ton per anno)
200 300 100
400
180
Ad ogni nodo impianto è associato un valore pari alla capacità produttiva Ad ogni nodo cliente è associato un valore pari alla domanda
Ottimizzazione dei costi di trasporto e dimensionamento della capacità produttiva
Ad ogni arco (i,j) del grafo sono associati una capacità uij, un costo di trasporto e produzione cij per tonnellata (per gli archi uscenti dagli impianti) ed un costo di trasporto e stoccaggio cij per tonnellata (per gli archi uscenti dai magazzini). i
j
uij, cij
uij = 200 per ogni arco
Magazzino 1 Magazzino 2 Cliente 1 Cliente 2Impianto 1 2,0 1,0 2,0 4,0Impianto 2 1,0 1,0 8,0 9,0Impianto 3 1,0 0,5 10,0 8,0Magazzino 1 5,0 1,0Magazzino 2 2,0 7,0
Costi di trasporto e produzione/stoccaggio (migliaia di Euro per ton)
Ottimizzazione dei costi di trasporto e dimensionamento della capacità produttiva
Condizione di ammissibilità La somma delle capacità produttive (600) eccede la somma delle domande (580)
1
2
3
4
5
6
7
Impianti Magazzini Clienti
Capacità (ton per anno) Domande (ton per anno)
200 300 100
400
180
Si introduce un nodo domanda fittizio con valore 600-580=20 connesso ai nodi fornitori con archi di capacità pari a 20 e costo nullo
Ottimizzazione dei costi di trasporto e dimensionamento della capacità produttiva
Condizione di ammissibilità La somma delle capacità produttive (600) eccede la somma delle domande (580)
1
2
3
4
5
6
7
Impianti Magazzini Clienti
Capacità (ton per anno) Domande (ton per anno)
200 300 100
400
180
Si introduce un nodo domanda fittizio con valore 600-580=20 connesso ai nodi fornitori con archi di capacità pari a 20 e costo nullo
8 20
Ottimizzazione dei costi di trasporto e dimensionamento della capacità produttiva
Formulazione con Excel
Soluzione ottima del Problema
1
2
3
4
5
6
7
Impianti Magazzini Clienti
Capacità (ton per anno) Domande (ton per anno)
200 300 100
400
180
8 20
200
180 180
200 20 100
100
Costo di trasporto complessivo: 1310 mila Euro
Siano dati • un grafo orientato G=(V, E) • un costo cij associato ad ogni arco (i, j) • una coppia di nodi s e t il problema consiste nel trovare un cammino semplice orientato da s a t la cui somma dei costi degli archi ha valore minimo.
Il problema del Cammino di costo minimo su grafi
1
3
1 t
3
s
2 2
1
3
Se si associa: • un valore a(s)=1 al nodo s; • un valore b(t)=1 al nodo t; • una capacità inferiore pari a 0 ad ogni arco di E; • una capacità superiore pari a 1 ad ogni arco di E. Il problema di trovare un cammino minimo da s a t può essere visto come caso particolare di problema di Flusso a costo minimo, con un solo nodo fornitore (s) ed un solo nodo domanda (t).
Il problema del Cammino di costo minimo modellato come problema di Flusso su reti a costo minimo
1
3
1 b(t)=1 t
3 a(s)=1 s
2 2
1
3
Siano dati • un grafo orientato bipartito G=(A,B,E) • A, insieme dei nodi fornitori • B, insieme dei nodi domanda • una quantità disponibile bi per ogni nodo fornitore in A • una quantità richiesta di per ogni nodo domanda in B • un costo unitario di trasporto cij associato ad ogni arco (i, j) di E Il problema Il problema consiste nel determinare quanto trasportare su ciascun arco in modo da soddisfare la domanda e minimizzare i costi di trasporto.
Il problema dei trasporti
Definizione delle variabili:
xij la quantità di flusso che scorre nell’arco (i,j), per ogni (i,j) ∈ E
Il problema dei trasporti
∑∈Eji
ijij xc),(
min
E(i,j) xij ∈∀≥ 0
xijj∈B∑ ≤ bi ∀i ∈ A
xiji∈A∑ ≥ d j ∀j ∈ B
1
2
3
4
5
Nodi domanda Nodi fornitore
b1 b2 b3
Il problema dei trasporti
d1 d2
min cij xij( i , j )∈E∑
xijj∈B∑ ≤ bi ∀i ∈ A
xiji∈A∑ ≥ d j ∀j ∈ B
xij ≥ 0 ∀(i, j)∈ EProprietà: La matrice dei coefficienti è Totalmente Unimodulare (matrice di incidenza di un grafo bipartito) Se le quantità bi e dj sono intere allora esiste un flusso ottimo x* intero.
∑∈Eji
ijij xc),(
min
E(i,j) ux ijij ∈∀≤
E(i,j) lx ijij ∈∀≥
⎪⎩
⎪⎨
⎧
∈∀−
∈∀
=− ∑∑−+ ∈∈ altrimenti 0
)( )(
)(),()(),(
DiibSiia
xxiijji
ijiij
δδ
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Flusso lungo un arco: Il flusso di un arco aumenta se esso è percorso in modo concorde al verso dell’arco Il flusso di un arco diminuisce se esso è percorso in modo discorde al verso dell’arco
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Idea: A partire da un flusso ammissibile sulla rete, l’idea alla base del simplesso su reti è quella di migliorare la soluzione di partenza aumentando il flusso in cicli con costo unitario negativo, o diminuendo il flusso in cicli con costo unitario positivo.
2
5
3
4
1 (5,2)
(4,3)
(3,4)
(4,3)
(2,1)
i j (xij, cij)
2
5
3
4
1 (5,5)
(4,3)
(3,4)
(4,3)
(2,1)
i j (xij, cij)
Ciclo con costo negativo: 2-4+1+3-3= -1
Ciclo con costo positivo: 5-4+1+3-3= 2
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Definizioni Dato un flusso ammissibile x sulla rete G, un arco (i,j) è detto • libero se lij < xij < uij • vincolato se xij = lij oppure xij = uij
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Definizioni Dato un flusso ammissibile x sulla rete G, un arco (i,j) è detto • libero se lij < xij < uij • vincolato se xij = lij oppure xij = uij Soluzione senza cicli (cycle free solution): un flusso ammissibile x tale che in ogni ciclo (non orientato) della rete esiste almeno un arco vincolato Soluzione ad albero ricoprente (spanning tree solution): dato un albero ricoprente T di G, un flusso ammissibile x tale che ogni arco che non appartiene a T è vincolato (gli archi di G che appartengono a T possono essere liberi o vincolati)
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
È possibile mostrare che un problema di flusso a costo minimo ammette sempre una soluzione ottima senza cicli e ad albero ricoprente.
Soluzione senza cicli (cycle free solution): un flusso ammissibile x tale che in ogni ciclo della rete esiste almeno un arco vincolato Soluzione ad albero ricoprente (spanning tree solution): dato un albero ricoprente T di G, un flusso ammissibile x tale che ogni arco che non appartiene a T è vincolato (gli archi di G che appartengono a T possono essere liberi o vincolati)
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
E’ sempre possibile trasformare una soluzione ammissible in una soluzione senza cicli
2
5
3
4
1 (5,2)
(4,3)
(3,4)
(4,3)
(2,1)
i j (xij, cij)
Esempio: Ciclo con costo negativo Tutti gli archi con capacità massima infinita e capacità minima 0
Costo del ciclo per flusso unitario D: 2-4+1+3-3= -1
2
5
3
4
1 5+a
4-a
3-a
4+a
2+a
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Aumentando a il costo nel ciclo diminuisce. a può essere aumentato fin quando i flussi sugli archi si mantengono positivi (non negatività del flusso) (e non eccedono la capacità massima):
2
5
3
4
1 5+a
4-a
3-a
4+a
2+a
30403
≤⇒
≥−
≥−
aaa 2
5
3
4
1 8
1
0
7
5
Il flusso è ancora ammissibile, un arco è vincolato (ha ora flusso nullo), ed il costo della soluzione è diminuito
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
2
5
3
4
1 (5,5)
(4,3)
(3,4)
(4,3)
(2,1)
i j (xij, cij)
Esempio: Ciclo con costo positivo Tutti gli archi con capacità massima infinita e minima 0
Costo del ciclo per flusso unitario D: 5-4+1+3-3= 2
2
5
3
4
1 5+a
4-a
3-a
4+a
2+a
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Poiché diminuendo il flusso nel ciclo diminuisce il costo, il valore di a può essere diminuito il più possibile a condizione che i flussi sugli archi non diventino negativi (e che le capacità massime degli archi siano rispettate):
2
5
3
4
1 5+a
4-a
3-a
4+a
2+a
2040205
−≥⇒
≥+
≥+
≥+
aaaa 2
5
3
4
1 3
6
5
2
0
Il flusso è ancora ammissibile, un arco ha ora flusso nullo (è vincolato), ed il costo della soluzione è diminuito
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Dato un flusso ammissibile sulla rete, il procedimento sopra descritto si può applicare a tutti i cicli della rete, anche ai cicli con costo unitario nullo (in questo caso non avremo nessun miglioramento della soluzione), per portare il flusso di un arco del ciclo al valore 0, ottenendo quindi una soluzione ammissibile senza cicli. Se assumiamo lower bound diversi da 0 ed upper bound finiti sulle variabili xij, è possibile con ragionamenti analoghi modificare i flussi sugli archi in modo da non peggiorare la soluzione, mantenere l’ammissibilità e portare il flusso su un arco del ciclo al suo valore minimo (lij) o massimo (uij) Applicando il ragionamento a tutti i cicli della rete si ottiene il seguente risultato. Teorema Se la funzione obiettivo di un problema di flusso a costo minimo non è illimitata inferiormente, esiste sempre una soluzione ottima senza cicli.
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
È possibile convertire una soluzione senza cicli in una soluzione ad albero ricoprente Infatti, data una soluzione senza cicli, possono accadere due cose: 1. Il grafo che si ottiene eliminando tutti gli archi vincolati è connesso: soluzione ad albero ricoprente 2. Il grafo che si ottiene eliminando tutti gli archi vincolati non è connesso: foresta ricoprente Nel caso 2, è possibile aggiungere archi vincolati alla foresta ed ottenere una soluzione ad albero ricoprente
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Nel caso 2, è possibile aggiungere archi vincolati alla foresta ed ottenere un soluzione ad albero ricoprente
2
5
3
4
1 (2,3)
(1,2)
(4,4)
(0,5)
(1,6)
i j
(xij, uij), lij=0
(1,1) (3,3)
2
5
3
4
1
2
5
3
4
1
2
5
3
4
1
Soluzioni ad alberi ricoprenti 2
5
3
4
1
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Si ottiene quindi il seguente risultato. Teorema Se la funzione obiettivo di un problema di flusso a costo minimo non è illimitata inferiormente, esiste sempre una soluzione ottima ad albero ricoprente per il problema.
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Data una soluzione ad albero ricoprente, gli archi in A della rete G possono suddividersi in tre categorie: 1. Gli archi appartenenti all’albero T 2. Gli archi non appartenenti all’albero il cui flusso è pari alla capacità minima (insieme L) 3. Gli archi non appartenenti all’albero il cui flusso è pari alla capacità massima (insieme U)
E’ possibile ottenere una (unica) soluzione ad albero ricoprente conoscendo la struttura T,L,U (ammissibile). Basta porre • xij=lij per ogni (i,j) in L • xij=uij per ogni (i,j) in U • calcolare il flusso sugli altri archi di T attraverso le condizioni di bilanciamento dei nodi
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Diremo che la struttura di un albero ricoprente T,L,U è ammissibile se la relativa soluzione ad albero rispetta i bound di ciascun arco della rete G
Data una soluzione ad albero ricoprente, diremo che l’albero
relativo T è non degenere se tutti gli archi in T sono liberi, altrimenti l’albero si dice degenere
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Data una struttura ad albero ricoprente T,L,U E’ possibile calcolare un flusso ammissibile sugli archi di T Per semplicità, assumiamo che tutti gli archi abbiano upper bound infinito e lower bound 0 (gli archi non in T sono in L e quindi hanno flusso 0). Dato un arco, siano T1 e T2 i due sottoalberi ottenuti eliminando l’arco.
2
5
3
4
1
a(1)=10
a(2)=15 b(3)=5
b(4)=20 2
5
3
4
1
a(1)=10
a(2)=15 b(3)=5
b(4)=20
x53=10 a(i)−b(i)( )i∈T1
∑ + a(i)−b(i)( )i∈T2
∑ = 0
T1
T2
Si noti che deve essere:
a(5)=b(5)=0
a(5)=b(5)=0
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
u25=4
u12=3
In modo simile è possibile calcolare il flusso anche nel caso in cui la capacità massima degli archi sia finita (supponiamo che gli archi (1,2) e (2,5) siano in U)
2
5
3
4
1
a(1)=10
a(2)=15 b(3)=5
b(4)=20 2
5
3
4
1
a(1)=10
a(2)=15
b(3)=5
b(4)=20
x53=11
T1
T2
a(5)=b(5)=0
a(5)=b(5)=0
4 3
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Test di ottimalità per una soluzione ad albero ricoprente Definiamo per ogni arco di G un costo ridotto nel seguente modo: Dove π(i) è detto potenziale al nodo i Teorema La struttura di un albero ricoprente T,L,U è ottima per il problema di flusso a costo minimo se è ammissibile e se esiste una scelta dei potenziali dei nodi π(i) tale che:
Ajijicc ijij ∈∀+−= ),( )()(' ππ
UjicLjicTjic
ij
ij
ij
∈∀≤
∈∀≥
∈∀=
),( 0'),( 0'),( 0'
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
transito di nodo se 0domanda nodo se )()(
fornitore nodo se )()(
iiibiiiai
ππ−
Teorema La struttura di un albero ricoprente T,L,U è ottima per il problema di flusso a costo minimo se è ammissibile e se esiste una scelta dei potenziali dei nodi π(i) tale che:
UjicLjicTjic
ij
ij
ij
∈∀≤
∈∀≥
∈∀=
),( 0' .3),( 0' .2),( 0' .1
Dim Sia x* la soluzione associata alla struttura T,L,U e supponiamo che esistano dei potenziali ai nodi che soddisfano le condizioni 1-3. Si noti che minimizzare cij xij
( i , j )∈A∑ equivale a
minimizzare c 'ij xij( i , j )∈A∑ =
=min (cij −π (i)+π ( j))xij( i , j )∈A∑ =min cij xij +
( i , j )∈A∑ − π (i)xij
( i , j )∈δ ( i )+∑ + π (i)x ji
( j ,i )∈δ ( i )−∑
⎛
⎝⎜⎜
⎞
⎠⎟⎟
i∈V∑
costante
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
UjicLjicTjic
ij
ij
ij
∈∀≤
∈∀≥
∈∀=
),( 0' .3),( 0' .2),( 0' .1
Dim (segue) Dalle condizioni
Si ha
min c 'ij xij( i , j )∈A∑ =min c 'ij xij
( i , j )∈L∑ − | c 'ij | xij
( i , j )∈U∑
Consideriamo una qualsiasi soluzione ammissibile x per il problema. Dalla definizione di x* si ha e quindi:
c.d.d.
Ujiuxx
Ljilxx
ijijij
ijijij
∈∀=≤
∈∀=≥
),(
),( *
*
∑∑∈∈
≥Aji
ijijAji
ijij xcxc),(
*
),(∑∑∈∈
≥Aji
ijijAji
ijij xcxc),(
*
),(''
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Idea dell’algoritmo: • Il simplesso su reti è un algoritmo iterativo che passa da una struttura ad albero ricoprente ad un’altra, e termina quando viene individuata una struttura ottima. • Ad ogni iterazione l’algoritmo sostituisce un arco dell’albero ricoprente con un altro non appartenente all’albero:
• L’arco che entra a far parte dell’albero è un arco che viola la condizione di ottimalità. • Aggiungendo tale arco all’albero, si viene a formare un ciclo con costo unitario negativo (ciclo negativo). • Il flusso lungo il ciclo viene aumentato finché qualche arco non raggiunge la sua capacità minima o massima. • Uno di questi archi con capacità minima o massima è rimosso, producendo una nuova struttura ad albero.
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Data una struttura ad albero ricoprente T,L,U l’algoritmo calcola come prima cosa i potenziali ai nodi in modo da soddisfare la condizione Come? Si noti che aggiungere una costante k a tutti i potenziali non modifica i costi ridotti
Al nodo 1 può essere assegnato un potenziale 0 • I potenziali di tutti gli altri nodi sono calcolati in modo tale che
Tjic ij ∈∀= ),( 0'
])([])([)()(' kjkicjicc ijijij +++−=+−= ππππ
Tjijicc ijij ∈∀=+−= ),( 0)()(' ππ
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
2
5
3
4
1
2
4
5 1
Esempio: calcolo dei potenziali ai nodi a partire da una struttura ad albero ricoprente T,L,U, in modo tale che: Tjijicc ijij ∈∀=+−= ),( 0)()(' ππ
................3)3(0)3(21)3()5(2)5(0)5(02)5()1(
0)1(
53
15
−=⇒=++=+−
−=⇒=+−=+−
=
ππππ
ππππ
π
cc
Teorema Se nel problema di flusso a costo minimo tutti i costi degli archi sono interi allora esiste una soluzione ottima in cui i potenziali dei nodi π(i) sono tutti interi.
i j cij
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Algoritmo: simplesso su reti • calcola una struttura ad albero T,L,U ammissibile
• calcola il relativo potenziale ai nodi π ed il flusso x su ogni arco della rete
• controlla la condizione di ottimalità while (esiste un arco non in T che viola la condizione di ottimalità) begin
• seleziona un arco che viola la condizione di ottimalità, da far entrare nell’albero • determina l’arco da rimuovere dall’albero • aggiorna la struttura T,L,U e calcola il relativo potenziale ai nodi, π, ed il flusso x su ogni arco della rete • controlla la condizione di ottimalità
end
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Calcolo di una struttura ad albero ammissibile iniziale T,L,U (archi tutti con capacità minima 0) Supponiamo che fra ogni coppia di nodi esista un cammino diretto in cui ogni arco ha capacità infinita Data una rete G=(V,A) è sempre possibile rispettare questa condizione aggiungendo degli archi fittizi (1,j) e (j,1) per ogni nodo j di V\{1}, con capacità massima infinita e costo infinito (di fatto non saranno mai scelti in una soluzione ottima) Una struttura ad albero iniziale è ottenibile • aggiungendo in T l’arco (j,1) se il nodo j è un nodo fornitore (a(j)>0) o di transito (a(j)=b(j)=0) con un flusso pari ad a(j) • aggiungendo in T l’arco (1,j) se il nodo j è un nodo domanda (b(j)>0) con un flusso pari a b(j) • tutti gli altri archi sono inseriti nell’insieme L (a flusso nullo) • l’insieme U è vuoto
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Controllo dell’ottimalità della struttura ad albero T,L,U Dopo aver calcolato i potenziali ai nodi π(i) Possiamo controllare le condizioni di ottimalità:
UjicLjicTjic
ij
ij
ij
∈∀≤
∈∀≥
∈∀=
),( 0' .3),( 0' .2),( 0' .1
Se la struttura ad albero non rispetta queste condizioni, gli archi che possono essere scelti per entrare nell’albero sono: Diversi sono i criteri di selezione dell’arco entrante (pivot rule), e.g., Dantzig rule: seleziona l’arco con il massimo |c’ij|
0' con0' con
>∈
<∈
ij
ij
cU (i,j)cL (i,j)
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Calcolo dell’arco uscente dall’albero Sia (k,l) l’arco selezionato per entrare nell’albero Aggiungendo l’arco (k,l) all’albero si viene a creare esattamente un ciclo (pivot cycle) W Definiamo l’orientamento del ciclo W concorde con l’arco se (k,l) è in L e discorde se (k,l) è in U
2
3 4
6 5
7 8
(3,4)
(2,3)
(1,2)
(4,6)
(0,3)
(3,4)
(2,2)
(1,5) 9 1
(3,6) 1
i
j
(xij, uij)
(0,5) l k
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Calcolo dell’arco uscente dall’albero Il flusso del ciclo è aumentato (il flusso aumenta sugli archi concordi con l’orientamento del ciclo e diminuisce sugli archi discordi) fin quando il flusso su uno o più archi raggiunge il relativo lower o upper bound (blocking arcs). L’arco uscente è selezionato tra gli archi blocking. Diversi sono i criteri di selezione dell’arco uscente, e.g., seleziona il primo arco blocking incontrato scandendo la lista degli archi, oppure l’arco con costo max.
Ciclo di pivot archi blocking: (2,3), (7,5) e (6,4)
2
3 4
6 5
7 8
(4,4)
(1,3)
(0,2)
(3,6)
(1,3)
(4,4)
(1,2)
(2,5) 9 1
(3,6) 1
i
j
(xij, uij)
(1,5) l k
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Esempio a(1)=9, b(6)=9, tutti gli altri nodi sono di transito
-3
-2
-8
-5
0
(3,8)
(2,3)
(5,7)
(4,3)
(5,4)
i j
(cij, uij), lij=0
(2,2) (2,3)
-9
(4,6)
(3,5)
2
3
4
1
6 5
π(i) π(j)
1 6
4 5
i j xij
Siano dati T, L, U: calcolo dei potenziali e flussi
L={(2,3), (5,4)} U={(3,5), (4,6)}
3
2
3
4
1 6
5
................8)4(0)4(35)4()2(
2)3(0)3(02)3()1(3)2(0)2(03)2()1(
0)1(
24
13
12
−=⇒=++=+−
−=⇒=+−=+−
−=⇒=+−=+−
=
ππππ
ππππ
ππππ
π
ccc
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Calcolo arco entrante: c’35 =4+2-5=1>0, (3,5) in U , i l massimo incremento sul ciclo è 1, l’arco (2,5) diventa blocking ed esce (entra in U)
-3
-2
-8
-5
0 -9
2
3
4
1
6 5
3
π(i) π(j)
xij
1 6
4 5
i j
-3
-2
-8
-5
0 -9
2
3
4
1
6 5
π(i) π(j)
1 6
4 5
i j xij
3
3
02983)6()4('01524)5()2('
0855)4()5('0232)3()2('
4646
3535
5454
2323
>=−+=+−=
>=−+=+−=
>−+=+−=
>−+=+−=
ππ
ππ
ππ
ππ
cccccccc
L={(2,3), (5,4)} U={(3,5), (4,6)}
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Esempio Nuovo albero ricoprente
-3
-2
-8
-6
0 -10
2
3
4
1
7 5
π(i) π(j)
2 6
4 5
i j xij
2
L={(2,3), (5,4)} U={(2,5), (4,6)}
Calcolo dei potenziali: Tjijicc ijij ∈∀=+−= ),( 0)()(' ππ
10)6(0)6(64)6()5(6)5(0)5(24)5()3(
56
35
−=⇒=++=+−
−=⇒=++=+−
ππππ
ππππ
cc
Test di ottimalità:
01083)6()4('0632)5()2('0865)4()5('0232)3()2('
4646
2525
5454
2323
>−+=+−=
<−+=+−=
>−+=+−=
>−+=+−=
ππ
ππ
ππ
ππ
cccccccc
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
-3
-2
-8
-6
-10
2
3
4
1
7 5
2 π(i) π(j)
xij
5
6 4 5
i j
2
Nuovo arco entrante: c’46=3+8-10=1>0, il massimo incremento sul ciclo è 1, Gli archi (1,3) e (3,5) diventano blocking Scegliamo l’arco (3,5) che esce da T
(3,8)
(2,3)
(5,7)
(4,3)
(5,4)
i j
(cij, uij), lij=0
(2,2) (2,3)
(4,6)
(3,5) 2
3
4
1 6
5
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Esempio Nuovo albero ricoprente
-3
-2
-8
-7
0 -11
2
3
4
1
6 4
4
6 5 5
π(i) π(j)
i j xij
3
Calcolo dei potenziali: Tjijicc ijij ∈∀=+−= ),( 0)()(' ππ
7)5(011)5(4)4()2(11)6(0)6(83)6()4(8)4(0)4(35)4()2(
2)3(0)3(02)3()1(3)2(0)2(03)2()1(
0)1(
56
46
24
13
12
−=⇒=−−=+−
−=⇒=++=+−
−=⇒=++=+−
−=⇒=+−=+−
−=⇒=+−=+−
=
ππππ
ππππ
ππππ
ππππ
ππππ
π
ccccc
Test di ottimalità:
0875)4()5('0724)5()3('0732)5()2('0232)3()2('
5454
3535
2525
2323
>−+=+−=
<−+=+−=
<−+=+−=
>−+=+−=
ππ
ππ
ππ
ππ
cccccccc
L={(2,3), (5,4)} U={(2,5), (3,5)}
Un algoritmo per il problema del flusso su reti a costo minimo: il simplesso su reti
Trovata una soluzione ottima
top related