Simplesso

Transcript

Simplesso
Contenuto e scopo presentazione
Contenuto
• vengono presentati i teoremi base della PL che giustificano l’uso
dell’algoritmo del simplesso
• viene introdotto l’algoritmo del simplesso primale
Programmazione Lineare
Teorema fondamentale e simplesso primale
19/05/2005 11.35
Scopo
• fornire un metodo che permette di risolvere praticamente problemi di PL
Raffaele Pesenti
Raffaele Pesenti
Problema di programmazione lineare
Problema di programmazione lineare
Problema di programmazione lineare:
problema di ottimizzazione
P = (X, c; min) ⇔ min{ c(x) : x∈ X }
oppure
P = (X, c; max) ⇔ max{ c(x) : x∈ X }
dove
– la funzione obiettivo c(x):ℜ n → ℜ è lineare, i.e., soddisfa le relazioni
c(0)=0 e c(αx+βy)= αc(x)+ βc(y) è quindi del tipo c(x) = cx dove c è un
vettore in ℜ n
– l’insieme delle soluzioni ammissibili X è definito da vincoli lineari del tipo
h(x)=γ e/o h(x) ≤ γ e/o h(x) ≥ γ, dove h(x ):ℜ n → ℜ è una funzione
lineare e γ uno scalare in ℜ
Raffaele Pesenti
2
Formulazioni:
i problemi di PL possono essere sempre
formulati in modo equivalente
– in formulazione canonica
max cx
Ax ≤ b
– in formulazione standard
max cx
Ax = b (b ≥ 0)
x≥ 0
Nel seguito vengono usate indifferentemente
le due formulazioni a seconda di cosa risulti
più conveniente
3
Raffaele Pesenti
Terminologia
m = numero delle righe di A
n = dimensione di x e numero
colonne di A
c : vettore funzione obiettivo
A : matrice tecnologica
b : vettore termini noti (in forma
standard sempre non negativo)
x : variabili del problema PL
X = { x : Ax ≤ b, x≥ 0 } : insieme
delle soluzioni ammissibili
G = { x : Ax ≤ b} : insieme delle
soluzioni
4
Non banalità
Non banalità
Dato il problema
max z = cx
Ax = b
x≥ 0
Dimostrazione (secondo punto)
se non esistono x(1), x(2) ∈ X ={ x: Ax = b } e t.c. cx(2) > cx(1) la tesi è dimostrata;
se esistono x(1), x(2) ∈ X e t.c. cx(2) > cx(1), allora esiste λ t.c.
x(3) = λ x(1) + ( 1 - λ ) x(2) , λ ∈ ℜ
affinché sia non banale devono verificarsi le seguenti condizioni
• rank(A) < n, altrimenti X o è vuoto o contiene un’unica soluzione, si osservi
dove x(3) ∈ X (X è uno spazio affine) e che cx(3) = cx(2) + 1 > cx(2) > cx(1), infatti
basta scegliere un λ che verifichi la seguente relazione
 A
però che rank  = n
I
c x(2) + 1 = λ c x(1) + ( 1 - λ ) c x(2)
si ottiene λ = -1 /(cx(2) - cx(1)), dove la divisione è ammissibile poiché cx(2) > cx(1) per
ipotesi. Ponendo x(2)← x(3), x(1)← x(2) e iterando il procedimento si dimostra la tesi.
• presenza vincoli x≥ 0, altrimenti, se X non è vuoto, il valore di z è una
costante indipendente dalla soluzione scelta o è illimitato.
Raffaele Pesenti
5
Raffaele Pesenti
Teorema fondamentale della PL
6
Teorema fondamentale della PL
Dimostrazione
per il teorema di Motzkin il problema è equivalente a
Dato il problema
max Σi=1,..,k λ i cx(i) + Σj=1,..,h µ j cd(j),
max z = cx
Ax = b
x≥ 0
Σi=1,..,m λ i = 1
λ ≥ 0, µ ≥ 0
dove x(i) sono i vertici di X e d(j) le direzioni estreme.
Se esiste d(j) t.c. cd(j) > 0 il problema è illimitato per µj → ∞, altrimenti per qualunque d(j)
si verifica cd(j) ≤ 0 e quindi non è limitativo considerare le sole soluzioni per cui µ = 0.
Poiché
se X non è vuoto e limitato, allora esiste un vertice di X che è soluzione
ottima.
max Σi=1,..,k λ i cx(i) ≤ Σi=1,..,k λ i maxi{ cx(i) } = maxi{ cx(i) },
detto i°= arg maxi{ cx(i) }, il vertice x(i°) è una soluzione ottima del problema.
Raffaele Pesenti
7
Raffaele Pesenti
8
Teorema fondamentale della PL
Soluzioni di base
Dato il problema
Commenti:
dato un problema di PL che ammetta una soluzione ottima limitata, poiché ne
esiste certamente una su un vertice, si può pensare di limitare la ricerca
dell’ottimo all’insieme dei vertici.
Si pone quindi il problema di come individuare (potenzialmente tutti) i vertici
a partire da una rappresentazione esterna del poliedro delle soluzioni
ammissibili. A tal fine si introduce il concetto di soluzione di base.
Raffaele Pesenti
9
max z = cx
Ax = b
x≥ 0
si supponga A minimale, i.e., rank(A) = m. Poiché m<n, eventualmente
riordinando le colonne, si può porre
A=[B|N]
dove
– B è una matrice non singolare m × m detta matrice (colonne) di base (base).
– N è matrice m×(n-m) matrice colonne fuori base
La matrice B è composta da m colonne di A linearmente indipendenti che
formano una base nello spazio vettoriale ad m dimensioni delle colonne di A.
Raffaele Pesenti
10
Soluzioni di base
Soluzioni di base
Il sistema di equazioni lineari Ax = b si può riscrivere come
x 
B N  B  = b ⇒ BxB + NxN = b ⇒ xB = B−1b − B−1NxN
 xN 
[
In corrispondenza di una scelta di B ed N si può partizionare anche il vettore
delle x:
x 
x =  B
xN 
]
Per ogni base B ogni soluzione del sistema Ax = b corrisponde a determinare il
valore per m variabili xB avendo fissato arbitrariamente il valore per le restanti n-m
variabili xN. Una scelta particolarmente importante è porre xN=0, da cui si ottiene la
corrispondente soluzione di base
m componenti
n − m componenti
– xB è detto vettore delle variabili in base (vettore di base)
 x   B −1 b 
x =  B = 

