Sei sulla pagina 1di 16

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
2

Programmazione lineare {0,1}- 01LP


Ripasso
Assunzione:
Rappresentazione minimale:
nel seguito si considereranno solo problemi in cui le variabili siano
la rappresentazione esterna Ax ≤ b di un poliedro P ⊆ ℜ n di dimensione n è superiormente o inferiormente limitate.
massimale se e solo se ogni disequazione definisce una faccia massimale. Ogni
faccia massimale deve inoltre corrispondere ad una disequazione del sistema.
Riduzione ILP ad 01LP:
Quando il poliedro non ha dimensione massima alcune disequazioni di Ax ≤ b
per ridurre ILP a 01LP basta sostituire ogni variabile intera xi, 0 ≤ xi ≤ u con
sono in realtà equazioni implicite e corrispondono alle facce improprie. un numero (logaritmico in u) di variabili binarie.
Ogni equazione corrispondente ad una faccia massimale non è implicata dalle Dato un qualunque problema ILP posto m=log2 u si può ottenere un
altre equazioni. problema con sole variabili binarie 01LP introducendo la seguente
sostituzione (polinomiale)
xi ↔ 20xi0 + 21xi1 + 22xi2 + ... + 2mxim

Raffaele Pesenti Raffaele Pesenti


3 4
Formulazioni lineari
Problema 01LP:
Formulazioni lineari
(S, c ,max): max cx
Esempio: formulazione lineare generica
x∈S
sia S={(0,0),(1,0),(0,1)}
dove S è un insieme discreto (e ovviamente finito) di vettori binari. (I ragionamenti
successivi vanno rovesciati nel caso di problemi di minimo.)

Formulazione lineare:
un poliedro P={x: Ax ≤ b} è detto formulazione lineare del problema 01LP
(S, c ,max) se e solo se conv(S)
S =P ∩ {0,1}

Teorema:
un problema lineare 01LP (S, c ,max) ammette sempre la formulazione lineare formulazione non corretta
conv(S) con la proprietà che x ∈ S se e solo se x è un vertice di conv(S)
Raffaele Pesenti Raffaele Pesenti
5 6

Formulazioni lineari Rilassamenti lineari


Rilassamento lineare:
Equivalenza tra un problema 01LP e sua formulazione lineare:
dato un problema 01LP espresso rispetto ad una formulazione lineare
per definizione di formulazione lineare P={x: Ax ≤ b}
max z=cx max zRL=cx
Ax ≤ b il corrispondente rilassamento lineare è Ax ≤ b
max z=cx max z= cx
x ∈{0,1}n 0≤x≤1
x∈S ⇔ Ax ≤ b
i.e., compatibilmente con le condizioni Ax ≤ b, invece di vincolare x ai vertici
x ∈{0,1}n
dell’ipercubo unitario le si permette di assumere qualunque valore all’interno di esso
Esempio:
Esempio:
max 5x1+3x2 max 5x1+3x2 max 5x1+3x2
max z= 5x1+3x2 max zRL =5x1+3x2
x∈{(0,0),(1,0),(0,1)} ⇔ 6x1 + 4x2 ≤ 7 ⇔ x1 + x2 ≤ 1
6x1 + 4x2 ≤ 7 6x1 + 4x2 ≤ 7
-2x1 + 2x2 ≤ 3 x1≥0
-2x1 + 2x2 ≤ 3 rilassato diventa -2x1 + 2x2 ≤ 3
x1≥0 x2≥0
x1≥0 x1≥0
x2≥0 x1,x2 ∈{0,1}
x2≥0 x2≥0
x1,x2 ∈{0,1}
x1,x2 ∈{0,1} 0 ≤ x1,x2 ≤ 1
Raffaele Pesenti Raffaele Pesenti
7 8
Rilassamenti lineari Rilassamenti lineari
Commenti (cont.):
Commenti: • in un problema 01LP di massimo vale la relazione
• tutte le formulazioni lineari di uno stesso problema 01LP hanno le stesse soluzioni sia z*RL ≥ z*
ammissibili che ottime, viceversa, le soluzioni, sia ammissibili che ottime, dei Infatti, data una formulazione P={x: Ax ≤ b}, la soluzione ottima z*, x* di
rilassamenti lineari possono essere differenti. max z=cx max zRL=cx
Ax ≤ b è ammissibile per Ax ≤ b
differenti soluzioni ottime dei diversi rilassamenti x ∈{0,1}n 0≤x≤1
• 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
soluzione ottima di tutte le formulazioni lineari x’ una soluzione data e ad essa corrisponda il valore della funzione obiettivo
z(x’), chiaramente
z(x’) ≤ z* ≤ z*RL
curva di livello della funzione obiettivo quindi l’errore che si compie accontentandosi di x’ è non superiore a
ε (x’)% ≤ (z*RL - z(x’))/ z(x’)
Raffaele Pesenti Raffaele Pesenti
9 10

