Branch and Bound

Transcript

Branch and Bound
Contenuto e scopo presentazione
Premesse:
• modelli ILP o MILP sono estremamente flessibili e possono essere utilizzati
per una vasta classe di problemi.
Modelli Lineari Interi/Misti
Contenuto:
• viene presentato il metodo più diffuso di soluzione di problemi di ILP o di
MILP.
Branch and Bound
Versione 15/06/2005 18.32
Scopo:
• fornire le capacità di
– risolvere all’ottimo problemi di ILP o di MILP,
– sapere utilizzare i sw più diffusi.
Raffaele Pesenti
Raffaele Pesenti
Programmazione lineare {0,1}- 01LP
Ripasso
Rappresentazione minimale:
la rappresentazione esterna Ax ≤ b di un poliedro P ⊆ ℜ n di dimensione n è
massimale se e solo se ogni disequazione definisce una faccia massimale. Ogni
faccia massimale deve inoltre corrispondere ad una disequazione del sistema.
Quando il poliedro non ha dimensione massima alcune disequazioni di Ax ≤ b
sono in realtà equazioni implicite e corrispondono alle facce improprie.
Ogni equazione corrispondente ad una faccia massimale non è implicata dalle
altre equazioni.
Raffaele Pesenti
2
3
Assunzione:
nel seguito si considereranno solo problemi in cui le variabili siano
superiormente o inferiormente limitate.
Riduzione ILP ad 01LP:
per ridurre ILP a 01LP basta sostituire ogni variabile intera xi, 0 ≤ xi ≤ u con
un numero (logaritmico in u) di variabili binarie.
Dato un qualunque problema ILP posto m=log2 u si può ottenere un
problema con sole variabili binarie 01LP introducendo la seguente
sostituzione (polinomiale)
xi ↔ 20xi0 + 21xi1 + 22xi2 + ... + 2mxim
Raffaele Pesenti
4
Formulazioni lineari
Problema 01LP:
(S, c ,max): max cx
x∈S
dove S è un insieme discreto (e ovviamente finito) di vettori binari. (I ragionamenti
successivi vanno rovesciati nel caso di problemi di minimo.)
Formulazioni lineari
formulazione lineare generica
Esempio:
sia S={(0,0),(1,0),(0,1)}
Formulazione lineare:
un poliedro P={x: Ax ≤ b} è detto formulazione lineare del problema 01LP
(S, c ,max) se e solo se
S =P ∩ {0,1}
conv(S)
Teorema:
un problema lineare 01LP (S, c ,max) ammette sempre la formulazione lineare
conv(S) con la proprietà che x ∈ S se e solo se x è un vertice di conv(S)
Raffaele Pesenti
formulazione non corretta
5
Rilassamento lineare:
dato un problema 01LP espresso rispetto ad una formulazione lineare
max z=cx
max zRL=cx
il corrispondente rilassamento lineare è
Ax ≤ b
Ax ≤ b
x ∈{0,1}n
0≤x≤1
i.e., compatibilmente con le condizioni Ax ≤ b, invece di vincolare x ai vertici
dell’ipercubo unitario le si permette di assumere qualunque valore all’interno di esso
Esempio:
max z= 5x1+3x2
max zRL =5x1+3x2
6x1 + 4x2 ≤ 7
6x1 + 4x2 ≤ 7
-2x1 + 2x2 ≤ 3
rilassato diventa
-2x1 + 2x2 ≤ 3
x1≥0
x1≥0
x2≥0
x2≥0
x1,x2 ∈{0,1}
0 ≤ x1,x2 ≤ 1
Equivalenza tra un problema 01LP e sua formulazione lineare:
per definizione di formulazione lineare P={x: Ax ≤ b}
Esempio:
max 5x1+3x2
x∈{(0,0),(1,0),(0,1)}
Raffaele Pesenti
⇔
⇔
max 5x1+3x2
6x1 + 4x2 ≤ 7
-2x1 + 2x2 ≤ 3
x1≥0
x2≥0
x1,x2 ∈{0,1}
max z= cx
Ax ≤ b
x ∈{0,1}n
⇔
6
Rilassamenti lineari
Formulazioni lineari
max z=cx
x∈S
Raffaele Pesenti
max 5x1+3x2
x1 + x2 ≤ 1
x1≥0
x2≥0
x1,x2 ∈{0,1}
7
Raffaele Pesenti
8
Rilassamenti lineari
Rilassamenti lineari
Commenti:
• tutte le formulazioni lineari di uno stesso problema 01LP hanno le stesse soluzioni sia
ammissibili che ottime, viceversa, le soluzioni, sia ammissibili che ottime, dei
rilassamenti lineari possono essere differenti.
differenti soluzioni ottime dei diversi rilassamenti
soluzione ottima di tutte le formulazioni lineari
curva di livello della funzione obiettivo
Raffaele Pesenti
9
Rilassamenti lineari
Commenti (cont.):
• noto il bound sull’errore percentualeε (x’)%, decidere se accettare x’ è una scelta
che dipende dal contesto e dall’incertezza con cui sono noti i parametri del
problema
• nell’ottica dei punti precedenti, per un dato problema di 01LP, una formulazione
lineare P1 è preferibile ad un’altra P2 quando l’upper bound ottenibile dal
rilassamento continuo derivato da P1 è più stringente (minore in un problema di
massimo) che l’upper bound ottenibile dal rilassamento continuo derivato da P2
z1*RL ≤ z2*RL
Se e solo se la condizione precedente si verifica per qualunque vettore di costo c la
formulazione P1 è detta migliore di quella P2, ciò si verifica se e solo se
P1 ⊂ P2
• esiste una formulazione ottima P=conv(S), in cui tra l’altro z*RL= z*
• tra le formulazioni che presentano vincoli con big M sono da preferirsi quelle con
i valori delle M il più piccolo possibile.
Raffaele Pesenti
11
Commenti (cont.):
• in un problema 01LP di massimo vale la relazione
z*RL ≥ z*
Infatti, data una formulazione P={x: Ax ≤ b}, la soluzione ottima z*, x* di
max z=cx
max zRL=cx
è ammissibile per
Ax ≤ b
Ax ≤ b
0≤x≤1
x ∈{0,1}n
• z*RL è una limitazione superiore (upper bound) della soluzione ottima del
problema 01LP considerato. La conoscenza di un upper bound è
estremamente utile perché permette di valutare (in tempi polinomiali) la
qualità di una soluzione ammissibile eventualmente a disposizione. Sia infatti
x’ una soluzione data e ad essa corrisponda il valore della funzione obiettivo
z(x’), chiaramente
z(x’) ≤ z* ≤ z*RL
quindi l’errore che si compie accontentandosi di x’ è non superiore a
ε (x’)% ≤ (z*RL - z(x’))/ z(x’)
Raffaele Pesenti
10
Rilassamenti lineari e involucri convessi
Equivalenza per un problema 01LP:
se P={x: Ax ≤ b} = conv(S) allora per qualunque c
max z=cx
max z= cx
⇔
Ax ≤ b
⇔
x∈S
x ∈{0,1}n
Raffaele Pesenti
max z= cx
Ax ≤ b
12
Rilassamenti lineari e involucri convessi per ILP
Rilassamenti lineari e involucri convessi
Commenti:
• se dato S fosse semplice fornire una formulazione esterna di conv(S) si
potrebbe risolvere il problema 01LP attraverso gli algoritmi di soluzione di
problemi di programmazione lineare continua
• le facce massimali di conv(S) però possono essere di numero esponenziale.
Ciò nonostante ci si potrebbe accontentare di risolvere il problema lineare
attraverso l’uso di un oracolo di separazione che, data una soluzione x che
soddisfa certamente solo un sottoinsieme dei vincoli che descrivono conv(S),
ne garantisca l’ammissibilità (e quindi ottimalità) oppure fornisca una
disequazione (corrispondente ad una faccia massimale) che risulti violata.
Purtroppo, in generale, non esistono algoritmi polinomiali che implementano
un tale oracolo di separazione, al più esistono algoritmi più o meno efficienti
che possono indicare se la soluzione corrente viola una disequazione
all’interno di un sottoinsieme di tutte quelle considerabili.
Raffaele Pesenti
13
Problema ILP:
(S, c ,max): max cx
x∈ S
dove S è un insieme discreto e finito di vettori interi.
In generale l’involucro convesso di S potrebbe contenere anche soluzioni
intere non appartenenti ad S, in questo caso, può convenire ridursi
inizialmente ad un problema 01LP.
In pratica però accade spesso che il problema venga già formulato in modo
“esterno”, i.e., sotto forma di
max z= cx
Ax ≤ b
x ∈ Zn
In questi casi P={x: Ax ≤ b} può essere considerata una prima formulazione
e quindi si possono applicare i ragionamenti dei lucidi precedenti.
Raffaele Pesenti
14
Branch and Bound (B&B)
Metodi generali di soluzione di 01LP
Metodi generali di soluzione di 01LP:
i metodi generali di soluzione di problemi 01LP a partire da una
formulazione iniziale:
– introducono vincoli successivi per ottenere formulazioni via via migliori
fino a giungere ad una che abbia in comune con conv(S) il vertice ottimo
(metodo dei piani di taglio), oppure
– enumerano implicitamente tutte le soluzioni intere suddividendo
progressivamente la formulazione iniziale in vari poliedri più piccoli. La
suddivisione avviene in modo da scartare ad ogni passo alcune delle
soluzioni non intere incluse nel poliedro originale finché potenzialmente
alla fine del processo ogni soluzione ammissibile coincide con un diverso
poliedro (metodo del branch and bound), oppure
– eseguono entrambe le operazioni precedenti.
Branch and Bound:
Raffaele Pesenti
Raffaele Pesenti
15
Il B&B è un metodo di esplorazione dello spazio delle soluzioni basata sull’
enumerazione implicita :
– il metodo esamina ricorsivamente sottoinsiemi disgiunti di soluzioni
(branching) e li valuta sulla base di una stima del migliore valore che la
funzione obiettivo assume in ciascun sottoinsieme (bounding). Elimina di
soluzioni che certamente non contengono la soluzione ottima.
– la stima avviene risolvendo un rilassamento, in genere lineare (RL), del
problema definito sul solo sottoinsieme di soluzioni.
16
Branch and Bound (B&B)
Branch and Bound (B&B)
Si considera il problema 01LP o ILP
max {z= cx, Ax ≤ b, x ∈ Zn}
e una sua formulazione P={x∈ℜn : Ax ≤ b}.
Si risolve il problema rilassato lineare (RL) corrispondente, determinando x0.
Se x0 è intera si è determinata la soluzione ottima, altrimenti
si sceglie una componente x0j non intera della soluzione e si decompone la
regione di ammissibilità P0={x: Ax ≤ b} del RL in due regioni disgiunte:
P1={x: Ax ≤ b, xj ≤  x0j  }
P2={x: Ax ≤ b, xj ≥  x0j  +1}
Si noti che
P1 ∩P2 = ∅, P1 ∪P2 ≠P0, ma (P1 ∩ Zn) ∪ (P2 ∩ Zn) = (P0 ∩ Zn)
i.e., complessivamente si continuano a considerare le stesse soluzioni intere,
mentre vengono scartate alcune soluzioni continue del problema rilassato.
Raffaele Pesenti
17
In questo modo si può separare il problema originale in due problemi disgiunti
associati a P1 e P2. Quindi si considerano i nuovi due problemi iterando il
procedimento, potenzialmente alla fine di tutte le suddivisioni si generano tanti
poliedri composti da un solo punto intero quante sono le soluzioni ammissibili
1
2
nodo 2 RL
associato al P2
Raffaele Pesenti
18
x2
4
3
2
1
1
Q
– la soluzione di RL associato al nodo non è intera, ma è possibile stabilire
che l’esplorazione della porzione di albero al di sotto del nodo non
conduce alla soluzione ottima (bounding).
2
3
0
x1≤1
– la soluzione di RL associato al nodo è intera;
obiettivo
P
0
– il RL associato ad un nodo non ammette soluzione;
1
Raffaele Pesenti
x1
4
x1≥2
P
N
x2
4
3
2
1
0
19
xj ≥  x0j  +1
nodo 1 RL
associato al P1
Si procede risolvendo i RL associati ai nuovi nodi 1 e 2. Se la soluzione non
è intera si ramifica (branching) ulteriormente l’albero. Perché l’esplorazione
non sia totale, il branching deve essere fermato (pruning) quando:
Raffaele Pesenti
0
xj ≤  x0j 
Ad ogni nodo è associato un RL
Esempio (grafico)
Branch and Bound (B&B)
nodo 0 RL associato al P0
L’esplorazione dello spazio delle
soluzioni effettuato dal metodo del
Branch-and-Bound si può rappresentare
per mezzo di un albero (“enumeration
tree”).
2
x2
4
3
2
1
Q
1
2
3
4
x1
0
N
1
2
3
4
x1
20
x1 ≤ 1
Q
x2 ≤ 1
M
3
0
P
1
x2 ≤ 2
R
4
Bounding, il principio base:
si supponga di aver trovato una soluzione intera risolvendo il RL associato
ad un nodo, e.g., nodo 3 in figura, siano note inoltre le soluzioni degli altri
nodi visitati e valgano le relazioni, e.g., z4RL> z3RL z2RL≤ z3RL
0
I valori z2RL, z3RL e z4RL rappresentano degli
0
x j ≥ x 0j  + 1
x j ≤ x j 
upper bound rispetto a qualsiasi soluzione
intera determinabile ramificando
1
2
rispettivamente i nodi 2, 3 e 4. Infatti,
2
3
quando si ramifica un nodo, il valore
x k ≤ x1k 
x k ≥ x 1k  + 1 z RL ≤ z RL
dell’obiettivo associato ai nodi successori
3
non può essere migliore dell’obiettivo
4
4
3
3
associato al nodo padre, dal momento che
z RL > z RL
z RL
i RL dei nodi successori sono più vincolati
soluzione
intera
del RL del nodo padre.
2
N
x2 ≥ 2
Bounding
x1 ≥ 2
x2 ≥ 3
5
6
soluzione frazionaria non ammissibile intera ottima non ammissibile
peggiore di R
x2
x2
4
4
3
3
2
2
R
M
1
1
x1
x1
0
1 2 3
4
0
1 2 3
Raffaele Pesenti
21
Raffaele Pesenti
22
Bounding
Bounding
Bounding, il principio base (cont.):
Poiché la soluzione x associata a z3RL è intera, LB= z3RL rappresenta anche il miglior
lower bound corrente per la soluzione ottima del problema complessivo:
• non ha più senso quindi esplorare l’albero
sotto il nodo 2 poiché le soluzioni
associate ai suoi nodi non possono
migliorare la soluzione intera corrente (il
nodo 2 è potato, pruned).
• analogamente non ha senso esplorare
l’albero sotto il nodo 3.
• invece non si può concludere sul nodo 4
che rimane attivo. Si deve esplorare
l’albero sotto di esso.
• il RLi associato ad un nodo i (dove Aix=bi è l’insieme dei vincoli originali più i
vincoli via via aggiunti ad ogni branching)
i
(RL)i max zRL
= c x, Ai x = bi x ≥ 0
0
x j ≤ x 0j 
x j ≥ x 0j  + 1
1
x k ≤ x1k 
3
3
LB = z RL
x k ≥ x 1k  + 1
• xlb, la migliore soluzione intera LB sino ad ora trovata esplorando l’albero
• xub, la soluzione non intera di RLi
se vale ziRL= cxub ≤ cxlb =LB , poiché è noto che cxint ≤ cxub dove xint è soluzione
2
2
3
z RL
≤ z RL
ottima intera di
( ILP) i max z i = c x, Ai x = b i , x ∈ Z n
4
allora ne consegue che cxint ≤ cxub ≤ cxlb. Quindi la migliore soluzione intera contenuta
in Pi={x∈ℜn: Ai x = b, x ≥ 0} non potrà mai essere migliore della soluzione intera
corrente xlb.
4
3
z RL
> z RL
soluzione
intera
Raffaele Pesenti
In generale, dati:
23
Raffaele Pesenti
24
Bounding
1. Inizializzazione
Esempio di possibile
evoluzione della visita
dell’albero
nodo “pruned”
xk ≤ x1k 
soluzione intera
LB
3
0
x j ≤ x 0j 
x j ≥ x 0j  + 1
1
2
3
Porre LB = - ∞ valore corrente dell’obiettivo (lower bound) e a nil la soluzione
correntemente ottima.
2. Branching
4
( zRL
> LB3 )
4
3
= z RL
Sia 0 il nodo attivo e P0 il poliedro associato al RL.
2
( z RL
≤ LB 3 )
x k ≥ x 1k  + 1
Algoritmo di Branch and Bound
Se non esiste un nodo attivo (anche detto aperto) andare al passo 7,
altrimenti scegliere il nodo attivo j.
x f ≤ x
4
f
x f ≥ x