xN   0 
– xN è detto vettore delle variabili fuori base
Se B-1b ≥ 0 si ottiene una soluzione di base ammissibile (BFS) per il sistema
Ax = b, x ≥ 0
Raffaele Pesenti
11
Raffaele Pesenti
12
Soluzioni di base
Soluzioni di base
Proprietà:
A ogni base corrisponde una soluzione di base per definizione, mentre ad
ogni soluzione di base (degenere) possono corrispondere più basi, anche un
numero molto elevato.
Dimostrazione:
Sia (B-1b)k = 0 , i.e., sia nullo l’elemento kmo del vettore B-1b, allora la stessa
soluzione di base è associata a una qualunque nuova base B(1) ottenuta dalla
precedente facendo uscire il kmo vettore colonna e facendo entrare un qualunque
altro vettore rmo in N, i.e., non in base, che avesse l’elemento kmo non nullo.
Infatti l’operazione di pivoting corrispondente al cambio di base da B a B(1),
essendo nullo l’elemento del vettore associato al termine noto nella riga del pivot,
lascia invariato quest’ultimo vettore
B(1)-1 b = B-1b
Quindi gli elementi di x che sono o in base o fuori dalla base in entrambe le
soluzioni rimangono invariati, l’elemento kmo vale 0 sia in base che fuori base,
l’elemento rmo vale 0 fuori dalla base e 0 in base quando sostituisce quello kmo
Raffaele Pesenti
13
Commenti:
• poiché esiste una soluzione ottima su un vertice di P, ad ogni vertice
corrisponde una BFS (prossimo teorema) ed ad ogni BFS corrisponde una o
più basi allora si può limitare la ricerca della soluzione ottima alle BFS
generando in sequenza una successione finita di basi (cercando di non ciclare
in una serie di basi corrispondenti ad una BFS degenere e tenendo presente
che la generazione esplicita di tutte le soluzioni ammissibili di base non è
conveniente poiché il numero massimo di basi cresce in maniera
esponenziale col crescere delle dimensioni del problema (numero di variabili
e vincoli))
• poiché il numero di possibili basi di un problema di PL è comunque al
massimo n!/m!(n-m)!, il problema ha una struttura discreta, i.e., ottimizza
selezionando tra un numero finito di alternative, la PL appartiene alla classe
dei problemi combinatori
Raffaele Pesenti
14
Vertici e BFS
Soluzioni di base
Dato il problema Ax = b, x ≥ 0, una soluzione x è un vertice del poliedro P(A, b)
se e solo se x è una BFS
Commenti (cont.):
• una BFS degenere si presenta in corrispondenza di un vertice sovradefinito,
i.e., che soddisfa all'uguaglianza più di n vincoli, ad esempio nel caso dei
vertici di piramidi. In questo ultimo caso le basi associate alla BFS degenere
possono essere numerosissime.
Dimostrazione:
un punto di un poliedro è un vertice (punto estremo) se e solo se soddisfa all’uguaglianza
n vincoli linearmente indipendenti, quindi basta dimostrare che ogni BFS soddisfa n
vincoli linearmente indipendenti tra Ax= b, x ≥ 0.
Per definizione ogni BFS soddisfa all’uguaglianza (n-m) vincoli x ≥ 0 e gli m vincoli di
Ax = b. I vincoli stringenti sono linearmente indipendenti poiché la matrice dei loro
coefficienti è certamente non singolare essendo della forma
B N 


 0 I n−m 
Raffaele Pesenti
15
Raffaele Pesenti
16
Esempio
Esempio
Sia dato il problema
max z = 2x1 + x2
x1 + x2 ≤ 5
-x1 + x2 ≤ 0
6x1 +2x2 ≤ 21
x1, x2 ≥ 0
x
2
5
4
z=0
1
p3 Ottimo
X
p4
0=p1
17
1
2
3
4
5
x1
Raffaele Pesenti
Esempio
18
Esempio
 1 1 1 0 0
A =  − 1 1 0 1 0 
 6 2 0 0 1 
lo si trasforma in forma standard introducendo le variabili di slack x3, x4 , x5
max z = 2x1 + x2
x1 + x2 + x3
=5
-x1 + x2
+ x4
=0
6x1 +2x2
+ x5 =21
x1, x2 , x3, x4 , x5 ≥ 0
se ci fossero stati dei vincoli di maggiore o uguale si sarebbero introdotte
variabili di surplus con segno opposto, e.g.,
-3x1 + 2x2 ≥ 5 ⇔ -3x1 +2 x2 - x4 = 5
se fosse stato un problema di minimo bastava cambiare verso all’obiettivo, e.g.,
min z =x1 - x2 ⇔ max z’ =-x1 + x2
Raffaele Pesenti
p2
2
problema non in forma standard espresso solo in termini delle variabili
strutturali (cioè quelle che hanno un immediata corrispondenza fisica col
sistema reale che viene modellato)
Raffaele Pesenti
z = 7.75
3
19
5
b =  0 
 21
Limite superiore delle possibili basi 5!/3!2! = 10, ma non tutte le basi
corrispondono ad una soluzione ammissibile BFS, nell’esempio solo 6 basi
sono ammissibili.
Siccome i vertici sono 4, vi saranno BFS degeneri
Raffaele Pesenti
20
Esempio
( 3)
B
x
componenti di base
delle BFS
( 2)
B
x
Soluzione PL
11 4
 x1 


−1
=  x2  = B( 3) b =  9 4  ⇒ p3 dove
 1 2 
 x4 
 x1  5 2
=  x2  = 5 2 ⇒ p2
 x5   1 
x
( 4)
B
B (3)
 1 1 0
=  − 1 1 1
 6 2 0 
 x1  7 2
=  x3  = 3 2 ⇒ p4
 x4  7 2
 x4   0  (soluzioni degeneri)
 x2 
 x1 




( 6)
( 5)
x =  x3  = xB =  x3  = xB =  x3  =  5  ⇒ p1
 x5  21
 x5 
 x5 
Principio guida dell’algoritmo del simplesso primale
A partire da una soluzione di base ammissibile l’algoritmo del simplesso
cerca un’altra soluzione di base ammissibile non peggiore di quella corrente.
L’algoritmo itera quindi la ricerca a partire dalla nuova soluzione di base.
Ad ogni iterazione si cerca la nuova soluzione di base solo tra quelle che
siano semplici da calcolare. Questo algebricamente significa cambiare base di
un solo vettore, geometricamente limitarsi alla stessa soluzione (degenere) o
a quelle adiacenti.
(1)
B
Raffaele Pesenti
21
Raffaele Pesenti
22
Tableau iniziale
Soluzione PL
valore dell’obiettivo
(soluzione corrente)
prima della relativizzazione rispetto alla base B scelta
coeff. dell’obiettivo
nomi delle variabili in base
L’insieme dei vincoli e della funzione obiettivo possono essere scritti come un
sistema lineare rispetto al quale si può supporre di aver individuato una base B
ammissibile:
 z 
1 − c T   z  0 
 1 − c TB − c TN     0 

  =   ⇔ 
 xB =  
N    b 
0 A   x   b 
0 B
 x N 
La quasi (manca la prima colonna) matrice estesa di questo sistema, composto
dalle righe dei vincoli e dalla riga della funzione obiettivo, è detta tableau
 − c TB − c TN 0 
− c T 0
=




N b
 B
 A b
Raffaele Pesenti
z
x B1
⋮
x B1
-cB1
a1 B1
⋮
xBr
⋮
a rB 1
⋮
xB m
a mB 1
⋯ xBr
⋯ -cB r
⋯ a1 B r
⋱
⋮
⋯ a rB r
⋮
⋯ a mB r
nomi delle variabili fuori base
⋯ xB m
⋯ -cB m
⋯ a1 B m
⋮
⋯ a rB m
⋱
⋮
⋯ a mB m
⋯ xj
⋯ -cj
⋯ a1 j
⋮
⋯ a rj
⋮
⋯ a mj
coeff. delle variabili in base B
coeff. delle variabili fuori base N
23
Raffaele Pesenti
⋯ xk
⋯ -ck
⋯ a1 k
⋮
⋯ a rk
⋮
⋯ a mk
⋯
⋯ 0
⋯ b1
⋮
⋯ br
⋮
⋯ bm
valori delle variabili in base b
(soluzione corrente)
24
Soluzione PL (esempio)
Soluzione PL
Esplicitando la funzione obiettivo:
tableau iniziale a colonne riordinate
(sia noto che le colonne 3, 4 e 1 formino una base iniziale ammissibile)*
x1 x 2 x 3 x 4 x 5
z − 2 −1 0
0
0
0
5
0
x3
1
x4 − 1
1 1
1 0
0 0
1 0
x5
2
0
6
0
1 21
x 3 x 4 x1 x 5 x 2
z 0 0 − 2 0 −1
⇒
0
x3
x4
1 0
1 0
0 1 −1 0
1
1
x1
0
2 21
0
6
B
1
N
5
0
b
* in realtà, come si vedrà in seguito, si è partiti da una base banalmente ammissibile
formata dalle colonne 3, 4 e 5, ma che non è utile per l’esempio e si scopre che la
base delle colonne 3, 4 e 1 è certamente più conveniente
Raffaele Pesenti
x 
z = cx = [cB cN ]  B  = cB xB + cN xN
xN 
e sostituendo in (1) l’espressione delle variabili di base:
x B = B −1b − B −1 Nx N
si ottiene:
costi ridotti
(
)
z = c B B − 1b − c B B − 1 N − c N x N
(3)
Raffaele Pesenti
26
Soluzione PL
Le relazioni (2) e (3) esprimono rispettivamente i vincoli e la funzione obiettivo in
funzione delle variabili fuori base.
Raccogliendo le m+1 equazioni di (2) e (3) in forma matriciale si ottiene:
(4)
Soluzione PL (esempio)
matrice pivoting
tableau
1
0