Rilassamenti lineari
Commenti (cont.): Rilassamenti lineari e involucri convessi
• 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
Equivalenza per un problema 01LP:
• 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 se P={x: Ax ≤ b} = conv(S) allora per qualunque c
rilassamento continuo derivato da P1 è più stringente (minore in un problema di max z=cx max z= cx max z= cx
massimo) che l’upper bound ottenibile dal rilassamento continuo derivato da P2 x∈S ⇔ Ax ≤ b ⇔ Ax ≤ b
z1*RL ≤ z2*RL x ∈{0,1}n
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 Raffaele Pesenti


11 12
Rilassamenti lineari e involucri convessi Rilassamenti lineari e involucri convessi per ILP
Problema ILP:
Commenti: (S, c ,max): max cx
• se dato S fosse semplice fornire una formulazione esterna di conv(S) si x∈ S
potrebbe risolvere il problema 01LP attraverso gli algoritmi di soluzione di dove S è un insieme discreto e finito di vettori interi.
problemi di programmazione lineare continua
• le facce massimali di conv(S) però possono essere di numero esponenziale. In generale l’involucro convesso di S potrebbe contenere anche soluzioni
Ciò nonostante ci si potrebbe accontentare di risolvere il problema lineare intere non appartenenti ad S, in questo caso, può convenire ridursi
inizialmente ad un problema 01LP.
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), In pratica però accade spesso che il problema venga già formulato in modo
“esterno”, i.e., sotto forma di
ne garantisca l’ammissibilità (e quindi ottimalità) oppure fornisca una
disequazione (corrispondente ad una faccia massimale) che risulti violata. max z= cx
Purtroppo, in generale, non esistono algoritmi polinomiali che implementano Ax ≤ b
un tale oracolo di separazione, al più esistono algoritmi più o meno efficienti x ∈ Zn
che possono indicare se la soluzione corrente viola una disequazione In questi casi P={x: Ax ≤ b} può essere considerata una prima formulazione
all’interno di un sottoinsieme di tutte quelle considerabili. e quindi si possono applicare i ragionamenti dei lucidi precedenti.
Raffaele Pesenti Raffaele Pesenti
13 14

Metodi generali di soluzione di 01LP Branch and Bound (B&B)


Metodi generali di soluzione di 01LP: Branch and Bound:
i metodi generali di soluzione di problemi 01LP a partire da una Il B&B è un metodo di esplorazione dello spazio delle soluzioni basata sull’
formulazione iniziale: enumerazione implicita :
– introducono vincoli successivi per ottenere formulazioni via via migliori
fino a giungere ad una che abbia in comune con conv(S) il vertice ottimo – il metodo esamina ricorsivamente sottoinsiemi disgiunti di soluzioni
(metodo dei piani di taglio), oppure (branching) e li valuta sulla base di una stima del migliore valore che la
– enumerano implicitamente tutte le soluzioni intere suddividendo funzione obiettivo assume in ciascun sottoinsieme (bounding). Elimina di
progressivamente la formulazione iniziale in vari poliedri più piccoli. La soluzioni che certamente non contengono la soluzione ottima.
suddivisione avviene in modo da scartare ad ogni passo alcune delle – la stima avviene risolvendo un rilassamento, in genere lineare (RL), del
soluzioni non intere incluse nel poliedro originale finché potenzialmente
problema definito sul solo sottoinsieme di soluzioni.
alla fine del processo ogni soluzione ammissibile coincide con un diverso
poliedro (metodo del branch and bound), oppure
– eseguono entrambe le operazioni precedenti.
Raffaele Pesenti Raffaele Pesenti
15 16
Branch and Bound (B&B) Branch and Bound (B&B)
Si considera il problema 01LP o ILP In questo modo si può separare il problema originale in due problemi disgiunti
max {z= cx, Ax ≤ b, x ∈ Zn} associati a P1 e P2. Quindi si considerano i nuovi due problemi iterando il
e una sua formulazione P={x∈ℜn : Ax ≤ b}. procedimento, potenzialmente alla fine di tutte le suddivisioni si generano tanti
Si risolve il problema rilassato lineare (RL) corrispondente, determinando x0. poliedri composti da un solo punto intero quante sono le soluzioni ammissibili
Se x0 è intera si è determinata la soluzione ottima, altrimenti
si sceglie una componente x0j non intera della soluzione e si decompone la L’esplorazione dello spazio delle nodo 0 RL associato al P0
regione di ammissibilità P0={x: Ax ≤ b} del RL in due regioni disgiunte: soluzioni effettuato dal metodo del 0
P1={x: Ax ≤ b, xj ≤  x0j  } P2={x: Ax ≤ b, xj ≥  x0j  +1} Branch-and-Bound si può rappresentare xj ≤  x0j  xj ≥  x0j  +1
per mezzo di un albero (“enumeration
Si noti che
tree”).
P1 ∩P2 = ∅, P1 ∪P2 ≠P0, ma (P1 ∩ Zn) ∪ (P2 ∩ Zn) = (P0 ∩ Zn) 1 2
i.e., complessivamente si continuano a considerare le stesse soluzioni intere, Ad ogni nodo è associato un RL nodo 1 RL nodo 2 RL
mentre vengono scartate alcune soluzioni continue del problema rilassato. associato al P1 associato al P2
Raffaele Pesenti Raffaele Pesenti
17 18

