Lezioni di Ricerca Operativa
Massimo Paolucci
Dipartimento di Informatica, Sistemistica e Telematica
(DIST)
Università di Genova
[email protected]
http://www.dattero.dist.unige.it
Estratto per la parte di programmazione lineare
del corso di Ricerca Operativa per
Ingegneria Gestionale
A.A. 2011/2012
1
La Ricerca Operativa
(Operation Research)
?
Metodi matematici rivolti alla soluzione di problemi decisionali
?
Nata durante la seconda guerra mondiale (gestione di risorse
limitate e problemi logistici)
?
Si è sviluppata grazie alla disponibilità di strumenti automatici
di calcolo (computer)
?
Scopo: determinare la decisione ottima dato un problema in
presenza di risorse limitate
?
I problemi reali vengono affrontati definendone una
rappresentazione quantitativa (modello matematico)
?
La soluzione dei problemi è cercata per mezzo di tecniche
(algoritmi) di ottimizzazione
?
Applicazioni:
?
Problemi logistici della produzione
?
Problemi decisionali di tipo economico
?
Problemi di gestione operativa
?
...
2
Esempi di applicazioni:
?
Problemi logistici della produzione
? Pianificazione della produzione
? Controllo delle scorte
? Scheduling
? Trasporto
?
Problemi decisionali di tipo economico
? Allocazione di capitali
? Acquisto/Produzione di beni
?
Problemi di gestione operativa
? Definizione dei turni di lavoro
? Definizione delle rotte di mezzi di trasporto
? Facility location
? Gestione ottima di risorse idriche
? Ottimizzazione di politiche di controllo
? Gestione ottima di aree di carico/scarico
? Problemi in reti di comunicazione e distribuzione
3
Formulazione dei problemi decisionali
?
Decisione: processo di selezione tra più alternative
?
Alternative finite o infinite
?
Alternative definite esplicitamente o implicitamente
?
Scelta sulla base di uno o più criteri (obiettivi)
?
Condizioni di certezza, incertezza o rischio
Problema
Reale
Formulazione
Modello
Modello
Matematico
Matematico
Problema fondamentale della Ricerca Operativa:
identificare un modello matematico con cui studiare
in modo sistematico il problema decisionale
4
Struttura del problema di decisione
Modello
ModelloMatematico
Matematico
Obiettivi
Obiettivi
Variabili
Variabilidecisionali
decisionali
Vincoli
Vincoli
Caratteristiche dei problemi che saranno considerati:
? Condizioni di certezza (problemi deterministici)
? Presenza di un solo criterio (singolo obiettivo)
?
Per risolvere i problemi decisionali sono usati algoritmi
?
Un algoritmo è una procedura iterativa costituita da un numero
finito di passi
?
Esistono problemi facili (pochi) e difficili
?
La facilità di un problema è legata all’esistenza di un algoritmo di
soluzione efficiente
5
Un esempio: Assegnare 70 lavori a 70 persone.
?
Si indichino con i=1,...,70 i lavori e con j=1,...,70 le persone.
?
Se la i-esima persona esegue il j-esimo lavoro si paga un costo cij.
?
Una persona può eseguire solo un lavoro (vincolo)
?
?
Ogni lavoro deve essere eseguito (vincolo)
Lo scopo (decisione) è stabilire chi fa che cosa in modo che il
costo pagato sia minimo (obiettivo).
Un possibile algoritmo di soluzione (Brute Force):
1) costruire tutte le possibili assegnazioni persone-lavori e
calcolarne il costo
2) scegliere l’assegnazione con il costo più piccolo
Le assegnazioni alternative sono 70! (le permutazioni di 70 numeri)
Persone 1 2
Lavori 1 2
70 Persone 1 2
70 Lavori 2 1
Il numero delle assegnazioni alternative è molto grande
70! ? 10100
6
70
70
Si supponga di disporre di un calcolatore che è in grado di calcolare
106 assegnazioni alternative (soluzioni) al secondo.
Quanto impiega l’algoritmo a risolvere il problema?
Supponendo di dover “esplorare” 10100 assegnazioni sono necessari
1094 secondi.
In un anno ci sono:
365(gg)x24(h)x60(min)x60(sec)? 31?106 ? 107 sec
Per risolvere il problema sono necessari 1087 anni !
Il Big Bang (data di inizio dell’Universo)
è avvenuto circa 15?109 anni fa!
...ma se si disponesse di un calcolatore 1000 volte più veloce?
...si impiegherebbero 1084 anni.
...e se si usassero 109 calcolatori in parallelo?
...si impiegherebbero 1075 anni.
7
Conclusioni:
?
L’algoritmo Brute Force non è efficiente!
?
Se questo fosse l’unico algoritmo utilizzabile per il problema
dell’assegnazione persone-lavori, il problema sarebbe difficile
?
La soluzione ottima dei problemi difficili può essere trovata solo
per casi di ridotte dimensioni
? I problemi in cui la scelta è tra un numero finito di alternative (le
variabili decisionali possono assumere sono un numero discreto
di valori) si dicono combinatorici.
? La teoria della complessità una parte della Ricerca Operativa che
studia la difficoltà della soluzione dei problemi.
? Conoscere che un problema è difficile permette la scelta di un
appropriato algoritmo:
?
?
?
?
Algoritmi esatti basati sull’enumerazione esplicita delle
soluzioni
Algoritmi esatti basati sull’enumerazione implicita delle
soluzioni
Algoritmi approssimati
Algoritmi euristici
8
Programmazione Matematica Lineare
Problema di Programmazione Matematica
ottimizzazione)
(PM) ( problema di
max f(x)
s.t.
x ∈X ⊆ Rn
vettore delle variabili
decisionali
insieme delle soluzioni
ammissibili
funzione obiettivo
scalare
Un problema di PM è lineare quando:
f ( x) = cT x
la funzione obiettivo è lineare
l’insieme X è espresso in termini di relazioni (uguaglianze e
disuguaglianze) lineari
{
}
variabili x continue
Programmazione Lineare Continua
(PL)
{
}
variabili x intere
Programmazione Lineare Intera
(PLI)
x ∈ R n : Ax ≤ b
X
x ∈ Z n : Ax ≤ b
9
Esempio grafico in 2 dimensioni
{
}
X = x ∈ R n : Ax ≤ b
poliedro composto da ∞ punti
x2
X
{
}
X = x ∈ Z n : Ax ≤ b
x1
poliedro composto da un numero finito di
punti
x2
X
x1
10
Esempio: pianificare la produzione di una
piccola azienda che produce vernici
L’azienda produce due tipi di vernici, una vernice per interni (I) ed
una per esterni (E), usando due materie prime indicate con A e B.
La disponibilità al giorno di materia prima A è pari a 6 ton, mentre
quella di materia prima B è di 8 ton.
La quantità di A e B consumata per produrre una ton di vernice E
ed I è riportata nella seguente tabella.
materie prime
A
B
vernici
E
I
1
2
2
1
Si ipotizza che tutta la vernice prodotta venga venduta.
Il prezzo di vendita per tonnellata è 3K$ per E e 2K$ per I.
L’azienda ha effettuato un’indagine di mercato con i seguenti esisti:
• la domanda giornaliera di vernice I non supera mai di più di 1 ton
quella di vernice E
• la domanda massima giornaliera di vernice I è di 2 ton
Problema: determinare le quantità delle due vernici che debbono
essere prodotte giornalmente in modo da rendere
massimo il guadagno.
11
Esempio: formulare il modello matematico
Definizione
delle variabili
Definizione
dell’obiettivo
Formulazione
Matematica
Definizione
dei vincoli
Definizione delle variabili
Si introducono due variabili che rappresentano le quantità
prodotte (e vendute) al giorno per le due vernici (ton):
x E produzione di vernice per esterni
xI produzione di vernice per interni
Le due variabili sono continue.
12
Definizione dell’obiettivo
Il guadagno giornaliero (K$) è dato da
Z = 3x E + 2 x I
L’obiettivo è rappresentato da un’equazione lineare.
Definizione dei vincoli
• Vincoli ( tecnologici) sull’uso delle materie prime ( l’uso
giornaliero delle materie prime non può eccedere la
disponibilità):
(A) x E + 2 xI ≤ 6
(B) 2 x E + x I ≤ 8
• Vincoli conseguenti le indagini di mercato
xI − x E ≤ 1
xI ≤ 2
• Non negatività delle variabili
xE ≥ 0
xI ≥ 0
13
La formulazione definisce un Problema di Programmazione Lineare
a variabili continue
max Z = 3x E + 2 x I
x E + 2 xI ≤ 6
2 x E + xI ≤ 8
− x E + xI ≤ 1
xI ≤ 2
xE ≥ 0
xI ≥ 0
xI
(1)
( 2)
( 3)
( 4)
(5)
( 6)
}
Funzione obiettivo
vincoli che definiscono quali valori
sono ammessi per le due variabili
(Insieme delle soluzioni ammissibili)
(5)
8
7
(2)
(3)
6
5
4
3
(4)
2
1
−2
−1
(1)
X
1
2
3
4
14
5
(6)
6
xE
xI
(5)
4
(2)
(3)
3
2
1
E
(4)
D
C
F
A
-2
-1
(6)
B
1
2
3
4
z=6
l’obiettivo per
z=0
A=(0,0) B=(4,0)
Ottimo
C=(10/3,4/3)
D=(2,2)
5
6
xE
(1)
z=38/3
E=(1,2) F=(0,1)
Proprietà:
• le soluzioni si trovano sulla frontiera del poliedro
X, quindi
corrispondono ai vertici di X;
• deve essere considerato solo un numero finito di soluzioni.
15
Se la funzione obiettivo fosse parallela ad un vincolo ...
xI
I punti del segmento DC
sono tutti ottimi
2
1
E
D
un diverso obiettivo
parallelo a (1)
C
F
X
A
B
1
2
3
4
xE
... esisterebbero infiniti punti di ottimo tutti equivalenti (nell’esempio,
quelli del segmento DC).
In questo caso si potrebbe scegliere alternativamente tra
estremi C e D.
i punti
La ricerca dell’ottimo resta pertanto una esplorazione tra un numero
finito di soluzioni alternative corrispondenti ad i vertici del poliedro
X.
16
Formulazione di Problemi Decisionali come
Problemi di Programmazione Lineare
Consideriamo i seguenti problemi decisionali ed esaminiamo come
possono essere formulati come problemi di PL:
•
Il problema del trasporto
•
Il problema del “product-mix”
•
Il problema della pianificazione della produzione (production
planning)
17
Il Problema del Trasporto
•
m fonitori producono s1,..., sm quantità di un certo prodotto (ad
esempio, gas o petrolio)
•
n destinatari richiedono r1,..., rn quantità di prodotto
•
il prodotto può essere trasportato da ogni fornitore ad ogni
destinatario (ad esempio attraverso un gasdotto o oleodotto)
•
per ogni unità di prodotto trasportata dal fornitore i al cliente j
viene pagato un costo cij
Il problema: determinare quali quantità di prodotto trasportare tra
ogni coppia (i,j) di fornitori-destinatari in modo da
minimizzare il costo complessivo del trasporto.
s1
si
r1
M
M
rj
cij
M
M
sm
rn
18
Ipotesi di ammissibilità
Perché il problema possa ammettere una soluzione deve essere
verificata la seguente condizione sui dati
m
n
i =1
j=1
∑ si ≥ ∑ rj
che stabilisce che la quantità totale di prodotto disponibile non
può essere inferiore alla richiesta totale del prodotto stesso.
Formulazione del problema.
Le variabili:
la quantità di prodotto trasportata su ciascun arco
x ij ∈ R
i = 1,..., m; j = 1,..., n
sono variabili continue
La funzione obiettivo:
il costo del trasporto complessivo
m
n
∑ ∑ c ijx ij
i = 1 j= 1
19
I vincoli:
•
la quantità totale di prodotto fornita da ciascun fornitore
può superare la disponibilità del fornitore stesso
non
n
∑ x ij ≤ si i = 1,..., m (1)
j= 1
•
la quantità totale di prodotto ricevuta da ciascun destinatario
deve essere uguale a quella richiesta
m
∑ x ij = r j j = 1,..., n
i =1
•
(2 )
le quantità di prodotto trasportate sugli archi sono sempre non
negative
x ij ≥ 0 i = 1,.., m; j = 1,..., n
20
( 3)
Il problema del
trasporto
m
n
min ∑ ∑ c ijx ij
i = 1 j= 1
n
∑ x ij ≤ si i = 1,..., m
j= 1
m
∑ x ij = r j j = 1,..., n
i =1
(1)
(2)
x ij ≥ 0 i = 1,..., m; j = 1,..., n ( 3)
x ij ∈ R i = 1,..., m; j = 1,..., n
• E’ un problema di PL con variabili continue.
• Può essere risolto con l’algoritmo del simplesso.
• Possibili variazioni:
• introduzione della massima capacità per gli archi;
• non tutti i fornitori sono connessi a tutti i destinatari;
• il trasporto non avviene direttamente tra fornitore
e
destinatario ma attraverso dei centri
di raccolta e
distribuzione intermedi
21
Il Problema del Product-Mix
•
si dispone di m risorse produttive in quantità limitata , in
particolare, la loro massima disponibilità
èb
1,...,
b
m
(ad
esempio, materie prime)
•
possono essere eseguite n attività che necessitano delle risorse
precedenti (ad esempio, la produzione di n diversi prodotti)
•
alle n attività sono associati i seguenti profitti unitari c 1,..., c n
(ad esempio, il profitto per unità di prodotto)
•
sono noti i consumi di risorse per unità di attività eseguita ; in
particolare, per eseguire una unità della attività
i- esima si
utilizzano aij unità della risorsa j-esima
Il problema: determinare quali attività eseguire ed a quale livello
(ad esempio, quali e quanti prodotti produrre) in
modo da massimizzare il profitto conseguente.
(Nota: a questa classe di problemi appartiene il problema
dell’azienda che produce vernici.)
22
Formulazione del problema.
Le variabili:
i livelli a cui devono essere eseguite le attività (variabili
continue)
xi ∈R
i = 1,..., n
La funzione obiettivo:
il profitto risultante dall’esecuzione delle attività
n
∑ ci xi
i =1
I vincoli:
• per ciascuna risorsa , la quantità totale di risorsa utilizzata per
eseguire le attività non può superare la disponibilità massima
della risorsa stessa
n
∑ a ijx i ≤ b j j = 1,..., m (1)
i =1
•
i livelli delle attività sono sempre non negativi
x i ≥ 0 i = 1,.., n
23
( 2)
Il problema del product-mix
n
max ∑ c i x i
i =1
n
∑ a ijx i ≤ b j j = 1,..., m
(1)
x i ≥ 0 i = 1,..., n
x i ∈ R i = 1,..., n
(2)
i =1
24
Il Problema della pianificazione della produzione
(Production Planning)
Caso considerato: pianificare la produzione di un singolo prodotto per
i prossimi N mesi.
•
per ciascuno degli
N mesi è nota la capacità produttiva
massima del prodotto, m1,...,mN
•
sono noti c1,...,cN, i costi di produzione per unità di prodotto nei
diversi mesi
•
sono noti r 1,...,rN, i costi di immagazzinamento per unità di
prodotto nei diversi mesi
•
è nota la domanda di prodotto per i diversi mesi, d1,...,dN
•
è nota la disponibilità iniziale di prodotto in magazzino M0
Il problema: determinare la quantità di prodotto da produrre nei
diversi mesi minimizzando il costo complessivo di
produzione e di immagazzinamento.
25
Formulazione del problema.
Le variabili:
•
la quantità di prodotto pianificata per ciascun mese (variabili
continue)
x i ∈ R i = 1,..., N
•
la quantità di prodotto che deve essere immagazzinata per
ciascun mese (variabili continue)
si ∈ R
i = 1,..., N
La funzione obiettivo:
il costo totale pagato per la produzione più quello pagato
per l’immagazzinamento durante l’arco degli N mesi
N
∑ ( c i x i + ri si )
i =1
I vincoli:
• per ciascun mese , la quantità il prodotto disponibile ( prodotto
nel mese o presente perchè immagazzinato il mese precedente )
soddisfa la domanda corrente ; l’eventuale rimanenza viene
immagazzinata e resa disponibile per il mese successivo ( legge
di conservazione del prodotto)
x i + si −1 = d i + si i = 1,..., N (1)
26
•
la produzione mensile non può superare la relativa capacità
produttiva
x i ≤ m i i = 1,..., N ( 2 )
•
il livello iniziale del magazzino è quello dato
s0 = M 0
•
(3)
il livello di produzione e la quantità di prodotto in magazzino nei
vari mesi non può essere negativa
x i ≥ 0 si ≥ 0 i = 1,.., N
(4)
Il problema del production planning (singolo prodotto)
N
min ∑ (ci x i + risi )
i =1
x i + si −1 − si = d i i = 1,..., N (1)
x i ≤ m i i = 1,..., N
( 2)
s0 = M 0
(3)
x i ≥ 0si ≥ 0i = 1,..., N
( 4)
x i ∈ R si ∈ R i = 1,..., N
Una possibile variante consiste nel considerare
diversi prodotti.
27
la produzione di n
Soluzione dei Problemi di
Programmazione Lineare
Consideriamo un problema di Programmazione Lineare (PL) con m
vincoli ed n variabili in Forma Standard
max x0 = cT x
Ax = b
x≥0
(1)
(2)
x ∈Rn
dove:
• x è il vettore nx1 delle variabili decisionali
• c è il vettore nx1 dei coefficienti della funzione obiettivo
• b è il vettore mx1 dei termini noti dei vincoli
• A è la matrice mxn dei coefficienti dei vincoli; A=[aij], i=1,...,n,
j=1,...,m
Inoltre, si assumono soddisfatte le seguenti ipotesi:
b ≥ 0 ⇒ b j ≥ 0 ∀j = 1,K , m
• m<n
• m=rango(A)
Qualunque problema di PL può essere trasformato in un problema
equivalente in forma standard.
28
I valori di x che soddisfano i vincoli (1) sono detti soluzioni del
problema di PL.
Inoltre, i valori di x che soddisfano anche i vincoli (2) sono detti
soluzioni ammissibili del problema di PL.
L’ipotesi m<n ( più variabili che vincoli ) non rappresenta una
perdita di generalità . E’ noto infatti che il sistema di equazioni
lineari (1):
• può ammettere una soluzione unica se m=n
• può ammettere soluzione se m>n ed almeno m-n equazioni sono
ridondanti (quindi possono essere eliminate)
n−m
• può ammettere ∞
soluzioni se m<n
Solo l’ultimo caso è significativo dal punto di vista dei problemi di
ottimizzazione.
Un problema di PL può essere:
a) Ammissibile con soluzioni ottime finite
b) Ammissibile senza soluzione ottime finite ( detto anche
illimitato, o con ottimo all’infinito)
c) Non Ammissibile (senza soluzioni ammissibili)
29
Da un punto di vista grafico i tre casi corrispondono a:
a) una regione di ammissibilità
associata ad un poliedro chiuso non
vuoto (Politopo)
{
X
}
X = x ∈ R n : Ax ≤ b ≠ ∅
b) una regione di ammissibilità
associata ad un poliedro aperto
non vuoto
X
(n.b., una soluzione ottima
all’infinito implica un poliedro X
aperto, ma non è vero il viceversa)
X ≠ ∅ (X aperto)
c) una regione di ammissibilità
associata ad un poliedro vuoto
X2
X1
X = ∅ ⇒ ∃x ∈ R n tale chex ∈ X
X = X1 ∩ X 2 = ∅
30
• Un poliedro è dato dall’intersezione di semispazi.
• Un semispazio in n dimensioni è individuato da una disuguaglianza
n
T
lineare a x ≤ b x ∈R
• Un poliedro X è un insieme convesso
Definizione
Un insieme X è convesso se e solo se dati due punti x a , x b ∈ X
ogni punto y generato come y = λ x a + (1 − λ ) x b
0≤ λ ≤1
(combinazione convessa di x a , x b ) è tale che y ∈ X
Vertici del Poliedro X
xa
X
y
I vertici di un poliedro si dicono
Punti Estremi
xb
Definizione
Un punto di un poliedro X è un punto estremo se e solo se non può
essere espresso come combinazione convessa di altri punti di X.
31
1. Teorema (Proprietà dei punti estremi di un poliedro)
Dato X poliedro chiuso non vuoto con punti estremi x e i , i = 1,..., E
ogni punto x ∈X può essere espresso come combinazione
convessa dei punti estremi di X:
E
E
i =1
i =1
x = ∑ λ i x e i con ∑ λ i = 1 λ i ≥ 0 ∀i
x e1
Ad es., la combinazione convessa
di x e1 x e 2 x e 3
permette di esprimere tutti i punti
di X'⊂ X
x e2
X’
X
x e3
Se X è un poliedro aperto non vuoto per esprimere tutti i suoi punti
oltre ad i punti estremi si devono utilizzare anche le
sue direzioni
estreme.
Definizione
Dato un poliedro X, d è una direzione di X se e solo se
∀x ∈X ⇒ x + µd ∈ X
µ ≥ 0.
32
Ad esempio:
x
X
x + µ d ( µ ≥ 0)
d
Definizione
Una direzione d di un poliedro X, è una direzione estrema di X se
e solo se non è
esprimibile come combinazione lineare di altre
direzioni di X.
Ad esempio:
X
x
d = µ1 d e1 + µ 2 d e 2
µ1 , µ 2 ≥ 0
d e2
d e1
33
2. Teorema (Proprietà dei punti estremi e delle direzioni
estreme di un poliedro)
Dato X poliedro non vuoto con punti estremi x e i , i = 1,..., E
e direzioni estreme d e j , j = 1,..., D
Ogni punto x ∈X può essere espresso come combinazione
convessa dei punti estremi di X e combinazione lineare delle sue
direzioni estreme:
E
D
i =1
j=1
x = ∑ λ i x ei + ∑ µ j d e j
E
con ∑ λ i = 1 λ i ≥ 0 ∀i , µ j ≥ 0 ∀j
i =1
Se d è una direzione del poliedro X = {A x = b , x ≥ 0}
allora si ha che
x + λ d ∈ X x ∈ X, λ ≥ 0 ⇒ A( x + λ d ) = b ⇒ A d = 0
34
Soluzione Algebrica dei problemi di PL
Consideriamo il problema (PL) in Forma Standard
(PL)
max x0 = cT x
Ax = b
x≥0
(1)
( 2)
x ∈Rn
Poiché m=rango(A) ed m<n, si può partizionare A come
A = [B N]
dove:
• B è matrice non singolare mxm (det( B) ≠ 0)
• N è matrice mx(n-m)
La matrice B è composta da m colonne linearmente indipendenti di
A. Tali colonne sono quindi una base nello spazio vettoriale ad m
dimensioni delle colonne di A.
La matrice B è detta Matrice di Base (Base).
In corrispondenza di una scelta di B ed N si può partizionare anche il
vettore delle x:
 x  m componenti