0

0
x3 x4
0 0
1 / 3
1 0 − 1 / 6 
0 1 1 / 6

0 0
1 / 6
27
Raffaele Pesenti
x2
x3
x4
0 − 2
0
1
1 −1
0 −1
0
1
0
1
x1
0
0
1
6
0
5
0
=
2 21
x 3 x 4 x1
=
 0 c B B − 1 N − c N c B B − 1b 


B −1 N
B −1b 
I
x1 x 5
0
1
0
z
B-1
il corrispondente tableau dopo le operazioni di pivoting risulta essere
Raffaele Pesenti
(2)
Il valore dell’obiettivo corrispondente alla base B è quindi z(B) = cBB-1b
25
 z   c B B − 1b   c B B − 1 N − c N 
 xN
 x  =  −1  − 
B −1 N
 B  B b  

(1)
x5
x2
z
x3
x4
0 0 0 1 3 −1 3
7
1 0 0 −1 6 2 3 3 2
0 1 0 16 4 3 7 2
x1
0
0 1
16
13 7 2
28
Tableau
Soluzione PL
Al fine di una scrittura più compatta sia S l’insieme degli indici delle variabili
in base, le colonne di B, e R l’insieme degli indici delle variabili fuori base,
delle colonne di N, e si ponga
 y00 
−1
c B B b  y10 
y0 =  −1  =
 B b   ⋮ 
 
 ym 0 
x B1 ⋯
z = y00 - Σj∈R y0j xj
x Br ⋯
x B1
⋯
⋯
0
0
⋮
⋮
⋱
⋮
x Br
0
⋯
1
⋮
⋱
⋮
⋯
0
⋯
1
⋮
⋮
x Bm
0
xBi = yi0 - Σj∈R yij xj
x3
x4 0 1 0
x1 0 0 1
16
16
y5
Raffaele Pesenti
⋯
0
j
⋯
⋮
⋯
y rj
⋯
y mj
xk
⋯
y0k ⋯
y1k ⋯
⋮
⋯
y rk
⋯
y mk
⋮
y 00
y 10
⋮
⋯
yr0
⋯
ym0
⋮
⋮
valori delle variabili in base
(soluzione corrente)
30
Soluzione PL
7
Verifica ottimalità soluzione corrente
• L’obiettivo: z = y00 -
2 3 3 2
y2
Σj∈R y0j xj,
data la corrente BFS vale: z(B) = y00 ,
se esiste un coefficiente y0k<0, facendo diventare positiva la variabile fuori
base xk, attualmente nulla, l’obiettivo aumenta di valore
4 3 7 2
13 7 2
y0
z = y00 - y0k xk > y00 = z(B)
z = y00 - Σj∈R y0j xj = 7 - 1/3 x5 + 1/3 x2
e.g.,
⋮
x
y0 j ⋯
y1 j ⋯
x2
1 3 −1 3
1 0 0 −1 6
⋯
⋯
Raffaele Pesenti
Soluzione PL (esempio)
S={3,4,1}
R={5,2}
0
0
coeff. delle variabili fuori base
29
z 0 0 0
⋯
⋯
coeff. delle variabili in base
Raffaele Pesenti
x5
x Bm ⋯
0
1
z
dove A.j e cj sono rispettivamente la colonna di N ed il coefficiente di c che
moltiplicano la jma variabile fuori base.
La componente ima della BFS e l’obiettivo si possono quindi riscrivere come:
x3 x 4 x1
nomi delle variabili fuori base
nomi delle variabili in base
y0 j 
−1
c B A. −c   y1j 
yj =  B −1 j j  =   ∀j ∈R
 B A.j   ⋮ 
 
ymj
valore dell’obiettivo
(soluzione corrente)
coeff. dell’obiettivo
allora, compatibilmente col rispetto dei vincoli, conviene aumentare il più
possibile il valore della variabile xk
x4 = y40 - Σj∈R y4j xj = 7/2 - 1/6 x5 - 4/3 x2
31
Raffaele Pesenti
32
Soluzione PL
Soluzione PL (esempio)
Rispetto ammissibilità
• Il vincolo generico associato all’elemento in base imo:
Data la soluzione corrente
xBi = yi0 - Σj∈R yij xj ≥ 0
è rispettato dalla BFS corrente, poiché yi0 ≥ 0 e xj =0, per j∈R
Tale vincolo rispetto alla variabile fuori base che si vuole incrementare diventa
xBi = yi0 - yik xk ≥ 0
se il coefficiente yik è non positivo xk può incrementare a piacere senza violare
la non negatività di xBi,
se il coefficiente yik è positivo xk, per rispettare la non negatività di xBi, può
incrementare solo fino al valore yi0 / yik,
Il massimo valore che può assumere xk è quindi:
z = 7 - 1/3 x5 + 1/3 x2
il coefficiente complessivo di x2 è positivo, quindi conviene rendere il più
positivo possibile x2, compatibilmente coi vincoli
x3 = 3/2 + 1/6 x5 - 2/3 x2 ≥ 0 ⇒ 3/2 - 2/3 x2 ≥ 0
x4 = 7/2 - 1/6 x5 - 4/3 x2 ≥ 0 ⇒ 7/2 - 4/3 x2 ≥ 0
x1 = 7/2 - 1/6 x5 - 1/3 x2 ≥ 0 ⇒ 7/2 - 1/3 x2 ≥ 0
valore massimo assumibile da x2
x2 ← min{9/4, 21/8, 21/2} = 9/4
xk ← min{yi0 / yik,: j∈R , yik >0}
Raffaele Pesenti
33
Raffaele Pesenti
Soluzione PL
Soluzione PL (esempio)
pivot
x3
z 0
uscente x 3 1
x4 0
x1 0
x4
0
0
1
0
entrante
x1
x5
x2
0 1 3 −1 3
0 −1 6 2 3 3
0 16 4 3 7
1 16 13 7
34
7
2 3 2 ⋅ 3 2 = 9 4 (= 2,25)
2 7 2 ⋅ 3 4 = 21 8 (= 2,62)
2 7 2 ⋅ 3 = 21 2 (= 10,5)
Cambio base:
sia yrk il valore per cui si ottiene il min{yi0 / yik,: j∈R , yik >0}, tale valore è
detto pivot,
se xk assume il massimo valore ammissibile allora i valori delle componenti
di x, in particolare quelle in base che quindi dipendono da xk, variano nel
modo seguente,
xk ← yr0 / yrk
xj ← 0, ∀ j∈ R -{k}
xBi← yi0 - yik (yr0 / yrk), ∀ i∈ S
quindi
xBr← 0
Raffaele Pesenti
35
Raffaele Pesenti
36
Soluzione PL
Soluzione PL (esempio)
Cambio base (cont.):
Per potere iterare il ragionamento conviene esprimere le soluzioni del sistema
Ax=b, in funzione delle variabili che dopo l’aggiornamento hanno certamente valore
nullo.Le equazioni associate alla componente ima della BFS e l’obiettivo si dovranno
quindi riscrivere come:
nuovo
valore
obiettivo
z = y00 - y0k yr0 /yrk - Σj∈R - {k} (y0j - y0k yrj /yrk) xj + y0k/yrk xBr
z
xBi = yi0 - yjk yr0 /yrk - Σj∈R - {k} (yij - yik yrj /yrk) xj + yjk /yrk xBr, ∀i∈ S-{r}
xk = yr0 /yrk - Σj∈R - {k} ( yrj /yrk) xj + 1/yrk xBr
nuova base
S ← S ∪ {k} - {r}
R ← R ∪ {r} - {k}
37
1 4 0 11 4
Raffaele Pesenti
38
Soluzione PL
Soluzione PL (esempio)
Iterazione:
• si ridefiniscono i vettori yj, y0
• si verifica l’ottimalità o meno della base,
– se esistono dei coefficienti y0k<0 e yrk>0 si itera, ponendo attenzione
al cycling se yrk=0
– se esistono dei coefficienti y0k<0 , ma non esiste alcun yrk>0, il
problema è illimitato
– se non esiste alcun coefficiente y0k<0 la soluzione correntemente in
base è ottima
Raffaele Pesenti
x5 x 2
1 4 0 31 4
3 2 0 0 −1 4 1 9 4
−2 1 0 1 2 0 1 2
x1 − 1 2 0 1
Ovvero si è cambiata base:
Raffaele Pesenti
x2
x4
x3 x 4 x1
12 0 0
39
coeff. non negativi
z
base ottima
x2
x4
x3 x 4 x1
12 0 0
x5 x 2
1 4 0 31 4
3 2 0 0 −1 4 1 9 4
−2 1 0 1 2 0 1 2
x1 − 1 2 0 1
Raffaele Pesenti
valore
ottimo
obiettivo
1 4 0 11 4
40
Condizioni di ottimalità
Condizioni di ottimalità
Condizione di ottimalità
Dimostrazione (ovvia conseguenza di quanto già visto)
Dato un problema di PL in forma standard una soluzione di base x*, relativa
alla base B, è ottima se si verificano le seguenti condizioni:
1) B-1b = y0 ≥ 0
(ammissibilità primale)
2) cj - cbB-1A.j ≤ 0 ⇒ y0j ≥ 0, ∀j
(non migliorabilità)
In realtà la condizione 2) può essere praticamente verificata per le sole variabili fuori
base, infatti le variabili in base hanno per costruzione costi ridotti sempre nulli e
quindi soddisfano certamente la condizione data. la 2) quindi diventa
2) cj - cbB-1N.j ≤ 0 ⇒ y0j ≥ 0, ∀j∈ R
Raffaele Pesenti
basta esprimere x* e il corrispondente valore z assunto dall’obiettivo in funzione delle
variabili non in base associate alla base B:
−1
 z  c B B b 
 z*   *  

