• Non ci sono risultati.

(4)Upper bound U (S) Cominciamo con il calcolare l’upper bound U(S) su tutta la regione ammissibile S

N/A
N/A
Protected

Academic year: 2021

Condividi "(4)Upper bound U (S) Cominciamo con il calcolare l’upper bound U(S) su tutta la regione ammissibile S"

Copied!
36
0
0

Testo completo

(1)

Branch-and-bound per KN AP SACK

Rispetto allo schema generale visto in precedenza dobbiamo specificare:

come si calcola un upper bound su un sottinsieme;

(2)

Branch-and-bound per KN AP SACK

Rispetto allo schema generale visto in precedenza dobbiamo specificare:

come si calcola un upper bound su un sottinsieme;

come si effettua il branching;

(3)

Branch-and-bound per KN AP SACK

Rispetto allo schema generale visto in precedenza dobbiamo specificare:

come si calcola un upper bound su un sottinsieme;

come si effettua il branching;

come si individuano soluzioni ammissibili con cui,

eventualmente, aggiornare il valore del lower bound LB.

(4)

Upper bound U (S)

Cominciamo con il calcolare l’upper bound U(S) su tutta la regione ammissibile S.

(5)

Upper bound U (S)

Cominciamo con il calcolare l’upper bound U(S) su tutta la regione ammissibile S.

L’upper bound si calcola utilizzando il rilassamento lineare del problema originale:

max Pn

i=1 vixi Pn

i=1 pixi ≤ b

0 ≤ xi ≤ 1 ∀ i ∈ {1, . . . , n}

(6)

Upper bound U (S)

Cominciamo con il calcolare l’upper bound U(S) su tutta la regione ammissibile S.

L’upper bound si calcola utilizzando il rilassamento lineare del problema originale:

max Pn

i=1 vixi Pn

i=1 pixi ≤ b

0 ≤ xi ≤ 1 ∀ i ∈ {1, . . . , n}

Questo è un problema di PL, ma è di forma molto

(7)

Risoluzione del rilassamento lineare

Riordinare, eventualmente, gli oggetti in modo non crescente rispetto ai rapporti valore/peso vpi

i, cioè si abbia che:

v1

p1

v2

p2

≥ · · · ≥ vn pn.

(8)

Si calcolino i valori

b − p1

b − p1 − p2

.. .

fino ad arrivare al primo valore negativo

b

r+1X

j=1

pj