x =  B
x N  n − m componenti
x B è detto Vettore delle Variabili in Base (Vettore di Base)
x N è detto Vettore delle Variabili fuori Base
35
Il sistema di equazioni lineari A x = b si può riscrivere come
x 
[ B N]x B  = b ⇒ Bx B + Nx N = b
 N
⇒
x B = B−1 b − B−1Nx N
Una soluzione del sistema di equazioni (1) corrisponde a determinare
il valore per m variabili ( x B ) avendo fissato arbitrariamente il valore
per le restanti n-m variabili (xN)
Una scelta particolarmente importante è porre xN = 0 da cui si ottiene
 x B   B−1 b 
x= =

x
0
 N  

Soluzione di Base
Se x B = B−1 b ≥ 0 si ottiene una Soluzione di Base Ammissibile.
36
Le soluzioni di base sono importanti poichè vale il seguente teorema
3. Teorema
Dato X = {Ax = b, x ≥ 0}
insieme convesso, dove A è una
matrice mxn di rango m con m<n, xe è un punto estremo di X
se e solo se xe è una soluzione di base ammissibile.
• La ricerca delle soluzioni di un problema di PL si può effettuare
esaminando solamente un numero finito di soluzioni corrispondenti
alle soluzioni di base associate al poliedro dei vincoli.
• In generale, a ciascuna matrice di base B ( ammissibile) corrisponde
una sola soluzione di base (ammissibile).
• Viceversa, ad una soluzione di base (
ammissibile) possono
corrispondere più matrici di base. Questi casi sono associati
a
soluzioni dette degeneri, ovvero per cui qualche componente del
vettore di base x B risulta nullo.
Un esempio.
max x0 = 2 x1 + x2
x1 + x2 ≤ 5
− x1 + x2 ≤ 0
(1)
( 2)
6x1 + 2 x2 ≤ 21 (3)
x1 ≥ 0 x2 ≥ 0
Il problema non è in forma standard !
(continua)
37
Trasformazione dei problemi in forma standard.
⇒ Vincoli ≤
Si introducono variabili ausiliarie positive dette Variabili di Slack
(scarto):
n
∑ a ijx j ≤ bi
j=1
n
→ ∑ a ijx j + si = bi
j=1
⇒ Vincoli ≥
Si introducono variabili ausiliarie
Surplus (eccedenza):
n
n
j=1
j=1
si ≥ 0
positive dette
∑ aijx j ≥ bi → ∑ aijx j − si = bi
Variabili di
si ≥ 0
⇒ Variabili non vincolate in segno (variabili libere)
Si sostituisce la variabile libera con due variabili ausiliarie positive
(il problema diventa ad n+1 variabili):
x j libera → x j = u j − v j con u j ≥ 0 v j ≥ 0
⇒ Termini noti dei vincoli negativi
Si moltiplicano entrambe i membri per -1 e si cambia il verso della
disuguaglianza
⇒ Problema di minimo
Si trasforma il problema
funzione obiettivo.
in massimo moltiplicando per -1 la
38
Un esempio (seguito).
Il problema trasformato in forma standard:
max x0 = 2 x1 + x2
x1 + x 2 + x3
= 5 (1)
− x1 + x2
+ x4
= 0 (2)
+ x5 = 21 ( 3)
6x1 + 2 x2
x1 ≥ 0 x2 ≥ 0 x3 ≥ 0 x4 ≥ 0 x5 ≥ 0
x2
(3)
5
(1)
4
(2)
3
P2
2
x0 = 0
x 0 = 7.75
1
P3 Ottimo
X
x1
P4
P1
1
2
3
4
5
 1 1 1 0 0