x2
Esempio (grafico) 4 obiettivo
Branch and Bound (B&B) 3 P
2
1
Si procede risolvendo i RL associati ai nuovi nodi 1 e 2. Se la soluzione non x1
è intera si ramifica (branching) ulteriormente l’albero. Perché l’esplorazione 0 1 2 3 4
non sia totale, il branching deve essere fermato (pruning) quando: 0
– il RL associato ad un nodo non ammette soluzione; x1≤1 x1≥2
P
– la soluzione di RL associato al nodo è intera;
Q 1 N 2
– la soluzione di RL associato al nodo non è intera, ma è possibile stabilire
x2 x2
che l’esplorazione della porzione di albero al di sotto del nodo non
4 4
conduce alla soluzione ottima (bounding).
3 3 N
2 2
Q
1 1
x1 x1
0 1 2 3 4 0 1 2 3 4
Raffaele Pesenti Raffaele Pesenti
19 20
0 Bounding
x1 ≤ 1 x1 ≥ 2
P
Bounding, il principio base:
Q 1 N 2 si supponga di aver trovato una soluzione intera risolvendo il RL associato
x2 ≤ 1 x2 ≥ 2 x2 ≤ 2 x2 ≥ 3 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
M 3 4 R 5 6 0
I valori z2RL, z3RL e z4RL rappresentano degli
upper bound rispetto a qualsiasi soluzione x j ≤ x j 
0
x j ≥ x 0j  + 1
soluzione frazionaria non ammissibile intera ottima non ammissibile
peggiore di R intera determinabile ramificando
rispettivamente i nodi 2, 3 e 4. Infatti, 1 2
x2 x2
4 4 quando si ramifica un nodo, il valore x k ≤ x1k  x k ≥ x 1k  + 1 z RL ≤ z RL
2 3

3 3 dell’obiettivo associato ai nodi successori


2 2 non può essere migliore dell’obiettivo 3 4
M R
1 1 associato al nodo padre, dal momento che 3
z RL z RL > z RL
4 3

x1 x1 i RL dei nodi successori sono più vincolati


0 1 2 3 4 0 soluzione
1 2 3 del RL del nodo padre. intera
Raffaele Pesenti Raffaele Pesenti
21 22

Bounding Bounding
Bounding, il principio base (cont.): In generale, dati:
Poiché la soluzione x associata a z3RL è intera, LB= z3RL rappresenta anche il miglior
• il RLi associato ad un nodo i (dove Aix=bi è l’insieme dei vincoli originali più i
lower bound corrente per la soluzione ottima del problema complessivo:
vincoli via via aggiunti ad ogni branching)
• non ha più senso quindi esplorare l’albero (RL)i max zRL
i
= c x, Ai x = bi x ≥ 0
sotto il nodo 2 poiché le soluzioni 0
associate ai suoi nodi non possono x j ≤ x 0j  x j ≥ x 0j  + 1 • xlb, la migliore soluzione intera LB sino ad ora trovata esplorando l’albero
migliorare la soluzione intera corrente (il • xub, la soluzione non intera di RLi
nodo 2 è potato, pruned). 1 2 se vale ziRL= cxub ≤ cxlb =LB , poiché è noto che cxint ≤ cxub dove xint è soluzione
• analogamente non ha senso esplorare x k ≤ x1k  x k ≥ x 1k  + 1
ottima intera di
l’albero sotto il nodo 3. 2
z RL ≤ z RL
3
( ILP) i max z i = c x, Ai x = b i , x ∈ Z n
• invece non si può concludere sul nodo 4 3 4
che rimane attivo. Si deve esplorare allora ne consegue che cxint ≤ cxub ≤ cxlb. Quindi la migliore soluzione intera contenuta
l’albero sotto di esso. LB = z RL
3 4
z RL > z RL
3
in Pi={x∈ℜn: Ai x = b, x ≥ 0} non potrà mai essere migliore della soluzione intera
soluzione corrente xlb.
intera
Raffaele Pesenti Raffaele Pesenti
23 24
Bounding Algoritmo di Branch and Bound
Esempio di possibile 1. Inizializzazione
0
evoluzione della visita
x j ≤ x 0j  x j ≥ x 0j  + 1 Sia 0 il nodo attivo e P0 il poliedro associato al RL.
dell’albero
Porre LB = - ∞ valore corrente dell’obiettivo (lower bound) e a nil la soluzione
xk ≤ x1k  1 2
2
( z RL ≤ LB 3 ) correntemente ottima.
x k ≥ x 1k  + 1
nodo “pruned”
soluzione intera
2. Branching
3 4 4
( zRL > LB3 ) Se non esiste un nodo attivo (anche detto aperto) andare al passo 7,
LB 3
= z RL
3
altrimenti scegliere il nodo attivo j.
x f ≤ x 4
f  x f ≥ x 4
f +1 Se il RL di j è stato risolto in precedenza andare al passo 3, altrimenti al 4.
3. Separazione
5 6
x5: soluzione ottima intera (z 6
RL ≤ LB ) 5
Scegliere una variabile frazionaria di base x Bi = y ij0 e suddividere Pj in
LB = z 5 5

