Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Premesse:
• modelli ILP o MILP sono estremamente flessibili e possono essere utilizzati
per una vasta classe di problemi.
Raffaele Pesenti
2
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
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.
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
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
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.
Es 4) UB = 900 UB = 700