• Non ci sono risultati.

Il problema di knapsack max 5x

N/A
N/A
Protected

Academic year: 2021

Condividi "Il problema di knapsack max 5x"

Copied!
38
0
0

Testo completo

(1)

Disequazioni cover e lifting

(2)

Rafforzamento di formulazioni

Il problema di knapsack max 5x

1

+ 2x

2

3x

1

+ 4x

2

< 6

x ∈ {0,1}

2

ha come rilassamento lineare max 5x

1

+ 2x

2

3x

1

+ 4x

2

< 6 x

1

> 0

x

2

> 0 x

1

< 1 x

2

< 1

Indichiamo con x*LP la soluzione ottima del rilassamento.

(3)

Separazione

Domanda

Possiamo individuare una disequazione valida per conv ( F ) che “separa” x

*LP

da conv ( F ) ?

x2

x*LP

x1

(4)

Minimal cover

Consideriamo l’insieme

X = { Σ

j=1, …, n

a

j

x

j

< b, x ∈ {0,1}

n

} Definizione

Un insieme C ⊆ N è un cover se e solo se

Σ

j ∈C

a

j

> b.

Un cover è minimale se, comunque preso j ∈ C, l’insieme C \ { j } NON è un cover

Osservazione

Un cover ha associato un vettore caratteristico non

ammissibile per X

(5)

Disequazioni cover

Teorema

Se C ⊆ N è un cover, la disequazione

Σ

j ∈C xj < |C| - 1 (*) è valida per conv (X ).

Dimostrazione

Dimostriamo che se xR ∈ {0,1}n non soddisfa il vincolo (*) allora xR

∉ X.

Se xR è tale che

Σ

j ∈c xj > |C| - 1, allora |R ∩ C|= |C|, quindi C ⊆ R.

Pertanto:

Σ

j ∈N

a

j

x

jR

= Σ

j ∈R

a

j

> Σ

j ∈C

a

j

> b

ovvero xR ∉ X.

(6)

Esempio

Consideriamo il problema di knapsack

max 15 x

1

+ 9 x

2

+ 8 x

3

+ 6 x

4

+ 5 x

5

+ 4 x

6

+ x

7

11 x

1

+ 6 x

2

+ 6 x

3

+ 5 x

4

+ 5 x

5

+ 4 x

6

+ x

7

< 19 x ∈ [0,1]

7

x

*LP

= (1, 1, 1/3, 0, 0, 0, 0)

Una disequazione cover violata da x

*LP

è la disequazione x

1

+ x

2

+ x

3

< 2

Come si individua una disequazione di tipo cover violata

da x

*LP

?

(7)

Problema di separazione

Domanda

Dato un poliedro P, formulazione di un problema di PL-{0,1}, esiste una disequazione di tipo cover che separa x

*LP

da conv ( X )?

Risposta

a) SI la disequazione esiste e fornisce anche il cover associato C

b) NO non esiste

Un algoritmo A che risponde (correttamente) alla

domanda con una delle due risposte possibili a) o b), si

chiama ORACOLO DI SEPARAZIONE

(8)

Oracolo di separazione

Riscriviamo la disequazione come

La disequazione è violata da x*

LP

se e solo se:

Quindi, posso massimizzare la violazione definendo

Un algoritmo per SEP è un oracolo di separazione

⎭⎬

⎩⎨

⎧ −

=

knapsack di

vincolo del

cover un

è ,

) 1 (

max xLP* C

SEP

C j

j

>

− +

C j

x

j

1 ) 0 (

1

LP*

C j

j

C

x 1 ∑

− +

C j

j

C

x | | 0

1

(9)

Difatti…

Sia z

*SEP

il valore della soluzione ottima y

*SEP

di

Se 1 + z

*SEP

> 0 allora esiste una disequazione cover violata associata a y

*SEP

Se 1 + z

*SEP

< 0 allora NON esiste una disequazione cover violata

⎭⎬

⎩⎨

⎧ −

=

knapsack di

vincolo del

cover un

è ),