( LB 5 ≥ LB )
RL
3 P j +1 = P j ∩ {x : x Bi ≤ y i j0 } P j+ 2 = P j ∩ {x :x Bi ≥ y i j0  + 1 }
Tutti i nodi attivi, i.e., quelli che non vengono tagliati devono essere esplorati. creando due nuovi nodi attivi (il nodo j non è più attivo). Andare al passo 2.
L’esplorazione termina quando non ci sono più nodi attivi.
Raffaele Pesenti Raffaele Pesenti
25 26

4. Soluzione di RL
Risolvere il RL associato a j. Se non esiste soluzione tagliare il nodo (il nodo non è Commenti: Algoritmo di Branch and Bound
più attivo) ed andare al passo 2. • 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
Se esiste soluzione ottima xj intera andare al passo 5, altrimenti andare al 6. 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
Tagliare il nodo j e porre LB = max{LB, zj} (il nodo j non è più attivo).
ottime finite. Nel caso peggiore però l’algoritmo è esponenziale e può ridursi ad
Se il LB viene aggiornato, porre la soluzione corrente ottima uguale a xj. enumerare tutte le soluzioni ammissibili
Andare al passo 6.
• le prestazioni dell’algoritmo dipendono in maniera drammatica dal livello a cui
6. Pruning per bound avvengono le potature dei nodi dell’albero di enumerazione. È fondamentale quindi che
Tagliare ogni nodo attivo k tale che zkLR ≤ LB (il nodo k non è più attivo). i problemi rilassati che vengono risolti ad ogni nodo:
• risultino (quanto più spesso possibile) inammissibili se il corrispondente problema
Andare al passo 2. intero non ammette soluzioni ammissibili
7. Terminazione • forniscano soluzioni zRL il più vicino possibili a quelle del corrispondente problema
intero
L’algoritmo termina. ne consegue che la scelta della formulazione del problema di ILP deve essere fatta con
Se LB = - ∞ allora (IP) non ammette soluzione. 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.
Se LB > - ∞ la soluzione corrente associata a LB è ottima.
Raffaele Pesenti Raffaele Pesenti
27 28
Algoritmo di Branch and Bound Algoritmo di Branch and Bound
Commenti (cont.): Commenti (cont.):
• per le stesse ragioni del punto precedente è opportuno cercare di escludere a priori che • sempre per le stesse ragioni è importante conoscere una “buona” soluzione
vi siano soluzioni intere equivalenti. Ad esempio nel problema del bin-packing è ammissibile intera da utilizzare fin dal primo passo come LB al posto di -∞.Una
opportuno introdurre vincoli del tipo: tale soluzione può essere ottenuta utilizzando il risultato di una procedura
yk ≥ yk+1 euristica di soluzione.
che impongono che un bin possa essere usato solo se è già stato utilizzato il bin
precedente, e anche • è infine opportuno ridurre il numero di variabili binarie o intere, quando queste
x11 = 1, x12 + x22 = 1, … non siano necessarie a giungere ad una formulazione migliore. Ad esempio in un
che impongono che il primo oggetto finisca nel primo bin, il secondo o nel primo o nel problema di bin-packing, sia m un numero di bin associati ad una soluzione
secondo bin, ecc.. ammissibile nota allora si possono fissare a zero (praticamente eliminare) tutte le
variabili associate a bin di indice superiore a m.
• in generale può convenire introdurre dei vincoli che descrivano “condizioni di
dominanza” certamente rispettate da almeno una soluzione ottima e che permettano di
• in generale conviene eseguire una fase di preprocessing in cui si verifica se i
restringere il campo di ricerca. Ad esempio, in un problema di scheduling, introdurre un
vincoli sono tale da imporre a priori il valore di qualche variabile, e.g.,
vincolo che imponga che tra due operazioni con stessa data di rilascio venga eseguita
x1 + x2 ≤ 1, x1 + x2 + x3 ≥ 2, xi∈{0,1} ⇒ x3 = 1
prima la più breve.
Raffaele Pesenti Raffaele Pesenti
29 30

