Progetto di Reti di Telecomunicazione Modelli in Programmazione Lineare
Problemi di flusso
Flusso di costo minimo
E dato un grafo direzionato G = (N, A). Ad ogni arco (i, j) ∈ A `` e associato il costo cij di instradare un’unit`a di flusso sull’arco stesso. Inoltre, ad ogni arco (i, j) ∈ A sono associate una quantit`a di flusso minima lij e massima uij che pu`o transitare sull’arco stesso. Ad ogni nodo i ∈ V `e associato un bilancio di flusso bi: se bi > 0 il nodo offre del flusso alla rete ed
`
e detto nodo sorgente, se bi < 0 il nodo richiede flusso dalla rete ed `e detto nodo pozzo, infine se bi = 0 il nodo non richiede ne offre flusso ed `e detto nodo di transito. Il problema richiede di inviare flusso dai nodi sorgente ai nodi pozzo, in modo che il bilancio di ciascun nodo a costo minimo, rispettando i limiti inferiori e superiori di flusso su ogni arco.
Modello Variabili:
• xij ∀(i, j) ∈ A : flusso sull’arco (i, j) ∈ A Funzione obiettivo:
min X
(i,j)∈A
cijxij Vincoli:
• bilanciamento ai nodi:
X
(i,j)∈A
xij + X
(j,i)∈A
xji = bi, ∀i ∈ V
• capacit`a degli archi:
xij ≤ uij, ∀(i, j) ∈ A
• limite inferiore di flusso sugli archi:
xij ≥ lij, ∀(i, j) ∈ A Dominio delle variabili:
• xij ≥ 0
Variante
Viene modificato il vincolo sul flusso inferiore richiedendo che se l’arco (i, j) viene usato, il flusso instradato sia almeno pari a lij. A differenza che nel caso precedente, per`o, viene lasciata la possibilit`a di non usare l’arco.
E necessario aggiungere una variabile binaria per formulare il problema.`
• yij = 1 se sull’arco (i, j) ∈ A passa un flusso non nullo, cio`e se l’arco `e usato.
La variabile yij deve essere collegata alla variabile di flusso con un vincolo di big M, che fissa ad 1 il valore di yij se la variabile xij`e strettamente positiva:
xij ≤ uijyij, ∀(i, j) ∈ A.
Il nuovo vincolo pu`o sostituire il vincolo di capacit`a dell’arco.
Il vincolo sul limite inferiore del flusso diventa:
xij ≥ lijyij, ∀(i, j) ∈ A
Cammino minimo
Il problema di trovare, dato un grafo G = (V, A), con costi cij sugli archi, e un nodo sorgente s, il percorso di costo minimo tra s e tutti gli altri nodi pu`o essere formulato come un problema di flusso di costo minimo.
Ogni percorso `e visto come un flusso unitario che deve essere inviato dalla sorgente al nodo destinazione. Il problema pu`o essere formulato come un flusso di costo minimo con:
bi =
(|V | − 1 se i `e il nodo sorgente,
−1 altrimenti.
Flusso multiprodotto
E dato un grafo orientato con costi c` ij sugli archi e capacit`a degli archi uij. Sulla rete sono presenti K domande di traffico, ciascuna caratterizzata da un nodo sorgente sk, un nodo destinazione tk e una quantit`a di traffico che deve essere instradata dk. Non ci sono due domande che abbiano la stessa coppia sorgente-destinazione. Si richiede di instradare tutte le domande a costo minimo, rispettando le capacit`a degli archi. (Problema di routing)
Modello con flussi sugli archi Variabili (definiscono i flussi sugli archi):
• xkij ∀(i, j) ∈ A : flusso sull’arco (i, j) ∈ A relativo alla domanda k Funzione obiettivo:
minX
k∈K
X
(i,j)∈A
cijxkij Vincoli:
• bilanciamento ai nodi:
X
(i,j)∈A
xkij+ X
(j,i)∈A
xkji =
dk se i = sk,
−dk se i = tk 0 se i 6= sk, tk,
∀i ∈ V, ∀k ∈ K
• capacit`a degli archi:
X
k∈K
xkij ≤ uij, ∀(i, j) ∈ A
Dominio delle variabili:
• xkij ≥ 0
Dimensione della formulazione:
• Numero di variabili : |A||K|
• Numero di vincoli : |N ||K| + |A|
Modello con flussi sui cammini
La formulazione si basa sul flusso associato a ciascun cammino invece che al flusso sugli archi. Indichiamo con P l’insieme di tutti i possibili cammini che collegano nodi del grafo, con Pki cammini che collegano gli estremi della domanda k e con Pij i cammini che passano per l’arco (i, j). Il costo di un cammino `e definito come cp =P
(i,j)∈pcij. Variabili (definiscono i flussi sui cammini):
• xp ∀p ∈ P : flusso sul cammino p ∈ P Funzione obiettivo:
minX
p∈P
cpxp Vincoli:
• instradamento delle domande:
X
p∈Pk
xp = dk ∀k ∈ K
• capacit`a degli archi:
X
p∈Pij
xp ≤ uij, ∀(i, j) ∈ A
Dominio delle variabili:
• xp ≥ 0
• Numero di variabili : esponenziale
• Numero di vincoli : |K| + |A|