1 (

max xLP* C

SEP

C j

j

(10)

Formulazione del problema di separazione

Variabili decisionali

y

j

= 1 se l’indice j è nel cover y

j

= 0 altrimenti

Funzione obiettivo

Vincoli

j n

j

j

y

x 1 ) (

max

1

*

LP

=

n j n

j

j

y

b y

a

} 1 , 0 {

1

1

+

∑ ≥

=

Osservazione

I coefficienti in funzione obiettivo sono < 0, quindi il problema non ammette una soluzione banale

Proprietà del cover

(11)

Trasformazione …

Ponendo w

j

= 1 – y

j

il problema di separazione diventa

ovvero …

n

n j

j j

n j

j

j n

j

j n

j

j

w

b a

w a

w x

x

} 1 , 0 {

1 st

) 1 (

) 1 (

max

1 1

1

* LP 1

* LP

+ +

=

=

=

=

(12)

…un problema di knapsack

n n j

j j

n j

j

j n

j

j

w

b a

w a

w x

} 1 , 0 {

1 st

) 1

( max

1 1

1

* LP

=

=

=

(13)

Esempio

max 15 x

1

+ 9 x

2

+ 8 x

3

+ 6 x

4

+ 5 x

5

+ 4 x

6

+ x

7

11 x

1

+ 6 x

2

+ 6 x

3

+ 5 x

4

+ 5 x

5

+ 4 x

6

+ x

7

< 19 x ∈ {0,1}

7

x

*LP

= (1, 1, 1/3, 0, 0, 0, 0) Problema di separazione

max (1 – 1) w

1

+ (1 – 1) w

2

+ (1 - 1/3) w

3

+ w

4

+ w

5

+ w

6

+ w

7

11 w

1

+ 6 w

2

+ 6 w

3

+ 5 w

4

+ 5 w

5

+ 4 w

6

+ w

7

<

38 – 19 – 1 = 18

w ∈ {0,1}

7

(14)

Separazione

Problema di separazione

max 2/3 w

3

+ w

4

+ w

5

+ w

6

+ w

7

11 w

1

+ 6 w

2

+ 6 w

3

+ 5 w

4

+ 5 w

5

+ 4 w

6

+ w

7

<

18

w ∈ {0,1}

7

Soluzione ottima

w* = (0, 0, 0, 1, 1, 1, 1) di valore 4 Riportiamola nello spazio delle y:

y* = (1, 1, 1, 0, 0, 0, 0) di valore -2/3, ovvero < 1

(15)

Pertanto…

1. Il valore di 1 + z

*SEP

è > 0, ovvero esiste una disequazione cover violata

2. La disequazione è scritta in corrispondenza agli indici che hanno valore 1 in y

*

, ovvero

y* = (1, 1, 1, 0, 0, 0, 0) corrisponde a x

1

+ x

2

+ x

3

< 2

(16)

Ricapitolando

Algoritmo del piano di taglio (CUT)

Dato il rilassamento lineare di un problema di knapsack 1. Calcola la soluzione ottima x

*LP

2. Se x

*LP

∈{0, 1}

n

STOP altrimenti vai a 3.

3. Definisce il problema di separazione 4. Risolve il problema di separazione

5. Se esiste una disequazione cover violata si aggiunge alla formulazione corrente e torna al punto 1,

altrimenti STOP

(17)

Rafforzamento di disequazioni cover

Teorema

Se C ⊆ N è un cover, la disequazione

Σ

j ∈E(C) xj < |C| - 1 (*)

è valida per conv (X ) con E(C)=C ∪ {j:aj ≥ ai per ogni i ∈C}

Esempio

11 x

1

+ 6 x

2

+ 6 x

3

+ 5 x

4

+ 5 x

5

+ 4 x

6

+ x

7

< 19

La disequazione cover

x

3

+ x

4

+ x

5

+ x

6

< 3

diventa

x

1

+ x

2

+ x

3

+ x

4

+ x

5

+ x

6

< 3

(18)

Rafforzamento di disequazioni cover Esempio

11 x

1

+ 6 x

2

+ 6 x

3

+ 5 x

4

+ 5 x

5

+ 4 x

6

+ x

7

< 19 La disequazione cover

x

3

+ x

4

+ x

5

+ x

6

< 3

è valida.

La disequazione

α

1

x

1

+ x

3

+ x

4

+ x

5

+ x

6

< 3

ammette dei valori di α

1

diversi da 0 per cui continua a

rimanere valida?

(19)

Rafforzamento di disequazioni cover

Se x

1

=x

2

=x

7

=0 è valida per ogni valore di α

1

Invece, se x

1

=1 e x

2

=x

7

=0 α

1

+ x

3

+ x

4

+ x

5

+ x

6

< 3

è valida se e solo se soddisfa tutti i punti x ∈B

4

tali che 11·1+ 6 · 0 + 6 x

3

+ 5 x

4

+ 5 x

5

+ 4 x

6

+ 1·0 < 19

Ovvero se α

1

< 3 –

max {x

3

+ x

4

+ x

5

+ x

6

:6 x

3

+ 5 x

4

+ 5 x

5

+ 4 x

6

< 8, x

2

=x

7

=0, x ∈ {0,1}

7

} = 3 - 1 = 2

Quindi la risultante disequazione è

2x

1

+ x

3

+ x

4

+ x

5

+ x

6

< 3

(20)

Rafforzamento di disequazioni cover

Ripetendo il calcolo per x

2

si ha:

α

2 <

3 – max { 2x

1

+x

3

+ x

4

+ x

5

+ x

6

:

11 x

1

+ 6 x

3

+ 5 x

4

+ 5 x

5

+ 4 x

6

< 13, x

7

=0, x ∈ {0,1}

7

} = 1

ottenendo

2x

1

+ x

2

+ x

3

+ x

4

+ x

5

+ x

6

< 3

Questa procedura si chiama lifting sequenziale

(21)

Esempio

max 18 x

1

+ 10 x

2

+ 8 x

3

+ 5 x

4

+ 2 x

5

+ 2 x

6

+ 3 x

7

12 x

1

+ 8 x

2

+ 7 x

3

+ 5 x

4

+ 3 x

5

+ 9 x

6

+ 11 x

7

< 18 x ∈ {0,1}

7

x*

LP

= (1, 0.75, 0, 0, 0, 0, 0)

min 0y

1

+ 0.25 y

2

+ y

3

+ y

4

+ y

5

+ y

6

+ y

7

12 y

1

+ 8 y

2

+ 7 y

3

+ 5 y

4

+ 3 y

5

+ 9 y

6

+ 11 y

7

> 19 y ∈ {0,1}

7

x

1

+ x

2

< 1

(22)

Esempio

Lifting sequenziale

Sequenza di lifting: x

3

→ x

4

→ x

5

→ x

6

→ x

7

α

3

< 1-max{x

1

+ x

2

| knapsack e x

3

= 1, x

4

,x

5

, x

6

, x

7

= 0 }

quindi

α

3

= 1−1=0

α

4

< 1-max{x

1

+ x

2

| knapsack e x

4

= 1, x

5

, x

6

, x

7

= 0 }= 1 -1 = 0

α

5

< 1-max{x

1

+ x

2

| knapsack e x

5

= 1, x

6

, x

7

= 0 } = 0 α

6

< 1-max{x

1

+ x

2

| knapsack e x

6

= 1, x

7

= 0 } = 0

α

7

< 1-max{x

1

+ x

2

| knapsack e x

7

= 1} = 1 – 0 = 1

In definitiva: x

1

+ x

2

+ x

7

< 1

(23)

Esempio

Come cambia il lifting se la variabile interessata è a 1 e deve essere liftata a 0 ? (x

1

= 1 → x

1

= 0)

Consideriamo la disequazione cover

x

4

+ x

5

< 1 valida se x

1

= 1, x

2

= 0, x

3

= 0 , x

6

= 0 , x

7

= 0 Essa rimane valida se il coefficiente di lifting α

1

soddisfa:

α

1

(1- x

1

)+ x

4

+ x

5

< 1 ovvero se

α

1

< 1 – max {x

4

+ x

5

|knapsack e x

1

,x

2

, x

3

, x

6

, x

7

= 0}

ovvero

α

1

< 1 – 2 = -1 Quindi

-1 (1 - x

1

) + x

4

+ x

5

< 1 che corrisponde a x

1

+ x

4

+ x

5

< 2

(24)

Ricapitolando

Algoritmo del piano di taglio (CUT)

Dato il rilassamento lineare di un problema di knapsack 1. Calcola la soluzione ottima x

*LP

2. Se x

*LP

∈{0, 1}

n

STOP altrimenti vai a 3.

3. Definisce il problema di separazione 4. Risolve il problema di separazione

5. Se esiste una disequazione cover violata

Si rafforza tramite la procedura di lifting quindi

si aggiunge alla formulazione corrente e si torna al punto 1, altrimenti STOP

(25)

Osservazioni

L’algoritmo del piano di taglio può arrestarsi senza aver trovato la soluzione ottima intera. Che cosa si fa in questo caso?

Algoritmo di Cut-and-branch Osservazioni

Il problema di separazione e i problemi di lifting sono problemi di knapsack come il problema originario.

Perché non risolvere all’ottimo direttamente il problema originario?

Cosa succede se si risolve euristicamente il problema di

separazione o il problema di lifting?

(26)

Cut-and-branch

Caso 3: Ottimalità

Se Pi ≠ ∅ e la soluzione ottima xiUB del RL è intera, allora elimina Si.

Se ziUB> zLB allora zLB =ziUB, vai a Test Individua una componente frazionaria k di xiUBe ramifica Si aggiungendo ad L Scount+1 = Si ∩ {xk= 0}

Scount+2 = Si ∩ {xk= 1}

count = count + 2 Caso 2: Bound

Se Pi ≠ ∅, sia ziUB il valore della soluzione ottima xiUBdel RL.

Se ziUB< zLB elimina Si per bound, vai a Test

Inizializzazione

zLB= - ∞; count = 0;

Calcola P, formulazione di S, applicando CUT

L=P

Test: L = ∅?

Scegli un problema Si dalla lista

Risolvi il Rilassamento Lineare su Pi

Caso 1: Inammissibilità Se Pi = ∅ elimina Si per inammissibilità, vai a Test

(27)

Dal cut-and-branch al branch-and-cut

Consideriamo il seguente esempio:

max 39 x

1

+ 28 x

2

+ 46 x

3

+ 7 x

4

+ 9 x

5

+ 6 x

6

+ 4 x

7

26 x

1

+ 14 x

2

+ 30 x

3

+ 8 x

4

+ 8 x

5

+ 12 x

6

+ 11 x

7

< 50 x ∈ {0,1}

7

x*

LP

= (0.23, 1, 1, 0, 0, 0, 0)

Una soluzione ammissibile è z*

LB

= (1, 1, 0, 0, 1) di valore

76

(28)

Esempio

0

1 2

z*

LP

=83

z*

1LP

=80.75 z*

2LP

=82.33 x

1

=0 x

1

=1

39 + max 28 x

2

+ 46 x

3

+ 7 x

4

+ 9 x

5

+ 6 x

6

+ 4 x

7

14 x

2

+ 30 x

3

+ 8 x

4

+ 8 x

5

+ 12 x

6

+ 11 x

7

< 24

x ∈ [0,1]

7

x*

2LP

= (1, 1, 0.33, 0, 0, 0, 0)

Disequazione cover violata

x

3

< 0

Liftiamola nella sequenza

x

1

→ x

2

→ x

4

→ x

5

→ x

6

→ x

7

(29)

Esempio

Lifting

x3 < 0 (x1 = 1 → x1 = 0) α1 (1- x1)+ x3 < 0

α1 < 0 – max {x3 |knapsack e x1,x2, x4,x5 ,x6 ,x7 = 0}

α1 =-1 → x1+ x3 < 1

α2 < 1- max {x1 + x3 |knapsack e x2=1, x4,x5 ,x6 ,x7 = 0}=0 α4 < 1- max {x1 + x3 |knapsack e x4=1, x5 ,x6 ,x7 = 0}=0 α5 < 1- max {x1 + x3 |knapsack e x5=1, x6 ,x7 = 0}=0 α6 < 1- max {x1 + x3 |knapsack e x6=1, x7 = 0}=0 α7 < 1- max {x1 + x3 |knapsack e x7=1}=0

Quindi si ottiene x1+ x3 < 0. Questa disequazione è globalmente valida (grazie alla procedura di lifting) e può essere aggiunta direttamente alla formulazione iniziale.

(30)

Esempio

0

1 2

z*

LP

=83

z*

LP

=80.75 z*

LP

=77.75

x

1

=0 x

1

=1

39 + max 28 x

2

+ 46 x

3

+ 7 x

4

+ 9 x

5

+ 6 x

6

+ 4 x

7

14 x

2

+ 30 x

3

+ 8 x

4

+ 8 x

5

+ 12 x

6

+ 11 x

7

< 24

x

1

+ x

3

< 0 x ∈ [0,1]

7

Al nodo 2 si ottiene: x*

2LP

= (1, 1, 0, 0.25, 1, 0, 0)

(31)

Esempio

0

1 2

z*

LP

=83

z*

LP

=80.75 z*

LP

=77.75

x

1

=0 x

1

=1

3 4

x

4

=1 x

4

=0

z*

LP

=77.75 →76.27 z*

LP

=76.25

x*

3LP

= (1, 1, 0, 0, 1, 0.167, 0)

Cover violata: x

2

+ x

5

+ x

6

< 2 Sequenza di lifting:

x

1

→ x

3

→ x

4

→ x

7

α

1

=-1, α

3

=1, α

4

=1, α

7

=1 → x

1

+ x

2

+ x

3

+ x

5

+ x

6

< 3

Il nodo 3 e il nodo 4 si eliminano per bound …. continua…

(32)

Rilassamento Lagrangiano

(33)

Rilassamento Lagrangiano

Consideriamo il problema di PLI

e introduciamo un vettore λ = (λ1, …, λm) tale che λ ≥ 0.

Il problema P(λ) (rilassamento lagrangiano di P )

è un rilassamento per P

Difatti: 1. la regione ammissibile di P ⊆ P(λ)

2. ogni soluzione ammissibile di P è ammissibile per P(λ) e il suo valore in P(λ) è maggiore o uguale del valore in P per costruzione (λ ≥ 0)

X x

P b

Ax

cx z

=

) ( max

punti) di