−1
 * =  xB  =  B b  −
x  x*   0 
 N 

(*)
per definizione di soluzione di base x* N =0, inoltre se si verifica la prima condizione
anche le componenti in base sono non negative quindi la soluzione è ammissibile.
Siccome (*) è una rappresentazione interna, al variare di x* N , di tutte le possibili
soluzioni ammissibili e poiché gli xN sono vincolati ad essere positivi allora, se si
verifica la seconda condizione, non può esistere un’altra x∈ X a cui è associato un
valore della funzione obiettivo maggiore
NB Esistono soluzioni di base degeneri ottime per cui la seconda condizione non vale
41
Raffaele Pesenti
Condizioni di ottimalità
42
Condizioni di ottimalità
Commenti:
• Il modo di procedere è una dimostrazione costruttiva che dimostra che un
problema di PL ammette una soluzione su un punto estremo e non ammette
soluzioni locali multiple, infatti la metodologia utilizzata individua un
massimo locale qualunque e prova che:
– non vi possono essere altri punti di massimo locale che assumano una
soluzione migliore di quella individuata (quindi il massimo è anche
globale),
– il luogo dei punti a cui è associato un valore della funzione obiettivo
identico forma un insieme connesso (e convesso) con il massimo
individuato (quindi non esistono altri massimi locali)
Raffaele Pesenti
 c B B −1 N − c N 
 *

B −1 N
 xN



I