A =  − 1 1 0 1 0


 6 2 0 0 1
39
5
b=0
 
21
Il massimo numero di possibili basi corrisponde al numero di possibili
estrazioni di m colonne su n colonne di A:
 n
n!
 =
 m m!( n − m)!
 5
 3
Nell’esempio   =
5!
= 10
3! 2 !
In generale, non tutte le possibili sottomatrici mxm sono non-singolari
(quindi invertibili). Inoltre, non tutte le matrici di base danno luogo a
soluzioni ammissibili (ossia, positive).
Per questo fatto il numero delle combinazioni corrisponde ad un limite
superiore.
Nell’esempio solo 6 combinazioni danno luogo a basi ammissibili:
 1 1 0
B1 = − 1 1 1


 6 2 0
 x1 
11 4 
x1B = x2  = B1−1 b =  9 4  ⇒ P3
 


x4 
 1 2 
dove
 x1  5 2
x2B =  x2  = 5 2 ⇒ P2
   
 x5   1 
 x1  7 2
x3B =  x3  = 3 2  ⇒ P4
   
x4  7 2
 x1 
 x2 
 x4   0 
x4B = x3  = x5B =  x3  = x6B =  x3  =  5  ⇒ P1
 
 
   
 x5 
 x5 
 x5  21
40
(soluzioni degeneri)
Dalla corrispondenza delle soluzioni di base ammissibili con i punti
estremi del poliedro X deriva il seguente teorema.
4. Teorema Fondamentale della PL
Se un problema di PL ammette soluzione , allora esiste una
soluzione ammissibile di base.
Se un problema di PL ha soluzione ottima finita , allora ha anche
una soluzione di base ottima.
• Poiché il massimo numero di possibili basi di un problema di PL è
finito, tali problemi hanno una struttura discreta.
• I problemi di ottimizzazione corrispondenti alla selezione tra un
numero finito di alternative si dicono problemi combinatorici.
• La PL è quindi un problema combinatorico.
• Un possibile algoritmo per determinare la soluzione ottima potrebbe
consistere nella generazione esplicita
di tutte le soluzioni
ammissibili di base, quindi nella scelta di quella soluzione che rende
massimo l’obiettivo.
• Tale strategia non è conveniente poichè il numero massimo delle
possibili basi cresce in maniera esponenziale col crescere delle
dimensioni del problema (numero di variabili e vincoli).
• Algoritmi che richiedono in generale un numero di passi che cresce
in maniera esponenziale con le dimensioni del problema non sono
efficienti.
41
Calcolo della soluzione ottima di un problema di PL.
Supponendo di aver individuato una base B ammissibile, riscriviamo
la funzione obiettivo:
 xB  T
c N ]   = c B x B + cT
N xN
x
 N
x 0 = cT x = [ c B
(1)
Sostituiamo in (1) l’espressione delle variabili di base:
x B = B−1 b − B−1Nx N
ottenendo:
(
(2)
)
−1
T −1
T
x0 = cT
BB b − c BB N − c N x N
(3)
T −1
Il valore dell’obiettivo corrispondente alla base B è x0 = cBB b
Le relazioni (2) e (3) esprimono rispettivamente i vincoli e la funzione
obiettivo in funzione delle variabili fuori base.
Raccogliamo (2) e (3) in in forma matriciale:

 x 0  c T
B−1 b  cT
B−1N − cT
B
B
N x
=
−
 N
 x   −1  
−1N
B
b
B
 B  
 

Le (4) sono m+1 equazioni.
42
(4)
Trasformiamo le (4) in una forma più compatta.
In particolare, si pone:
• R l’insieme degli indici delle variabili fuori base, ovvero
delle colonne di N
x B0 = x0
e
 xB 
 1
xB =  M 
x B 
 m
 y00 
cTBB−1 b   y10 

• y0 =  −1  = 
 B b   M 
y 
 m0 
vettore (m+1)-dim
 y0 j 
−1
c T
  y1 j 
BB a j − c j
 ∀j ∈ R
=
• yj = 
 B−1a j   M 
y 
 mj 
n-m vettori (m+1)-dim
dove a j e c j sono rispettivamente la colonna di N ed il coefficiente di
c N che moltiplicano la j-esima variabile fuori base.
43
Le (4) si possono quindi riscrivere come segue
x Bi = yi 0 − ∑ y ijx j
∀i = 0,1,K, m
j∈R
(5)
Ponendo nelle (5) x j = 0 ∀j ∈ R si ottengono il valore dell’obiettivo
(i=0) e le soluzioni di base (i=1,...,m) corrispondenti alla base attuale.
Verifichiamo se la soluzione corrente è ottima.
Consideriamo l’obiettivo:
x B0 = y 00 − ∑ y 0 jx j
j∈R
Supponiamo che esista un coefficiente y 0k<0, e consideriamo come
varia l’obiettivo facendo diventare positiva la variabile fuori base x k,
attualmente nulla.
>0
}
x B0 = y 00 − y 0 k x k > y 00
<0
L’obiettivo migliora !
>0
Allora si potrebbe pensare
di aumentare indefinitivamente x
migliorando sempre l’obiettivo.
Tuttavia, aumentando x k anche le equazioni (5) corrispondenti ai
vincoli variano, modificando i valori delle variabili di base.
44
k
Consideriamo la generica equazione i- esima in funzione della
variabile fuori base xk che stiamo incrementando:
xBi = yi0 − yik xk
Se yik>0, aumentando xk la xBi diminuisce.
E’ quindi possibile aumentare xk fino a che xBi ≥ 0 (ammissibile).
Il valore limite di x k perché la i- esima variabile di base
ammissibile è quindi:
resti
y
xk = i0 ⇒ xBi = 0
yik
Facendo assumere ad x k un valore positivo significa
portare la
variabile in base.
Nello stesso tempo il valore delle altre variabili di base per cui y ik>0
diminuisce.
Il valore che x
quello corrispondente
k assume in base è
all’annullamento della prima variabile di base, ad es. xBr,cioè
y 
yr 0
= min  i0 
y rk i =1,..., M yik 
yik >0
La variabile xk entra in base con tale valore, ed in corrispondenza la
variabile xBr esce di base.
45
Il coefficiente y rk è detto Pivot, ( l’aggiornamento della base si dice
Pivoting) e viene usato per aggiornare i valori delle variabili in base
dopo l’ingresso in base di xk:
y
x Bi = yi0 − yik r 0
y rk
∀i = 0,..., m; i ≠ r
y
xk = r 0
y rk
xj = 0
∀j ∈ R' = R − {k}
La nuova soluzione di
base
x Br = 0 Le nuove variabili fuori base
Con il cambio delle variabili in base, la nuova matrice di base
risulta composta delle stesse colonne della vecchia
base ad
eccezione del fatto che la colonna associata a xBrè stata sostituita
dalla colonna associata a xk.
Aggiorniamo le equazioni (5) dopo il cambio di base:
y rj 
y rj