Backtracking
Algoritmo di Branch and Bound
Strategie di backtracking:
Commenti (cont.): • diverse politiche di scelta del nodo da ramificare al passo 3 possono essere
• le prestazioni dell’algoritmo dipendono anche dalle strategie di visita dell’albero, implementate.
ad esempio da Tre strategie limite:
• strategie di backtracking
• Depth First (esplorazione in profondità):
• strategie di priorità fra le variabili
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 Raffaele Pesenti


31 32
Backtracking Backtracking

Strategie di backtracking (cont.): Strategie di backtracking (cont.):


• Breadth First (esplorazione in ampiezza): • Commenti:
si esplorano tutti i nodi allo stesso livello prima di passare al livello • la strategia depth first richiede minore occupazione di memoria della breath first o
della best bound first, ma può richiedere maggior tempo.
successivo.
• 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).
• Best Bound First (esplorazione sul nodo migliore): Si procede con depth first a meno che la differenza percentuale tra zRL del nodo
si esplora per primo il nodo con migliore upper bound corrente e lo zRL migliore tra tutti i nodi ancora aperti non sia superiore ad una
determinata soglia fissata a priori.

Raffaele Pesenti Raffaele Pesenti


33 34

Priorità fra le variabili Branching


Strategie di priorità sulle variabili:
• il valore di alcune variabili (corrispondenti nel problema reale a scelte di Strategie di branching (1):
importanza maggiore) può implicare notevoli limiti ai valori assumibili da • dato un nodo aperto si può scegliere quale dei due figli espandere per primo,
altre variabili (corrispondenti nel problema reale a scelte di importanza quello corrispondente ad un down branch ovvero all’imposizione del vincolo
minore), è quindi opportuno che vengano eseguiti prima i branching su xk ≤ xik
variabili di importanza/priorità maggiore. o quello ad un up branch ovvero all’imposizione del vincolo
Ad esempio in un problema di bin-packing conviene ritenere di priorità xk ≥ xik + 1
maggiore le variabili yi associate ai singoli bin che le variabili xij
Nel problema del bin-packing, per trovare una prima soluzione ammissibile è
corrispondenti all’assegnazione dell’oggetto j al bin i. Infatti se yi=0
conveniente iniziare con up branching.
corrispondentemente xij=0, ∀j.

• 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 Raffaele Pesenti
35 36
Branching Upper bound
Strategie di branching (2): In ogni nodo dell’albero di enumerazione deve venire effettuata una stima,
• ogni volta che si esegue un branching conviene suddividere l’albero in due calcolato un upper bound, del valore della migliore soluzione ottima intera.
sottoalberi a cui corrispondono un numero di foglie circa equivalenti. Un possibile upper bound è la soluzione ottima del rilassamento continuo del
problema associato al nodo.
Ad esempio in presenza di un vincolo di bounding generalizzato tipo:
In generale però è possibile calcolare altri upper bound risolvendo degli altri
x1 + x2 + … + x10 = 1 tipi di rilassamento. In ogni caso la qualità di un upper bound viene valutata
può convenire eseguire il branch x1 = 0, x1 = 1, infatti il primo sottoalbero in termini di:
contiene la quasi totalità delle soluzioni ed è quindi molto probabile che lo – accuratezza nell’approssimazione della soluzione ottima,
zRL della sua radice non cambi significativamente rispetto a quella del nodo – facilità con il quale può essere calcolato
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 Possibili altri esempi di rilassamento sono:
soluzioni. – rilassamento per eliminazione
Ne consegue che in generale risulta più conveniente un branching – rilassamento surrogato
x1 + x2 + … + x5 = 1, x6 + x7 + … + x10 = 1 – rilassamento lagrangiano
– rilassamento per decomposizione
Raffaele Pesenti Raffaele Pesenti
37 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: Commenti:
Esempio: • in questo e nei rilassamenti successivi si rilassa il problema originale in un
Dato il seguente problema di zaino bidimensionale: problema che nel caso particolare risulti praticamente risolvibile, anche se in
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5 generale è NP-hard.
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
• in ogni caso il valore della soluzione di un rilassamento deve essere non
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14
inferiore (in un problema di massimo) al valore della soluzione ottima.
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 Raffaele Pesenti
39 40
Rilassamento surrogato Rilassamento surrogato
Commenti:
Rilassamento surrogato:
• il rilassamento per eliminazione è un caso particolare del surrogato, quando
nel rilassamento surrogato si sostituisce un insieme di vincoli con un unico
vengono usati pesi uguali a zero
vincolo di uguale struttura. Tale vincolo è combinazione (conica, se vincoli
sono di disuguaglianza) dei precedenti • se la soluzione ottima x* del rilassamento surrogato è ammissibile per il
problema originale ILP allora x* è anche ottima per ILP
Esempio:
Dato il seguente problema di zaino bidimensionale: • il valore della soluzione ottima zRS(π ) del problema surrogato dipende dai
valori dei pesi π assegnati ai vari vincoli. In ogni caso
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5
zRS(π ) ≥ z*
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22
la scelta dei pesi ottima π ∗ è quella per cui zRS(π ∗) = min{zRS(π ), π ≥ 0}.
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14
• il problema di determinare i pesi ottimi π ∗ è detto problema surrogato duale
xi∈{0,1} poiché vale il seguente teorema di dualità debole
e i seguenti pesi 3, 1, si risolve min{zRS(π ), π ≥ 0} ≥ max {z= cx, Ax ≤ b, x ∈ Zn}
max zRS (3,1)= 25x1 + 20x2 + 15x3 + 12x4 + 10x5 In generale non è ovvia la scelta ottima dei pesi e viene determinata per
37x1 + 29x2 + 35x3 +18x4 + 19x5 ≤ 80 iterazioni successive aumentando i pesi dei vincoli che risultano violati dalla
xi∈{0,1} soluzione ottenuta col rilassamento corrente e diminuendo i pesi dei vincoli
rispettati.
Raffaele Pesenti Raffaele Pesenti
41 42

