branch and bound - diunitolocatell/didattica/ro1/bb-sl-bf.pdfbranch and bound – p. 27/30 continua...

30
Branch and Bound Branch and Bound – p. 1/3

Upload: others

Post on 25-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Branch and Bound

Branch and Bound – p. 1/30

Page 2: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Branch-and-bound

Un esempio di problema di PLI:

P0 : max x1 + 3x2

(u1) x1 ≥1

2(u2) −5x1 + 3x2 ≤ 5

(u3) x1 +7

5x2 ≤

13

2x1, x2 ≥ 0

x1, x2 ∈ I

Branch and Bound – p. 2/30

Page 3: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Continua

Risoluzione (grafica) del rilassamento lineare P ′0 di P0.

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

u1

u2

A

B

C D

+-

z

u31

1

2 3 4 5 6

2

4

3

Branch and Bound – p. 3/30

Page 4: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Continua

Sott = {A} A =

(

5

4,15

4

)

Valore ottimo=U(P0) = 504

U(P0) = upper bound o limitazione superiore del valoreottimo di P0

Branch and Bound – p. 4/30

Page 5: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Divide et impera: Branching

Suddivisione del problema originario in due sottoproblemiP1 e P2. Come?

Seleziono, secondo una determinata regola, una variabilexi con valore non intero x∗

inella soluzione ottima del

rilassamento lineare di P0 e:

creo P1 aggiungendo ai vincoli di P0, il vincolo xi ≤ ⌊x∗i⌋;

creo P2 aggiungendo ai vincoli di P0, il vincoloxi ≥ ⌊x∗

i⌋ + 1

Esistono molte regole di scelta della variabile. Qui neuseremo una semplicissima non preoccupandocidell’efficienza: seleziona quella con valore non intero nelrilassamento lineare di P0 con indice più piccolo.

Branch and Bound – p. 5/30

Page 6: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Nell’esempio

Sottoproblema P1

P1 : max x1 + 3x2

(u1) x1 ≥1

2(u2) −5x1 + 3x2 ≤ 5

(u3) x1 +7

5x2 ≤

13

2

(u′4) x1 ≤

5

4

= 1

x1, x2 ≥ 0

x1, x2 ∈ I

Branch and Bound – p. 6/30

Page 7: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Nell’esempio

Sottoproblema P2

P2 : max x1 + 3x2

(u1) x1 ≥1

2(u2) −5x1 + 3x2 ≤ 5

(u3) x1 +7

5x2 ≤

13

2

(u′′4) x1 ≥

5

4

+ 1 = 2

x1, x2 ≥ 0

x1, x2 ∈ I

Branch and Bound – p. 7/30

Page 8: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Lower Bound

LB =Lower bound o limitazione inferiore del valore ottimo diP0. È un qualsiasi valore che soddisfa:

LB ≤ opt(P0) = valore ottimo P0

Come si ottiene?Se durante l’esecuzione dell’algoritmo (tipicamente durantela risoluzione dei rilassamenti lineari di P0 e dei suoisottoproblemi) si osserva il valore della funzione obiettivocx nei punti y1, . . . ,yh ∈ Za, ciascuno di questi valori èutilizzabile come lower bound, in quanto: cyi ≤ opt(P0) peri = 1, . . . , h. Per avere un valore di lower bound il più vicinopossibile a opt(P0) si pone:

LB = max{cyi : i = 1, . . . , h}

Branch and Bound – p. 8/30

Page 9: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Rilassamento lineare di P1

������������������������������������������������������

������������������������������������������������������

u1

u2

u3

B

C D

+-

z

AE

F1

1

2 3 4 5 6

2

3

4

u′

4

Sott = {E}, E = (1, 10/3)U(P1) = 11

Branch and Bound – p. 9/30

Page 10: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Rilassamento lineare di P2

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

u1

u2

A

B

C D

+-

z

H

Gu′′

4

u31

1

2 3 4 5 6

2

3

4

Sott = {H}, H = (2, 45/14)U(P2) = 163/14

Branch and Bound – p. 10/30

Page 11: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Albero di branch-and-bound

����

����

����

""

""

QQ

QQ

x1 ≤ 1 x1 ≥ 2

P0

P1 P2 U(P2) = 163

14

LB = −∞

U(P1) = 11

Branch and Bound – p. 11/30

Page 12: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Ulteriore suddivisione

