Programmazione Lineare
INTERA II
Elementi di scelta
ci sono delle scelte che condizionano
le prestazioni del metodo (non il risultato finale)
1. Selezione del prossimo nodo da valutare
(strategia di esplorazione dell’albero)
2. Selezione della variabile su cui fare branching
(priorita’ fra classi, o per valore del
rilassamento continuo)
3. Selezione del tipo di rilassamento da utilizzarsi
per il calcolo del bound
3) Scelta del bound
Dato un problema P, si dice Rilassamento di P:
1. un problema R la cui funzione obiettivo fornisce
una stima ottimistica di f(x) per ogni x ammissibile
di P
2. un problema R la cui regione ammissibile include
F(P) (rilassamento per eliminazione di vincoli)
3. 1) e 2)
Un bound deve
• Essere veloce da calcolare (polinomiale)
• Fornire una stima del valore ottimo il più
possibile vicina (tight) al valore esatto
• Permettere di ottenere con poco sforzo
computazionale una soluzione euristica
ammissibile appartenente al sottoproblema, a
partire da quella non ammissibile del
rilassamento
Rilassamenti
1. Per eliminazione di vincoli. In particolare un rilassamento per
eliminazione di vincoli si dice Rilassamento Combinatorio
quando il problema rilassato è un problema di ottimizzazione
combinatoria con una particolare struttura che lo rende
risolvibile in modo efficiente.
2. Convessificazione (si rende convesso un insieme discreto)
3. Surrogato (sostituisce a un set di vincoli la loro combinazione
lineare)
4. Lagrangeano (elimina un set di vincoli, e aggiunge alla
funzione obiettivo una penalizzazione dipendente dalla
violazione dei vincoli rimossi). Introduce un nuovo problema
relativo alla scelta delle penalità (quelle per cui il rilassamento
ottenuto fornisce il bound + tight) che si risolve ottimizzando
una funzione poliedrale (lineare a tratti in Rn). Questa tecnica
trova vasta applicazione nell’ottimizzazione non lineare.
1) Rilassamento per eliminazione di vincoli
un esempio di rilassamento combinatorio
Formulazione del TSP asimmetrico su
grafo orientato G=(N,A)
FS = Forward Star:
Sia xij {0,1}  arco (i,j)  A
Min ijA cijxij :
ijFS(i) xij =1  iN
jiBS(i) xji =1  iN
iS,jS xij 1  SN
xij {0,1}
{archi uscenti dal nodo i}
BS = Backward Star:
{archi entranti nel nodo i}
Vincoli di grado
Vincoli di connessione
Cosa resta?
Min ijA cijxij :
ijFS(i) xij =1  iN
jiBS(i) xji =1  iN
xij {0,1}  arco (i,j)  A
Problema di copertura per cicli di un grafo orientato
FACILE!!!
Infatti….. i vertici del politopo associato al rilassamento continuo
hanno coordinate intere. (Matrice totalmente unimodulare)
Questo è un esempio di un rilassamento COMBINATORIO
3) Rilassamento Surrogato
un esempio
Formulazione del TSP su grafo non-orientato G=(V,E)
Sia xij {0,1}  arco (i,j)  E, i<j
Min ijE cijxij :
ijS(i) xij =2  iV
iQ,jQ xij 1  QV
xij {0,1}
Vincoli di grado
Vincoli di connessione
S(i) = stella del nodo i = insieme degli archi incidenti nel nodo
Sostituisco ai vincoli di grado
la loro combinazione lineare a coefficienti 1
Min ijE cijxij :
Diventa un unico
ijS(i)
x = 2 n Vincolo
 iV
