5.1 metodo branch and bound -...
TRANSCRIPT
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 1
5.1 Metodo Branch and Bound
Idea: Ricondurre la risoluzione di un problema difficile a quella di sottoproblemi più semplici effettuando una partizione (ricorsiva) della regione ammissibile.
Si consideri il problema min{ c(x) : x ∈ X }
Applicabile ai problemi di ottimizzazione combinatoria e continua.
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 2
z = min{ c(x) : x ∈ X }
Suddivisione (“branching”):Sia X = X1 ∪ … ∪ Xk una partizione di X in k sottoinsiemi( Xi∩ Xj = ∅ per ogni coppia i ≠ j ) e zi = min{ c(x) : x ∈ Xi } per i =1,…, k
Chiaramente z = min{ c(x) : x ∈ X } = min{z1,…, zk}
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 3
Tecnica di “bounding”:Per ogni sottoproblema zi = min{ c(x) : x ∈ Xi } i) determinare una soluzione ottima di min{ c(x) : x ∈ Xi }
(modo esplicito), oppureii) dimostrare che Xi = ∅ (modo esplicito), oppureiii) dimostrare che zi ≥ z’ ≡ migliore soluzione
ammissibile trovata in precedenza (modo implicito).
Se il sottoproblema non è “risolto” vengono generati nuovi sottoproblemi mediante suddivisione.
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 4
“Branching”: Suddividere la regione ammissibile X in sottoregioniesaustive ed esclusive (partizione).
Sia un PLI min{ cTx : Ax = b, x ≥ 0 interi }
5.1.1 Branch and Bound per PLI
Risolvere il rilassamento continuo min{ cTx : Ax = b, x ≥ 0 }
e siano x una soluzione ottima e zPL = cTx il valore ottimo.
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 5
“Bounding”: Determinare un “bound” (per difetto se PLI di min) sul valore ottimo zi di un sottoproblema di PLI risolvendo il relativo rilassamento continuo.
Se x intera, x è anche ottima per PLI, altrimenti ∃ xh frazionaria e si considerano i due sottoproblemi:
PLI1: min{ cTx : Ax = b, xh ≤ ⌊xh⌋, x ≥ 0 interi }
PLI2: min{ cTx : Ax = b, xh ≥ ⌊xh⌋+1, x ≥ 0 interi }
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 6
654321x1
9
8
7
6
5
4
3
2
1
x2
z = 20
x = zPL = 41.2515/49/4
max z = 8x1 + 5x2
x1 + x2 ≤ 69x1 +5x2≤ 45x1, x2 ≥ 0 interi
PLI
Esempio:
zPL ≥ z*PLI
9x1 + 5x2 = 45
x1 + x2 = 6
x1
Poiché x1 e x2 frazionarie, sceglierne una per il passo di branching
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 7
Regione ammissibile X suddivisa in X1 e X2 imponendo:
x1 ≤ ⌊x1⌋ = 3 o x1 ≥ ⌊x1⌋+1 = 4vincoli esaustivied esclusivi
654321x1
9
8
7
6
5
4
3
2
1
x2
z = 20
Sottoproblema S1sottoregione X1 Sottoproblema S2
sottoregione X2
sol. x = zPL2 = 4149/5
sol. x = zPL1 = 3933
intera! ⇒ z*PLI1 ≥ zPL1
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 8
Dopo aver considerato X1, migliore soluzione ammissibile(intera) trovata finora:
x = con z = 3933
Visto che zPL2 = 41 > 39, X2 può contenere una soluzione ammissibile del PLI migliore.
⇒ Partizione di X2 in X3 e X4 imponendo:
x2 ≤ ⌊x2⌋=1 o x2 ≥ ⌊x2⌋+1=2
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 9
z = 20
x2 = 2
x2 = 11
2
3
4
x2
1 2 3 4 5 6x1
Sottoproblema S3sottoregione X3
Sottoproblema S4 èinammissibile (X4 = ø)
sol. x = con zPL3 = 365/940/91
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 10
Albero decisionale:(“branching tree”)
PL
S1S2
S3 S4
x1≥ 4x1 ≤ 3
x2 ≤ 1 x2≥ 2zPL2 = 41
zPL3 = 365/9 inammissibile X4 = ø
zPL2 = 39sol. intera
migliore sol. ammissibile trovata finora
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 11
Visto che zPL3 = 365/9 > 39, X3 può contenere una soluzione ammissibile del PLI migliore.
⇒ Partizione di X3 in X5 e X6 imponendo:
x1 ≤ ⌊x1⌋ = 4 o x1 ≥ ⌊x1⌋+1 = 5
40/91x =
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 12
z = 20
Sottoproblema S5
sol. di S5: x = intera con zPL5 = 3741
1
2
3
4
x2
1 2 3 4 5 6x1
x1 = 4 x1 = 5 unica sol. ammissibile di S6
50x = intera
zPL6 = 40
Soluzione intera (anche ammissibile per PLI) ma con valore peggiore di x = con z = 393
3Migliore sol. trovata ⇒ soluzione ottima
Branch & Bound garantisce soluzione ottima (metodo esatto)
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 13
Albero decisionale
49x
415x
4165z
PL
2
1
=
=
=
3x3x
39zS
2
1
1
===
59x
4x41z
S
2
1
2
=
==
1x9
40x9
365z
S
2
1
3
=
=
=
S4X4 = ø
1x4x
37zS
2
1
5
===
0x5x
40zS
2
1
6
===
radice
interaintera
inammissibile
x1 ≤ 3
x2 ≤ 1
x1 ≤ 4
x1≥ 4
x2≥ 2
x1≥ 5
sol. intera ottima
z*PLI = 40
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 14
L’albero non contiene necessariamente tutti i nodi possibili(2d # foglie)
intera
Un nodo non ha figli -- è chiuso -- se• vincoli iniziali + quelli sugli archi dalla radice sono
incompatibili (S4)• soluzione del rilassamento continuo è intera (S1)• soluzione ottima xPL del rilassamento continuo ha un
valore cTxPL peggiore di quello della migliore soluzione ammissibile del PLI trovata finora.
≡ criterio di “bounding”
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 15
NB: Nel terzo caso la sottoregione ammissibile del sottoproblema associato a quel nodo non può contenere una soluzione intera migliore della migliore soluzione del PLI trovata finora!
Criterio di “bounding” permette spesso di “eliminare” gran parte dei nodi (sottoproblemi).
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 16
Scelta del nodo (sottoproblema) da elaborare:
• Prima nodi più profondi (tecnica “depth first”)
procedimento ricorsivo semplice ma costoso in caso di scelta sbagliata
• Prima nodi più promettenti (“best bound first”)
con valore del rilassamento continuo migliore
Si generano tipicamente meno nodi ma problemi poco vincolati ⇒ si aggiorna raramente la migliore soluzione ammissibile corrente
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 17
Scelta variabile (frazionaria) di branching
Scegliere la variabile xh con parte frazionaria più vicina a 0,5 così il nuovo vincolo è più significativo per i due sottoproblemi.
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 18
Struttura dati Branch & Bound: problema di min
• m = ultimo nodo• xopt = migliore soluzione intera trovata finora• zopt = cTxopt = costo migliore soluzione intera trovata finora
• Q = coda dei nodi foglia attivi (quelli che possono avere nodi figli)
• Padre[t] = ±pp = indice nodo padre di t
+/- figlio di sinistra o di destra
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 19
• LB[t] = “lower bound” associato a t• Vbranch[t] = indice h della variabile xh di branching• Valore[t] = valore x*
h della variabile di branching
NB: Se PL inammissibile, x* fittizio e cTx* = +∞Se c intero, LB[m] = ⌈cTx*⌉
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 20
BEGINm:=1; Padre[1]:=0; Q:= ∅;zopt:= valore soluzione euristica (eventualmente +∞);risolvi il rilassamento continuo min{cTx : Ax = b, x ≥ 0} e siax* la soluzione ottima trovata;LB[1]:= cTx*;IF (x* intera) AND (cTx* < zopt) THEN
xopt:= x*; zopt:= cTx*
END-IFIF LB[1] < zopt THEN
scegli la variabile frazionaria x*h di branching;Vbranch[1]:= h; Valore[1]:= x*h;Q := {1}
END-IFWHILE Q ≠ 0 DO /* elabora i nodi figli attivi */
scegli un nodo t ∈ Q; poni Q:= Q \ {t};h:= Vbranch[t]; val:= Valore[t];...
Algoritmo Branch & BoundEl
abor
azio
ne ra
dice
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 21
FOR figlio:= 1 TO 2 DO /*genera i figli del nodo t */m:= m+1;IF figlio = 1 THEN Padre[m]:= t;ELSE Padre[m]:= -t; END-IFdefinisci il problema PLm associato al nodo m(vincoli di PLt più xh ≤ ⌊val⌋ se figlio = 1, o xh ≥ ⌈val⌉ se figlio = 2);
risolvi il problema PLm e sia x* la soluzione ottima trovata;LB[m]:= cTx*;IF (x* intera) AND (cTx* < zopt) THEN
xopt:= x*; zopt:= cTx*; /* aggiorna la soluzione ottima */ Q:= Q \ {j∈Q : LB[j] ≥ zopt};
END-IFIF LB[m] < zopt THEN
scegli la variabile frazionari x*k di branching;Vbranch[m]:= k; Valore[m]:= x*k;Q:= Q ∪ {m};
END-IFEND-FOR
END-WHILEEND
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 22
Branch & Bound applicabile anche a PLI misti:considerare solo per “branching” le variabili frazionarie con vincolo di interezza.
In realtà metodo generale per problemi di ottimizzazione combinatoria
Ad es. sequenziamento, commesso viaggiatore,…
# finito (ma elevatissimo) di sol. ammissibili
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 23
Basta
• Tecnica per suddividere un insieme di sol. ammissibili in sottoinsieme mutualmente esclusivi (“branch”)
• Procedura per determinare un limite sul costo di qualsiasi soluzione ammissibile in un dato sottoinsieme (“bound”)
NB: Branch-and-Bound (B & B) anche utilizzabile come metodo approssimato (imponendo un limite su tempo o nodi esplorati)
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 24
5.1.2 B & B per problemi di ottimizzazione combinatoria
Esempio: problema di sequenziamento ( NP-difficile )
n lavori (jobs) da eseguire su una macchina
n = 4861
16841253442
scadenzatempo di lavorazionejobs
fine giorno 8
Tempi di lavorazioni e le date limite di consegna:in giorni
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 25
Per sequenza 1 – 2 – 3 – 4, ritardo totale = 0 + 6 + 3 + 7 = 16
definiamo xij =
Idea: suddividere l’insieme di tutte le soluzioni ammissibili a seconda del job eseguito per ultimo.
Chiaramente x14 = 1 o x24 = 1 o x34 = 1 o x44 = 1
1 se job i è il j-esimo eseguito0 altrimenti
giorni
Determinare una sequenza che minimizza il ritardo totale.
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 26
D = ritardo totale
se x44 = 1, job 4 è completato alla fine del giorno 6 + 4 + 5 + 8 = 23 cioè con ritardo di 23 – 16 = 7
1D ≥ 15
2D ≥ 19
3D ≥ 11
4D ≥ 7
5D ≥ 14
6D ≥ 18
7D ≥ 10
8D = 12
9D = 16
× ×
×
x14 = 1x24 = 1
x44 = 1
x34 = 1
x13 = 1
x23 = 1
x33 = 1
x12 = 1 x22 = 1
⋮
“Branching” effettuato sul nodo con limite inferiore su D più piccolo.nodo 4; nodo 7; nodo 8;…
× ×
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 27
Per nodo 7: job 4 per ultimo con ritardo di 7job 3 per penultimo con ritardo di
6 + 4 + 5 – 12 = 3 giorni15
⇒ D ≥ 7 + 3 = 10
nodo 8 (sequenza 2 – 1 – 3 – 4) sol. ammissibile candidata con ritardo totale = 12.
NB: nodi 1, 2, 5 e 6 possono essere “chiusi”!
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 28
1D ≥ 15
2D ≥ 19
3D ≥ 11
4D ≥ 7
10D ≥ 21
11D ≥ 25
12D ≥ 13
× ×
x14 = 1x24 = 1
x44 = 1
x34 = 1
x13 = 1
x23 = 1
x43 = 1⋮
× × ×11 + (6 + 4 + 8 – 16) = 1311 + (6 + 4 + 8 – 8) = 21
job 1 penultimo
⇒ sequenza ottima: 2 – 1 – 3 – 4 con D =12
job 3 ultimo
job 4 penultimo
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 29
Nel Branch and Bound per PLI come aggiornare in modo efficiente un tableau ottimo quando si aggiunge un vincolo ?
max yTb
yTA ≤ cT
y ∈ m(D)
min cTx
Ax = bx ≥ 0
(P)
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 30
5.2 Algoritmo del simplesso duale
Sia
NIbxB[1]⋮
xB[n]
cTN0 … 0-z0-z
xm+1 … xnx1 … xm
con c ≥ 0 ⇔yT = cT
B B-1
sol. ammiss. di (D)
• Simplesso primale mantiene ammiss. (P) e cerca ammiss. (D)• Simplesso duale mantiene ammiss. (D) e cerca ammiss. (P)
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 31
Scelta indice s della variabile fuori base da fare entrare nella base e indice r di quella in base da fare uscire in modo da mantenere l’ammissibilità di (D) , ovvero c ≥ 0
per cs e sottrarla alla riga 0 della funzione obiettivo
∑∈
=+Nj
rjrs
rj
rs
r bxaa
ax
Se ars < 0, dividendo la r-esima riga per ars si ottiene un ar0 ≥ 0 (si fa un “passo” verso una soluzione di base ammissibile di (P)). Per ottenere cs= 0 bisogna inoltre moltiplicare la corrispondente r-esima riga
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 32
~rs
rjsjj a
accc −=Poiché
di (D) è necessario che jc j ∀≥ 0~
rs
rjs
rs
rjsj a
ac
aa
cc−
=≥e quindi si deve imporre
dato che .0<rsa
0>rja
0<rja
Se
(*)
vale certamente (*)
Se deve valere rs
s
rj
j
ac
ac
≥
per mantenere l’ammissibilità
j∀
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 33
Se b ≥ 0 tableau ottimo (test di ottimalità)
altrimenti
• scegliere xB[r] uscente dalla base con br < 0
• scegliere fra xj con arj < 0 quella entrante xs t.c.
+ regola di Bland
⎪⎭
⎪⎬⎫
⎪⎩
⎪⎨⎧
<= 0: min rjrj
j
rs
s aac
ac
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 34
Esempio:min -x1 – 4x2
x1 + x2 ≤ 2x1 +3x2≤ 3
x2 ≤ 2/3x1, x2 ≥ 0
Tralasciando gli ultimi due vincoli si ha il tableau: 1
0x3
112x3
-4-10-zx2x1
Con un’operazione di pivot del simplesso primale: 1
4x3
112x2
038-zx2x1
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 35
La soluzione di base ottima x* = [0, 2, 0]T corrisponde al punto A che viola entrambi i vincoli tralasciati.Aggiungendo le variabili di scarto x4 ed x5 e inserendo le due equazioni nel tableau corrente si ottiene:
001112x2
010313x4
0
4x3
0
0x4
1
0x5
102/3x5
038-zx2x1
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 36
1
21
2
C
A
B
2/3
z = -x1 – 4x2
x1 + x2 ≤ 2
x1 + 3x2 ≤ 3
x1
x2
x2 ≤ 2/3
Rappresentazione grafica dell’introduzione di nuovi vincoli
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 37
Per mettere il tableau in forma canonica (eliminare la variabiledi base x2 dalle ultime due righe – dalle espressioni di x4 e x5) basta la seguente operazione di pivot:
001112x2
010313x4
0
4x3
0
0x4
1
0x5
102/3x5
038-zx2x1
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 38
001112x2
01-30-2-3x4
-1
4x3
0
0x4
1
0x5
0-1-4/3x5
038-zx2x1
NB: i valori negativi delle nuove variabili di base x4= -3e x5= -4/3 esprimono il fatto che questa soluzione viola i vincoli appena aggiunti.
soluzione di base associata è ancora x* = [0, 2, 0]T
⇒
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 39
Dato che i costi ridotti sono tutti non negativi, si può applicare l’algoritmo del simplesso duale.
Con l’operazione di pivot su -3 si ottiene il tableau associato al punto x = [0, 1, 1, 0, -1/3]T -- punto B
01/3011/31x2
0-1/3102/31x3
0
0x3
-1/3
4/3x4
1
0x5
0-1/3-1/3x5
01/34-zx2x1
E. Amaldi – Fondamenti di R. O. – Politecnico di Milano 40
Operazione di pivot su -1/3 porta al tableau ottimo associato al vertice ottimo x* = [1, 2/3, 1/3, 0, 0]T -- punto C
100102/3x2
2-11001/3x3
0
0x3
1
1x4
-3
1x5
011x1
0011/3-zx2x1