Commenti (cont.):
• Si può giungere alla stessa conclusione a partire dal teorema più generale che
afferma che una funzione convessa continua definita su un insieme convesso
chiuso e limitato presenta certamente un massimo globale su un punto
estremo, per assurdo, sfruttando la linearità, si può poi dimostrare che esiste
un unico luogo dei punti massimo locale.
• Le dimostrazioni costruttive, dal punto di vista della ricerca operativa e
dell’informatica, sono da preferire a quelle per assurdo in quanto danno
indicazioni su come realizzare gli algoritmi di soluzione di un problema.
43
Raffaele Pesenti
44
Scelta variabile entrante
Condizioni di illimitatezza
Condizione di illimitatezza
Dato un problema di PL in forma standard esso è illimitato superiormente se esiste
una base B per cui si verificano le seguenti condizioni:
Dato un problema di PL in forma standard ed una base B per cui si verificano
le seguenti condizioni:
1) B-1b = y0 ≥ 0
(ammissibilità primale)
(ammissibilità primale)
2) ∃ j∈ R : cj - cbB-1N.j > 0 ⇒ y0j < 0,
1) B-1b = y0 ≥ 0
(migliorabilità)
2) ∀ j∈ R : cj - cbB-1N.j > 0, ⇒ ∃ r yrj >0
(migliorabilità finita)
e
B-1N.
j
≤ 0 ⇒ yij ≤ 0 ∀i ≠ 0
(incrementabiltà variabile fuori base)
Dimostrazione
può essere trovata (come si è visto) un’altra soluzione di base che non
peggiora la soluzione una volta scelta la colonna k che soddisfa la seconda
condizione.
La prima condizione è sufficiente per affermare l’esistenza di una variabile di base
ammissibile, la seconda afferma la possibilità di miglioramento della funzione
obiettivo muovendosi lungo la “direzione” B-1N.j, la terza condizione indica che B-1N.j
è effettivamente una direzione e che quindi il miglioramento può essere infinito.
Raffaele Pesenti
45
Raffaele Pesenti
46
Scelta variabile entrante
Scelta variabile entrante
Possibili criteri di scelta della variabile entrante in base:
Commenti:
– steepest descent (gradiente): si sceglie la variabile che induce incremento
marginale massimo (metodo più usato)
k = arg maxj∈ R {cbB-1N.j - cj}
• A parte problemi di cycling (vedi dopo) usare un criterio invece che un altro
non pregiudica il raggiungimento della soluzione ottima, ma può al peggio
aumentare il tempo necessario per la sua ricerca.
• I problemi di PL di solito presentano molte colonne e molte righe e quindi
può essere preferibile un criterio semplice ma veloce, i.e., che esegue pochi
confronti.
– massimo incremento: si sceglie la variabile che può incrementare
maggiormente
– massimo incremento funzione obiettivo: si sceglie la variabile che
conduce al massimo miglioramento della funzione obiettivo
• Si possono formulare problemi in cui i criteri deterministici sono inefficienti,
i.e., generano tutte le basi prima di trovare l’ottima.
– casuale: si sceglie a caso la variabile tra quelle che soddisfano la seconda
condizione
Raffaele Pesenti
47
Raffaele Pesenti
48
Cycling
Regole anticycling
Si può verificare il caso, piuttosto comune, che
min{yi0 / yik,: j∈R , yik >0} = 0
ovvero che sia nullo il termine noto corrente della riga rma che pone il vincolo
stringente all’incremento della variabile kma che si vuole fare entrare in base.
In questa situazione l’operazione di pivoting cambia la base, ma lascia invariata
la BFS corrispondente, si corre quindi il rischio di passare di base in base senza
cambiare BFS, fino a tornare ad una base già visitata e quindi invischiarsi in un
ciclo infinito (cycling).
Raffaele Pesenti
49
Esistono due criteri fondamentali per evitare il cycling
• scelta opportuna della colonna k e della colonna r:
la regola di Bland suggerisce di prendere sempre i valori minimi di k e r tra
quelli possibili
• piccola variazione del termine noto:
si perturba leggermente il termine noto in modo da non cambiare le basi, ma
impedire che vi siano BFS degeneri (in realtà i vertici sovradefiniti vengono
decomposti in tanti vertici vicini), si risolve il problema così perturbato e, se la
variazione è sufficientemente piccola, la base ottima ottenuta coincide con la
base ottima del problema originale.
Raffaele Pesenti
50
Algoritmo del simplesso (primale)
Regole anticycling
1. Inizializzazione. Determinare una soluzione di base ammissibile
2. Verifica dell’ottimalità.
Commenti:
• Una conseguenza della regola di Bland è che certamente esiste una base ottima
che soddisfa le condizioni di ottimalità.
• Anche se le BFS degeneri sono comuni il cycling si verifica raramente in
pratica (a parte casi su reti che sono risolti in modi specifici), viceversa le
regole anticycling si dimostrano statisticamente poco efficienti per le direzioni
di discesa che inducono o per i calcoli che richiedono.
• I software commerciali le applicano solo quando, dopo vari pivoting, si
accorgono che il valore della funzione obiettivo non è migliorato oppure non le
applicano del tutto e semplicemente si arrestano dopo un certo numero di passi
dichiarandosi incapaci di trovare la soluzione ottima.
Se y0j≥ 0, ∀ j∈ R, 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 o
una regola anticycling), ed andare al passo 4.
4. Scelta della variabile uscente dalla base.
Scegliere una variabile xBr tale che yi0 / yir = min{yi0 / yik,: j∈ R , yik >0}
Se yik≤ 0,∀ i, la soluzione del problema è illimitata, e l’algoritmo termina. altrimenti passo 5.
5. Pivoting.
Risolvere i vincoli di uguaglianza esprimendo le nuove variabili in base xk e xBi,∀ i≠ k in
funzione delle nuove variabili fuori base xBi e xj,∀ j∈ R-{k}.
La nuova BFS si ottiene ponendo le nuove variabili fuori base a zero. Andare al passo 2.
Raffaele Pesenti
51
Raffaele Pesenti
52
Algoritmo del simplesso (primale)
Algoritmo del simplesso (primale)
Commenti:
• Nell’algoritmo del simplesso si distingue una fase I, che consiste nel passo di
inizializzazione in cui viene individuata una prima BFS, e una fase II, che
consiste nel determinare la BFS ottima a partire dalla prima BFS. La fase II
è stata illustrata nei lucidi precedenti, la fase I viene illustrata in seguito.
• La verifica se il problema è illimitato può anche venire fatta al passo 2
controllando tutte le colonne associate a costi ridotti positivi (e quindi
coefficienti nel tableau negativi), se le colonne sono numerose questa verifica
può essere onerosa.
Raffaele Pesenti
53
Dimostrazione
Sia z* il valore assunto all’ottimo dalla funzione obiettivo e si consideri l’iperpiano
H*:{x ∈ ℜ n: cx = z*} luogo dei punti anche non in P in cui la funzione obiettivo
assume valore z*.
Per l’ottimalità di z* l’iperpiano H*:{x ∈ ℜ n: cx = z*} è di supporto infatti:
H*∩ P =X*≠∅.
P ⊆ H≤*:{x ∈ ℜ n: cx ≤ z*} e
Consegue che X* è un poliedro, è infatti intersezione di disuguaglianze e uguaglianze,
ed è anche una faccia di P. I vertici ottimi sono quindi vertici di una stessa faccia e
potrebbero essere molto numerosi.
Raffaele Pesenti
54
Fase I
Algoritmo del simplesso (primale)
Commenti (cont.):
• Durante un operazione di pivoting si può non cambiare BFS (pivoting
degenere) e quindi non si cambia vertice sul poliedro, oppure si cambia BFS
passando da un vertice ad un altro. In questo caso i due vertici sono adiacenti,
i.e., sono i due vertici di uno spigolo di P.
Dimostrazione (cenno)
l’insieme delle soluzioni X(xk ), che si ottengono incrementando da 0 al massimo
valore consentito la variabile xk che entra in base, è incluso in P ed anche negli (n-1)
iperpiani (facce, poiché si suppone il sistema minimale) corrispondenti alle condizioni
che ogni suo elemento soddisfa all’uguaglianza (le stesse condizioni della BFS di
partenza meno la condizione xk=0).
Poiché l’insieme X(xk ) è quindi incluso nell’intersezione di (n-1) iperpiani
indipendenti in uno spazio n dimensionale esso è una retta (o meglio in uno spazio
affine di dimensione 1), poiché esso è anche intersezione in P di facce ne consegue
che X(xk ) è uno spigolo.
Raffaele Pesenti
Commenti (cont.):
• La presenza di costi nulli all’ottimo indica che possono essere presenti
soluzioni ottime multiple. L’insieme X* luogo delle soluzioni ottime è un
poliedro ed in particolare una faccia di P, eventualmente un vertice in caso di
unico ottimo.
55
Individuazione della prima BFS:
In alcuni casi una prima base ammissibile è immediata, si supponga infatti che il
problema sia formulato come
max z = cx
Hx ≤ b
x≥ 0
con b ≥ 0, allora la sua trasformazione in forma standard introduce delle variabili
di slack s le cui corrispondenti colonne formano la prima base ammissibile
max z = cx
Hx + Is = b
x ≥ 0, s ≥ 0
Riordinando le colone si ottiene A=[I|H], B=I e N=H, dove chiaramente
rango{A}=m e B-1b ≥ 0.
Non può farsi lo stesso ragionamento in presenza di disuguaglianze di verso
opposto, infatti le variabili di surplus hanno coefficienti negativi, o in presenza di
vincoli di uguaglianza.
Raffaele Pesenti
56
Fase I
Esempio (fase I)
Se il problema è nella forma standard, senza particolare struttura, si introducono m
variabili artificiali u e si formula il problema di fase I
max z = cx
min w = 1u
⇒ fase I
Ax + Iu = b
Ax = b
x≥0
x ≥ 0, u ≥ 0
Per il problema di fase I è immediato determinare una base iniziale ammissibile
come nel caso del lucido precedente.
Il problema fase I ammette una soluzione ottima w* non negativa per costruzione,
– se w* >0 allora il problema fase I non ha soluzioni ammissibili x, u t.c. u = 0
e quindi non esiste x t.c. Ax + I0 = b ⇒ Ax = b, da cui il sistema Ax = b
non è compatibile e il problema di PL non ha soluzioni ammissibili
– se w* =0 allora la componente della soluzione ottima x*, u* è t.c. u = 0 e
quindi x* è t.c. Ax* + I0 = b ⇒ Ax* = b. Poichè x*ha al più m componenti
non nulle essa può essere presa come prima BFS del problema originale.
Raffaele Pesenti
57
Dato problema
min z = 4 x1 + x2
4 x1 + 3 x 2 − x 3
x1 x 2
x1 + 2 x 2
=3
+ u2 = 6
+ x4
variabili artificiali
4 x1 +3 x2 ≥ 6
4x1 +3x2 − x3
=6
x1 +2 x2 ≤ 4
x1 +2x2
58
Esempio (fase I)
x3 x4 u1 u 2
u1
u2
0
0
1 0
3 −1
0
0
0
1
1
0
1 0
0 3
1 6
x4
1
2
1
0
0 4
0
Tableau iniziale problema ausiliario
prima e dopo le operazioni di pivoting che
permettono di esprimere vincoli e obiettivo in
termini delle variabili fuori base (data la struttura
del problema il pivoting sui vincoli non è
in realtà necessario)
la BFS corrente non è ottima
base iniziale
* ATTENZIONE: questo tableau non è espresso
rispetto alla base scelta e quindi non può ancora
essere eseguito il test di ottimalità.
59
+x4 = 4
x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0
base
Dato la presenza di una slack bastano solo due variabili artificiali
Raffaele Pesenti
=3
0
3
4
= 4
x1 ≥ 0 , x 2 ≥ 0 , x 3 ≥ 0 , x 4 ≥ 0 , u 1 ≥ 0 , u 2 ≥ 0
3x1 + x2
si devono annullare
questi coefficienti*
z
3 x1 + x 2
3 x1 + x2 = 3
Raffaele Pesenti
Definizione e soluzione del problema ausiliario
⇒ maxz = −u1 − u2
+ u1
max z = −4x1 − x2
x1 ≥ 0, x2 ≥ 0
Esempio (fase I)
min z = u 1 + u 2
formulazione standard
Raffaele Pesenti
x1 x 2
z − 7 − 4
x3 x4 u1 u 2
1 0 0 0 − 9
u1
3
1
0
0
1
0
3
u2
x4
4
1
3 −1
2
0
0
1
0
0
1
0
6
4
60
Esempio (fase I)
Esempio (fase I)
si devono annullare
questi coefficienti
tableau finale
x1 x 2
x3 x4
u1
u2
1
1
z
0
0
x1
x2
1
0
0
1 5
1 −3 5
0
3 5 −1 5 3 5
0 −4 5 3 5 6 5
x4
0
0
1
0
1
0
1
−1
x1 x 2
0
z
1
x1
x2
0
0
0 3 5
0 6 5
x4
0
0
1
1
x1 x 2
z
x3
0
0
−1 5
x4
0 − 18
x1
1
0
1 5
0
3 5
0
1 − 3 5
0
6 5
x4
0
0
1
1
1
62
Analisi di sensibilità (esempio)
Sia dato un problema di PL in forma generale
max z = cx
H(1) x ≤ d(1)
H(2) x ≥ d(2)
x≥ 0
dove gli eventuali vincoli di uguaglianza sono stati trasformati in un coppia
di vincoli opposti di disuguaglianza.
Per ricondursi alla forma standard si devono introdurre le variabili di slack s
e di surplus u
max z = cx
H(1) x + I(1) s = d(1)
H(2) x - I(2) u = d(2)
x ≥ 0, s ≥ 0, u ≥ 0
63
Sia dato il problema
max z= 2 x1 - 2 x2 + 3 x3
- x1 + x2 + x3 ≤ 4
2 x1 - x2 + x3 ≤ 2
x1 + x2 + 3 x3 ≤ 12
xi≥0
che diventa
max z= 2 x1 - 2 x2 + 3 x3
- x1 + x2 + x3 + s4
=4
2 x1 - x2 + x3
+ s5
=2
x1 + x2 + 3 x3
+ s6 = 12
xi≥0, si≥0
Raffaele Pesenti
5
x2
Raffaele Pesenti
Analisi di sensibilità (prima parte)
Raffaele Pesenti
1
base
61
x4
1
0
0
1 5
1 − 3 5
con questi valori può essere inizializzato il tableau del problema originale
Raffaele Pesenti
x3
4
1
0
Tableau iniziale problema originario
prima e dopo le operazioni di pivoting che
permettono di esprimere vincoli e obiettivo in
termini delle variabili in base (data la struttura
del problema il pivoting sui vincoli non è
in realtà necessario)
64
Analisi di sensibilità (prima parte)
Analisi di sensibilità (esempio)
quindi, una volta risolto all’ottimo il problema in forma standard, sono disponibili
le seguenti informazioni:
– il valore ottimo z* della funzione obiettivo, i.e., il valore del massimo
profitto/minimo costo ottenibile
– il valore ottimo x* delle variabili strutturali, i.e., le decisioni ottime da
prendere
– il valore ottimo s* delle variabili di slack, i.e., quanto si è al disotto dei limiti
massimi consentiti (e.g., dalle risorse disponibili). Nei vincoli derivati da
condizioni di uguaglianza questo valore è sempre 0 a causa della presenza dei
vincoli di verso opposto
– il valore ottimo u* delle variabili surplus, i.e., quanto si eccedono i limiti
minimi consentiti (e.g., di soddisfacimento di certe necessità). Nei vincoli
derivati da condizioni di uguaglianza questo valore è sempre 0
ma anche ...
Raffaele Pesenti
65
x1
x2
x3
s4
s5
5/ 2
0
0
1/ 2
5/ 2
0 7
x2 − 3 / 2
1
0
0
1
1/ 2 −1/ 2
1/ 2 1/ 2
0 1
0 3
0
0
−2
1 2
z
x3 1 / 2
s6
1
 1/ 2 −1/ 2