y r0
x Bi = y i0 − y ik
− ∑  y ij − y ik
x Br
xj +
y rk j∈R − {k} 
y rk 
y rk
∀i = 0,1,K, m; i ≠ r
(5’)
y rj
yr0
1
xk =
− ∑
xj −
x Br
y rk j∈R − {k} y rk
y rk
46
I nuovi valori delle variabili in base si ottengono ponendo nelle (5’)
xj = 0
∀j ∈ R − {k} x Br = 0
La nuova soluzione di base ha migliorato il valore della funzione
obiettivo:
>0
}
y
x B 0 = y 00 − y 0k r 0 > y 00
{ y rk
<0 {
>0
E’ possibile iterare il procedimento fino a che esiste qualche variabile
fuori base che può migliorare l’obiettivo se portata in base.
5. Teorema (Condizione di ottimalità)
Una soluzione di base non
ottima se e solo se:
degenere di un problema di PL è
1) y i0 ≥ 0
i = 1,..., m
(ammissibile)
2) y 0 j ≥ 0
∀j ∈ R
(non migliorabile)
Nel caso di soluzione degenere possono esistere soluzioni ottime in
cui il punto (2) del terorema 5 non è soddisfatto.
Tuttavia, se un problema ammette soluzione ottima finita allora
ammette una soluzione di base ottima che soddisfa le condizioni (1) e
(2) del teorema 5.
47
Scelta della variabile entrante.
Quando la condizione di ottimalità non è verificata è sempre possibile
scegliere una variabile fuori base x k da portare in base per migliorare
l’obiettivo.
Quando esistono più
alternative la
scelta non preclude
il
raggiungimento della soluzione ottima, ma può al peggio aumentare il
tempo necessario per la sua ricerca.
Esistono due criteri di scelta della variabile entrante:
a) Il metodo del gradiente (il più utilizzato)
Sceglie la variabile che localmente fa aumentare più rapidamente
l’obiettivo:
y = min y
0k
j∈R
y0j <0
0j
b) Il metodo del massimo incremento
Sceglie la variabile che effettivamente provoca il maggior
aumento dell’obiettivo:

yr 0 

k = arg max − y 0 j
y
rj 
j∈R 
y0j <0
dove r è l’indice della variabile che lascia la base a causa
dell’ingresso in base di xj.
48
Scelta della variabile uscente.
Determinata la variabile fuori base x k da portare in base, si deve
scegliere la variabile uscente. Esistono due situazioni alternative:
a)
yrk>0 per almeno un r
Allora si può aggiornare la base come visto.
b) y ik ≤ 0 ∀i = 1,..., m
Allora la soluzione del problema è illimitata (non esiste
ottimo finito).
In questo caso facendo aumentare xk il valore di nessuna
variabile di base diminuisce:
>0
}
x B i = y i 0 − y ik x k ≥ 0 sempre !
{{
<0 >0
Nota.
Se per una variabile di base i si ha che y ik>0 e y r0= 0 ( soluzione
degenere), xk entra in base con valore nullo.
In questo caso la soluzione non cambia, ed in particolare rimane
degenere.
Per questa ragione la ricerca della soluzione potrebbe rimanere
bloccata generando sempre la medesima soluzione (cycling).
Il cycling è piuttosto raro e comunque esistono strategie per evitalo.
49
L’algoritmo del Simplesso
1. Inizializzazione.
Determinare una soluzione di base ammissibile.
2. Verifica dell’ottimalità.
Se y 0 j ≥ 0 ∀ j ∈ R
allora la soluzione corrente è ottima e l’algoritmo termina.
Altrimenti andare al passo 3.
3. Scelta della variabile entrante in base.
Scegliere una variabile fuori base xk tale che y0k<0 (ad esempio, con
il metodo del gradiente), ed andare al passo 4.
4. Scelta della variabile uscente dalla base.
Scegliere la variabile xBr tale che
y 
yr 0
= min  i0 
y rk i =1,..., M yik 
yik >0
Se y ik ≤ 0 ∀i = 1,..., m , allora la soluzione del problema è
illimitata (non esiste ottimo finito), e l’algoritmo termina.
5. Pivoting.
Risolvere le equazioni (5) ricavando xk e xBi , i ≠ r in funzione di
x j , j ∈ R − {k} e di xB .
r
La nuova soluzione si ottiene ponendo x j = 0, j ∈ R − {k} e xBr = 0 .
Andare al passo 2.
50
Il Tableau
L’algoritmo del simplesso può essere eseguito utilizzando una tabella ,
detta Tableau, in cui vengono disposti i coefficienti della funzione
obiettivo e dei vincoli.
Tali coefficienti sono quelli delle equazioni (5) in cui tutte le variabili
sono state portate al primo membro:
x B i + ∑ y ijx j = y i 0
∀i = 0,1,K , m
j∈R
valore dell’obiettivo
(soluzione corrente)
coeff. dell’obiettivo
nomi delle variabili fuori base
nomi delle variabili in base
0
L x Br
L
0
x B1
M
1
M
L
O
0
M
L
x Br
0
L
1
M
M
M
x Bm
0
x0
x B1
L
0
L x Bm
L
0
L
xj
L
xk
L
0
M
L y0j L
L y1 j L
M
y 0k
y1k
M
L
y10
M
L
0
L
y rj
y rk
L
yr0
O
L
M
M
1
L
M
L y mj L y mk
L
y 00
M
L y m0
valori delle variabili in base
(soluzione corrente)
coeff. delle variabili fuori base
coeff. delle variabili in base
51
L’algoritmo del simplesso applicato al Tableau
1. Inizializzazione.
Costruire il tableau iniziale con una soluzione di base ammissibile.
2. Verifica dell’ottimalità.
Se nella riga di x0 non esistono coefficienti negativi la soluzione
corrente è ottima e l’algoritmo termina. Altrimenti andare al passo 3.
3. Scelta della variabile entrante in base.
Scegliere una variabile fuori base xk tale che y0k<0 (ad esempio,
scegliere il coefficiente più piccolo), ed andare al passo 4.
4. Scelta della variabile uscente dalla base.
Se tutti i coefficienti nella colonna di xk sono y ik ≤ 0 ∀ i = 1,..., m
non esiste ottimo finito e l’algoritmo termina. Altrimenti calcolare i
rapporti
y i0
y ik
i = 1,..., m
tra i coeff. dell’ultima colonna con i coeff. positivi della colonna di
xk, e scegliere la riga r-esima associata al rapporto più piccolo.
Il coeff. yrk è il pivot.
5. Pivoting.
Portare in base xk al posto di xBr dividendo la riga r-esima per il
pivot, quindi sottraendo la nuova riga r alle altre righe del tableau,
obiettivo incluso, dopo averla moltiplicata per il corrispondente
coeff. della colonna k. In questo modo la nuova colonna k sarà
formata da tutti coeff. nulli tranne il coeff. r-esimo uguale ad 1.
Scambiare i nomi delle variabili xk e xBr . Andare al passo 2.
52
L’inizializzazione dell’algoritmo del simplesso
Il problema dell’inizializzazione corrisponde a verificare se il problema
di PL ammette soluzione, ed in caso positivo a determinarne una.
Inizializzazione con variabili di slack.
Un caso semplice è quello in cui tutti i vincoli sono disuguaglianze ≤ .
x 
A x ≤ b ⇒ A x + Is = b ⇒ [ A I ]  = b
s 
quindi si può scegliere B=I come base iniziale, corrispondente alla
soluzione ammissibile
 x B   s  b
x  = x = 0
 N    
In generale , tutte le volte che la matrice A contiene una matrice
identica I come minore mxm è possibile scegliere B= I come base
iniziale, e mettere nella base iniziale le m variabili corrispondenti alle
colonne di I.
Metodi generali di inizializzazione.
Esistono due metodi generali:
a) Il metodo a due fasi (“Two-Phases” Method)
b) Il metodo del “Big-M” (o delle penalità)
53
Il metodo a due fasi
E’ un metodo che può essere usato
per verificare l’esistenza
soluzioni in un sistema di disuguaglianze.
max x 0 = c T x
Ax = b
E’ dato il problema (P)
x≥0
I Fase (Definizione e soluzione del problema ausiliario)
Si definisce un problema ausiliario (A)
min
z = 1T y =
m
∑ yi
j=1
dove
A x + Iy = b
x≥0 y≥0
1 1
1 = M  M

1 m
 y  m var.
Posto z =  
 x  n var.
è sempre possibile definire come soluzione di base iniziale per (A)
zB 
z  =
 N
 y b 
x = 0 
   
quindi risolvere (A) con l’algoritmo del simplesso.
54
di
II Fase (Inizializzazione e soluzione del problema originale)
Se la soluzione ottima di (A) è tale che z=0, allora nessuna variabile y i,
i= 1,...,m, è rimasta in base all’ottimo , ed in tal caso il problema
originale (P) ammette soluzione.
Infatti, sia
 y* 
*
z = 
x*


la soluzione ottima di (A), con y* = 0 .
Allora A x * + Iy* = b ⇒ A x * = b
quindi x* è anche soluzione di (P)
e può essere usata come soluzione iniziale per risolvere (P).
Se invece z>0, allora qualche variabile y i, i= 1,...,m, è rimasta in base
all’ottimo, ed assume valore positivo.
In questo caso il problema originale (P) non ammette soluzione.
Se, infatti , fosse stato possibile determinare un vettore
x tale da
soddisfare i vincoli di (P), la soluzione di (A) lo avrebbe certamente
utilizzato per annullare (quindi minimizzare) l’obiettivo z.
55
Il metodo del “Big-M”
Con questo metodo si introducono delle variabili ausiliarie come nel
metodo a due fasi.
Quindi si risolve una versione modificata del problema originale
,
penalizzando nella funzione obiettivo le variabili ausiliarie.
E’ dato il problema (P)
max x 0 = c T x
Ax = b
x≥0
Si costruisce una versione modificata
(P’) del problema
introducendo m variabili ausiliarie (una variabile per vincolo)
(P)
m
n
T
T
max c x − M1 y = ∑ ci x i − M ∑ y j
j=1
i =1
Ax + Iy = b
x≥0 y≥0
1 1
dove 1 = M M e M è un coeff. scalare tale che M >> ci , b j , a ij
1 m
y
z
=
Posto
x
 
una soluzione di base iniziale per (P’) è
 zB  y b
z  = x = 0
 N    
56
∀i , j
Risolvendo (P’) le variabili y j, penalizzate dai “big-M” nell’obiettivo ,
sono forzate ad uscire dalla base.
Se nella soluzione ottima di (P’) tutte le yj sono fuori base, si ha che
y*  0 
*
z =   =  * ⇒ Ax* + Iy* = b ⇒ Ax* = b
x* x 
il vettore x* è anche la soluzione ottima di (P).
Rispetto al metodo a due fasi risolvere il problema
risolvere il problema originale (P).
57
(P’) equivale a
Esempi di Problemi di Programmazione Lineare
Esempio 1: Soluzione con l’algoritmo del simplesso dell’esempio in
forma standard
max x 0 = 2 x1 + x 2
x1 + x 2 + x 3
=5
− x1 + x 2
+x4
=0
6x1 + 2 x 2
+ x 5 = 21
x1 ≥ 0 x 2 ≥ 0 x 3 ≥ 0 x 4 ≥ 0 x 5 ≥ 0
Il problema può essere inizializzato usando le variabili di slack.
x3  5 
x 6B =  x 4  =  0 
   
 x5   21