finito (insieme

) (

max )

(

X x

Ax b

cx z

− +

= λ

λ

(34)

Duale lagrangiano

Trovare il miglior rilassamento possibile (rispetto λ) significa risolvere il problema

Teorema. Sia λ ≥ 0 e sia x(λ) una soluzione ottima per P(λ). Se Ax(λ) ≤ b e λ (b – Ax(λ)) = 0, allora x(λ) è ottima per P

Dimostrazione

w ≤ z(λ) = cx(λ) + λ (b - A x(λ)). Essendo λ (b – Ax(λ)) = 0 si ha che cx(λ) + λ (b - A x(λ)) = cx(λ).

Poiché Ax(λ) ≤ b, x(λ) è ammissibile per P, si ha cx(λ) ≤ z.

In definitiva: w ≤ z(λ) = cx(λ) + λ(b - A x(λ)) = cx(λ) ≤ z.

Essendo w ≥ z, si ha w=z.

{ ( ) : 0 }

min ≥

= z λ λ

w

(35)

Qualità del rilassamento

Riscriviamo w come

ovvero

{ }

{ } { }

⎪⎭

⎪ ⎬

⎪⎩

⎪ ⎨

⎧ + −

=

− +

=

=

=

) (

max min

) (

max min

) ( min

,.., 0 1

0 0

t t

T t

X

x

cx b Ax cx b Ax

z w

λ λ

λ

λ λ

λ

0

1

) (

min

=

− +

≥ λ

λ γ

γ

,..,T t

Ax b

cx

t t

(36)

Qualità del rilassamento

Facciamo il duale:

Osservando che 0

1

0 )