B −1 =  1 / 2 1 / 2
 − 2
−1
−1
colonne in base
B-1b
x 2* = 1
x 3* = 3
s 4* = 0
s 5* = 0
s 6* = 2
tableau ottimo
Raffaele Pesenti
Analisi di sensibilità (prima parte)
66
Analisi di sensibilità (esempio)
– i costi ridotti di ogni variabile strutturale non in base, i.e., di quanto peggiora
marginalmente z* se si forza la variabile ad assumere un valore unitario, o viceversa
di quanto deve aumentare il coefficiente iniziale della variabile affinché si ottenga un
costo ridotto positivo e quindi si consideri la possibilità di fare entrare detta variabile
in base
– i costi ridotti di ogni variabile di slack non in base (quindi associata a un vincolo
stringente), i.e., di quanto peggiora marginalmente z* se si forza la variabile ad
assumere un valore unitario, operazione che equivale a diminuire di un’unità il
termine noto del vincolo. Cambiando il segno del costo ridotto si ottiene invece
l’indicazione del miglioramento di z* per un aumento unitario del termine noto.
– i costi ridotti delle variabili di surplus non in base (quindi associate a vincoli
stringenti), i.e., di quanto peggiora marginalmente z* se si forza la variabile ad
assumere un valore unitario, operazione che equivale ad aumentare di un’unità il
termine noto del vincolo. Cambiando il segno del costo ridotto si ottiene invece
l’indicazione del miglioramento di z* per una diminuzione unitaria del termine noto.
Raffaele Pesenti
0
0
1
z* = 7
x 1* = 0
s6
67
c’1= -5/2 -π1=c’4= -1/2
-π2= c’5= 5/2
x1
x2
x3
s4
s5
5/ 2
0
0
1/ 2
5/ 2
0 7
x2 − 3 / 2
1
0
0
1
1/ 2 −1/ 2
1/ 2 1/ 2
0 1
0 3
0
0
−2
1 2
z
x3 1 / 2
s6
1
Raffaele Pesenti
−1
s6
68
Analisi di sensibilità (prima parte)
Analisi di sensibilità (prima parte)
Si ottiene inoltre la matrice B- 1, inversa della base ottima B, che permette
di eseguire l’analisi di sensibilità delle soluzioni rispetto ai parametri.
Una volta definiti
− variazione marginale: una variazione dei parametri del problema che
non conduca al cambiamento della base ottima nell’ipotesi che gli altri
coefficienti rimangano invariati,
− ei il versore imo della base canonica (vettore colonna o riga a seconda
del contesto),
− π = cBB-1 il vettore in cui ogni elemento πi è dato dal prodotto scalare
del vettore dei coefficienti cB delle variabili in base e dalla colonna ima
(B-1).i di B-1,
si può osservare preliminarmente che ....
una variazione parametri, che non influenzi l’ottimalità e l’ammissibilità
dalla BFS correntemente ottima, deve essere tale che continuino ad essere
valide le due condizioni
Raffaele Pesenti
1) B-1b = y0 ≥ 0
(ammissibilità primale)
2) cj - cbB-1N.j ≤ 0 ⇒ cbB-1N.j - cj ≥ 0 , ∀ j∈ R ⇒
⇒ (cB T B-1 N - cN T )T ≥ 0
indipendentemente da quale sia il parametro variato, e quindi ...
69
Raffaele Pesenti
70
Analisi di sensibilità (esempio)
Analisi di sensibilità (prima parte)
s6≠0 ⇒ π3= 0
– il prezzo ombra del vincolo imo è πi, infatti sia data una variazione marginale
∆bi del termine imo, poiché z* = cBB-1b, la conseguente variazione di z*
risulta essere
∆z* = cBB-1(b + ∆ biei) - cBB-1 b = cBB-1∆ biei =
= ∆ bicBB-1ei = ∆ bicB (B-1).i = πi∆ bi
 1/ 2 −1/ 2