Dopo aver suddiviso il problema P0 nei due sottoproblemiP1 e P2, possiamo selezionare uno dei due sottoproblemi.Quale nodo selezionare?Diverse regole possibili. Qui ne vedremo una soltanto:seleziona un sottoproblema/nodo foglia con upper boundmassimo.Perché? Ci si aspetta di trovare piú facilmente la soluzioneottima del problema in un sottoproblema con un valore diupper bound elevato.

Branch and Bound – p. 12/30

Page 13: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Nell’esempio

Nel nostro esempio selezioniamo P2.

P2 suddiviso in due sottoproblemi P3 e P4. Come?Esattamente come abbiamo fatto per P0: facendobranching su una variabile con valore non intero nellasoluzione ottima del rilassamento lineare di P2.

Branch and Bound – p. 13/30

Page 14: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il sottoproblema P3

P3 : max x1 + 3x2

(u1) x1 ≥1

2(u2) −5x1 + 3x2 ≤ 5

(u3) x1 +7

5x2 ≤

13

2(u′′

4) x1 ≥ 2

(u′5) x2 ≤

45

14

= 3

x1, x2 ≥ 0

x1, x2 ∈ I

Branch and Bound – p. 14/30

Page 15: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il sottoproblema P4

P4 : max x1 + 3x2

(u1) x1 ≥1

2(u2) −5x1 + 3x2 ≤ 5

(u3) x1 +7

5x2 ≤

13

2(u′′

4) x1 ≥ 2

(u′′5) x2 ≥

45

14

+ 1 = 4

x1, x2 ≥ 0

x1, x2 ∈ I

Branch and Bound – p. 15/30

Page 16: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il rilassamento lineare di P3

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

u1

u2

A

B

C D

+-

z

G

u′

5

HJK

u3u′′

4

1

1

2 3 4 5 6

2

3

4

Sott = {J}, J = (23/10, 3)U(P3) = 113/10

Branch and Bound – p. 16/30

Page 17: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il rilassamento lineare di P4

u1

u3

A

B

C D

+-

z u′′

4

H

G

u2 u′′

5

1

1

2 3 4 5 6

2

3

4

Sa = ∅, quindi P4 é risolto → P4 ha regione ammissibilevuota.

Branch and Bound – p. 17/30

Page 18: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Albero di branch-and-bound

����

����

����

����

����

""

""

QQ

QQ

����PPPPP

QQQQ

��

��

x1 ≤ 1 x1 ≥ 2

P0

P1 P2

LB = −∞

P3P4

U(P3) = 113

10

x2 ≤ 3 x2 ≥ 4

U(P1) = 11

Branch and Bound – p. 18/30

Page 19: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Continua

Al momento: il problema iniziale P0 é suddiviso in tresottoproblemi P1, P3, P4, di cui P4 é giá risolto(cancellazione del nodo nell’albero).

Ora: seleziono il nodo foglia/sottoproblema non ancoracancellato con upper bound maggiore (nell’esempio P3) e losuddivido in due sottoproblemi (nell’esempio P5 e P6).

Branch and Bound – p. 19/30

Page 20: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il sottoproblema P5

P5 : max x1 + 3x2

(u1) x1 ≥1

2(u2) −5x1 + 3x2 ≤ 5

(u3) x1 +7

5x2 ≤

13

2(u′′

4) x1 ≥ 2

(u′5) x2 ≤ 3

(u′6) x1 ≤

23

10

= 2

x1, x2 ≥ 0

x1, x2 ∈ I

Branch and Bound – p. 20/30

Page 21: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il sottoproblema P6

P6 : max x1 + 3x2

(u1) x1 ≥1

2(u2) −5x1 + 3x2 ≤ 5

(u3) x1 +7

5x2 ≤

13

2(u′′

4) x1 ≥ 2

(u′5) x2 ≤ 3

(u′′6) x1 ≥

23

10

+ 1 = 3

x1, x2 ≥ 0

x1, x2 ∈ I

Branch and Bound – p. 21/30

Page 22: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il rilassamento lineare di P5

u1

u2

u3

A

B

C D

+-

z u′′

4

G

u′

5

HJ

u′

6

K

1

1

2 3 4 5 6

2

3

4

Sott = {K}, K = (2, 3): coordinate intere, quindi K risolveanche P5! Valore ottimo di P5 = 11Posso aggiornare LB → LB = 11

Branch and Bound – p. 22/30

Page 23: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Il rilassamento lineare di P6

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

u1

u2

A

B

C D

+-

z u′′

4

G

u′

5

HJK

L

Mu′′

6

u31

1

2 3 4 5 6

2

3

4

Sott = {L}, L = (3, 5/2)U(P6) = 21/2