è la base iniziale (degenere).
Il tableau iniziale
x0
x3
x4
uscente x 5
x3 x4
0
0
1
0
0
1
0
0
entrante
x 5 x1 x 2
0 − 2 −1 0
0
1
1 5
0 −1
1 0
1
6
2 21
il Pivot
1a iterazione: x1 entra in base x5 esce dalla base
58
51
−
21 6 = 7 2
Il tableau dopo la 1a iterazione.
x0
uscente x 3
x4
x1
x3
x4
1
0
0
1
0
0
0
0
nuovo
valore
obiettivo
il Pivot entrante
x 5 x1
x2
1 3 0 −1 3
7
−1 6
0
2 3 3 2 3 2 ⋅ 3 2 = 9 4 (= 2 ,25)
16
0
4 3 7 2 7 2 ⋅ 3 4 = 21 8 (= 2 ,62 )
16
1
1 3 7 2 7 2 ⋅ 3 = 21 2 (= 10,5)
2a iterazione: x2 entra in base x3 esce dalla base
Il tableau dopo la 2a iterazione.
x0
base
ottima
x2
x4
x1
valore ottimo
obiettivo
coeff. non negativi
x3 x4
x 5 x1 x 2
12
0
14
0
0 31 4
32
0 −1 4
0
1 9 4
−2
1
12
0
0 12
−1 2
0
14
1
0 11 4
Il tableau è ottimo!
59
soluzione
ottima
Esempio 2: L’azienda che produce vernici.
max Z = 3x E + 2 x I
x E + 2x I ≤ 6
2x E + x I ≤ 8
−xE + xI ≤ 1
xE ≥ 0
Deve essere trasformato
in forma standard.
xI ≤ 2
xI ≥ 0
max Z = 3x E + 2 x I
x E + 2 x I + s1
=6
2x E + x I
+ s2
=8
−xE + xI
+ s3
=1
xI
+ s4 = 2
x E ≥ 0, x I ≥ 0, s1 ≥ 0, s2 ≥ 0, s3 ≥ 0, s4 ≥ 0
Forma standard:
n=6, m=4
Il problema può essere inizializzato usando le variabili di slack.
 s1   6
 s   8
xB =  2  =  
 s3   1 
 s   2
 4  
La base iniziale
60
Il tableau iniziale
entrante
x E x I s1 s2 s3 s 4
z −3 −2 0 0 0 0
il Pivot
1
2 1 0 0 0
s1
2
1 0
1 0 0
uscente s 2
1 0 0 1 0
s3 − 1
0
1 0 0 0
1
s4
0
6
8
1
2
61
82
−
−
1a iterazione: xE entra in base s2 esce dalla base
Il tableau dopo la 1a iterazione.
il Pivot entrante
xE
x I s1
s 2 s 3 s4
z
0 −1 2 0
3 2 0 0 12
0
3 2 1 −1 2 0 0 2
uscente s1
xE
1
12 0
12 0 0 4
s3
0
32 0
12 1 0 5
s4
0
1 0
0 0
1 2
2a iterazione: xI entra in base s1 esce dalla base
61
2⋅ 2 3 = 4 3
4⋅ 2 = 8
5⋅ 2 3 = 10 3
2
Il tableau dopo la 2a iterazione.
valore ottimo
obiettivo
coeff. non negativi
base
ottima
xE xI
0
0
z
0
1
xI
xE
s3
s4
1
0
0
s1
s2 s3 s 4
13
4 3 0 0 38 3
2 3 −1 3 0 0 4 3
0 −1 3
0
−1
0 −2 3
2 3
1
13
0
1
0
Il tableau è ottimo!
62
0 10 3
0
3
1 2 3
soluzione
ottima
Esempio 3: Soluzione illimitata.
Un problema molto semplice:
In forma standard
max x 0 = x1
x1 + x 2 ≥ 1
x1 ≥ 0 x 2 ≥ 0
max x 0 = x1
x1 + x 2 − x 3 = 1
x1 ≥ 0 x 2 ≥ 0 x 3 ≥ 0
x2
2
1
La regione di ammissibilità X è aperta
X
1
2
x1
Il problema ha n=3, m=1
Adottiamo il punto (1,0) come soluzione di base iniziale.
x 2 
xN =   = 0
x3 
x B = [ x1 ] = [ 1]
63
Costruendo il tableau iniziale si nota che l’obiettivo deve essere
espresso in funzione delle variabili fuori base (si deve eliminare x1).
le variabili in base
devono avere coeff.
nullo nell’obiettivo
x0
x1 x2
−1 0
1 −1 1
1
x1
x3
0 0
Il tableau iniziale si ricava eliminando x1 dalla riga dell’obiettivo.
ora anche il valore
dell’obiettivo è corretto
x1 x2 x3
1 −1 1
x0 0
1 −1 1
x1 1
la variabile x3 entra in base
senza mai violare il vincolo.
La soluzione ottima è all’infinito.
Aumentando x3 ci si muove lungo l’asse x1 (direzione estrema).
funz. obiettivo
x2
2
1
X
...
1
2
64
x1
Quante sono le possibili direzioni estreme di un poliedro X?
d B 
Ad = 0 ⇒ [ B N ]  = 0 ⇒ Bd B + Nd N = 0
d N 
⇒ d B = − B −1Nd N
quindi è possibile fissare arbitrariamente d N e calcolare una
direzione estrema come
d B 
d= =
d N 
 − B −1Nd 
N


e


j
Una scelta possibile è fissare
1
0
M
 
d N = e j = 1  j − esimo e j ∈ R n − m
M
 
0  n − m
 − B −1 a j 
⇒d=

e


j
dove a j è la j-esima colonna di N.
Per ogni matrice B possono essere scelti n-m vettori a j distinti.
Quindi il numero massimo di possibili direzioni estreme è
 n
( n − m) 
 m
65
Nell’esempio l’asse di x1 corrisponde a
 − B −1 a j 
d=
=
 e j 
 − 1 ⋅ − 1
 0 =


 1 
1
0
 
 1 
( j = 2)
Si può verificare che
1
Ad = 0 ⇒ [1 1 − 1]  0 = 1 − 1 = 0
 
 1