(

) (

max

1 1

1

=

=

=

=

=

µ µ µ

µ

T t

t T

t

t t

T t

t t

b Ax

b Ax

w

0

1

1 1

=

= ∑ ∑

=

=

µ µ

µ

T

t

t T

t

t t

x

x

(37)

Qualità del rilassamento

Si ha

Conseguenza

Se si ha la descrizione completa di conv (X) il rilassamento lagrangiano non è più forte del rilassamento lineare

) ( conv

max X x

b Ax

cx w

=

(38)

Esempio

Riferimenti

Documenti correlati

Allora la soluzione ottima duale non cambia e, per la dualit` a forte, neanche la soluzione ottima del primale, cio` e l’aggiunta di due nuove alternative non inficia l’ottimalit`

Il browser, infatti, legge la pagina dall'alto verso il basso, quando incontra il Tag &lt;SCRIPT&gt; continua a leggere sempre nello stesso verso ma interpreta le righe in

Chi è passato per Urbino nella prima tappa ha fatto il giro della durata complessiva più breve.. Beniamino ha fatto il giro della durata maggiore

L’eli- minazione della variabile i-ma nel duale comporta la presenza di due vincoli uno dei quali diventa ridondante... Eliminato il vincolo duale corrispondente al minore dei

Le variabili di base coinvolte nel ciclo verranno incrementate di ∆ , se hanno segno positivo, mentre verranno decrementate di ∆ , se hanno segno negativo. La variabile uscente sara

Osservazione: La soluzione associata all'1-albero di peso minimo può utilizzare tutti e tre gli archi incidenti sul nodo 4 e aventi peso nullo.. D'altra parte, il ciclo

[r]

Anni 30: caratterizzazioni formali della calcolabilit` a, cio`e definizione formale di classi di funzioni effettivamente calcolabili..