Rilassamento lagrangiano Rilassamento lagrangiano


Rilassamento lagrangiano: Commenti:
nel rilassamento lagrangiano la soddisfazione di un insieme di vincoli viene posta come
• se la soluzione ottima x* del rilassamento lagrangiano è ammissibile per il
obiettivo (invece che come vincolo). I vincoli vengono pesati,utilizzando pesi non problema originale ILP non è detto che x* sia anche ottima per ILP, poiché
negativi in caso di vincoli di disuguaglianza, come nell’esempio. le due funzioni obiettivo non coincidono
Esempio:
• il valore della soluzione ottima zRLag(π ) del problema lagrangiano dipende
Dato il seguente problema di zaino bidimensionale: dai valori dei pesi π assegnati ai vari vincoli. In ogni caso
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5 zRLag(π ) ≥ z*
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 la scelta dei pesi ottima π ∗ è quella per cui zRLag(π ∗) = min{zRLag(π ), π ≥ 0}.
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14 • il problema di determinare i pesi ottimi π∗ è detto problema lagrangiano
xi∈{0,1} duale poiché vale il seguente teorema di dualità debole
e il peso 0.3 per il secondo vincolo, si risolve min{zRLag(π ), π ≥ 0} ≥ max {z= cx, Ax ≤ b, x ∈ Zn}
max zRLag (0.3)= 25x1 + 20x2 + 15x3 + 12x4 + 10x5 + 0.3(14 - (7x1 + 5x2 + 5x3 + 3x4 + 7x5)) In generale non è ovvia la scelta ottima dei pesi e viene determinata per
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 iterazioni successive aumentando i pesi dei vincoli che risultano violati dalla
xi∈{0,1} soluzione ottenuta col rilassamento corrente e diminuendo i pesi dei vincoli
rispettati.

Raffaele Pesenti Raffaele Pesenti


43 44
Rilassamento per decomposizione Rilassamento per decomposizione
Rilassamento per decomposizione: Esempio (cont.):
nel rilassamento per decomposizione si decompone il problema iniziale in due si rilassano lagrangianamente i vincoli xi=yi, ottenendo un problema composto da due
sottoproblemi più semplici sotto problemi risolvibili separatamente
Esempio: max zRD =
Dato il seguente problema di zaino bidimensionale: = max{(α 25+π1 )x1 + (α 20 +π2)x2 + (α 15 +π3)x3 + (α 12 +π1)x4 + (α 10 +π5 )x5,
max z = 25x1 + 20x2 + 15x3 + 12x4 + 10x5 10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22, xi∈{0,1}}+
10x1 + 8x2 + 10x3 + 5x4 + 4x5 ≤ 22 + max{(β 25-π1 )y1 + (β 20 -π2)y2 + (β 15 -π3)y3 + (β 12 -π1)y4 + (β 10 -π5 )y5,
7x1 + 5x2 + 5x3 + 3x4 + 7x5 ≤ 14 7y1 + 5y2 + 5y3 + 3y4 + 7y5 ≤ 14, yi∈{0,1}}
xi∈{0,1}
si considera il problema equivalente con α,β t.c. α + β = 1 e π libero.
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 Raffaele Pesenti
45 46

Rilassamento per decomposizione Relazioni fra i rilassamenti