= c B B = [− 2 3 0]  1 / 2 1 / 2
 − 2
−1
i vincoli non stringenti possono avere variazioni marginali senza variare il
valore di z* il loro prezzo ombra è quindi sempre 0
x1
x2
x3
s4
s5
5/ 2
0
0
1/ 2
5/ 2
0 7
x2 − 3 / 2
1
0
0
1
1/ 2 −1/ 2
1/ 2 1/ 2
0 1
0 3
0
0
−2
1 2
x3 1 / 2
s6
1
71
0
0 = [1 / 2 5 / 2 0]
1
−1
z
Raffaele Pesenti
(non migliorabilità)
Raffaele Pesenti
−1
s6
72
Analisi di sensibilità (prima parte)
Analisi di sensibilità (esempio)
e.g., variazione marginale massima di b2
(cont.)
– la variazione marginale massima ∆ bi, che può subire la componente ima bi del
termine noto, deve essere tale che le variabili di base rimangano non negative.
Poiché, dopo la variazione, la variabili in base valgono B-1(b + ∆ biei) allora ∆ bi
deve soddisfare le condizioni
 1/ 2 −1/ 2
B −1 =  1 / 2 1 / 2
 − 2
−1
∆ b2 (B-1).2 ≥ -B-1b
B-1(b + ∆ biei) ≥ 0 ⇒ ∆ bi (B-1).i ≥ -B-1b ⇒
 − 1 / 2
1 


∆b2  1 / 2  ≥ − 3 ⇔ −6 ≤ ∆b2 ≤ 2
 − 1 
