...

TSP - Università di Bologna

by user

on
Category: Documents
31

views

Report

Comments

Transcript

TSP - Università di Bologna
Problemi di routing di veicoli:
2 – Modelli e rilassamenti per il TSP
Daniele Vigo
DEIS, Università di Bologna
[email protected]
Problema del Commesso Viaggiatore (TSP)
• caso particolare:
• 1 deposito
• 1 veicolo di capacità illimitata
• minimizzare il costo per servire tutti i clienti
Circuito a costo minimo
passante per tutti i vertici
Circuito Hamiltoniano
D. Vigo
TSP−Modelli.2
1
TSP
• Soluzione ≡ permutazione di {1, …, n}
• se G completo ⇒ (n−1)! soluzioni
• 2 casi per la matrice dei costi:
• simmetrica:
• asimmetrica:
cij = cji ∀i, j∈V Î STSP o TSP
cij ≠ cji ∀i, j∈V Î ATSP
D. Vigo
TSP−Modelli.3
TSP simmetrico (STSP)
Grafo non orientato G(V, E):
V={1,…,n}
vertici
|V|=n
lati (edges) |E|=m
E={e1,…,em}
ce ≥ 0 costo lato e
α(e)
S
D. Vigo
e
β(e)
δ (S) = insieme Lati incidenti in S
σ (S) = insieme Lati interni ad S
TSP−Modelli.4
2
Circuito Hamiltoniano
• Cammino elementare chiuso che visita tutti i
vertici del grafo
• ogni vertice deve avere grado 2
• ogni vertice deve essere raggiunto
• ogni “taglio” deve essere attraversato almeno 2 volte
S
D. Vigo
TSP−Modelli.5
Modello matematico
• Variabili decisionali:
soluzione = sottoinsieme di archi
per ogni lato e∈E
⎧1 se lato e in soluzione
xe = ⎨
⎩0 altrimenti
• Funzione obiettivo:
Minimizzare il costo degli archi scelti
z = min
∑ ce xe
e∈ E
D. Vigo
(1)
TSP−Modelli.6
3
Vincoli di grado
• Ogni vertice deve avere due archi incidenti
∑xe = 2
e∈δ (i )
∀ i ∈V
(2)
i
δ(i)
D. Vigo
TSP−Modelli.7
Soluzione non ammissibile
Subtour isolato
D. Vigo
TSP−Modelli.8
4
Vincoli di connessione 1
• Vincoli di taglio (CUT):
Ogni taglio deve essere attraversato almeno 2 volte
∑ xe ≥ 2
e∈δ ( S )
∀ S ⊂V, S ≥ 2
(3)
S
D. Vigo
TSP−Modelli.9
Vincoli di connessione 2
• Vincoli di Subtour Elimination (SEC):
il numero di archi interni ad un sottoinsieme S
selezionati deve essere minore di |S|
∑ xe ≤ S − 1
e∈σ ( S )
∀ S ⊂V, S ≥ 2
(4)
S
D. Vigo
TSP−Modelli.10
5
Equivalenza CUT e SEC
• I vincoli di tipo CUT e SEC sono equivalenti
∑ xe ≥ 2
e∈δ ( S )
∀ S ⊂V, S ≥ 2
⎛
∑ xe = ∑ ⎜⎜ ∑ xe −
i∈S ⎝ e∈δ (i )
e∈δ ( S )
2S − 2
∑ xe ≥ 2
e∈σ ( S )
∑ xe ≤ S − 1
e∈σ ( S )
=2
⎞
⎟≥2
⎟
e∈(δ (i )∩σ ( S ) ) ⎠
∑ xe
∀ S ⊂V, S ≥ 2
∀ S ⊂V, S ≥ 2
D. Vigo
TSP−Modelli.11
Modello STSP
(STSP1)
z = min ∑ ce xe
(1)
e∈E
∑ xe = 2
∀ i ∈V
(2)
∀ S ⊂V, S ≥ 2
(3)
e∈δ (i )
∑ xe ≥ 2
e∈δ ( S )
0 ≤ xe ≤ 1 ∀ e ∈ E
(5’)
∀e∈ E
(5’’)
xe intera
D. Vigo
TSP−Modelli.12
6
Asymmetric TSP (ATSP)
• Variabili decisionali:
per ogni arco (i,j)∈A
⎧1 se arco (i, j ) in soluzione
xij = ⎨
⎩0 altrimenti
• Funzione obiettivo:
assumiamo grafo completo: (i,j)∈A ∀ i,j =1,…,n
z = min
n
n
∑ ∑ c ij x ij
(1)
i =1 j =1
D. Vigo
TSP−Modelli.13
Vincoli di grado
• Ogni vertice deve avere un arco entrante ed uno
uscente
n
∑xij = 1
j=1
i
n
∑xij = 1
i=1
D. Vigo
∀ i = 1,K, n
(2’)
∀ j = 1,K, n
(2’’)
TSP−Modelli.14
7
Vincoli CUT
• Vincoli di taglio (CUT):
Ogni taglio (orientato) deve essere attraversato
almeno 1 volta
∑ ∑ xij ≥1
∀ S ⊂V, S ≥ 2
(3’)
∑ ∑ xij ≥1
∀ S ⊂V, S ≥ 2
(3’’)
i∈S j∉S
i∉S j∈S
Basta imporre una sola
famiglia perchè (3’) per S
equivale a (3’’) per V\S
S
D. Vigo
TSP−Modelli.15
Vincoli SEC
• Vincoli di Subtour Elimination (SEC):
il numero di archi interni ad un sottoinsieme S
selezionati deve essere minore di |S|
∑∑ xij ≤ S − 1
∀ S ⊂V, S ≥ 2
(4)
i∈S j∈S
S
D. Vigo
TSP−Modelli.16
8
Modello ATSP
n
n
z = min ∑∑ cij xij
(ATSP1)
n
(1)
i =1 j =1
∑xij = 1
∀ i = 1,K, n
(2’)
∑xij = 1
∀ j = 1,K, n
(2’’)
∀ S ⊂V, S ≥ 2
(3’)
j=1
n
i=1
∑ ∑ xij ≥1
i∈S j∉S
0 ≤ xij ≤ 1 ∀ i, j = 1,K, n
xij intera
∀ i, j = 1,K, n
D. Vigo
(5’)
(5’’)
TSP−Modelli.17
Varianti
• I grafi non completi possono essere trattati
ponendo il costo degli archi/lati non esistenti a +∞
• Il modello ATSP può essere facilmente adattato al
caso di grafi sparsi impiegando sommatorie estese
ai soli archi esistenti: (i,j)∈A e j∈Γ+(i)
• Il modello STSP può anche essere scritto con la
doppia sommatoria sui vertici ma considerando
solo le coppie di indici in cui i < j
(STSP' )
n
z = min ∑
n
∑ cij xij
i =1 j =i +1
D. Vigo
TSP−Modelli.18
9
Inconvenienti
• I vincoli CUT o SEC sono in numero esponenziale
Infatti S={S⊂V: |S| ≥ 2} se |V| = n allora |S|=O(2n)
• Modello alternativo (Miller, Tucker, Zemlin, 1960)
• Richiede un numero di vincoli polinomiale
i
ui variabile continua
(libera) che rappresenta
la posizione del vertice i
nel circuito
j
D. Vigo
TSP−Modelli.19
Subtour Elimination di MTZ
Se xij = 1 Î uj ≥ ui + 1
Se xij = 0 Î nessuna relazione tra uj ed ui
Ossia
(uj − ui − 1) xij = 0 Î non lineare !
Si può linearizzare in
(6)
uj − ui − 1 + (1 − xij) n ≥ 0 ∀ (i,j) ∈A, i,j ≠ 1
• Se xij = 1 Î uj ≥ ui + 1
• Se xij = 0 Î uj − ui ≥ − n + 1 Î sempre verificato!
•
•
•
•
i
ui
D. Vigo
j
uj
TSP−Modelli.20
10
Subtour Elimination di MTZ
• Data E' soluzione ammissibile (tour) Î
∃ ui ∀i∈V \{1}, tali che (6) siano soddisfatti
• Es. (1,4,5,2,3) Î u1=0, u4=1, u5=2, u2=3, u3=4
• Se consideriamo una soluzione inammissibile
i
j
k
1
Non esistono ui, uj , uk che
soddisfino simultaneamente :
uj − ui − 1 ≥ 0
uk − uj − 1 ≥ 0
ui − uk − 1 ≥ 0
D. Vigo
TSP−Modelli.21
Modello ATSP con MTZ
(ATSP2)
n
n
z = min ∑∑ cij xij
∑xij = 1
j=1
n
n
(1)
i =1 j =1
∀ i = 1,K, n
(2’)
(2’’)
∑xij = 1 ∀ j = 1,K, n
i=1
u j − ui − 1 + (1 − xij ) n ≥ 0 ∀(i, j ) ∈ A; i, j ≠ 1 (6)
0 ≤ xij ≤ 1 ∀ i, j = 1,K, n
D. Vigo
xij intera
∀ i, j = 1,K, n
ui ≥ 0
∀ i = 1,K, n
(5’)
(5’’)
(7)
TSP−Modelli.22
11
Modello STSP con MTZ
(STSP2 )
z = min ∑ ce xe
(1)
e∈E
∑xe = 2
e∈δ (i )
∀ i ∈V
(2)
u β (e ) − uα (e ) − 1 + (1 − xe ) n ≥ 0 ∀e ∈ E ;α (e ), β (e ) ≠ 1 (6)
0 ≤ xe ≤ 1 ∀ e ∈ E
(5’)
xe intera
∀e∈ E
ui ≥ 0
∀ i = 1,..., n
(5’’)
(7)
D. Vigo
TSP−Modelli.23
Confronto tra modelli
Variabili
ATSP1
ATSP2
n2
n2 + n
Vincoli n+ n2 + 2n n2 + n (+n)
• Per STP1 e 2 considerazioni analoghe
• In realtà il rilassamento continuo di ATSP1 è
molto più tight di quello di ATSP2
D. Vigo
TSP−Modelli.24
12
Rilassamento continuo di ATSP1
•
Il rilassamento continuo di ATSP1 può essere
risolto in modo iterativo:
1. Si risolve C(ATSP1) senza (3’)
2. Si determina se esiste un vincolo (3’) violato (si
può fare in tempo polinomiale)
a. se trovato lo si aggiunge al modello corrente, si
risolve il nuovo rilassamento continuo e si torna a 2)
b. altrimenti STOP
D. Vigo
TSP−Modelli.25
Bound per Modello STSP1
Il modello può essere rilassato come segue:
(STSP1)
∑x
e∈E
e
=n
∑ ( e∈δ (i )
i∈V
e∈δ ( S )
D. Vigo
e∈E
∑ xe = 2 ) ∀ i ∈ V
∑ xe ≥ 21
xe ∈ {0,1}
z = min ∑ ce xe
∀ S ⊂V, S ≥ 2
1
(1)
(2)
(3)
0 ≤ xe ≤ 1 ∀ e ∈ E
(5’)
∀e∈ E
(5’’)
xe intera
TSP−Modelli.26
13
Bound per Modello STSP1
Il problema è uno Shortest Spanning Tree più un
arco di costo minimo (n archi in totale)
z = min ∑ ce xe
R1(STSP1)
(1)
e∈E
∑ xe = n
(2s)
e∈E
xe ≥ 1
∑
e∈δ ( S )
∀ S ⊂V, S ≥1
(3i)
0 ≤ xe ≤ 1 ∀ e ∈ E
(5’)
∀e∈ E
(5’’)
xe intera
D. Vigo
TSP−Modelli.27
Esempio
11
2
3
2
1
2
3
3
2
4
D. Vigo
5
10
v(SST)= 2+2+2+10=16
v(R1)=v(SST) + 3 = 19
TSP−Modelli.28
14
Bound Lagrangiano
• I vincoli di grado eliminati possono essere rilassati
in modo Lagrangiano portandoli nella funzione
obiettivo (moltiplicatori λi liberi perchè vincoli di
uguaglianza):
⎛
⎞
Lλ (STSP1) z = min ∑ ce xe + ∑ λi ⎜⎜ ∑ xe − 2 ⎟⎟
e∈E
i∈V
⎝ e∈δ (i )
⎠
= min ∑ ce xe − 2∑ λi + ∑ λi ∑ xe
e∈E
i∈V
i∈V
e∈δ ( i )
• il lato e=(α(e),β(e)) compare due volte, una per
ogni vertice estremo
D. Vigo
TSP−Modelli.29
Bound Lagrangiano
Lλ (STSP1)
⎛
⎞
z = min ∑ ce xe + ∑ λi ⎜⎜ ∑ xe − 2 ⎟⎟
e∈E
i∈V
⎝ e∈δ (i )
⎠
= min ∑ ce xe − 2∑ λi + ∑ λi ∑ xe
e∈E
i∈V
i∈V
e∈δ ( i )
= min ∑ ce xe − 2∑ λi + ∑ (λα ( e ) + λβ (e ) ) xe
e∈E
i∈V
e∈E
i∈V
= min ∑ ce′ xe − 2∑ λi
dove
D. Vigo
e∈E
ce′ = ce + λα ( e ) + λβ (e )
TSP−Modelli.30
15
Bound Lagrangiano
Lλ (STSP1) z = min ∑ ce′ xe − 2∑ λi
e∈E
x
∑
∈
i∈V
=n
(2s)
∑ xe ≥1 ∀ S ⊂ V , S ≥ 1
(3i)
e
e E
e∈δ ( S )
xe ∈ {0,1}
∀e∈ E
(5’’’)
Lλ (STSP1) = v(SST ) + ce′ − 2∑ λi
dove
ce′ = min{ce′ : e ∉ SST}
i∈V
D. Vigo
TSP−Modelli.31
Bound r-SST
si sceglie un vertice r∈V
∑x
∈δ ( )
e
e
r
x
∑
∈ δ{ }
e
e E\
=2
(STSP1)
z = min ∑ ce xe
e∈E
=n−2
r
( ∑ xe = 2 ) ∀ i ∈ V
∑
∈ { }e∈δ (i )
∑x
D. Vigo
(2)
i V\ r
e∈δ ( S )
xe ∈ {0,1}
(1)
e
≥2 ∀ S ⊂ V \ {r}, S ≥ 2
1
1
0 ≤ xe ≤ 1 ∀ e ∈ E
xe intera
∀e∈ E
(3)
(5’)
(5’’)
TSP−Modelli.32
16
Bound r-SST
(r − SST)
z = min ∑ ce xe
∑x
e∈δ ( r )
∑x
e
e
S
=2
(1)
(2r)
=n−2
(2’)
≥ 1 ∀ S ⊂ V \ {r}, S ≥ 1
(3)
e
e∈E \δ {r }
x
∑
∈δ ( )
e
e∈E
xe ∈ {0,1}
(5’’’)
• SST’= SST su G’=(V \{r},E \δ(r))
• 2 archi a costo minimo incidenti in r: (r,r1), (r,r2)
D. Vigo
TSP−Modelli.33
Esempio
11
2
3
2
1
2
3
3
2
4
D. Vigo
5
10
v(1−SST) = (3+3+10)+(2+2) = 20
TSP−Modelli.34
17
Esempio
11
2
3
2
1
5
2
3
3
2
4
10
v(5−SST) = (2+2+2)+(10+11) = 27
D. Vigo
TSP−Modelli.35
Bound Lagrangiano
• I vincoli di grado eliminati possono essere rilassati
in modo Lagrangiano come fatto precedentemente:
Lλ (r - SST ) = v(SST′) + cr′ + cr′ − 2∑ λi
1
dove
D. Vigo
ce′ = ce + λα ( e ) + λβ (e )
2
i∈V
TSP−Modelli.36
18
Determinazione dei λi
λi = α (di−2)
•
•
•
•
•
•
Dove di
λi > 0
λi < 0
λi = 0
Inoltre
i =1, …, n ed α > 0
grado del vertice nella soluzione corrente
se di > 2
se di < 2
se di = 2
n
n
i =1
i =1
∑ λi = α ∑ (di − 2) = α (2n − 2n ) = 0
D. Vigo
TSP−Modelli.37
Ottimizzazione subgradiente
1.
2.
3.
4.
5.
6.
Poni λi=0 per i=1, …, n; Poni k=0, L=0;
Calcola r−SST(λ) e poni L=max{L,v(r−SST(λ))};
Calcola di per i=1, …, n;
If di = 2 per i=1, …, n then z*=L e STOP;
Poni k = k + 1; if k > kmax then STOP;
Poni λi=λi +α (di−2) per i=1, …, n e vai al passo 2.
n
α = f (k ) = β (U − L) / ∑ (di − 2)2
con 0 < β ≤ 2
i =1
D. Vigo
TSP−Modelli.38
19
Esempio
2
2
3
5
2
3
2
1
11
2
3
2
λ =(0, 0, 0, 0, 0)
3
2
10
4
1
v(5−SST) = (2+2+2)+(10+11) = 27
d = (3, 2, 2, 1, 2), α =1
λ =(1, 0, 0, -1, 0)
D. Vigo
TSP−Modelli.39
Esempio
2
2
3
5
2
3
3
1
11
3
3
2
2
4
1
10
2
ce′ = ce + λα ( e ) + λβ (e )
λ =(1, 0, 0, -1, 0)
v(5−SST) = (2+2+3)+(10+11) = 28
d = (2, 2, 2, 2, 2), STOP !
D. Vigo
TSP−Modelli.40
20
Fly UP