Branch and Bound – p. 23/30

Page 24: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Cancellazione nodi

Oltre ai nodi/sottoproblemi “risolti”, posso anche cancellarenodi foglia/sottoproblemi “non risolti”:

cancella un nodo Pi se U(Pi) ≤ LB

In tal caso tutte le soluzioni in Pi sono non migliori rispettoalla migliore osservata sino ad ora (valore LB) e quindi nonvale la pena esplorarle.

Nel nostro esempio, cancella P1 e P6.

Branch and Bound – p. 24/30

Page 25: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Albero di branch-and-bound

����

����

����

����

����

����

����

""

""

QQ

QQ

����PPPPP

QQQQ

��

��!!!!!

aaaa@@

@

%%

%%

bbbb

��

@@

@

%%

%

x1 ≤ 1 x1 ≥ 2

P0

P1 P2

P3P4

P5 P6U(P6) = 21

2

U(P5) = 11

LB = 11

x2 ≤ 3 x2 ≥ 4

x1 ≤ 2 x1 ≥ 3

U(P1) = 11

Branch and Bound – p. 25/30

Page 26: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Regola di arresto

STOP quando tutti i nodi foglia sono stati cancellati.

Al momento dell’arresto LB restituisce il valore ottimo di P0.Se LB = −∞, allora P0 ha regione ammissibile vuota.

Branch and Bound – p. 26/30

Page 27: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Algoritmo generale

Inizializzazione Inizializza F (insieme nodi foglia noncancellati) con P0, F = {P0}. Risolvi il rilassamentolineare P ′

0 di P0 e sia (x∗1(P0), . . . , x

∗n(P0)) la soluzione

ottima trovata e U(P0) il corrispondente valore ottimo.Se tutti i valori x∗

i(P0), i = 1, . . . , n sono interi, STOP: la

soluzione (x∗1(P0), . . . , x

∗n(P0)) é soluzione ottima anche

per P0 ed il valore ottimo di P0 é pari a U(P0). Altrimentisi ponga LB = −∞ e si vada al Passo 1.

Passo 1 Seleziona in F un nodo Q ∈ F tale che

U(Q) = maxP∈F

U(P )

Sia (x∗1(Q), . . . , x∗

n(Q)) una soluzione ottima delrilassamento lineare Q′ di Q.

Branch and Bound – p. 27/30

Page 28: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Continua

Passo 2 Seleziona una variabile x∗i(Q) a valore non

intero (quella con indice minimo).

Passo 3 Rimuovi il nodo Q da F (cioé F = F \ {Q}) esuddividi Q in due nuovi nodi Q1 e Q2 ottenutiaggiungendo ai vincoli di Q rispettivamente il vincoloxi ≤ ⌊x∗

i(Q)⌋ (in Q1) ed il vincolo xi ≥ ⌊x∗

i(Q)⌋+ 1 (in Q2).

Branch and Bound – p. 28/30

Page 29: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Continua

Passo 4 Per ciascuno dei due nuovi nodi Qi, i = 1, 2,risolvi il rilassamento lineare Q′

i. Se Q′

iha regione

ammissibile vuota, cancella il nodo Qi e non lo siaggiunge a F . Altrimenti se la soluzione ottima(x∗

1(Qi), . . . , x∗n(Qi)) é a coordinate intere si cancelli il

nodo Qi senza aggiungerlo a F ed inoltre, seU(Qi) > LB si ponga

LB = U(Qi) e y1 = x∗1(Qi), . . . , yn = x∗

n(Qi).

Altrimenti, se la soluzione ottima di Q′i

non é acoordinate intere, si aggiunga Qi a F , ovvero si pongaF = F ∪ {Qi}.

Branch and Bound – p. 29/30

Page 30: Branch and Bound - DiUniTolocatell/didattica/ro1/bb-sl-bf.pdfBranch and Bound – p. 27/30 Continua Passo 2 Seleziona una variabile x ∗ i(Q) a valore non intero (quella con indice

Continua

Passo 5 Si cancellino tutti i nodi in F con valoredell’upper bound non superiore a LB, ovvero si ponga

F = F \ {P ∈ F : U(P ) ≤ LB}.

Passo 6 Se F = ∅, STOP: se LB ha valore pari a −∞,allora il problema P0 non ha soluzioni ammissibili,altrimenti il valore LB é il valore ottimo del problema P0

e (y1, . . . , yn) é una soluzione ottima di tale problema.Altrimenti si ritorni al Passo 1.

Branch and Bound – p. 30/30