6
5
x5: soluzione ottima intera
LB = z
( LB 5 ≥ LB )
5
5
RL
3
4
f
+1
Se il RL di j è stato risolto in precedenza andare al passo 3, altrimenti al 4.
3. Separazione
(z
6
RL
≤ LB )
5
P j +1 = P j ∩
Tutti i nodi attivi, i.e., quelli che non vengono tagliati devono essere esplorati.
L’esplorazione termina quando non ci sono più nodi attivi.
Raffaele Pesenti
Scegliere una variabile frazionaria di base x Bi = y ij0 e suddividere Pj in
25
{x
: x Bi ≤
y i j0 }
P j+ 2 = P j ∩
{x :x
Bi
≥
y i j0  + 1 }
creando due nuovi nodi attivi (il nodo j non è più attivo). Andare al passo 2.
Raffaele Pesenti
26
4. Soluzione di RL
Risolvere il RL associato a j. Se non esiste soluzione tagliare il nodo (il nodo non è
più attivo) ed andare al passo 2.
Se esiste soluzione ottima xj intera andare al passo 5, altrimenti andare al 6.
Algoritmo di Branch and Bound
Commenti:
• un nodo figlio presenta un vincolo in più del nodo padre. Nel caso di rilassamento
lineare la soluzione del problema associato al nodo figlio può essere quindi ottenuta con
il simplesso duale a partire dalla soluzione ottima del nodo padre
5. Pruning per integrità
• la convergenza in un numero finito di passi è garantita se il problema ha soluzioni
ottime finite. Nel caso peggiore però l’algoritmo è esponenziale e può ridursi ad
enumerare tutte le soluzioni ammissibili
Tagliare il nodo j e porre LB = max{LB, zj} (il nodo j non è più attivo).
Se il LB viene aggiornato, porre la soluzione corrente ottima uguale a xj.
Andare al passo 6.
• le prestazioni dell’algoritmo dipendono in maniera drammatica dal livello a cui
avvengono le potature dei nodi dell’albero di enumerazione. È fondamentale quindi che
i problemi rilassati che vengono risolti ad ogni nodo:
• risultino (quanto più spesso possibile) inammissibili se il corrispondente problema
intero non ammette soluzioni ammissibili
• forniscano soluzioni zRL il più vicino possibili a quelle del corrispondente problema
intero
ne consegue che la scelta della formulazione del problema di ILP deve essere fatta con
estrema cura e che il rilassamento continuo può non essere l’unica scelta da prendere in
considerazione per il calcolo degli upper bound ai nodi.
6. Pruning per bound
Tagliare ogni nodo attivo k tale che zkLR ≤ LB (il nodo k non è più attivo).
Andare al passo 2.
7. Terminazione
L’algoritmo termina.
Se LB = - ∞ allora (IP) non ammette soluzione.
Se LB > - ∞ la soluzione corrente associata a LB è ottima.
Raffaele Pesenti
27
Raffaele Pesenti
28
Algoritmo di Branch and Bound
Algoritmo di Branch and Bound
Commenti (cont.):
• per le stesse ragioni del punto precedente è opportuno cercare di escludere a priori che
vi siano soluzioni intere equivalenti. Ad esempio nel problema del bin-packing è
opportuno introdurre vincoli del tipo:
yk ≥ yk+1
che impongono che un bin possa essere usato solo se è già stato utilizzato il bin
precedente, e anche
x11 = 1, x12 + x22 = 1, …
che impongono che il primo oggetto finisca nel primo bin, il secondo o nel primo o nel
secondo bin, ecc..
• in generale può convenire introdurre dei vincoli che descrivano “condizioni di
dominanza” certamente rispettate da almeno una soluzione ottima e che permettano di
restringere il campo di ricerca. Ad esempio, in un problema di scheduling, introdurre un
vincolo che imponga che tra due operazioni con stessa data di rilascio venga eseguita
prima la più breve.
Raffaele Pesenti
29
Commenti (cont.):
• sempre per le stesse ragioni è importante conoscere una “buona” soluzione
ammissibile intera da utilizzare fin dal primo passo come LB al posto di -∞.Una
tale soluzione può essere ottenuta utilizzando il risultato di una procedura
euristica di soluzione.
• è infine opportuno ridurre il numero di variabili binarie o intere, quando queste
non siano necessarie a giungere ad una formulazione migliore. Ad esempio in un
problema di bin-packing, sia m un numero di bin associati ad una soluzione
ammissibile nota allora si possono fissare a zero (praticamente eliminare) tutte le
variabili associate a bin di indice superiore a m.
• in generale conviene eseguire una fase di preprocessing in cui si verifica se i
vincoli sono tale da imporre a priori il valore di qualche variabile, e.g.,
x1 + x2 ≤ 1, x1 + x2 + x3 ≥ 2, xi∈{0,1} ⇒ x3 = 1
Raffaele Pesenti
30
Backtracking
Algoritmo di Branch and Bound
Strategie di backtracking:
Commenti (cont.):
• le prestazioni dell’algoritmo dipendono anche dalle strategie di visita dell’albero,
ad esempio da
• strategie di backtracking
• strategie di priorità fra le variabili
• diverse politiche di scelta del nodo da ramificare al passo 3 possono essere
implementate.
Tre strategie limite:
• Depth First (esplorazione in profondità):
se il nodo corrente non è tagliato generare i due nodi figli e proseguire ad
• strategie di branching (albero bilanciato)
esplorare uno di essi al livello successivo.
• euristiche di valutazione dei bound
Raffaele Pesenti
31
Raffaele Pesenti
32
Backtracking
Backtracking
Strategie di backtracking (cont.):
Strategie di backtracking (cont.):
• Breadth First (esplorazione in ampiezza):
si esplorano tutti i nodi allo stesso livello prima di passare al livello
successivo.
• Best Bound First (esplorazione sul nodo migliore):
si esplora per primo il nodo con migliore upper bound
Raffaele Pesenti
33
• Commenti:
• la strategia depth first richiede minore occupazione di memoria della breath first o
della best bound first, ma può richiedere maggior tempo.
• con la strategia depth first in genere si determina più velocemente una soluzione
intera ammissibile, con la strategia best bound la prima soluzione intera
ammissibile che si determina che coincida con il best bound è anche ottima
• in pratica si utilizza un mix di depth first e best bound first (o variazioni sul tema).
Si procede con depth first a meno che la differenza percentuale tra zRL del nodo
corrente e lo zRL migliore tra tutti i nodi ancora aperti non sia superiore ad una
determinata soglia fissata a priori.
Raffaele Pesenti
Priorità fra le variabili
34
Branching
Strategie di priorità sulle variabili:
• il valore di alcune variabili (corrispondenti nel problema reale a scelte di
importanza maggiore) può implicare notevoli limiti ai valori assumibili da
altre variabili (corrispondenti nel problema reale a scelte di importanza
minore), è quindi opportuno che vengano eseguiti prima i branching su
variabili di importanza/priorità maggiore.
Ad esempio in un problema di bin-packing conviene ritenere di priorità
maggiore le variabili yi associate ai singoli bin che le variabili xij
corrispondenti all’assegnazione dell’oggetto j al bin i. Infatti se yi=0
corrispondentemente xij=0, ∀j.
Strategie di branching (1):
• dato un nodo aperto si può scegliere quale dei due figli espandere per primo,
quello corrispondente ad un down branch ovvero all’imposizione del vincolo
xk ≤ xik
o quello ad un up branch ovvero all’imposizione del vincolo
xk ≥ xik + 1
Nel problema del bin-packing, per trovare una prima soluzione ammissibile è
conveniente iniziare con up branching.
• fissare la priorità delle variabili ha drammatica influenza sulle prestazioni del
B&B. Quando nessuna priorità è fissata di solito gli algoritmi eseguono il
branch successivo sulla variabile con componente frazionaria massima (o
minima)
Raffaele Pesenti
35
Raffaele Pesenti
36
Branching
Upper bound
Strategie di branching (2):
• ogni volta che si esegue un branching conviene suddividere l’albero in due
sottoalberi a cui corrispondono un numero di foglie circa equivalenti.
Ad esempio in presenza di un vincolo di bounding generalizzato tipo:
x1 + x2 + … + x10 = 1
può convenire eseguire il branch x1 = 0, x1 = 1, infatti il primo sottoalbero
contiene la quasi totalità delle soluzioni ed è quindi molto probabile che lo
zRL della sua radice non cambi significativamente rispetto a quella del nodo
padre. Si può avere una variazione significativa nello zRL del secondo albero,
ma anche se tale valore portasse ad un pruning, si sarebbero eliminate poche
soluzioni.
Ne consegue che in generale risulta più conveniente un branching
x1 + x2 + … + x5 = 1,
x6 + x7 + … + x10 = 1
Raffaele Pesenti
37
In ogni nodo dell’albero di enumerazione deve venire effettuata una stima,
calcolato un upper bound, del valore della migliore soluzione ottima intera.
Un possibile upper bound è la soluzione ottima del rilassamento continuo del
problema associato al nodo.
In generale però è possibile calcolare altri upper bound risolvendo degli altri
tipi di rilassamento. In ogni caso la qualità di un upper bound viene valutata
in termini di:
– accuratezza nell’approssimazione della soluzione ottima,
– facilità con il quale può essere calcolato
Possibili altri esempi di rilassamento sono:
– rilassamento per eliminazione
– rilassamento surrogato
– rilassamento lagrangiano
– rilassamento per decomposizione
Raffaele Pesenti
38
Rilassamento per eliminazione
Rilassamento per eliminazione
Rilassamento per eliminazione:
nel rilassamento per eliminazione, invece di trascurare i vincoli di interezza,
vengono eliminati uno o più vincoli del modello:
Esempio:
Dato il seguente problema di zaino bidimensionale:
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14
xi∈{0,1}
si trascura il secondo vincolo, risolvendo solo
max zRE= 25x1 + 20x2 + 15x3 + 12x4 + 10x5 ,
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22,
xi∈{0,1}
Raffaele Pesenti
Commenti:
• in questo e nei rilassamenti successivi si rilassa il problema originale in un
problema che nel caso particolare risulti praticamente risolvibile, anche se in
generale è NP-hard.
• in ogni caso il valore della soluzione di un rilassamento deve essere non
inferiore (in un problema di massimo) al valore della soluzione ottima.
39
Raffaele Pesenti
40
Rilassamento surrogato
Rilassamento surrogato
Commenti:
• il rilassamento per eliminazione è un caso particolare del surrogato, quando
vengono usati pesi uguali a zero
• se la soluzione ottima x* del rilassamento surrogato è ammissibile per il
problema originale ILP allora x* è anche ottima per ILP
• il valore della soluzione ottima zRS(π ) del problema surrogato dipende dai
valori dei pesi π assegnati ai vari vincoli. In ogni caso
zRS(π ) ≥ z*
la scelta dei pesi ottima π ∗ è quella per cui zRS(π ∗) = min{zRS(π ), π ≥ 0}.
• il problema di determinare i pesi ottimi π ∗ è detto problema surrogato duale
poiché vale il seguente teorema di dualità debole
min{zRS(π ), π ≥ 0} ≥ max {z= cx, Ax ≤ b, x ∈ Zn}
In generale non è ovvia la scelta ottima dei pesi e viene determinata per
iterazioni successive aumentando i pesi dei vincoli che risultano violati dalla
soluzione ottenuta col rilassamento corrente e diminuendo i pesi dei vincoli
rispettati.
Rilassamento surrogato:
nel rilassamento surrogato si sostituisce un insieme di vincoli con un unico
vincolo di uguale struttura. Tale vincolo è combinazione (conica, se vincoli
sono di disuguaglianza) dei precedenti
Esempio:
Dato il seguente problema di zaino bidimensionale:
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14
xi∈{0,1}
e i seguenti pesi 3, 1, si risolve
max zRS (3,1)= 25x1 + 20x2 + 15x3 + 12x4 + 10x5
37x1 + 29x2 + 35x3 +18x4 + 19x5 ≤ 80
xi∈{0,1}
Raffaele Pesenti
41
Raffaele Pesenti
Rilassamento lagrangiano
Rilassamento lagrangiano
Rilassamento lagrangiano:
nel rilassamento lagrangiano la soddisfazione di un insieme di vincoli viene posta come
obiettivo (invece che come vincolo). I vincoli vengono pesati,utilizzando pesi non
negativi in caso di vincoli di disuguaglianza, come nell’esempio.
Esempio:
Dato il seguente problema di zaino bidimensionale:
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14
xi∈{0,1}
e il peso 0.3 per il secondo vincolo, si risolve
max zRLag (0.3)= 25x1 + 20x2 + 15x3 + 12x4 + 10x5 + 0.3(14 - (7x1 + 5x2 + 5x3 + 3x4 + 7x5))
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
xi∈{0,1}
Raffaele Pesenti
42
43
Commenti:
• se la soluzione ottima x* del rilassamento lagrangiano è ammissibile per il
problema originale ILP non è detto che x* sia anche ottima per ILP, poiché
le due funzioni obiettivo non coincidono
• il valore della soluzione ottima zRLag(π ) del problema lagrangiano dipende
dai valori dei pesi π assegnati ai vari vincoli. In ogni caso
zRLag(π ) ≥ z*
la scelta dei pesi ottima π ∗ è quella per cui zRLag(π ∗) = min{zRLag(π ), π ≥ 0}.
• il problema di determinare i pesi ottimi π∗ è detto problema lagrangiano
duale poiché vale il seguente teorema di dualità debole
min{zRLag(π ), π ≥ 0} ≥ max {z= cx, Ax ≤ b, x ∈ Zn}
In generale non è ovvia la scelta ottima dei pesi e viene determinata per
iterazioni successive aumentando i pesi dei vincoli che risultano violati dalla
soluzione ottenuta col rilassamento corrente e diminuendo i pesi dei vincoli
rispettati.
Raffaele Pesenti
44
Rilassamento per decomposizione
Rilassamento per decomposizione
Rilassamento per decomposizione:
nel rilassamento per decomposizione si decompone il problema iniziale in due
sottoproblemi più semplici
Esempio:
Dato il seguente problema di zaino bidimensionale:
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14
xi∈{0,1}
si considera il problema equivalente
max z = α (25x1 + 20x2 + 15x3 + 12x4 + 10x5) + β (25y1 + 20y2 + 15y3 + 12y4 + 10y5)
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
7y1 + 5y2 + 5y3 + 3y4 + 7y5 ≤ 14
xi=yi, xi∈{0,1}, yi∈{0,1}
con α,β t.c. α + β = 1
Raffaele Pesenti
45
Esempio (cont.):
si rilassano lagrangianamente i vincoli xi=yi, ottenendo un problema composto da due
sotto problemi risolvibili separatamente
max zRD =
= max{(α 25+π1 )x1 + (α 20 +π2)x2 + (α 15 +π3)x3 + (α 12 +π1)x4 + (α 10 +π5 )x5,
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22, xi∈{0,1}}+
+ max{(β 25-π1 )y1 + (β 20 -π2)y2 + (β 15 -π3)y3 + (β 12 -π1)y4 + (β 10 -π5 )y5,
7y1 + 5y2 + 5y3 + 3y4 + 7y5 ≤ 14, yi∈{0,1}}
con α,β t.c. α + β = 1 e π libero.
Raffaele Pesenti
Rilassamento per decomposizione
Relazioni fra i rilassamenti
Commenti:
• se la soluzione ottima x* del rilassamento per decomposizione è ammissibile
per il problema originale ILP non è detto che x* sia anche ottima per ILP,
poiché le due funzioni obiettivo non coincidono
• il valore della soluzione ottima zRD(π ) del problema lagrangiano dipende dai
valori dei pesi π assegnati ai vari vincoli. In ogni caso
zRD(π ) ≥ z*
la scelta dei pesi ottima π∗ è quella per cui zRD(π ∗) = min{zRD(π )}.
• il problema di determinare i pesi ottimi π ∗ è detto (anche in questo caso)
problema lagrangiano duale poiché vale il seguente teorema di dualità debole
min{zRD(π )} ≥ max {z= cx, Ax ≤ b, x ∈ Zn}
Raffaele Pesenti
46
47
Relazioni di dominanza tra i rilassamenti:
• esistono le seguenti relazioni di dominanza tra le soluzioni dei diversi
rilassamenti
z* ≤ zRS(π S*), zRD(π D*) ≤ zRLag(π Lag*) ≤ zRE, zRL
• nessuna relazione generale esiste tra zRS(π S*) e zRD(π D*) e tra zRE e zRL
• zRLag(π Lag*) = zRL quando il poliedro definito dai vincoli non spostati
all’obiettivo è un poliedro intero
Commenti:
• il rilassamento lagrangiano è, dopo quello lineare, il più usato poiché è più
facile da trattare matematicamente
Raffaele Pesenti
48
B&B applicato al KP
Algoritmo di Branch and Bound
Commenti finali:
• il B&B è un metodo generale e può essere generalizzato ad altri problemi
diversi da ILP. In questi casi branch potrebbe generare anche più di due nodi
• nel B&B bisogna utilizzare tutta l’informazione disponibile circa la soluzione
ottima in modo da restringere il campo di ricerca e guidare l’algoritmo nella
ricerca. L’informazione può anche dovere venire aggiornata dinamicamente
ad ogni nodo. L’unico limite nell’uso di informazione è che la sua
elaborazione non sia più onerosa del vantaggio che fornisce.
Raffaele Pesenti
49
Problema dello zaino: risolvere il seguente problema dello zaino
max 12x1 +36 x2 +42 x3 +18 x4 + 25x5
3x1 + 10x2+ 14x3 + 6x4 + 10 x5 ≤ 23,
xi ∈{0,1}
Commenti:
se gli indici degli oggetti sono ordinati per valore specifico crescente (come in
questo caso), i.e., ci / ai ≥ ci+1 / ai+1, il rilassamento lineare del problema, posto h:
Σi=1..h ai ≤ b e Σi=1..h+1 ai > b, dà come soluzione
– xi=1 per i ≤ h
– xh+1= (b - Σi=1..h ai)/ ah+1
– xi=0 per i > h+1
– zRL= Σi=1..h ci + ch+1 (b - Σi=1..h ai)/ ah+1
il corrispondente UB della soluzione ottima intera può essere posto UB = zRL
dopo avere osservato che se tutti i parametri sono interi la soluzione ottima z*
del problema non può che essere intera
Raffaele Pesenti
B&B applicato al KP
B&B applicato al KP
Nodo 2:
max zRL= 12x1 +36 x2 +18 x4 + 25x5
3x1 + 10x2+ 6x4 + 10 x5 ≤ 23
0 ≤ xi ≤ 1
Nodo 1 (radice):
max zRL= 12x1 +36 x2 +42 x3 +18 x4 + 25x5
3x1 + 10x2+ 14x3 + 6x4 + 10 x5 ≤ 23
0 ≤ xi ≤ 1
soluzione zRl = 78, x= [1,1,10/14,0,0], UB= 78 =78
una soluzione intera certamente ammissibile è x= [1,1,0,1,0] che implica LB= 66
Branching su x3:
si ottengono due nodi:
Nodo 2: corrispondente a x3= 0
Nodo 3: corrispondente a x3= 1
50
1
x3= 0
x3= 1
2
3
x3= 1
x3= 0
2
soluzione zRl = 76, x= [1,1,0,1,4/10], UB= 76 =76
Branching su x5:
si ottengono due nodi:
Nodo 4: corrispondente a x5= 0
Nodo 5: corrispondente a x5= 1
UB=78
LB=66
1
UB=76
LB=66
3
x5= 1
x5= 0
4
UB=78
LB=66
5
ListaNodiAperti = {Nodo 4, Nodo 5, Nodo 3}
ListaNodiAperti = {Nodo 2, Nodo 3}
Raffaele Pesenti
51
Raffaele Pesenti
52
B&B applicato al KP
Nodo 4:
max zRL= 12x1 +36 x2 +18 x4
3x1 + 10x2+ 6x4 ≤ 23
0 ≤ xi ≤ 1
B&B applicato al KP
UB=78
LB=66
1
x3= 1
x3= 0
2
soluzione zRl = 66, x= [1,1,0,1,0], UB= LB =66
soluzione intera niente branching
UB=76
LB=66
3
x5= 1
x5= 0
Nodo 5:
max zRL= 12x1 +36 x2 +18 x4 +25
3x1 + 10x2+ 6x4 ≤ 13
0 ≤ xi ≤ 1
UB=78
LB=66
1
x3= 1
x3= 0
2
soluzione zRl = 73, x= [1,1,0,0,1], UB= LB =73
soluzione intera niente branching nuova soluzione
correntenmente ottima
x5= 0
UB=76
LB=66
3
x5= 1
ListaNodiAperti = {Nodo 5, Nodo 3}
ListaNodiAperti = {Nodo 3}
5
4
UB=66
LB=66
Raffaele Pesenti
53
B&B applicato al KP
Nodo 3:
max zRL= 12x1 +36 x2 +18 x4 + 25x5 +42
3x1 + 10x2+ 6x4 + 10 x5 ≤ 9
0 ≤ xi ≤ 1
soluzione zRl = 75.6, x= [1,6/10,1,0,0],
UB= 75.6 =75
x5= 0
Branching su x2:
si ottengono due nodi:
Nodo 6: corrispondente a x2= 0
Nodo 7: corrispondente a x2= 1
2
UB=76
LB=66
3
UB=75
LB=73
x5= 1
x2= 0
4
5
UB=66
LB=66
UB=73
LB=73
6
UB=66
LB=66
UB=73
LB=73
Raffaele Pesenti
54
Nodo 6:
max zRL= 12x1 +18 x4 + 25x5 + 42
3x1 + 6x4 + 10 x5 ≤ 9
0 ≤ xi ≤ 1
x3= 1
x3= 0
5
B&B applicato al KP
UB=78
LB=66
1
4
x2= 1
7
1
x3= 0
UB=78
LB=66
x3= 1
UB=76
3
2
soluzione zRl = 72, x= [1,0,1,1,0],
LB=66
UB= 72 =72
x5= 1
UB di valore minore (o uguale) alla x5= 0
x2= 0
soluzione corrente, il nodo viene
potato (indipendentemente dal fatto
5
6
4
che la soluzione sia, casualmente,
anche intera)
UB=66 UB=73 UB = 72
LB=66 LB=73 pruned
ListaNodiAperti = {Nodo 7}
UB=75
LB=73
x2= 1
7
ListaNodiAperti = {Nodo 6, Nodo 7}
Raffaele Pesenti
55
Raffaele Pesenti
56
Esercizi
B&B applicato al KP
Nodo 7:
Problema inammissibile:
a2 + a3=24 > b = 23
UB=78
LB=66
1
x3= 1
x3= 0
ListaNodiAperti = {}
2
algoritmo terminato
x5= 0
4
UB=66
LB=66
Es 1)
UB=76
LB=66
3
UB=75
LB=73
x5= 1
x2= 0
5
6
x2= 1
7
UB=73 UB = 72inammissibile
pruned
LB=73 pruned
Raffaele Pesenti
57
Dato il seguente problema 01-LP
max 12x1 +23 x2 +14 x3 +25 x4 + 13x5
7x1 + 16x2+ 7x3 + 13x4 + 10 x5 ≤ 27
13x1 + 8x2+ 5x3 + 6x4 + 5 x5 ≤ 24
xi ∈{0,1}
Calcolare il valore della soluzione ottima dei seguenti rilassamenti e
determinare il migliore tra essi:
• rilassamento continuo
• rilassamento per eliminazione del primo vincolo
• rilassamento surrogato, pesando 1 entrambe i vincoli
• rilassamento lagrangiano, rilassando il secondo vincolo con peso 1.
Nel caso degli ultimi due rilassamenti provare anche pesi alternativi
indicando in base a che criteri devono essere scelti
Raffaele Pesenti
Esercizi
Esercizi
Es 2)
Es 3)
Dato il seguente problema 01-LP
max 25x1 +34 x2 +12 x3 +18 x4 + 17x5
8x1 + 16x2+ 10x3 + 13x4 + 10 x5 ≤ 36
xi ∈{0,1}
risolverlo con il branch and bound. Disegnare l’albero di esplorazione
completo e visitarlo seguendo differenti strategie, e.g., depth first, best
bound.
Raffaele Pesenti
58
Dato il seguente problema 01-LP
max 12x1 +23 x2 +14 x3 +25 x4 + 13x5
7x1 + 16x2+ 7x3 + 13x4 + 10 x5 ≤ 32
13x1 + 8x2+ 5x3 + 6x4 + 5 x5 ≤ 27
xi ∈{0,1}
risolverlo con il branch and bound. Disegnare l’albero di esplorazione
completo e visitarlo seguendo differenti strategie, e.g., depth first, best
bound.
59
Raffaele Pesenti
60
Esercizi
UB = 1000
Es 4)
UB = 900
Il seguente albero è l'albero di esplorazione completo che emergerebbe in una
ricerca esaustiva delle soluzioni di un problema di massimizzazione. In realtà
l'albero è esplorato con una strategia mista in cui si applica il depth first sul
nodo più promettente tra i due figli del nodo correntemente analizzato, a
meno che non esista un altro nodo nella lista dei nodi aperti il cui upper
bound è almeno il 25% maggiore del corrispondente valore del migliore dei
due figli. Indicare in che sequenza i nodi escono dalla ListaNodiAperti e quali
nodi sono potati.
UB = 600
UB = 390
z = 360
Raffaele Pesenti
61
UB = 550
UB = 340
Inammissibile
z = 370
Raffaele Pesenti
UB = 700
z = 330
UB = 550
z = 400
UB = 440
Inammissibile
Inammissibile
z = 360
Inammissibile
UB = 400
z = 380
UB = 515
UB = 420
Inammissibile
Inammissibile
z = 410
Inammissibile
Inammissibile
Inammissibile
UB = 490
z = 470
Inammissibile
62