di cardinalità
E 2 ij
iQ,jQ xij 1  QV
xij {0,1}
Questo nuovo problema è facile (1-albero di costo minimo)
1
4) Rilassamento Lagrangeano (i
•
E’ un modo diverso per trarre vantaggio dalla struttura presente in alcuni vincoli del
modello (se fossero gli unici vincoli presenti, il problema sarebbe “trattabile”)
•
Anzichè eliminarli, vengono rimossi dal sistema dei vincoli e inseriti in funzione
obiettivo in modo tale da penalizzare la valutazione delle soluzioni non ammissibili.
•
Si somma alla funzione obiettivo originaria il prodotto scalare tra un vettore di
penalità y (detti moltiplicatori Lagrangeani) e il vettore delle scarto associate ai
vincoli rimossi.
Dato P: max {cx : Axb, Exd, xZn}
per una data scelta del vettore y0, ottengo il rilassamento
RL(y): max {cx –y(Ax-b) : Exd, xZn}
Per ogni scelta di y0, RL(y) fornisce un upper bound di P. Infatti
• la regione ammissibile di P è compresa in quella di R(y) e
• le soluzioni  F(P) hanno in RL(y) costo pari a (cx –y(Ax-b)) > cx essendo
ammissibili (e dunque Ax-b<0)
NB
il rilassamento per eliminazione di vincoli è un particolare Lagrangeano che usa
penalità nulle y=0.
Rilassamento Lagrangeano (ii
• Si pone il problema della miglior scelta dei moltiplicatori y
• Per il problema di massimo, cerchiamo y tale RL(y) sia minimo
(per essere il + possibile aderente al valore ottimo del
problema di massimo originario).
• Si osservi che fissato un x tale che (Exd, xZn), l’espressione
cx –y(b-Ax) è lineare in y, quindi è un IPERPIANO nello spazio
delle y.
• Quindi RL(y) con y in Rm è una funzione descrivibile come il
massimo al variare di y di un fascio di iperpiani (uno per ogni x)
del tipo
{cx –y(b-Ax) : Exd, xZn}
RL(y)
y
Vedremo come ottimizzare
una funzione Poliedrale a tratti
quando parleremo di
NonLinearOptimization (NLO)
Combinare due rilassamenti
È possibile sfruttare contemporaneamente le possibilità offerte da
rilassamenti diversi.
Consideriamo ancora il caso del TSP simmetrico e il modello gia
introdotto, composto dagli n vincoli di grado sui nodi e dalla
famiglia dei vincoli di connessione.
Min ijE cijxij :
ijS(i) xij =2  iV
iQ,jQ xij 1  QV
xij {0,1}
Anziché eliminare i vincoli di grado sostituendoli con il loro
surrogato o rilassarli in modo lagrangeano, faccio entrambe le
operazioni, ottenendo un problema avente la regione ammissibile
del rilassamento surrogato e la funzione obiettivo del rilassamento
Lagrangeano
Min ijE cijxij :
ijS(i) xij
=2
 iV
iQ,jQ xij 1  QV
o in alternativa
iQ, jQ xij ≤ |Q|-1  QV, 2 ≤|Q|≤|V|-1
xij {0,1}
Il vincolo BLU è violato dai cicli
composti di soli nodi in Q,
(Q sottoinsieme stretto di V).
E’ alternativo a imporre che nel taglio
Q, V/Q ci sia almeno un arco della soluzione.
Sono entrambe formulazioni corrette
ma non sono equivalenti nel continuo
Il vincolo BLU è più forte del
Vincolo VERDE,
nel rilassamento continuo.
Si dimostra producendo una
soluzione che viola VERDE
ma non BLU.
Min ijE cijxij :
ijS(i) xij
=2
 iV
iQ, jQ xij ≤ |Q|-1  QV, 2 ≤|Q|≤|V|-1
xij {0,1}
In base ai vincoli di grado vale |Q| = ½ ∑iQ (∑ij S(i) (xij)) =
poiché ogni nodo ha 2 archi incidenti
= ∑iQ, jQ (xij) + ½ ∑iQ jQ (xij)
Da cui
|Q| - ∑iQ, jQ (xij) = ½ ∑iQ jQ (xij)
Nell’esempio abbiamo 5 nodi in Q
3 archi interni a Q e 4 nel taglio (Q, V/Q)  5-3 = ½ 4
Da cui segue che
|Q| - iQ, jQ xij = ½ iQ,jQ xij = |V/Q| - iQ, jQ xij
Poichè iQ, jQ xij ≤ |Q|-1  |Q| - iQ, jQ xij ≥1
allora iQ, jQ xij ≤ |Q|-1 vale
se e solo se vale iQ, jQ xij ≤ |V/Q| - 1
Quindi metà dei vincoli
di connessione del modello
sono ridondanti 
Elimino quelli per cui 1Q
Min ijE cijxij :
Moltiplicatore
Lagrangeano
li
ijS(i) xij
=2
1jS(1) x1j = 2
ijE xij
 iQ, jQ xij ≤ |Q|-1
=n
 iV, i≠1
(nodo 1)
(surrogato)
 QV: 1Q, 2 ≤|Q|≤|V|-1
xij {0,1}
Min ijE cijxij + iV li (2- ijS(i)xij )
= ijE xij(cij- li - lj) + 2iV li
1jS(1) x1j = 2
(nodo 1)
ijE xij
=n
(surrogato)
i,jQ xij ≤ |Q|-1  QV: 1Q, 2 ≤|Q|≤|V|-1
xij {0,1}
Come è fatta la regione ammissibile del problema
rilassato?
E’ un sottografo connesso e aciclico per i nodi 2..n, con due
archi incidenti nel nodo 1
Si chiama 1-tree (1-albero)
Min ijE xij(cij- li - lj) + 2iV li
Tale che le xij descrivono un 1-tree
Calcolo del 1-tree di costo minimo
Si considera il sottografo G2.n indotto dai nodi 2..n, e su di
esso si calcola l’albero di copertura di costo minimo, MST2.n
Il problema è facile, e si risolve all’ottimo con un’algoritmo
greedy (vedi Kruskal)
MST2.n contiene n-2 archi.
Si completa l’albero MST2.n con i due archi di costo minimo
incidenti sul nodo 1.
Il risultato è un 1-tree di costo minimo sul grafo G
Per ogni valore dei moltiplicatori li calcolare la soluzione
ottima x(l) è un problema facile.
Progettino A-TSP
2 persone)
Risolvere il rilassamento lagrangeano secondo il procedimento
descritto, implementando
1.un algoritmo del subgradiente per la determinazione del vettore
ottimo dei moltiplicatori lambda,
2.l’algoritmo di Kruskal per il calcolo del 1-tree ad ogni passo.
3 persone)
Progettare e implementare una euristica di «riparazione» che
dato un 1-tree, ne modifica alcuni archi per ottenere un TSP.
Chiamare l’euristica ad ogni passo del lagrangiano per riparare il
1-tree corrente, e mantenere traccia della migliore soluzione
intera.
Terminare l’algoritmo quando il gap tra rilassamento lagrangeano
e soluzione intera è <5%.
2) Rilassamento continuo
(caso specifico di rilassamento per convessificazione)
L’insieme discreto delle soluzioni intere F(P) diventa un politopo
eliminazione dei vincoli di interezza
 x {0,1} diventa x  [0..1]