La possibilità di avere soluzioni ottime
seguente teorema
( n = 3, m = 1)
finite è
regolata dal
6. Teorema
Dato il problema di PL
max x0 = cT x
Ax = b
x≥0
siano dj, j=1,...,D le direzioni estreme del poliedro X non vuoto
dei vincoli.
Condizione necessaria e sufficiente perchè esista soluzione
ottima finita è
cT d j ≤ 0 ∀j = 1,..., D
in tal caso l’ottimo coincide con un punto estremo di X.
66
Esempio 4: Inizializzazione con il “Two-phases method” .
min x 0 = 4 x1 + x 2
3x1 + x 2 = 3
4 x1 + 3x2 ≥ 6
x1 + 2 x 2 ≤ 4
x1 ≥ 0, x 2 ≥ 0
in forma standard
max x 0 = −4 x1 − x 2
3x1 + x 2
=3
4 x1 + 3x 2 − x 3
=6
+ x4 = 4
x1 + 2 x 2
x1 ≥ 0, x 2 ≥ 0, x 3 ≥ 0, x 4 ≥ 0
I Fase (Definizione e soluzione del problema ausiliario)
⇒ max z = − y1 − y 2
min z = y1 + y 2
3x1 + x 2
+ y1
=3
4 x1 + 3x 2 − x 3
+ y2 = 6
x1 + 2 x 2
+ x4
=4
x1 ≥ 0, x 2 ≥ 0, x 3 ≥ 0, x 4 ≥ 0, y1 ≥ 0, y 2 ≥ 0
67
z
y1
y2
x4
x1
x2
x3
x4
y1
y2
3
1
0
0
1
0
4
3 −1
0
0
1 6
1
2
1
0
0 4
0
0
0
0
0
1
si devono eliminare le
var. di base dalla riga
dell’obiettivo
1 0
3
Il tableau iniziale
Il tableau finale
z
x1
x2
x4
z
x1
−7
y1
y2
x4
3
4
1
x2
−4
x 3 x 4 y1 y 2
1
0 0
0 −9
1
0
3 −1
2
0
0
0
1
1
0
0
0
1
0
3
6
4
x1 x 2
x3 x4
y1
y2
0
0
0
0
1
1
0
1
0
15
0
3 5 −1 5 3 5
0
1 −3 5
0 −4 5
35 65
0
0
1
1
1
−1
1
con questi valori può essere inizializzato il tableau del problema originale
68
II Fase (Inizializzazione e soluzione del problema originale)
si devono eliminare le
var. di base dalla riga
dell’obiettivo
x0
x1
x2
x4
x1
4
1
0
0
x2
1
x3
0
15
1 −3 5
0
1
Il tableau iniziale del problema originale
x0
x1
x2
x4
x1 x 2
x3 x4
0
0 −1 5
0 − 18 5
1
0
15
0
35
0
1 −35
0
65
0
0
1
1
1
69
0
x4
0
0
0 35
0 65
1
1
Programmazione Matematica a Numeri Interi
(Integer Programming - IP)
Problema di ottimizzazione di una funzione obiettivo lineare
soggetta al rispetto di un insieme di vincoli lineari in cui tutte o
parte delle variabili possono assumere solo valori interi
Mixed IP Problem - MIP
max cT x + hT y
Ax + Gy ≤ b
x ∈Z +n y ∈ R p+
x è il vettore delle variabili intere positive
y è il vettore delle variabili reali positive
I problemi in cui sono presenti variabili intere sono spesso anche
indicati come Problemi Combinatorici.
Alcuni esempi di applicazioni:
• Production Scheduling (assegnazione e sequenziazione di operazioni su
macchine)
• Distribuzione di beni
• Facility location (localizzazione di impianti)
• Progettazione di reti (trasporto e comunicazione)
• Pianificazione di investimenti
70
Formulazione di problemi a numeri interi
I modelli di ottimizzazione a numeri interi vengono introdotti
quando si deve ottimizzare l’uso di risorse non divisibili o la scelta
tra alternative discrete.
Un tipo di modello molto importante e comune è quello in cui le
variabili intere possono assumere
solo i valori 0 e 1 (0-1
Programming).
Valori binari sono usati
per rappresentare la scelta tra
possibilità o il verificarsi o meno di una condizione:
1
x=
0
se l' evento si verifica
se l' evento non si verifica
Esempi di IP:
• Il problema dello zaino (Knapsack Problem)
• Il problema dell’assegnazione (Matching Problem)
• Il problema del costo fisso (Fixed Charge Problem)
• Il problema del sequenziamento (Sequencing Problem)
• I problemi di copertura, partizione ed impaccamento
(Set Covering, Partitioning and Packing Problems)
• Problemi sui grafi (Teoria dei Grafi):
• Percorso minimo (Shortest Path)
• Commesso viaggiatore (Traveling Salesman Problem)
71
due
Il problema dello zaino
(Knapsack Problem)
Si hanno n possibili progetti da realizzare con un budget massimo b
disponibile.
Se un progetto j, j=1,...,n, viene finanziato deve essere investito un
capitale aj.
Dalla realizzazione di un progetto j si ricava un guadagno cj.
Un progetto non può essere realizzato parzialmente, ma può essere
eseguito completamente o non eseguito affatto.
Il problema: stabilire quali progetti realizzare per ottenere il massimo
guadagno senza superare il budget disponibile.
Il problema si formula introducendo n variabili binarie:
il progetto j è finanziato
1
xj = 
il progetto j non è finanziato
0
j = 1,..., n
n
Knapsack binario
max ∑ c jx j
j=1
n
∑ a jx j ≤ b
j=1
x j ∈{0,1} = B ∀j = 1,..., n
72
Problema dello zaino: si deve stabilire quali tra n oggetti portare in
uno zaino sapendo che il peso massimo trasportabile è b, che ogni
oggetto j pesa aj e che ad ogni oggetto è associata un’utilità (valore) cj.
Una variante: la realizzazione di progetti nell’arco di m mesi.
Supponendo che la realizzazione di ciascun progetto richieda un
finanziamento nell’arco di m mesi:
• aij il finanziamento per il progetto j nel mese i, j=1,...,n; i=1,...,m
• bi budget disponibile nel mese i, i=1,...,m
n
Knapsack
multidimensionale
max ∑ c jx j
j=1
n
∑ a ijx j ≤ bi
j=1
∀i = 1,..., m
x j ∈{0,1} = B ∀j = 1,..., n
73
Il problema dell’assegnamento
(Matching Problem)
Si devono assegnare m attività ad n persone (sia n ≥ m).
Una volta stabilito l’assegnamento , ogni persona eseguirà solo
l’attività che gli viene assegnata.
Se alla persona j, j= 1,...,n, viene assegnata l’attività i, i= 1,..., m, il
costo pagato è cij.
Il problema : assegnare tutte le attività alle persone
minimizzare il costo pagato.
in modo da
Si può rappresentare il problema con un grafo:
Attività (i)
M
cij
M
Persone (j)
Il problema consiste nello stabilire quali archi introdurre tra i nodi
“attività“ ed i nodi “persona” in modo che su ogni nodo “attività“
incida esattamente un arco e su ogni nodo “persona” incida al più un
arco.
74
Il problema si formula introducendo mxn variabili binarie:
1
xij = 
0
l' attività i è assegnata alla persona j
l' attività i non è assegnata alla persona j
i = 1,..., m
j = 1,..., n
Matching binario
m
n
min ∑ ∑ cijx ij
i =1 j=1
n
∑ x ij = 1 ∀i = 1,..., m ( a )
j=1
m
∑ xij ≤ 1 ∀j = 1,..., n
i =1
( b)
x ji ∈{0,1} = B ∀i = 1,..., m ∀j = 1,..., n
Vincoli (a): ogni attività e’ assegnata ad una persona
Vincoli (b): ogni persona svolge al più una sola attività
75
Il problema del costo fisso
(Fixed Charge Problem)
Si consideri un problema
di trasporto tra m produttori ed
consumatori (ad esempio, un trasporto di gas o petrolio).
n
Ogni produttore è connesso ad ogni consumatore da un canale
attraverso cui può avvenire il trasporto (e.g., un gasdotto).
Per avere un flusso trasportato tra un produttore
i, i= 1,...,m, ed un
consumatore j=1,...,n, si deve:
• pagare un costo fisso fij per l’affitto del canale di trasporto tra i e j;
• pagare cij per ogni unità trasportata tra i e j.
La disponibilità massima del produttore i è si, i=1,...,m.
La richiesta del consumatore j che deve essere soddisfatta è rj, j=1,...,n.
Il problema : stabilire quali canali di trasporto tra i produttori ed i
consumatori affittare e quale flusso trasportare su tali canali in modo
da minimizzare il costo totale
, soddisfacendo la richiesta dei
consumatori.
Le variabili:
• x ij ∈R, i=1,...,m; j=1,...,n, la quantità trasportata tra i e j
1 se si utilizza il canale tra i e j
• y ij ∈B , i=1,...,m; j=1,...,n, yij = 
0 se non si utilizza il canale tra i e j
76
La funzione di costo ha una discontinuità nell’origine.
Ad esempio per la variabile xij
costo totale
cijxij
fij
Il problema del
trasporto con costo
fisso
xij
m
n
min ∑ ∑ ( c ijx ij + f ijy ij )
i =1 j= 1
n
∑ x ij ≤ si ∀i = 1,..., m ( a )
j= 1
m
∑ x ij = r j ∀j = 1,..., n ( b )
i =1
x ij ≤ My ij ∀i , j
( c)
x ij ∈ R + y ij ∈ B ∀i = 1,..., m ∀j = 1,..., n
Vincoli (a) e (b): i vincoli del problema del trasporto.
Vincoli (c): un flusso x ij può esistere solo se si paga il costo fisso per
usare il canale tra i e j. M è un coefficiente molto più grande della
massima quantità trasportabile tra i e j. Se fosse specificato il flusso
massimo, qij, tra i e j, i vincoli (c) risulterebbero
x ij ≤ q ijy ij
77
∀i , j
Il problema del sequenziamento
(Sequencing Problem)
Si devono sequenziare n attività (job) indipendenti su una macchina.
La macchina può eseguire solo un job alla volta.
L’esecuzione dei job non può essere interrotta.
Il tempo necessario per l’esecuzione (processing time) del job i,
i=1,...,n, è pi.
Viene pagato un costo che , in generale , è funzione del tempo
necessario a completare i job (ad
es ., il tempo medio di
completamento dei job).
Il problema : determinare la sequenza con cui eseguire i job sulla
macchina in modo da minimizzare il costo.
Le variabili continue :
•
t i ∈ R + , i=1,...,n, l’istante di inizio esecuzione del job i.
Dati due job i e j, si possono verificare due casi:
1.
i precede j
2.
j precede i
⇒ t j ≥ t i + pi 

 Vincoli disgiuntivi
⇒ ti ≥ t j + p j 

I due casi sono mutuamente esclusivi, quindi solo un vincolo tra 1. e
2. può essere soddisfatto da una soluzione del problema.
78
Si introduce un variabile binaria:
1
yij = 
0
y ij ∈ B, i = 1,..., n; j = 1,..., n
se i precede j
se j precede i
quindi per ogni coppia di job, i, j, i vincoli disgiuntivi del problema si
esprimono come:
t j ≥ t i + p i − M (1 − y ij ) (a )
t i ≥ t j + p j − My ij
( b)
dove M è un coefficiente costante positivo scelto molto maggiore di
n
ogni altro coefficiente (in particolare della ∑ pi ) del problema.
i =1
Se yij=1:
• il vincolo (a) coincide con il vincolo 1.
• il vincolo (b) è sempre soddisfatto poichè M>>tj-ti+pj
Se yij=0:
• il vincolo (a) è sempre soddisfatto poichè M>>ti-tj+pi
• il vincolo (b) coincide con il vincolo 2.
Il vettore delle yij rappresenta l’ordine di esecuzione dei job.
79
Metodi di soluzione dei problemi di IP
Consideriamo un problema (IP)
(IP) max x0 = cT x
Ax = b
x ∈Z +n
Il poliedro P associato ai vincoli di (IP) contiene tutti e soli i punti
interi che sono soluzioni di (IP):
{
}
P = x ∈ Z n : Ax = b, x ≥ 0
Il rilassamento lineare (RL) di (IP) corrisponde a rimuovere da
(IP) il vincolo di integrità:
( RL) max x0 = cT x
Ax = b
x ∈R +n
Il poliedro P’ associato al (RL) è
{
}
P' = x ∈ R n : A x = b, x ≥ 0
P = P '∩Z n
quindi P’ contiene anche tutte le soluzioni ammissibili per (IP).
80
Sia x* la soluzione ottima per (IP) (se esiste) e sia x la soluzione
ottima per (RL).
T
T *
E’ evidente che c x ≥ c x .
Quindi se x ∈ P , la soluzione ottima di (RL) è anche la soluzione
ottima di (IP).
In generale, tuttavia, x ∉ P .
Esistono tre classi di metodi di soluzione dei problemi (IP):
1) Metodi basati su una enumerazione implicita delle soluzioni
(Branch and Bound Methods)
2) Metodi basati sull’uso di “piani di taglio”
(Cutting Planes Methods)
3) Metodi specifici per particolari classi di problemi
(ad esempio, per il set covering, knapsack, ecc.)
81
Il metodo dei “Piani di Taglio”
(Cutting Planes Method)
E’ un metodo di soluzione dei problemi (IP) di tipo generale.
L’idea di base:
Se la soluzione di (RL) non è intera allora la soluzione ottima
intera è interna al poliedro P.
Si aggiungono vincoli a P cercando di “ restringerlo”, in
particolare eliminando solamente parti di P che non contengono
soluzioni intere.
Si risolve una sequenza di problemi rilassati sempre più vincolati.
Sia
(IP) max x0 = cT x
Ax = b
x ∈ Z +n
{
⇒
x* la soluzione ottima di (IP)
Il primo problema considerato
rilassando (IP)
( RL) max x 0 = cT x
Ax = b
x ∈R n+
}
P = x ∈ Z n : Ax = b, x ≥ 0
è il problema
{
(RL) ottenuto
}
P0 = x ∈ R n : A x = b, x ≥ 0
⇒
x° la soluzione ottima di (RL)
82
Si può costruire una sequenza di poliedri, detta sequenza di Gomory,
tale che:
•
P0 ⊃ P1 ⊃ K ⊃ Pt
•
Pi ∩ Z n = P
•
x oi −1 ∉ Pi
•
x ot ≡ x*
La sequenza è costruita aggiungendo via via a P
vincoli detti tagli.
0
un insieme di
Definizione.
T
Una disuguaglianza a x ≥ èa 0
un taglio per un poliedro P’
associato al (RL) di un problema (IP) se, detta x° la soluzione
ottima non intera del (RL), si ha:
1)
aT y ≥ a0
2)
a T xo < a 0
∀y soluzione ammissibile di (IP)
(la disuguaglianza si dice valida);
(non è soddisfatta da x° )
Il metodo dei piani di taglio determina la soluzione ottima intera
introducendo un numero finito di tagli.
Ogni taglio separa la soluzione non intera del (RL) corrente dalle
soluzioni ammissibili per (IP).
83
Il taglio di Gomory (Taglio Frazionario)
Supponiamo di avere determinato la soluzione ottima di un (RL) di
(IP). Le m variabili in base possono essere espresse come:
x Bi = yi 0 − ∑ y ijx j
j∈R
i = 1,K, m
(1)
dove R è l’insieme degli indici delle variabili fuori base.
La soluzione corrispondente è quindi:
xBi = yi0
i =1,K,m;
x j =0
∀j∈R
Supponiamo che non tutti i y i0 siano interi . Scegliamo una
componente della base con valore non intero e cerchiamo di definire
le condizioni che devono essere rispettate perchè essa sia invece
intera.
Sia i la componente non intera. Allora
y i 0 =  y i 0  + fi 0
0 < fi 0 < 1
y ij =  y ij  + f ij
0 ≤ f ij < 1
dove a  rappresenta il più grande intero che non supera a.
84
Si può riscrivere il primo membro della i-esima equazione (1)
y ij  x j + ∑ fijx j ≥ x Bi + ∑  y ij  x j