se vi si arriva (se non vi si arriva vuol dire

(9)

Soluzione rilassamento lineare

La soluzione ottima del rilassamento lineare è la seguente x1 = x2 = · · · = xr = 1

xr+1 = b Pr

j=1 pj pr+1

xr+2 = xr+3 = · · · = xn = 0

(10)

Soluzione rilassamento lineare

La soluzione ottima del rilassamento lineare è la seguente x1 = x2 = · · · = xr = 1

xr+1 = b Pr

j=1 pj pr+1

xr+2 = xr+3 = · · · = xn = 0 ed ha il valore ottimo

Xr

vj + vr+1b Pr

j=1 pj pr+1 .

(11)

Soluzione ammissibile

Notiamo anche che la soluzione

x1 = x2 = · · · = xr = 1

xr+1 = xr+2 = xr+3 = · · · = xn = 0

ottenuta approssimando per difetto il valore dell’unica

variabile (la xr+1) che può avere coordinate non intere nella soluzione del rilassamento lineare, è appartenente a S (il peso dei primi r oggetti non supera la capacità dello zaino).

Quindi tale soluzione può essere utilizzata per il calcolo del lower bound LB.

(12)

Sottinsiemi di S di forma particolare

Consideriamo sottinsiemi di S con questa forma:

S(I0, I1) = {N ∈ S : l’oggetto i 6∈ N ∀ i ∈ I0, l’oggetto i ∈ N ∀ i ∈ I1} dove I0, I1 ⊆ {1, . . . , n} e I0 ∩ I1 = ∅.

(13)

Sottinsiemi di S di forma particolare

Consideriamo sottinsiemi di S con questa forma:

S(I0, I1) = {N ∈ S : l’oggetto i 6∈ N ∀ i ∈ I0, l’oggetto i ∈ N ∀ i ∈ I1} dove I0, I1 ⊆ {1, . . . , n} e I0 ∩ I1 = ∅.

In altre parole S(I0, I1) contiene tutti gli elementi di S che non contengono gli oggetti in I0 e contengono gli oggetti in I1. Possono invece indifferentemente contenere o non

contenere gli oggetti nell’insieme

If = {i1, . . . , ik} = {1, . . . , n} \ (I0 ∪ I1), con i1 < · · · < ik.

(14)

Nota bene

Si ha che

S = S(∅, ∅),

cioè la regione ammissibile del problema può essere vista come caso particolare di sottinsieme di forma S(I0, I1) con I0 = I1 = ∅.

(15)

Upper bound per tali sottinsiemi

Il nostro originario problema KN AP SACK ristretto al sottinsieme S(I0, I1) si presenta nella seguente forma:

max P

i∈I0 vixi + P

i∈I1 vixi + P

i∈If vixi P

i∈I0 pixi + P

i∈I1 pixi + P

i∈If pixi ≤ b

xi ∈ {0, 1} ∀ i ∈ If da cui:

(16)

Upper bound per tali sottinsiemi

Il nostro originario problema KN AP SACK ristretto al sottinsieme S(I0, I1) si presenta nella seguente forma:

max P

i∈I0 vixi + P

i∈I1 vixi + P

i∈If vixi P

i∈I0 pixi + P

i∈I1 pixi + P

i∈If pixi ≤ b

xi ∈ {0, 1} ∀ i ∈ If da cui:

max P

i∈I1 vi + P

i∈If vixi

P ≤ b − P

(17)

Continua

Possiamo notare che si tratta ancora di un problema di tipo KN AP SACK dove è presente una quantità costante

nell’obiettivo (Pi∈I1 vi), dove lo zaino ha ora capacità b P

i∈I1 pi e dove l’insieme di oggetti in esame è ora ristretto ai soli oggetti in If.

(18)

Continua

Possiamo notare che si tratta ancora di un problema di tipo KN AP SACK dove è presente una quantità costante

nell’obiettivo (Pi∈I1 vi), dove lo zaino ha ora capacità b P

i∈I1 pi e dove l’insieme di oggetti in esame è ora ristretto ai soli oggetti in If.

Trattandosi ancora di un problema dello zaino, possiamo applicare ad esso la stessa procedura che abbiamo

adottato per trovare l’upper bound U(S), ovvero si risolve il rilassamento lineare.

(19)

Continua

Possiamo notare che si tratta ancora di un problema di tipo KN AP SACK dove è presente una quantità costante

nell’obiettivo (Pi∈I1 vi), dove lo zaino ha ora capacità b P

i∈I1 pi e dove l’insieme di oggetti in esame è ora ristretto ai soli oggetti in If.

Trattandosi ancora di un problema dello zaino, possiamo applicare ad esso la stessa procedura che abbiamo

adottato per trovare l’upper bound U(S), ovvero si risolve il rilassamento lineare.

Tale procedura darà in output oltre all’upper bound

U(S(I0, I1)), anche una soluzione appartenente a S(I0, I1) (e quindi a S) utilizzabile per il calcolo del lower bound LB.

(20)

Procedura di calcolo

Passo 1 Se b P

i∈I1 pi < 0, il nodo non contiene

soluzioni ammissibili (gli oggetti in I1 hanno già un peso superiore alla capacità b dello zaino). In tal caso ci si

arresta e si pone

U(S(I0, I1)) = −∞

(21)

Continua

Passo 2 Altrimenti, si sottraggano successivamente a b P

i∈I1 pi i pesi degli oggetti in If nell’ordine dato arrestandoci se

(22)

Continua

Passo 2 Altrimenti, si sottraggano successivamente a b P

i∈I1 pi i pesi degli oggetti in If nell’ordine dato arrestandoci se

Caso A si arriva ad un valore negativo, ovvero esiste r ∈ {1, . . . , k − 1} tale che

b X

i∈I1

pi − pi1 − · · · − pir ≥ 0

ma

b X

pi − pi − · · · − pir − pir+1 < 0.

(23)

Continua

Passo 2 Altrimenti, si sottraggano successivamente a b P

i∈I1 pi i pesi degli oggetti in If nell’ordine dato arrestandoci se

Caso A si arriva ad un valore negativo, ovvero esiste r ∈ {1, . . . , k − 1} tale che

b X

i∈I1

pi − pi1 − · · · − pir ≥ 0

ma

b X

i∈I1

pi − pi1 − · · · − pir − pir+1 < 0.

Caso B Si sono sottratti i pesi di tutti gli oggetti in If senza mai arrivare ad un valore negativo.

(24)

Soluzioni ottime

Caso A:

xi1 = xi2 = · · · = xir = 1 xir+1 = b P

i∈I1 pi Pr

j=1 pij pir+1

xir+2 = xir+3 = · · · = xik = 0

(25)

Soluzioni ottime

Caso A:

xi1 = xi2 = · · · = xir = 1 xir+1 = b P

i∈I1 pi Pr

j=1 pij pir+1

xir+2 = xir+3 = · · · = xik = 0 Caso B:

xi1 = xi2 = · · · = xik = 1

(26)

Passo 3 Output caso A:

(27)

Passo 3 Output caso A:

U(S(I0, I1)) = X

i∈I1

vi + Xr

h=1

vih + vir+1 × b P

i∈I1 pi Pr

h=1 pih pir+1 .

(28)

Passo 3 Output caso A:

U(S(I0, I1)) = X

i∈I1

vi + Xr

h=1

vih + vir+1 × b P

i∈I1 pi Pr

h=1 pih pir+1 .

N = I1 ∪ {i1, . . . , ir} con f(N ) = X

i∈I1

vi + Xr

h=1

vih

(29)

Passo 3 Output caso A:

U(S(I0, I1)) = X

i∈I1

vi + Xr

h=1

vih + vir+1 × b P

i∈I1 pi Pr

h=1 pih pir+1 .

N = I1 ∪ {i1, . . . , ir} con f(N ) = X

i∈I1

vi + Xr

h=1

vih

Output caso B:

U(S(I0, I1)) = X

i∈I1

vi + Xk

h=1

vih.

(30)

Passo 3 Output caso A:

U(S(I0, I1)) = X

i∈I1

vi + Xr

h=1

vih + vir+1 × b P

i∈I1 pi Pr

h=1 pih pir+1 .

N = I1 ∪ {i1, . . . , ir} con f(N ) = X

i∈I1

vi + Xr

h=1

vih

Output caso B:

U(S(I0, I1)) = X

i∈I1

vi + Xk

h=1

vih.

(31)

Nota bene

Nel caso B il sottinsieme S(I0, I1) verrà sicuramente cancellato. Infatti in tal caso si ha:

U(S(I0, I1)) = f (N ) ≤ LB,

da cui segue la cancellazione del sottinsieme.

(32)

Branching

Vediamo ora di descrivere l’operazione di branching.

Dapprima la descriviamo per l’insieme S e poi l’estendiamo agli altri sottinsiemi generati dall’algoritmo.

(33)

Branching

Vediamo ora di descrivere l’operazione di branching.

Dapprima la descriviamo per l’insieme S e poi l’estendiamo agli altri sottinsiemi generati dall’algoritmo.

Supponiamo di trovarci, al termine dell’esecuzione della procedura per il calcolo di U(S), nel caso A (il caso B è un caso banale in cui tutti gli oggetti possono essere inseriti nello zaino). Avremo quindi un indice r + 1 che è il primo oggetto per cui la sottrazione successiva dei pesi assume valore negativo.

(34)

Continua

La regola di branching prescrive di suddividere S nei due sottinsiemi

S({r + 1}, ∅) e S(∅, {r + 1}),

ovvero in un sottinsieme della partizione si aggiunge l’oggetto r + 1 all’insieme I0, nell’altro lo si aggiunge all’insieme I1.

(35)

Estensione

Quanto visto per l’insieme S può essere esteso a tutti i sottinsiemi di forma S(I0, I1): dato un tale sottinsieme,

l’oggetto ir+1 che appare nel calcolo dell’upper bound nel caso A viene aggiunto in I0 in un sottinsieme della

partizione di S(I0, I1) e in I1 nell’altro sottinsieme, ovvero la partizione di S(I0, I1) sarà data dai seguenti sottinsiemi

S(I0 ∪ {ir+1}, I1) e S(I0, I1 ∪ {ir+1}).

(36)

Estensione

Quanto visto per l’insieme S può essere esteso a tutti i sottinsiemi di forma S(I0, I1): dato un tale sottinsieme,

l’oggetto ir+1 che appare nel calcolo dell’upper bound nel caso A viene aggiunto in I0 in un sottinsieme della

partizione di S(I0, I1) e in I1 nell’altro sottinsieme, ovvero la partizione di S(I0, I1) sarà data dai seguenti sottinsiemi

S(I0 ∪ {ir+1}, I1) e S(I0, I1 ∪ {ir+1}).

Si noti che con questa regola di branching tutti i sottinsiemi che appariranno nell’insieme C saranno del tipo S(I0, I1) e

Riferimenti

Documenti correlati

Driver Attention Warning e Cruise Control Freno di stazionamento elettrico Accensione automatica dei fari Lane Departure Warning High beam assistant Speed Limit Sign

Il progetto WIDE ABK parte dalla rivoluzionaria tecnologia produttiva CONTINUA+, che permette di produrre lastre in gres porcellanato robuste e leggere allo stesso tempo, grazie

Se questi distretti sono sovraccaricati in esercizi isolati, gli squilibri muscolari possono comportare dolori articolari.. Il rinforzo muscolare con sovraccarichi è essenziale,

The company’s headquarters in Varmo cover 3500 square meters and with another site the total area extends for 5000 square meters.. The R&amp;D and the technical department, one of

Servizio e IVA 7.7% compresi - Service et TVA 7.7% compris - Service und MwSt 7.7% inbegriffen Prezzi indicati in CHF – Prix indiqués en CHF – angegebene Preise in CHF..

Tarte Flambée Vegetariana Pomodorini, clorofilla di rucola e scaglie di Grana Padano. Tarte

2004-05 esercitazioni a supporto dell’insegnamento di Modellistica e Simulazione 1 (5 CF) nell’ambito del corso di Laurea triennale in Ingegneria per l’Ambiente e il

Bottle holder option 1l Persanté 1l Sterrilium Inklusive Tropfschale Bac récupération incluse Scatola di recupero incluso Drip tray included Garantie 24 Monate bei.