Relazioni di dominanza tra i rilassamenti:
Commenti:
• esistono le seguenti relazioni di dominanza tra le soluzioni dei diversi
• se la soluzione ottima x* del rilassamento per decomposizione è ammissibile
rilassamenti
per il problema originale ILP non è detto che x* sia anche ottima per ILP,
poiché le due funzioni obiettivo non coincidono z* ≤ zRS(π S*), zRD(π D*) ≤ zRLag(π Lag*) ≤ zRE, zRL
• il valore della soluzione ottima zRD(π ) del problema lagrangiano dipende dai • nessuna relazione generale esiste tra zRS(π S*) e zRD(π D*) e tra zRE e zRL
valori dei pesi π assegnati ai vari vincoli. In ogni caso • zRLag(π Lag*) = zRL quando il poliedro definito dai vincoli non spostati
zRD(π ) ≥ z* all’obiettivo è un poliedro intero
la scelta dei pesi ottima π∗ è quella per cui zRD(π ∗) = min{zRD(π )}.
• il problema di determinare i pesi ottimi π ∗ è detto (anche in questo caso) Commenti:
problema lagrangiano duale poiché vale il seguente teorema di dualità debole • il rilassamento lagrangiano è, dopo quello lineare, il più usato poiché è più
min{zRD(π )} ≥ max {z= cx, Ax ≤ b, x ∈ Zn} facile da trattare matematicamente

Raffaele Pesenti Raffaele Pesenti


47 48
B&B applicato al KP
Algoritmo di Branch and Bound Problema dello zaino: risolvere il seguente problema dello zaino
max 12x1 +36 x2 +42 x3 +18 x4 + 25x5
Commenti finali: 3x1 + 10x2+ 14x3 + 6x4 + 10 x5 ≤ 23,
• il B&B è un metodo generale e può essere generalizzato ad altri problemi xi ∈{0,1}
diversi da ILP. In questi casi branch potrebbe generare anche più di due nodi Commenti:
• nel B&B bisogna utilizzare tutta l’informazione disponibile circa la soluzione 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:
ottima in modo da restringere il campo di ricerca e guidare l’algoritmo nella Σi=1..h ai ≤ b e Σi=1..h+1 ai > b, dà come soluzione
ricerca. L’informazione può anche dovere venire aggiornata dinamicamente
– xi=1 per i ≤ h
ad ogni nodo. L’unico limite nell’uso di informazione è che la sua
elaborazione non sia più onerosa del vantaggio che fornisce. – 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 Raffaele Pesenti
49 50

B&B applicato al KP B&B applicato al KP


UB=78
Nodo 1 (radice): Nodo 2:
1 LB=66
max zRL= 12x1 +36 x2 +42 x3 +18 x4 + 25x5 max zRL= 12x1 +36 x2 +18 x4 + 25x5
3x1 + 10x2+ 14x3 + 6x4 + 10 x5 ≤ 23 3x1 + 10x2+ 6x4 + 10 x5 ≤ 23 x3= 0 x3= 1
0 ≤ xi ≤ 1 0 ≤ xi ≤ 1
UB=76 3
soluzione zRl = 78, x= [1,1,10/14,0,0], UB= 78 =78 soluzione zRl = 76, x= [1,1,0,1,4/10], UB= 76 =76 2
LB=66
una soluzione intera certamente ammissibile è x= [1,1,0,1,0] che implica LB= 66
Branching su x5: x5= 0 x5= 1
UB=78 si ottengono due nodi:
Branching su x3:
1 LB=66
si ottengono due nodi: Nodo 4: corrispondente a x5= 0 4 5
Nodo 2: corrispondente a x3= 0 x3= 0 x3= 1 Nodo 5: corrispondente a x5= 1
Nodo 3: corrispondente a x3= 1
ListaNodiAperti = {Nodo 4, Nodo 5, Nodo 3}
ListaNodiAperti = {Nodo 2, Nodo 3} 2 3

Raffaele Pesenti Raffaele Pesenti


51 52
B&B applicato al KP B&B applicato al KP
UB=78 UB=78
Nodo 4: Nodo 5:
1 LB=66 1 LB=66
max zRL= 12x1 +36 x2 +18 x4 max zRL= 12x1 +36 x2 +18 x4 +25
3x1 + 10x2+ 6x4 ≤ 23 x3= 0 x3= 1 3x1 + 10x2+ 6x4 ≤ 13 x3= 0 x3= 1
0 ≤ xi ≤ 1 0 ≤ xi ≤ 1
UB=76 3 UB=76 3
soluzione zRl = 66, x= [1,1,0,1,0], UB= LB =66 2 soluzione zRl = 73, x= [1,1,0,0,1], UB= LB =73 2
LB=66 LB=66
soluzione intera niente branching soluzione intera niente branching nuova soluzione
x5= 0 x5= 1 correntenmente ottima x5= 0 x5= 1
ListaNodiAperti = {Nodo 5, Nodo 3}
4 5 ListaNodiAperti = {Nodo 3} 4 5

UB=66 UB=66 UB=73


