Modelli di flusso

annuncio pubblicitario
Modelli di flusso 2013
Modelli su rete (Grafi)
Vari tipi di problemi possono essere rappresentati graficamente per mezzo di grafi o reti. Un tipico
problema incontrato è il problema del trasporto.
Vedremo ora la struttura di base dei modelli su rete ed alcuni esempi di problemi di carattere economico e
finanziario che possono essere formulati per mezzo di tali modelli.
I modelli su rete sono dei particolari modelli di PL che possiedono caratteristiche più vantaggiose rispetto
ai modelli di PL generali:
• consentono di fornire un'interpretazione grafica al problema considerato
• possono essere risolti con algoritmi specifici ancora più efficienti di quelli disponibili per la PL
• sotto opportune ipotesi garantiscono l’interezza delle soluzioni ottime come nel caso dei problemi di
trasporto.
RETI O GRAFI
Intuitivamente, una rete o grafo è una struttura
caratterizzata da vertici (o nodi) ed archi (o spigoli)
come nell’esempio seguente.
ESEMPIO :
V = {1, 2, 3, 4, 5, 6}
A = {(1,2), (1,4), (1,6), (2,3), (3,6), (4,5), (5,3), (5,6)}
Dal punto di vista matematico una rete o grafo è individuata da una coppia di insiemi (V,A), ove
V={insieme dei vertici o nodi} ed A={insieme degli archi}.
Supponendo che i nodi siano numerati da 1 ad n, ovvero V={1,...,n}, la coppia (orientata) (i,j) indicherà
l'arco (orientato) che collega il nodo i al nodo j. Quando si parla di arco in generale si definisce una
relazione tra una coppia di nodi, ad esempio, nella figura sopra l’arco (4,5) evidenzia come il nodo 4 sia in
relazione col nodo 5, l’orientamento indica però che tale relazione non è biunivoca ovvero 4 è in relazione
a 5 ma non viceversa.
Un esempio intuitivo di grafo è dato dalle reti di trasporto urbano dove i nodi rappresentano gli incroci
mentre gli archi sono i tratti stradali tra due incroci successivi. L’arco (4,5) specifica allora che è possibile
andare dall’incrocio 4 all’incrocio 5 ma non viceversa (siamo in presenza di una strada a senso unico). In
generale non tutte le coppie di nodi saranno collegate da archi. L’insieme A può essere interpretato come
un sottoinsieme del prodotto cartesiano VxV (= l'insieme di tutte le possibili coppie (i,j) ).
Quando invece non si ha interesse a specificare l’orientamento del collegamento tra due nodi allora si
parla di spigoli del grafo ed uno spigolo tra due nodi (i,j) (indicato semplicemente con una linea tra i e j vedi
figura) rappresenta ora una relazione biunivoca tra i e j.
Modelli di flusso 2013
i
j
FLUSSI
Nei modelli su rete si associano a tutti gli agli archi (i,j) delle variabili decisionali xij che possono essere
interpretate fisicamente come la quantità di flusso che si intende inviare dal vertice i al vertice j (se xij∈R),
oppure se debba esserci un legame (flusso) fra il vertice i ed il vertice j (se xij = 0 o 1) (flusso booleano).
Ad esempio, nei problemi economici o finanziari i nodi possono rappresentare periodi temporali o siti e le
variabili xij possono essere interpretate come rappresentanti un "flusso" (monetario, di materiali, ecc.) fra
un nodo ed un altro. Nel problema del trasporto xij è la quantità da trasportare dal deposito i al mercato j o
più in generale da un nodo i ad un nodo j attraverso l’arco (i,j). Ovviamente, a seconda dei problemi,
l’interpretazione delle variabili xij sarà completamente diversa, tuttavia per la formulazione generale dei
modelli conviene immaginarle sempre come “flussi” di qualche tipo (beni, flussi monetari etc…).
CAPACITA' E COSTI
Oltre alle variabili decisionali xij , agli archi (i,j) vengono spesso associate:
•
•
limitazioni o capacità massime uij e/o minime lij per i flussi che li possono percorrere;
costi (o profitti) unitari cij di percorrenza per i flussi xij.
FORNITURE E CESSIONI
Si può inoltre supporre che nei nodi vi siano forniture o cessioni di flusso indicate da un valore bi negativo
(fornitura o aumento di flusso) o positivo (cessione o diminuzione di flusso). (Si noti che i segni sono
puramente convenzionali ed in alcuni testi viene adottata la convenzione inversa).
POZZI E SORGENTI
I vertici aventi solo archi uscenti (come il vertice 1 nell'esempio precedente) vengono detti sorgenti
(source), mentre quelli aventi solo archi entranti (come il vertice 6 nell'esempio precedente) vengono
detti pozzi (sink).
CAMMINI
Dato un grafo orientato, dove cioè sono specificati l’orientamento di ciascun arco, un cammino è una
sequenza (orientata) di nodi e di archi che generalmente viene indicata con {v1, (v1, v2), v2, (v2, v3), v3,…, (vn-1,
vn), vn), dove v1 è il nodo iniziale del cammino e vn il nodo finale del cammino.
Nell'esempio precedente la sequenza (1, (1,4), 4, (4,5), 5, (5,6)) è un cammino da 1 a 6 passante per i
nodi 4 e 5.
PROBLEMA DEL CAMMINO MINIMO (MASSIMO)
Interpretando i costi cij come distanze fra i vertici (o nodi) i e j, trovare il cammino di lunghezza minima
(massima) fra due vertici assegnati v1, vn.
Si noti che si può facilmente trasformare un problema di cammino minimo in un problema di cammino
massimo (e viceversa) cambiando il segno ai coefficienti cij (infatti in generale vale la proprietà: max f(x) = min - f(x)
Modelli di flusso 2013
PROBLEMA DEL FLUSSO MASSIMO
Supponendo che in un grafo:
• vi sia una sola sorgente ed un solo pozzo;
• in ogni vertice diverso dalla sorgente e dal pozzo la quantità di flusso entrante coincida con quello
uscente (ossia bi = 0) (bilanciamento del flusso al nodo i);
• vi siano delle capacità massime sugli archi;
trovare la quantità massima di flusso che si può inviare dalla sorgente al pozzo.
PROBLEMA DEL FLUSSO DI COSTO MINIMO
Il problema del flusso a costo minimo è un problema fondamentale della Ricerca Operativa e comprende
diversi problemi come ad esempio i due precedentemente introdotti che altro non sono che casi
particolari del problema del flusso a costo minimo. Il problema può essere semplicemente formulato nel
seguente modo: Dato un grafo od una rete di trasporto, bisogna determinare l’insieme dei percorsi per
trasportare al minimo costo un bene da dei punti di offerta localizzati sui nodi della rete a dei punti (nodi)
di domanda in modo tale da soddisfare tutta la richiesta del bene in questione.
Sulla rete di trasporto, indipendentemente dalla presenza o meno di sorgenti e pozzi si suppone di
assegnare ad ogni arco (i,j) un costo cij (supposto non negativo) ed eventualmente delle capacità minime
e/o massime lij ed uij. I nodi di offerta saranno i nodi in cui supponiamo ci siano delle forniture del bene
mentre i nodi di domanda sono i nodi in cui si individuano le cessioni o richieste del bene. Gli altri nodi
sono semplicemente nodi di passaggio del flusso (bene) caratterizzati dall’avere bi = 0.
Caratteristica fondamentale di questo modello, come nel caso del flusso massimo, è la richiesta di
bilanciamento dei flussi in ogni nodo, ovvero si suppone che in ciascun nodo il flusso complessivo in
entrata sia uguale al flusso complessivo in uscita comprendendo anche le richieste o forniture per ogni
nodo.
L’obiettivo di questi modelli è quello di minimizzare il costo totale
∑
cij xij
(i , j )∈A
dei flussi sulla rete
rispettando i vincoli di bilanciamento dei flussi in ogni nodo ed i vincoli di capacità sugli archi. Una
assunzione che generalmente viene fatta è che, analogamente al modello del trasporto, l’offerta totale sia
uguale alla domanda totale. Tale assunzione, considerando le cessioni e le forniture di flusso ai nodi ± bi, si
può esprimere:
∑ bi = 0
i∈N
MODELLO RELATIVO AL PROBLEMA DEL FLUSSO DI COSTO MINIMO
Per esprimere in modo sintetico la formulazione del problema di flusso di costo minimo come problema di
programmazione lineare conviene introdurre delle notazioni aggiuntive. Per ogni nodo i della rete
poniamo :
P(i) = {k : (k, i) ∈ A} (= insieme dei nodi predecessori di i)
S(i) = {k : (i, k) ∈ A} (= insieme dei nodi successori di i)
Allora in ogni nodo i deve valere la seguente equazione di bilancio del flusso:
∑
k∈P (i )
xki −
∑
k∈S (i )
xik =
bi
xki
i
xik
Modelli di flusso 2013
bi
Inoltre su ogni arco (i,j) appartenente all’insieme A degli archi del grafo vi possono essere dei vincoli di
capacità inferiore e/o superiore:
lij ≤ xij ≤ uij
Dunque il problema del flusso di costo minimo può essere formulato come segue:
min ∑ cij xij

( i , j )∈ A

bi
 s.t.
∑P (i ) xki − k∈∑S (i ) x=
ik
∈
k


lij ≤ xij ≤ uij

∀i ∈ V
∀(i, j ) ∈ A
Problemi di flusso e trasporto
Il problema del trasporto si può formulare come un modello di flusso a costo minimo.
Supponiamo di avere dei depositi indicati con 1,2,3 e dei mercati indicati con 4,5,6,7.
Consideriamo una rete con dei nodi N={1,2,3,4,5,6,7} ed archi solamente fra coppie di nodi (i,j) con i=1,2,3
e j=4,5,6,7 . Nei depositi 1,2,3 si può immaginare che ci sia una fornitura di flusso (merce) pari alla
quantità di merce ai in essi effettivamente disponibile ma considerata con segno negativo -ai (fornitura).
Analogamente, nei mercati 4,5,6,7 si supporrà che ci sia una cessione di flusso di entità pari alle domande
bj dei mercati medesimi.
Agli archi fra depositi e mercati viene associato un costo unitario cij, interpretato come costo unitario di
trasporto.
Allora il classico problema di trasporto equilibrato può essere immaginato come un problema di flusso di
costo minimo che verifica le seguenti condizioni :
Convenzione :
•
•
•
•
Il flusso entrante lo indichiamo con segno negativo;
Il flusso uscente lo indichiamo con segno positivo.
Nei nodi (1,2,3) c'è una fornitura di flusso -ai, nei nodi (4,5,6,7) c'è una cessione di flusso bj ;
In ogni nodo j la somma delle quantità di flusso entrante (gli xij) meno la somma delle quantità
di flusso uscente (gli xjk) coincide con la fornitura o cessione di flusso in tale nodo:
∑ xij b=
=
j 4,5, 6, 7
j
 i

−a j j =
1, 2,3
−∑ x jk =
 k
Modelli di flusso 2013
Si osservi che risulta facile estendere il modello del trasporto al caso in cui ci siano dei nodi
intermedi j tra i depositi ed i mercati. In tal caso si deve richiedere che in tali nodi tutto quello che entra
debba anche uscire, ovvero che la somma algebrica dei flussi entranti e dei flussi uscenti sia zero :
∑x
i
ij
− ∑ x jk = 0
k
OSSERVAZIONI SUI MODELLI DI FLUSSO
Sorgenti e pozzi multipli
Nel problema di flusso massimo abbiamo supposto che vi sia un'unica sorgente ed un unico pozzo.
Quest'ipotesi può essere facilmente eliminata.
Infatti se vi sono più sorgenti, ad esempio S1, S2, S3, si può trasformare il problema in uno equivalente
aggiungendo una "supersorgente" fittizia S0 collegata alle precedenti con archi di capacità illimitata, come
mostrato nella seguente figura:
In modo analogo, se vi sono più pozzi, questi possono essere tutti collegati ad un "superpozzo" mediante
archi di capacità illimitata ottenendo un problema equivalente con un unico pozzo.
Modelli di flusso 2013
Capacità sui nodi
Nei problemi su rete considerati abbiamo supposto che vi siano dei vincoli di capacità solamente sugli
archi. In realtà, si possono facilmente aggiungere anche dei vincoli di capacità sui nodi trasformando,
anche in questo caso, il problema in uno equivalente.
Se si vuole imporre che il flusso passante per il nodo i non superi una capacità massima Ui basta
scomporre il nodo i in due nodi distinti i' ed i" collegati fra loro con un arco (i' , i") di capacità Ui come
indicato nella figura seguente:
Rappresentazione grafica di forniture e cessioni
Per rappresentare graficamente il fatto che nel nodo i vi sia una richiesta o fornitura di flusso bi si può
disegnare un arco rispettivamente entrante o uscente da tale nodo con il valore di bi indicato a lato.
Esempio:
Fornitura di 5 unità di flusso (bi = -5)
Cessione di 7 unità di flusso (bi = 7)
In forma compatta, il modello di trasporto, ripreso in precedenza, così come il modello più
generale di flusso a costo minimo, possono essere descritti in forma matriciale analogamente a
qualunque altro problema di PL nel seguente modo:
min c T x
Ax ≥ d
x≥0
Dove, nel caso specifico di un problema di trasporto cT è il vettore riga dei costi unitari del
trasporto, x è il vettore colonna delle variabili decisionali, A è una matrice di dimensione (n+m) ×
(nm) con (n+m) il totale dei vincoli sulle disponibilità dei depositi (n vincoli) più i vincoli sulle
richieste dei mercati (m vincoli), nm è il totale delle variabili del modello e d è il vettore colonna
avente (n+m) elementi, ovvero contenente le n disponibilità ai ∀ i = 1,2,…,n, e le m richieste bj ∀ j
= 1,2,…,m. Si noti che è sempre possibile scrivere il vincolo compatto Ax ≥ d con il segno di
maggiore od uguale dato che un vincolo di “≤” può essere sempre trasformato in uno di “≥”
moltiplicando per –1 entrambi i membri della disequazione di “≤”.
Modelli di flusso 2013
Nella realtà, andrebbe inserito un ulteriore vincolo per specificare che le singole quantità da trasportare
devono essere intere, non avendo senso trasportare ad esempio un televisore e mezzo. Se però le
disponibilità ai
∀i =1, 2,.., n , e le richieste b j
∀j =1, 2,.., m sono intere allora la soluzione sarà
sicuramente intera dato che la matrice dei vincoli A è una matrice totalmente unimodulare ovvero i
determinanti di tutte le sottomatrici quadrate di A hanno valore –1,0,1.
La totale unimodularità della matrice A è una caratteristica dei modelli di flusso su rete, ed in particolare
del modello di flusso a costo minimo, in cui la matrice A rappresenta la matrice nodi-archi del grafo
sottostante. Ogniqualvolta, in un problema di PL, la matrice A dei vincoli risulta essere totalmente
unimodulare, se i termini noti del sistema dei vincoli sono interi, allora la soluzione del relativo problema
sarà sicuramente intera. Condizione necessaria affinché una matrice A sia totalmente unimodulare è che
abbia tutti i suoi elementi uguali a 0,-1 o 1. Non esiste una condizione che sia necessaria e sufficiente per
stabilire se una matrice A sia totalmente unimodulare. Inoltre, verificare la totale unimodularità di una
matrice non è affatto semplice!
Determinazione dinamica dei lotti ( Dynamic Lot Sizing )
Si tratta di un problema di produzione multiperiodale dove, oltre a decidere quanto produrre in ogni
periodo in modo tale da soddisfare la domanda di ogni periodo, bisogna anche decidere quanta merce
prodotta può/deve essere immagazzinata tra due periodi successivi.
Supponiamo, dunque, di voler soddisfare la domanda prevista dt di una certa merce in K periodi futuri ( t =
1,...,K ). Per soddisfare queste domande si può decidere di produrre in ogni periodo tutta la merce
richiesta, oppure si può decidere di produrla in quantità superiore in un periodo in modo tale da
conservare l’eccesso di merce in magazzino da un periodo all'altro per soddisfare la domanda nel periodo
successivo. La produzione deve ovviamente essere effettuata al minimo costo, supponendo che ct, sia il
costo di produzione al tempo t = 1,...,K, e ct,t+1, il costo di immagazzinamento tra il periodo t ed il periodo
t+1.
Questo ed altri problemi simili possono essere risolti non solo formulandoli come problemi di produzione,
ma anche come problema di flusso di costo minimo su una rete. Infatti, si consideri la rete nella figura a
seguito. Col nodo 0 si è indicato il momento della produzione in (all’inizio di) ogni periodo, ed il
corrispondente arco (0,t), t = 1,...,K, rappresenta graficamente il processo di produzione della merce nel
periodo t. Ogni arco (t,t+1), t = 1,...,K-1, rappresenta invece l’immagazzinamento della merce tra due
periodi successivi. Con - dt, t = 1,...,K, si indica la domanda prevista in ogni periodo t, e nel nodo 0 si ipotizza
una fornitura di flusso pari alla somma di tutte le domande.
Modelli di flusso 2013
k
0
Σd
i
i=1
x2
x1
1
-d1
I1
xk
xk-1
2
I2
k-1
-dk-1
-d2
Ik-1
k
-dk
Supponiamo inoltre che ci siano dei vincoli di capacità sugli archi che rappresentano, ad esempio, la
massima quantità di merce che può essere o prodotta o immagazzinata in un dato periodo, il problema
potrà quindi essere formulato come problema di flusso di costo minimo.
Consideriamo ora la possibilità di non riuscire a soddisfare tutte le domande in tutti i periodi.
Abbiamo il cosiddetto schema dei backorders (ordini evasi in ritardo) secondo il quale prevediamo ad
esempio di produrre nel periodo 2 per soddisfare la domanda del periodo 1.
Il consumatore 1 non sarà quindi molto contento e vorrà essere risarcito con una penale. Quindi ci saranno
dei costi per "mandare" la merce da un periodo successivo ad un periodo precedente (Bt+1,t).
Anche in questo caso bisogna determinare il flusso di costo minimo della merce che soddisfi tutte le
domande. Supponendo che ci siano capacità superiori e/o inferiori sugli archi, potremo formulare il
problema attraverso un modello di flusso di costo minimo.
k
0
Σd
i
i=1
x2
x1
I1
1
2
B1
-d1
-d2
xk
xk-1
I2
B2
k-1
-dk-1
Ik-1
Bk-1
k
-dk
Una possibile soluzione può avere l'aspetto riportato nella figura successiva: produciamo in 3 per
soddisfare la domanda di 3 e attraverso il backorder e lo stoccaggio le domande del periodo 2 e 4
rispettivamente. Produciamo nel periodo 5 per soddisfare i periodi 5-6-7 e infine produciamo nel periodo 8
per soddisfare la domanda relativa al periodo 8.
Modelli di flusso 2013
MODELLO RELATIVO AL PROBLEMA DEL CAMMINO MINIMO
Il problema del cammino minimo da un nodo u ad un nodo v può essere formulato di nuovo come un
problema di flusso di costo minimo in cui vi è la fornitura (offerta) di un’unità di flusso in u (bu = -1), la
cessione (domanda) di un’unità di flusso in v (bv = 1) ed il bilanciamento tra flussi entranti ed uscenti
(senza cessioni nè forniture) in tutti gli altri nodi (bi = 0). I costi associati agli archi sono anche detti costi
generalizzati in quanto possono rappresentare il costo “monetario” per attraversare una data strada
rappresentata dall’arco (i,j) o più semplicemente rappresentano la lunghezza di quel tratto di strada tra due
nodi/incrocio o una combinazione dei due. Si ottiene quindi il seguente modello:
min ∑ cij xij

( i , j )∈A

∑ xik 0 per ogni i ∈V , i ≠ u, v
 ∑ xki − =
k∈S (i )
 k∈P (i )

−1
− ∑ xuk =
 k∈S (u )

xkv = 1
 k∈∑
 P (v )
per ogni (i, j ) ∈ A
lij ≤ xij ≤ uij
La soluzione ottima del problema così formulato, dovendo essere intera per le proprietà dei modelli su
rete, potrà avere solo valori 0 o 1 e fornirà un cammino minimo tra u e v mediante la seguente
interpretazione:
xij = 1
⇒
L’arco (i,j) appartiene al cammino minimo
xij = 0
⇒
L’arco (i,j) non appartiene al cammino minimo
Modelli di flusso 2013
Si osservi che per questo tipo di problemi esistono degli algoritmi molto più semplici ed efficienti di quelli
basati sulla Programmazione Lineare o anche sui modelli di flusso di costo minimo. Si tratta dei cosiddetti
algoritmi su grafi (tra cui, ad esempio, l'algoritmo di Dijkstra che richiede circa n2 operazioni).
MODELLO RELATIVO AL PROBLEMA DEL FLUSSO MASSIMO
Il problema del flusso massimo può essere descritto sinteticamente nel modo seguente: Supponiamo di
avere un grafo in cui:
• vi sia una sola sorgente ed un solo pozzo;
• in ogni vertice diverso dalla sorgente e dal pozzo la quantità di flusso entrante coincida con quello
uscente (ossia bi = 0) (bilanciamento del flusso al nodo i);
• vi siano solamente delle capacità massime sugli archi;
trovare la quantità massima di flusso che si può inviare dalla sorgente al pozzo.
Anche il problema del flusso massimo può essere formulato come problema di flusso di costo minimo
mediante un opportuno artificio.
Si aggiunge al grafo originario un arco fittizio di ritorno dal pozzo alla sorgente senza vincoli di capacità (o
con capacità molto grande) e si assegna costo zero a tutti gli archi della rete eccetto quello fittizio cui viene
assegnato un costo negativo qualsiasi (generalmente -1).
In questo modo il flusso di costo minimo risulterà essere quello in cui viene inviata la maggior quantità
possibile di flusso dal pozzo alla sorgente attraverso l’arco fittizio e questa quantità corrisponde alla
massima quantità di flusso che è possibile inviare dalla sorgente al pozzo attraverso gli archi originari del
problema compatibilmente con i vincoli di capacità. Dunque i valori delle variabili xij associate agli archi (i,j)
non fittizi forniranno la soluzione del problema di flusso massimo originario.
2
Sorgente
4
1
Pozzo
6
3
5
Arco fittizio
Modelli di flusso 2013
La formulazione del modello associato a questo grafo è la seguente:

min − x61 (= - max x61)

 ∑ xki − ∑ xik = 0 ∀ i ∈ N
k∈S (i )
 k∈P (i )
 ≤ x ≤ u
∀ (i, j) ∈ A
ij
ij
 ij
Scarica