j∈R
j∈R
j∈R
y i 0 = x Bi + ∑
{
≥0
xBi + ∑  yij  x j ≤ yi0 =  yi0  + fi0
cioè
j∈R
{
(*)
Poichè si vuole imporre che x Bi sia intero, (*) risulta intero.
Ma allora se (*) è intero non può essere superiore a  y i0 
poichè fi0<1.
Quindi
xBi + ∑  yij  x j ≤  yi0 
j∈R
Cambiando segno alla disuguaglianza e sostituendo x Bidalla i-esima
equazione (1)
∑  yij  x j + ∑ fijx j −  yi0  − fi0 − ∑  yij  x j ≥ − yi0 
j∈R
j∈R
j∈R
quindi semplificando, si ottiene il taglio di Gomory (taglio frazionario)
∑ fijx j ≥ fi0
j∈R
85
6. Teorema
Per ogni componente i non intera della soluzione di un (RL) la
disequazione
∑ fijx j ≥ fi0
(2)
j∈R
è un taglio rispetto al poliedro P.
Dimostriamo che (2) è soddisfatta da ogni soluzione
Dim.
ammissibile di (IP).
Supponiamo per assurdo che esista una soluzione w ammissibile per
(IP) tale che
∑ fijw j < fi0
(#)
j∈R
Poichè w è ammissibile ogni sua componente soddisfa il sistema
A x = Bx B + N x N = b
in particolare la componente wi soddisfa l’i-esima equazione
wi = yi0 − ∑ yijw j =  yi0  + fi0 − ∑  yij  w j − ∑ fijw j
j∈R
j∈R
poichè w è intero fi 0 − ∑ fijw j = β
j∈R
fij > 0 e w j ≥ 0
⇒
β < fi 0 < 1
j∈R
deve essere intero, e poichè
allora β intero è negativo o nullo
β ≤ 0 ⇒ −β ≥ 0 ⇒ ∑ fijw j ≥ fi0
che contraddice l’ipotesi (#).
j∈R
86
Dimostriamo che (2) non è soddisfatta dalla soluzione di base non
intera x° da cui la disequazione (2) è stata generata ((2) separa x° dal
nuovo poliedro ottenuto aggiungendo (2) al poliedro di (RL)).
Sia x i° la componente i- esima frazionaria della soluzione
verifichiamo che x° soddisfa
o
∑ fijx j < fi0
j∈R
(*)
Poichè la componente i-esima della soluzione di base è frazionaria
si ha
xoi > 0 ⇒ xoi =  y i0  + fi 0 > 0 ⇒ fi0 > 0
e sostituendo la soluzione in (*) si ottiene
xoj = 0
∀j ∈ R
quindi x° soddisfa la (*).
87
⇒ 0 < fi 0
,
Un esempio
max x0 = 2 x1 + x2
x1 + x2 ≤ 5
(1)
− x1 + x2 ≤ 0 (2)
6x1 + 2 x2 ≤ 21 (3)
x1, x2 ≥ 0
x1, x2 ∈Z
max x0 = 2 x1 + x2
x1 + x2 + x3
=5
− x1 + x2 +
x4 = 0
6x1 + 2 x2 +
x5 = 21
x1, x2 , x3 , x4 , x5 ≥ 0
x1, x2 ∈Z
⇒
Costruiamo un taglio dalla seconda riga del tableau ottimo di (RL)
x 3 x4
x5 x1 x2
x0
12
0
14 0
0 31 4
x2
32
0 −1 4 0
1 94
x4
−2
1
12 0
0 12
x1 − 1 2
0
1 4 1 0 11 4
i coefficienti
3
1
= 1+
2
2
1
3
− = −1 +
4
4
9
1
=2+
4
4
il taglio
88
1
3
1
x 3 + x5 ≥
2
4
4
x2
(3)
4
(2)
3
(11/4, 9/4)
2
(1)
1
(fractional cut)
x1
0
0
1
sostituendo x1 ed x2 in
si ottiene
2
1
3
1
x 3 + x5 ≥
2
4
4
5x1 + 2 x 2 ≤ 18
che non è soddisfatta dal punto (11/4, 9/4)
89
3
4
Il Metodo del Branch-and-Bound
E’ una strategia di esplorazione dello spazio delle soluzioni basata
su l’enumerazione implicita delle soluzioni:
il metodo esamina sottinsiemi disgiunti di soluzioni (branching) e li
valuta sulla base di una stima della funzione obiettivo (bounding),
eliminando quegli insiemi di soluzioni che non contengono la
soluzione ottima.
L’esplorazione viene effettuata risolvendo una sequenza
associati a sottinsiemi disgiunti di soluzioni.
di (RL)
Consideriamo il problema a numeri interi
(IP) max x0 = cT x
Ax = b
x ∈Z +n
si risolve il (RL) associato, determinando x0.
0
Scelta x juna componente non intera della soluzione , la regione di
ammissibilità del (RL) costituita dal poliedro
{
}
P ' = x ∈ R n : A x = b, x ≥ 0
può essere partizionata in due regioni disgiunte , dando luogo a due
nuovi problemi rilassati ottenuti aggiungendo a P rispettivamente uno
tra i due seguenti vincoli.
x j ≤ x0j
x j ≥ x0j + 1
 
 
90
In questo modo si separa il problema originale
in due problemi
disgiunti. Quindi si considerano i nuovi due problemi iterando il
procedimento.
L’esplorazione dello spazio delle soluzioni effettuato dal metodo del
Branch-and-Bound si può rappresentare per mezzo di un albero
(“enumeration tree”).
Ad ogni nodo è associato un (RL)
nodo 0 ⇒ (RL) associato al (IP) originale
x j ≤ x0j
 
0
1
x j ≥ x0j + 1
 
2
Si procede risolvendo gli (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 quando:
• il (RL) associato ad un nodo non ammette soluzione;
• la soluzione di (RL) associato al nodo è intera;
• 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).
91
Bounding: il principio base
Supponiamo di aver trovato una soluzione intera per (IP) risolvendo il
(RL) associato al nodo 3.
0
x j ≤ x 0j
 
x k ≤ x1k
 
soluzione
intera
3
1
x j ≥ x0j + 1
 
2
x k ≥ x1k + 1
 
4
x0 = x20
x20 ≤ x30
x0 = x40
x 0 = x 30
x 30
Il valore dell’obiettivo x 0 =rappresenta
la miglior soluzione
corrente. Poichè stiamo massimizzando , è il limite inferiore ( lower
bound) corrente per la soluzione di (IP).
Quando si ramifica un nodo , il valore dell’obiettivo associato ai nodi
successori non può essere migliore dell’obiettivo associato al nodo
padre, poichè i (RL) dei nodi successori sono più vincolati del (RL)
del nodo padre.
Il valore dell’obiettivo associato ad un nodo il cui (RL) ha soluzione
non intera rappresenta quindi il limite superiore (upper bound) rispetto
qualsiasi soluzione determinabile ramificando tale nodo.
2
3
Quindi se, ad esempio, x0 ≤ x0 non ha più senso esplorare l’albero
sotto il nodo 2 poichè le soluzioni associate ai suoi nodi non possono
migliorare la soluzione intera corrente.
92
In generale, dati:
• il (RL)i associato ad un nodo i (dove A ix=bi è l’insieme dei vincoli
originali più i vincoli via via aggiunti ad ogni branching)
( RL) i max x0 = cT x
A i x = bi
x ∈R +n
• xlb, la migliore soluzione intera sino
l’albero
ad ora trovata esplorando
• xub, la soluzione non intera di (RL)i
T int
T ub
T ub
T lb
se vale c x ≤ c x , poichè è noto che c x ≤ c x
dove xint è soluzione ottima intera di
(IP)i max x0 = cT x
A i x = bi
x ∈Z +n
T int
T ub
T lb
allora ne consegue che c x ≤ c x ≤ c x
Quindi la migliore soluzione intera contenuta in
{
}
Pi = x ∈R n: A i x = bi , x ≥ 0
non potrà mai essere migliore della soluzione intera corrente xlb.
93
nodo “pruned”
soluzione intera
0
x j ≤ x 0j
 
x j ≥ x 0j + 1
1
x k ≤ x1k
 
 
x 0 = x 20 ( x20 ≤ x30 )
2
x k ≥ x1k + 1
 
3
x 0 = x 40 ( x40 ≥ x30 )
4
x 0 = x30
x f ≥ x 4f + 1
 
x f ≤ x4f
 
Soluzione ⇒ x5
Ottima Intera
6
5
x0 = x60 (x60 ≤ x50 )
x 0 = x50
( x50 ≥ x30 )
I nodi che non vengono tagliati (pruned) sono detti nodi attivi e
vengono esplorati.
L’esplorazione termina quando non ci sono più nodi attivi.
94
L’algoritmo del Branch-and-Bound
1. Inizializzazione
Sia (0) il nodo attivo e P0 il poliedro associato al (RL).
lb
Sia z = −∞ il valore corrente dell’obiettivo (lower bound), e
z 0 = ∞ il valore iniziale dell’obiettivo del nodo (0) (upper bound
di (0)).
2. Branching
Se non esiste un nodo attivo andare al passo 7, altrimenti scegliere
il nodo attivo (j).
Se il (RL) di (j) è stato risolto andare al passo 3, altrimenti al 4.
3. Separazione
j
Scegliere una variabile frazionaria di base x Bi = y i0 e
partizionare Pj in
{
 }
P j ∩ x: x Bi ≤ y ij0
{
}
P j ∩ x: x Bi ≥ y ij0 + 1
 
creando due nuovi nodi con lo stesso upper bound del nodo j.
Vai a 2.
95
4. Soluzione di (RL)
Risolvere il (RL) associato a (j). Se non esiste soluzione tagliare il
nodo (il nodo non è più attivo) ed andare a 2.
j
j
j
Se esiste soluzione ottima x porre z = x0 ed andare al passo 5.
5. Pruning per integrità
j
Se x non è intera andare al passo 6. Altrimenti tagliare il nodo (j)
{
}
lb
lb j
e porre z = max z , z . Se il lower bound viene aggiornato, la
nuova soluzione corrente è quella associata al nodo (j).
Andare al passo 6.
6. Pruning per bound
k
lb
Tagliare ogni nodo attivo (k) tale che z ≤ z
Andare al passo 2.
7. Terminazione
L’algoritmo termina.
lb
Se z = −∞ allora (IP) non ammette soluzione.
lb
lb
Se z ≥ −∞ la soluzione corrente associata a z è ottima.
96
Osservazioni sull’algoritmo di Branch-and-Bound
• La convergenza in un numero finito
di passi è garantita se il
problema ha soluzioni ottime finite.
• Le prestazioni dell’algoritmo sono influenzate dalle diverse politiche
di scelta del nodo da ramificare al passo 3.
Due strategie limite:
• Depth First (esplorazione in profondità):
se il nodo corrente non è tagliato generare i due nodi figli e
proseguire ad esplorare uno di essi al livello successivo.
• Breadth First (esplorazione in ampiezza):
si esplorano tutti i nodi allo stesso livello prima di passare al
livello successivo.
La strategia depth first richiede minor occupazione di memoria della
breadth first ma può richiedere maggior tempo
97
Un esempio (grafico)
x2
4
obiettivo
P
3
2
1
0
1
2
3
x1
4
0
x1 ≤ 1
Q
4
1
N
x2
4
3
2
1
2
x2
3
2
Q
1
0
x1 ≥ 2
P
2
3
4
N
1
x1
0
98
1
2
3
4
x1
0
x1 ≤ 1
Q
3
3
2
1
0
x2 ≤ 2
R
4
non ammissibile
intera
ottima
x2
4
M
2
3
4
0
99
6
non ammissibile
x2
R
1
x1
x2 ≥ 3
5
3
2
1
2
N
x2 ≥ 2
peggiore di R
4
P
1
x2 ≤ 1
M
x1 ≥ 2
1
2
3
x1
Teoria della Dualità
Ad ogni problema di PL (Primale) è associato un problema Duale
Problema Primale (P)
Problema Duale (D)
min c1x1 +L+ c n x n
s. t.
a11x1 +L+ a1n x n ≥ b1
max b1y1 +L+ b m y m
s. t.
a11y1 +L+ a m1y m ≤ c1
M
M
a m1x1 +L+ a mn x n ≥ b m
a1n y1 +L+ a mn y m ≤ c n
(m variabili, n vincoli)
(n variabili, m vincoli)
Il problema D ha tante variabili quanti sono i vincoli di P e tanti
vincoli quante sono le variabili di P.
In forma matriciale:
( D) max bT y
( P) min cT x
Ax ≥ b
x≥0
AT y ≤ c
y≥0
x ∈ℜ n
y ∈ℜ m
100
Forma simmetrica della dualità: regole di trasformazione
(P)
(D)
max
min
vincoli
≥
min
max
vincoli
≤
Duale di un Primale con vincoli di uguaglianza:
( P) min cT x
Ax = b
x≥0
( D) max bT y
AT y ≤ c
y var.libere
x ∈ℜ n
y ∈ℜ m
Infatti:
Ax = b
equivale a
Ax ≥ b
Ax ≤ b ⇒ − Ax ≥ − b
quindi si introducono 2m variabili duali, u e v
max( bT u − bT v)
AT u − AT v ≤ c
u≥0 v≥0
e sostituendo y= u - v si ottiene D
u, v ∈ℜ m
101
Forma non simmetrica della dualità: regole di trasformazione
(P)
(D)
max
min
vincoli
≥
min
max
vincoli
≤
vincolo =
var. libera
var. libera
vincolo =
Le trasformazioni sono reversibili: il duale del duale è il primale.
La teoria della Dualità è importante perchè:
•
le soluzioni di P e D sono legate tra loro;
•
le soluzioni duali hanno un’interpretazione economica utile
per l’analisi di sensitività (post-ottimalità);
•
sulla teoria della dualità sono basati algoritmi, quali il
Simplesso Duale e l’Algoritmo Primale-Duale, alternativi al
Simplesso (Primale) utili per certe classi di problemi;
•
può in certi casi essere conveniente risolvere D al posto di P
(conviene risolvere il problema con il minor numero di
vincoli)
102
Risultati fondamentali della Teoria della Dualità
Siano dati i problemi
( D) max bT y
( P) min cT x
Ax ≥ b
AT y ≤ c
x≥0
y≥0
1.Teorema (debole) della dualità
Siano x e y soluzioni ammissibili rispettivamente per (P) e
(D), allora
cT x ≥ b T y
Dim.
ysoluzione ⇒ A T y ≤ c
x soluzione ⇒ Ax ≥ b
x ≥ 0 ⇒ ( A T y)T x ≤ cT x
y ≥ 0 ⇒ ( A x )T y ≥ b T y
cT x ≥ ( A T y)T x = x T A T y = ( Ax )T y ≥ b T y
103
Corollario
Se (P) è illimitato
(D) non è ammissibile
Se (D) è illimitato
(P) non è ammissibile
Se (P) ha soluzione
ottima finita
(D) ha soluzione ottima
finita
Se (D) ha soluzione
ottima finita
(P) ha soluzione ottima
finita
2.Teorema (forte) della dualità
Se (P) e (D) ammettono soluzione ottima finita, allora per
ogni ottimo x* per (P) esiste una soluzione ottima y* per (D)
tale che
c T x* = b T y*
La dimostrazione del Teorema della dualità forte evidenzia
che il valore della soluzione ottima di (D) corrispondente alla
*T = cT B−1
* = B−1 b
y
x
soluzione ottima di (P)
vale
B
B
104
Dim.
Sia B la base associata a x*
 x*B   B−1 b 
*
x = * =
 quindi
x N   0 
Se
* = cT B−1b
cT x* = cT
x
B B
B
cT x* = b T y* allora cT B−1 b = b T y*
B
e
T
−1
*
y = cT
BB
T
*
Dimostriamo che y è ammissibile per (D):
T
T
−1A ≤ cT
*
*
A y ≤ c ⇒ y A ≤ cT ⇒ c T
B
B
−1
T≤0
cT
B
A
−
c
B
−1
T | c T = cT − cT | c T B−1N − cT =
cT
B
B
N
−
c
|
[
]
B
B N
B
B B
N
[
[
]
][
]
−1
T
= 0| cT
BB N − c N ≤ 0
Poichè cTBB−1N − cTN ≤ 0
è la condizione di ottimalità per
(P) (problema di minimizzazione), è verificata l’ammissibilità.
T
T * T
Per la dualità debole b y ≤ c x ≤ c x ∀yammissibile
cT x*
è estremo superiore per (D),
T
*
T −1
quindi la soluzione y = c BB
T *
T *
ammissibile per cui c x = b y
è ottima per (D).
105
La base B è ottima per (P) e per (D). Siano infatti X e Y
rispettivamente gli insiemi delle soluzioni ammissibili per (P) e
(D)
A = [B | N ]
T
min cT
B x B + cN x N
cT x* = bT y*
max bT y
yT B ≤ cT
B
Bx B + N x N = b
xB ≥ 0
yT N ≤ cT
N
xN ≥ 0
y var.libere
una sol. di base per (P)
la corrispondente per (D)
 x B  B−1 b
x= =

x
 N   0 
−1
yT = cT
B
B
l’ammissibilità per (D)
l’ammissibilità per (P)
 a)
T
y ∈Y ⇒
x ∈ X ⇒ B−1 b ≥ 0

b)
a)
b)
T
≤
cT
c
B
B
−1
T
(cT
BB ) B ≤ cB
−1
(cT
B
)N ≤ cT
B
N
(vera sempre)
−1
cT
B
N − cT
B
N ≤0
−1 j
cT
B
a − cj ≤ 0
B
j ∈R
sono le (n-m) condizioni di
ottimalità (costi ridotti) di (P)
T
La base B è ottima se x e y sono rispettivamente ammissibili
per (P) e (D).
106
• Solo in corrispondenza dell’ottimo dalla base B ammissibile
per (P) si ottiene una soluzione ammissibile per (D) (che in
particolare è anche ottima).
• Ad una generica iterazione del simplesso dalla base corrente
−1
B
per (P) si può costruire un vettore πT = cT
B
che non è soluzione di (D).
• Tale vettore è detto dei MOLTIPLICATORI DEL SIMPLESSO
è compare nel calcolo dei coefficienti di costo ridotto
(problema di max):
( c − [ c B ]N )
T −1
B
T
N
xB
Il tableau ottimo:
xN
x0
B −1 N
I
−1
T
cT
BB N − c N
0
B −1 b
−1
cT
BB b
Nota: se la base iniziale è formata solamente da slack e tutte le slack sono
fuori base all’ottimo, allora nel tableau ottimo si possono leggere
direttamente sia l’inversa della base ottima che il valore ottimo delle variabili
duali.
s
xB
x N x0
s
x
x0
I
0T
s
B−1
−1
cT
B
B
A
− cT
xB
I
0
I
0T
b
0
xN
B−1N
−1
T
cT
B
N
−
c
B
N
x0
B−1 b
−1
cT
B
b
B
107
B
− cT
B
N
− cT
N
b
0
Il Teorema dello “scarto complementare”
(Complementary Slackness Theorem)
Consideriamo la coppia di problemi (P) e (D) in forma canonica e
trasformiamoli in forma standard
( P) min cT x
Ax ≥ b
Ax − Is = b
x≥0
n var.
s≥0
m var. di surplus
x≥0
( D) max bT y
A T y + Iv = c
AT y ≤ c
y≥0
y≥0
m var.
v≥0
n var.dislack
Ad ogni variabile di (P) è associato un vincolo di (D) e quindi la
corrispondente variabile di slack e viceversa.
3.Teorema della slackness complementare
Data la coppia di soluzioni x e y rispettivamente ammissibili
per (P) e (D), x e y sono ottime per (P) e (D) se e solo se
s j y j = ( a j x − b j ) y j = 0 j = 1,K, m
v i x i = (ci − a T
i y )x i = 0 i = 1,K, n
j
dove a è il vettore riga j-esima di A
a i è il vettore colonna i-esima di A
108
Nota: Il teorema stabilisce che:
a.
b.
xi > 0 ⇒ aT
i y = c i (vincolo duale saturo: vi=0)
aT
i y < c i ⇒ x i = 0 (vincolo duale non saturo: vi>0)
c.
y j > 0⇒ a jx = b j
d.
a j x > b j ⇒ y j = 0 (vincolo primale non saturo: sj>0)
(vincolo primale saturo: sj=0)
Dim. (Necessità)
* *
T *
T *
Siano x e y le soluzioni ottime. Allora si ha c x = b y
Inoltre
T
T
T *
*
*
T
*
T
*
*
A y ≤ c ⇒ y Ax ≤ c x ⇒ c x ≥ y Ax*
e
T
T
*
*
*
*
Ax ≥ b⇒ y Ax ≥ y b
da cui
T
T
c T x* ≥ y* A x* ≥ y* b
quindi poichè vale la dualità forte le relazioni precedenti sono
verificate come uguaglianze. Consideriamo ad es. la prima
T *
T
T
*
*
T
*
c x = y Ax ⇒(c − y A)x* = 0
poichè per ipotesi
T
T
*
c − y A ≥ 0 e x* ≥ 0
il prodotto deve annullarsi termine per temine e quindi segue
* )x* = 0 i = 1,K, n
( ci − a T
y
i
i
Analogamente si giunge alla seconda relazione.
109
Dim. (Sufficienza)
Consideriamo vere le condizioni di slackness complementare per
la coppia di soluzioni x e y:
(a j x − b j ) y j = 0
j = 1,K, m
( ci − a T
i y) xi = 0
i = 1,K, n
In forma vettoriale
yT ( b − Ax ) = 0 ⇒ yT b = yT Ax
( cT − yT A )x = 0 ⇒ cT x = yT Ax
da cui segue
cT x = bT y
quindi per la dualità forte le due soluzioni sono ottime.
110