LB=66 LB=66 LB=73

Raffaele Pesenti Raffaele Pesenti


53 54

B&B applicato al KP B&B applicato al KP


UB=78 UB=78
Nodo 3: LB=66 Nodo 6: LB=66
1 1
max zRL= 12x1 +36 x2 +18 x4 + 25x5 +42 max zRL= 12x1 +18 x4 + 25x5 + 42
3x1 + 10x2+ 6x4 + 10 x5 ≤ 9 x3= 0 x3= 1 3x1 + 6x4 + 10 x5 ≤ 9 x3= 0 x3= 1
0 ≤ xi ≤ 1 0 ≤ xi ≤ 1
UB=76 UB=75 UB=76 UB=75
2 3 2 3
soluzione zRl = 75.6, x= [1,6/10,1,0,0], LB=66 LB=73 soluzione zRl = 72, x= [1,0,1,1,0], LB=66 LB=73
UB= 75.6 =75 UB= 72 =72
x5= 0 x5= 1 x2= 1 x5= 1 x2= 1
x2= 0 UB di valore minore (o uguale) alla x5= 0 x2= 0
Branching su x2: soluzione corrente, il nodo viene
si ottengono due nodi: 4 5 6 7 potato (indipendentemente dal fatto 4 5 6 7
che la soluzione sia, casualmente,
Nodo 6: corrispondente a x2= 0 anche intera)
Nodo 7: corrispondente a x2= 1 UB=66 UB=73 UB=66 UB=73 UB = 72
LB=66 LB=73 ListaNodiAperti = {Nodo 7} LB=66 LB=73 pruned
ListaNodiAperti = {Nodo 6, Nodo 7}
Raffaele Pesenti Raffaele Pesenti
55 56
B&B applicato al KP Esercizi
UB=78 Es 1)
Nodo 7: LB=66
1 Dato il seguente problema 01-LP
Problema inammissibile:
a2 + a3=24 > b = 23 x3= 0 x3= 1 max 12x1 +23 x2 +14 x3 +25 x4 + 13x5
7x1 + 16x2+ 7x3 + 13x4 + 10 x5 ≤ 27
ListaNodiAperti = {} UB=76 UB=75 13x1 + 8x2+ 5x3 + 6x4 + 5 x5 ≤ 24
2 3
LB=66 LB=73 xi ∈{0,1}
algoritmo terminato
x5= 1 x2= 1 Calcolare il valore della soluzione ottima dei seguenti rilassamenti e
x5= 0
x2= 0 determinare il migliore tra essi:
• rilassamento continuo
4 5 6 7
• rilassamento per eliminazione del primo vincolo
• rilassamento surrogato, pesando 1 entrambe i vincoli
UB=66 UB=73 UB = 72inammissibile • rilassamento lagrangiano, rilassando il secondo vincolo con peso 1.
LB=66 LB=73 pruned pruned
Nel caso degli ultimi due rilassamenti provare anche pesi alternativi
indicando in base a che criteri devono essere scelti
Raffaele Pesenti Raffaele Pesenti
57 58

Esercizi Esercizi
Es 2) Es 3)
Dato il seguente problema 01-LP Dato il seguente problema 01-LP
max 25x1 +34 x2 +12 x3 +18 x4 + 17x5 max 12x1 +23 x2 +14 x3 +25 x4 + 13x5
8x1 + 16x2+ 10x3 + 13x4 + 10 x5 ≤ 36 7x1 + 16x2+ 7x3 + 13x4 + 10 x5 ≤ 32
xi ∈{0,1} 13x1 + 8x2+ 5x3 + 6x4 + 5 x5 ≤ 27
risolverlo con il branch and bound. Disegnare l’albero di esplorazione xi ∈{0,1}
completo e visitarlo seguendo differenti strategie, e.g., depth first, best risolverlo con il branch and bound. Disegnare l’albero di esplorazione
bound. completo e visitarlo seguendo differenti strategie, e.g., depth first, best
bound.

Raffaele Pesenti Raffaele Pesenti


59 60
Esercizi UB = 1000

Es 4) UB = 900 UB = 700

Il seguente albero è l'albero di esplorazione completo che emergerebbe in una


ricerca esaustiva delle soluzioni di un problema di massimizzazione. In realtà
UB = 600 UB = 550 UB = 440 UB = 515
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
UB = 390 UB = 340 UB = 550 Inammissibile UB = 400 UB = 420 Inammissibile UB = 490
due figli. Indicare in che sequenza i nodi escono dalla ListaNodiAperti e quali
nodi sono potati.

z = 360 Inammissibile z = 400 Inammissibile z = 380 Inammissibile Inammissibile z = 470


z = 370 z = 330 z = 360 Inammissibile Inammissibile z = 410 Inammissibile Inammissibile

Raffaele Pesenti Raffaele Pesenti


61 62