•
E’ per default il rilassamento implementato dai solver
•
Importante avere una buona formulazione del problema, tale per cui non ci sia
troppa differenza tra il politopo che include F(P) (insieme delle soluzioni intere)
e l’inviluppo convesso di F(P) (Convex Hull, CH)
duality gap
che corrisponde alla formulazione IDEALE di P
•
Facilmente risolvibile (Programmazione Lineare)
•
Efficiente risoluzione di nodi figli/fratelli dell’albero attraverso la riottimizzazione
•
Tecniche sofisticate di generazioni di tagli (gestione centralizzata del pool dei
tagli)
•
Permette di ottenere soluzioni approssimate a partire dalla soluzione frazionaria
(pratica non sempre efficacie con la programmazione 0/1)
Buona formulazione
E’ necessaria per avere un valore del rilassamento
continuo aderente a z*
Come si può ottenere?
• Scelta del modello
• Preprocessing (a cura del solver)
• Generazione di tagli
• Scelta dello spazio delle variabili decisionali: un
modello compatto è sempre preferibile? NO!!
P è una formulazione migliore di P
il bound fornito da P è più aderente a z*
P è la formulazione IDEALE ( il bound è = z*)
Formulazione
IDEALE:
inviluppo convesso delle soluzioni intere:
Scelta del modello
Stesso spazio delle decisioni, differenti politopi del rilassamento continuo
Consideriamo un problema di zaino binario in R4, le cui soluzioni sono
X={ (0,0,0,0), ((1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1), (0,1,0,1), (0,0,1,1) }
Consideriamo 3 diverse formulazioni valide, i.e., che contengono la Convex
Hull di X (conv(X)) e nessun altro punto intero oltre a quelli in X:
P1 = {x R4 : 0 ≤ xi ≤1 i,
P2 = {x R4 : 0 ≤ xi ≤1 i,
P3 = {x R4 : 0 ≤ xi ≤1 i,
83x1 + 61x2 + 49x3 + 20x4 ≤ 100 }
4x1 + 3x2 + 2x3 + 1x4 ≤ 4 }
4x1 + 3x2 + 2x3 + 1x4 ≤ 4,
1x1 + 1x2 + 1x3
≤ 1,
1x1
+ 1x4 ≤ 1 }
Si nota che P3P2P1, e P3=conv(X)
Infatti, il punto [1, 0, 0, ½] P1
ma P2 e P3.
Il punto [½,1/3, ½, 0] P1  P2 ma P3
I bounds del rilassamento continuo dei 3 problemi Max{cx: x P} sono in
relazione
zL(P1) ≥ zL(P2) ≥ zL(P3  vettore c≥0,
quindi zL(P3) offre la miglior stima di z* valore dell’ottimo intero
Il problema di Lot Sizing non capacitato
(dimensionamento del lotto produttivo, 1 prod.)
Dato:
un orizzonte temporale T diviso in nT periodi, 1…nT
Per ogni periodo t:
la domanda di prodotto,
dt
il costo fisso di produzione,
ft
il costo unitario di produzione,
pt
il costo unitario di stoccaggio,
ht
Il valore delle scorte iniziali
Si determini il livello produttivo di ogni periodo per minimizzare i
costi totali, soddisfacendo la domanda.
Decisioni:
Quanto produco in t:
xt  Z
Produco o no in t:
yt  {0,1}
Livello delle scorte a fine periodo t: st  Z
Struttura di Flusso con variabili 0/1
Ogni periodo t è associato a un nodo del grafo che
riceve in ingresso le scorte del periodo precedente st-1 e la
produzione corrente xt,
mentre il flusso uscente si ripartisce fra domanda dt e scorte st.
Il nodo è in equilibrio quindi la somma del flusso entrante è pari
alla somma del flusso uscente.
x1
s0
x2
s1
s2
t2
t1
d1
x3
d2
xT
s3
t3
d3
tT
dT
Modello algebrico astratto1
Minimizzazione dei costi di produzione (fissi e variabili) e di
inventory
In modo tale che la domanda di prodotto sia sempre soddisfatta
Min ∑tT (xt pt + yt ft + st ht ) tale che
xt + st-1 = dt + st
D yt ≥ xt
D = ∑tT dt
xt  Z
tT
yt  {0,1}  t  T
st  Z
tT
s0 = sT = 0
tT
tT
vincolo di produzione
vincolo logico col bigM
settaggio del «bigM»
Modello algebrico astratto 1.0 (improved)
Minimizzazione dei costi di produzione (fissi e variabili) e di
inventory
In modo tale che la domanda di prodotto sia sempre soddisfatta
Min ∑tT (xt pt + yt ft + st ht ) tale che
xt + st-1 = dt + st
Dt yt ≥ xt
Dt = ∑h≥t dh
xt  Z
tT
yt  {0,1}  t  T
st  Z
tT
s0 = sT = 0
tT
tT
tT
vincolo di produzione
vincolo logico
settaggio del «bigM»
Modello algebrico astratto 2
Cambiamo punto di vista, aggiungiamo informazioni.
Produco in un periodo per vendere in un periodo futuro
 variabile wit = quanto produco in i per vendere nel periodo t
Come cambia il modello?
Devo garantire che la domanda sia soddisfatta in ciascun periodo
t in base a quanto è stato prodotto in passato per essere venduto
in quel dato periodo 
la somma della produzione di tutti i periodi h non successivi a t
che è finalizzata a soddisfare la domanda in t deve eguagliare dt.
∑h=1..t wht = dt
Posso eliminare le variabili di inventory st (che ora compaiono
solo in funzione obiettivo) calcolando il costo di stoccaggio
unitario di wit pari a
∑k=i..t-1 hk
poiché ciò che
produco in i da vendere in t resta in stock dal periodo i al periodo
t-1.
Modello algebrico astratto 2 (diverse decisioni)
Min ∑tT ( (∑h≥t wth ) pt + yt ft + (∑i≤t wit (∑i ≤ j ≤ t-1 hj ) ) ) tale che
∑i≤t wit = dt
dt yi ≥ wit
tT
 it  T
soddisfo la domanda
vincolo logico, cambia «bigM»
wit  Z
 i, t  T
yt  {0,1}  t  T
Come si confrontano i due modelli in xt e in wth ?
Consideriamo i politopi associati al rilassamento continuo delle
due formulazioni.
I due modelli sono definiti in spazi di dimensioni diverse, (x,y) per
il primo modello e (x,w,y) per il secondo.
Per operare il confronto, PROIETTIAMO le w nello spazio delle x.
Proprietà della soluzione ottima
continua (w*,y*) del modello II
• Focalizziamoci sulla domanda di un dato periodo t, pari a dt.
• La produzione può avvenire in qualunque periodo i≤t.
• Ciascuna unità di prodotto destinata alla vendita in t, se
prodotta in i, costa cit = pi + ∑j i..t-1 hj
• Sia i+(t) il periodo in 1..t-1 in cui cit è minimo  tutta la
produzione di dt si concentra nel periodo i+.
• Quindi nel punto di ottimo (w*, y*), per ogni periodo t si ha che
wit =0  i≠i+ e wi+ t = dt
• Per effetto del vincolo dt yi ≥ wit nella soluzione continua la
variabile yi vale 1 per ogni i = i+(t) e 0 altrimenti

La soluzione (w*,y*) del rilassamento continuo è intera
Confronto fra i due politopi
P1 = { x, s, y RT tale che t T st-1 + xt = dt + st
xt ≤ ytD
st, xt ≥ 0
0≤yt≤1
}
Q2 = { wRTxT , x,y RT tale che t T ∑i=1..t wit = dt
wit ≤ yi dt
xt = ∑h=t..T wth
wit, xt ≥ 0
0≤yt≤1
}
Chiamo P2 la PROIEZIONE di Q2 nello spazio di P1 definita da
P2 = { x RT :  (x,w) Q2 }
Vale P2P1:
Dim. il punto v=(x,y: xt=dt yt=dt/Dt t) P1 (è un vertice) ma vP2.
Infatti wit=0 se i≠t e wtt=dt, ma il vincolo wit≤ ytdt è violato  i=t<T
Uso del CutOff
Il cutoff permette di utilizzare il branch and bound come una
euristica (con errore garantito).
Applica la chiusura per dominanza di tutti i nodi il valore del cui
rilassamento è dominato dal cutoff.
• Il cutoff può essere il valore z di una soluzione subottimale z<z*
che non conosciamo ma che sappiamo esistere
Oppure
• Può essere parametrico rispetto alla migliore soluzione
ammissibile (ottimo candidato zH) del tipo (in caso di massimo)
zH+d, e aggiornato via via che zH viene modificato
• Si garantisce che la soluzione restituita al termine della ricerca
è a d dall’ottimo z* (si commette un errore assoluto <d)
In Xpress si setta col comando MIPADDCUTOFF
Default:
max/min (MIPADDCUTOFF, 0.01*MIPRELCUTOFF*LP_value)
Uso del Cutoff
• Normalmente il BB termina quando non ci sono nodi aperti da
esplorare oppure ho una soluzione ammissibile che vale
quanto il bound associato al problema (il massimo dei bound
dei nodi aperti dell’albero in un problema di massimo).
• Se si imposta un certo valore k del cutoff, l’algoritmo termina
non appena determina una soluzione ammissibile H che vale
almeno quanto il cutoff (zH ≥ k, zH < z*). L’errore è dato dal gap
rispetto al bound corrente.
Errore stimato
z*
z1H
z2H
Cutoff k z3H
Bound
nodo n2
Bound
Bound
nodo n1 Globale
nodo n3
Uso del Cutoff
• Nel cutoff parametrico posso garantire a priori l’errore assoluto.
• Si imposta un certo valore d per cui l’algoritmo termina non
appena il bound globale si trova a distanza <d dall’ottimo
candidato (zH < z*< zbound, e zbound- zH < d).
• L’errore è dato da d.
Errore pre-stimato d
d
d
z*
z1H
z2H
Bound n2
(nodo chiuso x
dominanza da
z2+d)
z3H
Bound
Globale
nodo n3
Bound nodo n1
nodo chiuso
x dominanza
Pre-processing:
Ci sono svariate tecniche per rafforzare
il modello in modo tale da ridurne le dimensioni,
eliminando vincoli ridondanti o viariabili
senza perdere le soluzioni ottime intere e migliorando il bound:
i solver + sofisticati le implementano automaticamente,
e permettono di scegliere se applicarle o meno,
e se applicarle solo al nodo radice o ai nodi di tutto l’albero
(trade off tra il rafforzamento del modello e il costo computazionale necessario)
I metodi + diffusi:
• Logical preprocessing
• Rafforzamento basato sui costi ridotti
• Introduzione di disuguaglianze valide
Variable Fixing basato sul valore dei costi ridotti delle
variabili nella soluzione ottima del rilassamento continuo (1)
• Sia x la soluzione ottima continua a un generico nodo
dell’albero. E’ possibile fissare (per le soluzioni associate a tutto
il sottoalbero di cui il nodo corrente è radice) il valore di una
variabile binaria che ha valore intero nel rilassamento continuo,
in base al valore del suo costo ridotto, senza eliminare la
soluzione ottima intera ?
La decisione è presa in base a un ragionamento”what if”.
Consideriamo un problema della forma
max {cx: Ax=b, x0, xi {0,1} i}
e il suo rilassamento continuo
P: max {cx: Ax=b, xi 1, xi 0, i}
Considerando come vincoli espliciti anche i vincoli di segno,
associamo le variabili duali y ai vincoli Ax=b, le variabili z ai
vincoli x e (e è il vettore di tutti 1) e le variabili w ai vincoli x0 ,
il duale di P è il problema
D: min { yb+ze : yA+z–w = c, con z,w 0}
Condizioni di ottimalità per i problemi di
programmazione lineare a variabili limitate
• Sappiamo che x* è ottima per P={min cx : Ax=b, x≥0}  c^≥0
xi dove c^ indica il costo ridotto. Le variabili fuori base sono
tutte al lower bound 0. Alla loro crescita corrisponde un
incremento della funzione obiettivo.
• Analogamente, se avessi P={max cx: Ax=b, x≥0} la condizione
di ottimo diventa c^≤0: le variabili fuori base sono a 0, e a una
loro crescita corrisponde una diminuzione della funzione
obiettivo.
Cosa accade quando le variabili sono limitate in un intervallo [l,u]?
Le variabili fuori base possono essere al lower bound (xj=l) o
all’upper bound (xj=u).
le condizioni di ottimo si generalizzano come segue:
• se il problema è di minimo, c^j ≥0 xj =l, c^j ≤0 xj =u
• se il problema è di massimo, c^j ≤0 xj =l, c^j ≥0 xj =u
• Siano x*, e (y*,z*,w*) una coppia di soluzioni ottime per la
coppia Primale Duale. Indichiamo
ci* = ci-y*Ai come il costo ridotto della variabile xi.
 il costo ridotto è pari alla differenza dei prezzi ombra (var duali)
dei vincoli di lower e upper bound per la ammissibilità delle
soluzioni (yA+z–w = c  c* = c-y*A = z*-w*)
• In base agli scarti complementari, z(1-x)=0 e wx=0 ed essendo
il primale un problema di massimo, vale che
–
–
–
–
–
–
se zi*>0 (quindi xi=1)  wi*=0
se wi*>0 (quindi xi=0)  zi*=0
se xi*<1 (quindi non è all’upper bund)  ci* 0
se xi*>0 (quindi non è al lower bound)  ci*0
se ci*>0  xi=1
se ci*<0  xi*=0
(per l’ottimalità di x*)
(per l’ottimalità di x*)
• Sia z+ il valore dell’incumbent (un lower bound all’ottimo) e sia
zLP il valore del rilassamento continuo al nodo corrente.
• Sia xi*=0 (intera) e sia ci* = - wi*<0 (quindi wi*>0)
• Se zLP + ci*  z+ allora xi puo’ essere FISSATA a 0.
Logical preprocessing e probing
Savelsbergh Journal On Computing 6 (4) 1994, pp. 445-454
•
Si vuole ridurre la dimensione dei coefficienti nella matrice dei vincoli e dei bounds
sulle variabili, mantenendo inalterato l’insieme delle soluzioni intere.
Consideriamo il problema: Min {cx + hy: Ax+Gy≤b, x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj}
Indichiamo in ciascun vincolo con B+e B- (e rispettivamente C+ e C-) gli indici delle
variabili booleane (x) o continue (y) con coefficienti >0 e <0.
In tal modo, prendendo i valori assoluti dei coefficienti,
riformuliamo il vincolo iesimo aix + giy ≤ bi nella seguente forma:
Σ(j∊B+)ajxj - Σ(j∊B-)ajxj + Σ(j∊C+)gjyj - Σ(j∊C-)gjyj ≤ bi
• Scopo: analizzare ciascun vincolo i per verificare se tale vincolo:
–
–
–
–
rende il problema inammissibile,
è ridondante,
può essere usato per restringere i bounds sulle variabili,
può venir reso + aderente alla soluzione ottima intera modificandone i
coefficienti,
– forza il valore di una variabile x nella soluzione ottima ad un unico valore 0 o 1.
Identificazione della non ammissibilità
• Sia z il valore ottimo di Pi = min aix + giy :
Aix + Giy ≤ bi x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj
z è il minimo valore che assume la parte sx del vincolo i nella regione
ammissibile data dal sistema dei vincoli originari privato del vincolo i.
(indichiamo con Ai e Gi (bi) la matrice A e la matrice G (il vettore b) privati
dalla riga (componente) i-esima)
Se z > bi allora il vincolo i rende il problema inammissibile.
• Ovviamente il problema Pi è difficile quanto quello originario,
ma ogni lower bound su z che verifichi la condizione > bi , è sufficiente per
giungere alla stessa conclusione,
essendo zLB ≤ z, da cui zLB > bi  z > bi
Il lower bound + banale e + lasco è dato da:
zLB = - Σ(j∊B-)aj + Σ(j∊C+)gjlj - Σ(j∊C-)gjuj
in cui
le variabili in B+ e C+ sono al lower bound (0 per xj, lj per yj)
e quelle in B- e C- sono all’upper bound (1 per xj, uj per yj)
Identificazione della ridondanza
• Sia z il valore ottimo di Pi = max aix + giy :
Aix + Giy ≤ bi x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj
z è il massimo valore che assume la parte sx del vincolo i nella regione
ammissibile data dal sistema dei vincoli originario privato del vincolo i.
Se z ≤ bi allora il vincolo i è ridondante per il problema.
• Ovviamente il problema Pi è difficile quanto quello originario,
ma ogni upper bound su z che sia non maggiore di bi permette di giungere
alla stessa conclusione:
infatti, essendo z ≤ zUB, segue zUB ≤ bi  z ≤ bi
L’upper bound + banale e + lasco è dato da:
zUB = Σ(j∊B+)aj + Σ(j∊C+)gjuj - Σ(j∊C-)gjlj
in cui
le variabili in B+ e C+ sono all’upper bound (1 per xj, uj per yj)
le variabili in B- e C- sono al lower bound (0 per xj, lj per yj)
Miglioramento dei bounds
•
Sia zk il valore ottimo di Pki = min aix + Σ(jk, j∊C+) gjyj - Σ(j∊C-) gjyj
Aix + Giy ≤ bi x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj
zk è il minimo valore che assume la parte sx del vincolo i senza il contributo della
variabile yk, nella regione ammissibile data dal sistema dei vincoli originario privato
del vincolo i.
Ne segue che per soddisfare il vincolo i deve valere yk ≤ (bi-zk)/gik
Quindi l’upper bound su yk puo’ essere migliorato
se la nuova stima è inferiore alla precedente, cioè se (bi-zk)/gik≤uk
Ovviamente il problema Pki è difficile quanto quello originario,
ma ogni lower bound zkLB ≤ zk e’ sufficiente, poichè
yk ≤ (bi- zkLB)/gik  yk ≤ (bi-zk)/gik
Il lower bound computazionalmente + banale e + lasco è dato da:
zkLB = - Σ(j∊B-)aj + Σ(jk,j∊C+)gjlj - Σ(j∊C-)gjuj
in cui le variabili in B- e C- sono all’upper bound,
e le variabili in B+ e C+ sono al lower bound
esercizio
Fornire una procedura per il potenziale
miglioramento del lower bound lj su di una
variabile yj, secondo lo schema di
ragionamento descritto per il rinforzamento
dell’upper bound
Tecniche base di probing
(dedurre se il sistema di vincoli forza il valore di una variabile, caso xk=0)
•
•
Consideriamo un vincolo i e una variabile binaria xk in B+ e
sia zk il valore ottimo di Pki = min aix + giy :
Aix + Giy ≤ bi, xk=1, x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj
zk è il minimo valore che assume la parte sx del vincolo i nella regione ammissibile data dal
sistema dei vincoli originario privato del vincolo i avendo forzato la variabile xk al valore 1.
Se zk > bi allora il problema Pk e’ inammissibile,
quindi xk=0 in ogni soluzione ammissibile al problema originario
e il suo valore puo’ essere fissato, riducendo cosi’ di 1 il numero delle variabili.
•
Ovviamente il problema Pk è difficile quanto quello originario,
ma ogni lower bound su zk è sufficiente,
essendo zLB ≤ zk, da cui zLB > bi  zk > bi
Il lower bound computazionalmente + banale e + lasco è dato da:
zLB = aik - Σ(j∊B-)aj + Σ(j∊C+)gjlj - Σ(j∊C-)gjuj
in cui le variabili in B+ e C+ sono al lower bound,
quelle in B- e C- sono all’upper bound, e xk=1.
Tecniche base di probing
(dedurre se il sistema di vincoli forza il valore di una variabile, caso xk=1)
•
•
Consideriamo un vincolo i e una variabile binaria xk in B- e
sia zk il valore ottimo di Pki = min aix + giy :
Aix + Giy ≤ bi, xk=0, x∊{0,1}n, y∊Rm , lj ≤ yj ≤ uj
zk e’ il minimo valore che assume la parte sx del vincolo i nella regione ammissibile data dal
sistema dei vincoli originario privato del vincolo i
avendo forzato la variabile xk al valore 0.
Se zk > bi allora il problema Pk e’ inammissibile,
quindi xk=1 in ogni soluzione ammissibile al problema originario
e il suo valore puo’ essere fissato, riducendo cosi’ di 1 il numero delle variabili.
•
Ovviamente il problema Pk e’ difficile quanto quello originario,
ma ogni lower bound su zk e’ sufficiente,
essendo zLB ≤ zk, da cui zLB > bi  zk > bi
Il lower bound + banale e + lasco e’ dato da:
zLB = - Σ(jk,j∊B-)aj + Σ(j∊C+)gjlj - Σ(j∊C-)gjuj
in cui le variabili in B+ e C+ sono al lower bound,
e quelle in B- e C- sono all’upper bound, e xk=0.
Un esempio numerico (L. Wolsey, Integer Programming cap. 7.6 pg103-105)
Consideriamo il seguente problema di PL (rilassamento continuo di un modello di PLI)
Il primo vincolo impone 5x1  15 +2x2 -8x3. In base ai bound si setta il valore delle variabili x2 e x3
nel modo + favorevole al vincolo (tale da max 15+2x2-8x3), da cui 5x1  15+2-8 = 9 da cui x1  9/5
che rende + stretto il bound precedente x1  3
max
2x1
+
x2
-
x3
tale
che
5x1
-
2x2
+
8x3

15
8x1
+
3x2
-
x3

9
x1
+
x2
+
x3

6
0

x1

3
0

x2

1
1

x3
Applicando lo stesso procedimento su x2 otteniamo
2x2  -15 + 5x1 + 8x3 e settiamo il valori delle variabili
x1 x3 in modo da minimizzare la parte dx del vincolo,
da cui 2x2  -15 + 5·0 + 8·1 = -7 ma questo non
migliora il bound attuale di x2 che è x2 0.
Lavorando su x3 abbiamo 8x3  15–5x1+2x2  15-0+2
da cui otteniamo il nuovo bound su x3, x3  17/8
Ora si puo’ utilizzare il secondo vincolo (di ) per rendere + stringenti i lower bounds di x1 e x2
e l’upper bund di x3
Lavoriamo su x1: 8x1  9 -3x2 +x3  9 -3 +1 = 7 da cui x1  7/8 che rafforza x10
Invece, non è possibile migliorare i bounds di x2 e x3.
..poiche’ i bounds sono cambiati (sono diventati + stringenti), è opportuno reiterare il procedimento
Consideriamo nuovamente il primo vincolo mettendo in evidenza x3
Applicando i nuovi bounds su x2 e x1, si ottiene la disuguaglianza
8x3  15 + 2·1 - 5·7/8 = 101/8 da cui x3101/64 che rafforza il precedente x317/8.
Continua…..
Ora il problema si presenta così, gli stessi vincoli e funzione obiettivo ma i bounds sono + stretti.
Consideriamo il terzo vincolo, x1 +x2 +x3  6 e poniamo le variabili al loro upper bound.
Risulta 9/5 + 1 + 101/64 ~ 4.5 che è < 6, per cui ogni valore ammissibile delle variabili soddisfa il
terzo vincolo  il terzo vincolo è ridondante e si può eliminare!!
max
2x1
+
x2
-
x3
tale
che
5x1
-
2x2
+
8x3

15
8x1
+
3x2
-
x3

9
x1
+
x2
+
x3

6
7/8

x1

9/5
0

x2

1
1

x3

101/64
Ora osserviamo i coefficienti di x2
Aumentandone il valore, ciascuno dei due vincoli
si allontana dal proprio right hand side
 al crescere di x2 i vincoli non vengono violati.
Poichè x2 ha coefficiente >0 in una funzione
obiettivo di massimo, nella soluzione ottima
x2 sara’ posto al suo upper bound x2=1
Quindi x2 puo’ essere fissata a tale valore
eliminandola dal modello.
x2 = 1 !!
La variabile x3 ha coefficiente <0 nella funzione obiettivo di
massimo, coefficiente >0 nella disuguaglianza di  e coefficiente <0
nella disuguaglianza di  
in entrambi i casi diminuendo il valore di x3 si resta nella regione
ammissibile (ci si allontana dalla Frontiera)
 x3 va fissata al lower bound, x3=1.
x3=1!!
Il modello si riduce a
Max {2x1 : 7/8  x1  9/5 }
la cui soluzione ottima e’
x = 9/5, 1, 1.
Disuguaglianze generate
dall’inferenza logica sulle variabili binarie
Consideriamo un sistema dato dalle seguenti 4 disuguaglianze, con x1..x4  {0,1}
Consideriamo il primo vincolo, 7x1 +3x2 -4x3 -2x4  1
Se x1=1 necessariamente sia x3 che x4 devono essere 1 
questo genera le implicazioni a) x1  x3 e b) x1  x4. Inoltre non è possibile che siano a 1 sia x1 che
x2, da cui segue il vincolo c) x1+x2  1.
Dal secondo vincolo segue che se x2=1 allora x1 deve essere 1, da cui l’implicazione d) x2  x1.
Inoltre x2 e x3 non possono essere contemporaneamente a 1, da cui e) x2+x3  1.
Dal terzo vincolo si deduce che o x4=1 oppure sia x2 che x3 sono 1, il che è imposto dal sistema:
f) x2 + x4  1, g) x3 + x4  1.
Dal quarto vincolo segue che h) x3  x1.
7x1 +
3x2
-
4x3
-
2x4

1
-2x1 +
7x2
+
3x3
+
x4

6
Vediamo cosa dedurre dal sistema di vincoli (a-h)
-2x2 3x3
6x4
-5

Il sistema x1+x2  1 e x2  x1 ha come unico
3x1
2x3
-1

valore ammissibile per x2 il valore 0. x =0!!
2
 possiamo fissare x2=0.
x =1!!
x1 x2 x3 x4  {0,1}
Segue che x2+x4  1  x4=1 4
Da x1  x3 e x3  x1 segue x3=x1.
x3=x1!!
Sostituendo queste condizioni nel sistema, tutti i vincoli sono ridondanti,(x11, x15, -3x11, x1-1)
Quindi sono ammissibili solo le due soluzioni [1,0,1,1] e [0,0,0,1]
• Continua……
• File 08.PLI1.b_2016.ppt