2
max {(-B-1b)r /(B-1)ri: (B-1)ri>0} ≤ ∆ bi ≤ min {(-B-1b)r /(B-1)ri: (B-1)ri<0}
Raffaele Pesenti
73
Analisi di sensibilità (prima parte)
Raffaele Pesenti
74
Analisi di sensibilità (esempio)
(cont.)
– la variazione marginale massima ∆ cj, che può subire il coefficiente cj della
funzione obiettivo corrispondente alla jma variabile fuori base, deve essere tale
da non indurre un costo ridotto positivo per xj.
Quindi ∆ cj deve soddisfare la condizione
Variazioni marginali massime dei coefficienti della funzione obiettivo
associati a variabili fuori base
∆c1≤ 5/2
i.e., ∆cj deve essere non superiore al costo ridotto ottimo.
Le variazioni marginali associate a coefficienti di variabili non in base non
inducono variazioni del valore ottimo z* della funzione obiettivo.
Raffaele Pesenti
∆c5≤ 5/2
x2
x3
s4
s5
5/ 2
0
0
1/ 2
5/ 2
0 7
x2 − 3 / 2
1
0
0
1
1/ 2 −1/ 2
1/ 2 1/ 2
0 1
0 3
0
0
−2
1 2
x3 1 / 2
s6
1
75
∆c4≤ 1/2
x1
z
cBB-1N.j - (cj + ∆ cj )≥ 0 ⇒ ∆ cj ≤ cBB-1N.j - cj
Raffaele Pesenti
0
0
1
−1
s6
76
Analisi di sensibilità (prima parte)
Analisi di sensibilità (esempio)
e.g., variazione marginale massima di c2
(cont.)
– la variazione marginale massima ∆cBk, che può subire il coefficiente cBk della
funzione obiettivo corrispondente alla kma variabile in base, deve essere tale da
non indurre dei costi ridotti positivi delle variabili fuori base.
Quindi ∆cBk deve soddisfare le seguenti condizioni:
∆c2 (B-1 )1. N ≥ - (cBB-1N - cN) ⇒
Raffaele Pesenti
x2
x3
s4
s5
5/ 2
0
0
1/ 2
5/ 2
0 7
x2 − 3 / 2
1
0
0
1
1/ 2 −1/ 2
1/ 2 1/ 2
0 1
0 3
0
0
−2
1 2
x3 1 / 2
s6
1
Le variazioni marginali associate a coefficienti di variabili in base inducono
variazioni del valore ottimo z* della funzione obiettivo:
∆ z* = ∆ cBi x*
x1
z
(cB + ∆ cBk eBk) B-1N.j - cj ≥ 0 ∀ j ∈ R ⇒
⇒ ∆ cBk (B-1 )Bk. N.j ≥ cj - cBB-1N.j ∀ j ∈ R ⇒
⇒ (∆ cBk (B-1 )Bk. N)T ≥ (cN - cBB-1N)T
-1 ≤ ∆ c2 ≤ 5/3
−1
s6
x2 è il primo elemento della base B
77
Raffaele Pesenti
78
Analisi di sensibilità (prima parte)
Analisi di sensibilità (esempio)
e.g., variazione marginale massima di a21
(cont.)
– la variazione marginale massima ∆arj, che può subire il coefficiente arj della riga
rma, colonna jma (fuori base) della matrice dei coefficienti A, deve essere tale da
non indurre dei costi ridotti positivi per la variabile fuori base corrispondente.
Quindi ∆arj deve soddisfare la seguente condizione:
∆a21 cB (B-1 ).2 ≥ -(cBB-1N.1 - c1 ) ⇒
Le variazioni marginali associate a coefficienti di variabili non in base non
inducono variazioni del valore ottimo z* della funzione obiettivo.
Raffaele Pesenti
x1
x2
x3
s4
s5
5/ 2
0
0
1/ 2
5/ 2
0 7
x2 − 3 / 2
1
0
0
1
1/ 2 −1/ 2
1/ 2 1/ 2
0 1
0 3
0
0
−2
1 2
z
cB B-1 ( N.j + ∆ arj er) - cj ≥ 0 ⇒ ∆ arj cB (B-1 ).r ≥ cj - cBB-1N.j
x3 1 / 2
s6
1
79
Raffaele Pesenti
∆ a21 ≥ - 1
−1
s6
80
Analisi di sensibilità (prima parte)
Analisi di sensibilità (prima parte)
(cont.)
– la variazione ∆ arq, che può subire il coefficiente arq della riga rma, colonna qma
(in base) della matrice dei coefficienti, influenza la matrice inversa B-1 in modo
non lineare quindi è difficile stabilire esattamente che conseguenze induce.
Si può però stimare la variazione di ∆ z*, infatti per il vincolo rmo la variazione
∆arq può essere vista, se il suo valore è sufficientemente piccolo, come analoga
ad una variazione sul temine noto di valore -∆ arq xq* :
(Ar. + ∆ arq eq)x* = br ⇒ Ar.x* = br - ∆ arq xq*
a tale variazione del termine noto corrisponderebbe ∆ z* = - ∆ arq xq*πr
Il valore di ∆z* è solo approssimato poiché la variazione sul termine noto
dipende da xq* che però cambia in seguito ad essa.
Raffaele Pesenti
81
Commenti:
– L’analisi di sensibilità indica che per essere ragionevolmente certi sul
valore delle soluzioni ottime di un problema di PL si devono conoscere
con buona precisione i coefficienti associati a variabili in base all’ottimo
(soprattutto se sono elevati i valori assunti) e ai vincoli stringenti
(soprattutto se sono elevati i prezzi ombra corrispondenti)
– Affrontando un problema reale è sempre opportuno cercare di fornire
un’interpretazione fisico-economica di tutte le informazioni ottenibili
dalla soluzione tramite simplesso
Raffaele Pesenti
Complessità della PL e altri metodi
82
Complessità della PL e altri metodi
Cubo di Klee–Minty:
max
Il simplesso non è un algoritmo polinomiale, i.e., esistono istanze di problemi
di PL, e.g., il cosiddetto cubo di Klee–Minty (1972), per cui il simplesso
esegue un numero di operazioni (visita un numero di vertici) che cresce in
modo esponenziale O(2n) con la dimensione del problema espressa in termini
del numero variabili n e numero di vincoli m.
In realtà nei problemi pratici si comporta molto bene, infatti è l’algoritmo più
usato per risolvere problemi di PL reali.
Raffaele Pesenti
83
Σi=1...n 2n-ixi
2Σi=1...(j-1)2n-ixi +2xj≤ 100 j-1
j=1,...,n
xi ≥ 0
Esempio a 3 dimensioni:
max 4x1 + 2x2 + x3
x1
≤1
≤ 100
4x1 + x2
8x1 + 4x2 + x3 ≤ 10000
x1, x2, x3 ≥ 0
Raffaele Pesenti
84
Complessità della PL e altri metodi
Commenti:
il cubo di Klee–Minty è una leggera
distorsione del cubo
0 ≤ x1 ≤ 1
0 ≤ x2 ≤ 100
:::
Complessità della PL e altri metodi
10000
Algoritmi polinomiali per problemi di PL
9600
9992
9592
0 ≤ xn ≤ 100n-1
100
– (derivati dal) metodo del punto interno [Karmarkar, 1984],
possono essere competitivi con il simplesso per istanze di dimensione
molto grande.
1
96
Raffaele Pesenti
85
Raffaele Pesenti
86
Simplesso “revised”
Simplesso “revised”
Difficoltà pratica
Difficoltà pratica
Il metodo del simplesso deve calcolare la sequenza delle matrici inverse B(i)-1
delle basi B(i) che progressivamente sceglie.
Per passare da B(i)-1 a B(i+1)-1 basta applicare Gauss-Jordan, questo algoritmo
è molto semplice, ma ha il difetto di propagare gli errori di arrotondamento.
Soluzione
Per k iterazioni si procede da B(i)-1 a B(i+1)-1 alla (k+1)ma iterazione si
reinverte, i.e., si calcola la matrice inversa B(k+1)-1 con metodi accurati a
partire dalle colonne in base del tableau iniziale e non dalla matrice B(k)-1.
In questo modo ogni k iterazioni si blocca la propagazione degli errori.
Raffaele Pesenti
– (derivati dal) metodo dell’elissoide [Khachyan, 1979],
di grande interesse teorico perché dimostrano la risolvibilità polinomiale
di problemi PL, ma di pessima efficienza pratica.
la matrice dei coefficienti di un problema di PL è generalmente molto grande
ma sparsa, B-1 continua ad essere molto grande ma non è più sparsa
Soluzione
– non si memorizza B-1 bensì la sequenza di matrici elementari che la
generano sfruttando le loro proprietà strutturali
– si osserva che di solito non serve B-1 bensì il prodotto di tale matrice per
dei vettori, così, ad esempio π =cB B-1 non viene calcolato a partire dalla
matrice inversa, bensì attraverso la soluzione di due sistemi lineari
triangolari
w U =cB
πL=w
dove LU=B
con L triangolare inferiore e U triangolare superiore.
Ad ogni iterazione deve essere aggiornata LU invece di B-1
87
Raffaele Pesenti
88
Esercizi
Esercizi
Es 4.
Dato il seguente problema di programmazione lineare risolverlo e
determinare soluzioni, costi ridotti, slack, prezzi ombra ottimi ed indicare
le massime variazioni marginali ammissibili per termini noti e coefficienti
della funzione obiettivo
Es 1.
Determinare come cambiano le condizioni del simplesso quando si deve
affrontare un problema di minimo
Es 2.
Dare una interpretazione fisico-economica a tutti i risultati dell’analisi di
sensibilità per tutti i modelli template visti a lezione
Es 3.
Determinare come cambiano le proprietà della BFS ottima corrente e la
struttura del problema se viene introdotta una variazione maggiore di quella
massima marginale
Raffaele Pesenti
max 30 x1 + 40 x 2 + 35 x 3
89
3 x1
+ 4 x2
+ 2 x 3 ≤ 90
2 x1
x1
+ x2
+ 3 x2
+ 2 x 3 ≤ 90
+ 2 x 3 ≤ 90
x1 ,
x2 ,
x3 ,
≥0
Raffaele Pesenti
90
Esercizi
Esercizi
Es 5.
Dato il seguente problema di programmazione lineare stabilire quale tra le
basi indicate è ottima, determinare soluzioni, costi ridotti, slack, prezzi ombra
corrispondenti ed indicare le massime variazioni marginali ammissibili per
termini noti e coefficienti della funzione obiettivo
Es 6.
Dato il seguente problema di programmazione lineare stabilire quale tra le
basi indicate è ottima, determinare soluzioni, costi ridotti, slack, prezzi ombra
corrispondenti ed indicare le massime variazioni marginali ammissibili per
termini noti e coefficienti della funzione obiettivo
max 2 x1 − x 2 + x 3
3 x1 + x 2 + x 3 ≤ 60
x1 − x 2 + 2 x 3 ≤ 10
basi {2,3,5} {1,2,4} {2,3,6}
Raffaele Pesenti
x1 + x 2
x1 , x 2 ,
max 4 x1 + 5 x 2 + 6 x 3
2 x1 + 3 x 2 + 4 x 3 ≤ 60
x1 + x 2
2 x1 + 3 x 2
− x 3 ≤ 20
x3 , ≥ 0
basi {2,3,5} {1,3,5} {2,4,6}
91
Raffaele Pesenti
x1 ,
x2 ,
+ x 3 ≤ 40
≤ 50
x3 ,
≥0
92
Esercizi
Soluzioni ad alcune domande
Es 7.
Dato il seguente problema di programmazione lineare risolverlo scegliendo
la variabile entrante in base secondo la regola dello steepest descendent.
Verificare che al sesto passo si entra in una situazione di cycling ed
applicare quindi la regola di Bland.
Es 4.
Es 5.
Es 6.
la base {3,5,6} è ottima
la base {1,2,4} è ottima
la base {1,3,5} è ottima
max 0.75 x1-150x2+ 0.02x3- 6x4
0.25 x1 - 60x2+ 0.04x3+ 6x4 ≤0
0.5 x1 - 90x2+ 0.02x3+ 3x4 ≤0
x3 ≤1
x1 x2 x3 x4 ≥0
esempio tratto da H.J. Greenberg. Mathematical Programming Glossary. World Wide Web,
http://www.cudenver.edu/~hgreenbe/glossary/glossary.html, 1996-2000.
Raffaele Pesenti
93
Raffaele Pesenti
94