Teoria della Programmazione
Lineare
I problemi di PL in forma canonica
In forma scalare:
max Pn
j=1 cjxj Pn
j=1 aijxj ≤ bi i = 1, . . . , m xj ≥ 0 j = 1, . . . , n
Teoria della Programmazione Lineare – p. 2/89
Prodotto scalare tra vettori
Vettore di dimensione n
p = (p1 · · · pn) Dato un altro vettore di dimensione n
q = (q1 · · · qn)
Il prodotto scalare tra i due vettori è un valore scalare:
pq =
Xn j=1
pjqj
Esempio:
Proprietà
Siano p, q1, q2 ∈ Rn e α, β ∈ R. Allora:
p(αq1 + βq2) = α(pq1) + β(pq2)
Esempio:
p = (2 3 6) q1 = (1 2 5) q2 = (6 0 3) α = 2 β = 3
p(αq1 + βq2) = 2 ∗ 20 + 3 ∗ 4 + 6 ∗ 19 = 166
α(pq1) + β(pq2) = 2 ∗ 38 + 3 ∗ 30 = 166
Teoria della Programmazione Lineare – p. 4/89
Generalizzazione della proprietà
Dati i vettori p, q1, q2, . . . , qt ∈ Rn e gli scalari α1, α2, . . . , αt ∈ R, si ha che
p[α1q1 + α2q2 + · · · + αtqt] = p
" t X
i=1
αiqi
#
=
Xt i=1
αi(pqi)
Prodotto matrice-vettore
Data una matrice A di ordine m × n (m righe e n colonne)
a11 . . . a1n ... ... ... am1 . . . amn
ed un vettore p di dimensione n
p = (p1 · · · pn)
Il prodotto matrice-vettore è un vettore di dimensione m la cui componente i è il prodotto scalare tra la i-esima riga di A e il vettore p:
Xn j=1
aijpj
Teoria della Programmazione Lineare – p. 6/89
Prodotto vettore-matrice
Data una matrice A di ordine m × n (m righe e n colonne)
a11 . . . a1n ... ... ... am1 . . . amn
ed un vettore q di dimensione m
q = (q1 · · · qm)
Il prodotto vettore-matrice è un vettore di dimensione n la cui componente j è il prodotto scalare tra la j-esima
colonna di A e il vettore q:
Esempi
A =
"
7 6 3 2 4 8
#
p = (3 8 7) q = (4 5)
Ap = (7 ∗ 3 + 6 ∗ 8 + 3 ∗ 7 2 ∗ 3 + 4 ∗ 8 + 8 ∗ 7) = (90 94) qA = (4 ∗ 7 + 5 ∗ 2 4 ∗ 6 + 5 ∗ 4 4 ∗ 3 + 5 ∗ 8) = (38 44 52)
Teoria della Programmazione Lineare – p. 8/89
PL in forma canonica
Introduciamo i seguenti vettori:
c ∈ Rn: vettore di dimensione n con componenti cj, j = 1, . . . , n, ovvero:
c = (c1 c2 · · · cn);
x ∈ Rn: vettore di variabili di dimensione n con componenti xj, j = 1, . . . , n, ovvero:
x = (x1 x2 · · · xn);
ai ∈ Rn, i = 1, . . . , m: m vettori di dimensione n con componenti aij, j = 1, . . . , n, ovvero:
PL in forma canonica
Osservando che
cx =
Xn j=1
cjxj
e
aix =
Xn j=1
aijxj
abbiamo la seguente rappresentazione vettoriale per un problema di PL in forma canonica:
max cx
aix ≤ bi i = 1, . . . , m x ≥ 0
Teoria della Programmazione Lineare – p. 10/89
PL in forma canonica
Si consideri la matrice A ∈ Rm×n che ha tante righe quanti sono i vincoli del problema (m) e la cui i-esima riga è il
vettore ai e del vettore b = (b1 · · · bm) ∈ Rm di dimensione m con componenti bi, i = 1, . . . , m. Osservando che
Ax = (a1x . . . amx)
possiamo scrivere la rappresentazione matriciale del problema di PL in forma canonica:
max cx
Ax ≤ b x ≥ 0
Esempio degli aiuti umanitari
Il vettore c = (14 5 4)
Il vettore di variabili x = (x1 x2 x3) I vettori ai, i = 1, 2, 3
a1 = (10 30 20) a2 = (10 20 40) a3 = (30 10 5) Il vettore b = (5100 8000 1805)
La matrice A
10 30 20 10 20 40 30 10 5
Teoria della Programmazione Lineare – p. 12/89
PL canonici ≡ PL generici
Osservazione Ogni problema di PL in forma generica può essere trasformato in uno equivalente in forma canonica.
Trasformazione da min a max
min cx = − max −cx
Trasformazione vincolo ≥ in vincolo ≤
aix ≥ bi ⇔ −aix ≤ −bi
Trasformazione vincolo = in due vincoli ≤
aix = bi ⇔ aix ≤ bi, aix ≥ bi ⇔ aix ≤ bi, −aix ≤ −bi
PL canonici ≡ PL generici
Sostituzione variabile ≤ 0 con variabile ≥ 0 Data xi ≤ 0, effettuare il cambio di variabile xi = −x′i, dove x′i ≥ 0
Sostituzione variabile libera in segno con due variabili ≥ 0 Data xi libera in segno, effettuare il cambio di variabile xi = x′′i − x′i, dove x′i, x′′i ≥ 0
Teoria della Programmazione Lineare – p. 14/89
Un esempio
Si trasformi il seguente problema di PL in forma generica in un problema di PL in forma canonica
min x1 + x2 + x3 x1 + 2x2 − x3 ≤ 3 x1 + 4x2 + 5x3 = 5
x1 − 2x2 + x3 ≥ 3 x1 ≥ 0
x2 ≤ 0
x3 libera in segno
Insiemi convessi
Un insieme C ⊆ Rn si dice convesso se
∀ x1, x2 ∈ C ∀ λ ∈ [0, 1] : λx1 + (1 − λ)x2 ∈ C,
ovvero se dati due punti qualsiasi in C, il segmento che li congiunge è anch’esso completamente contenuto in C.
Teoria della Programmazione Lineare – p. 16/89
Insiemi limitati e chiusi
Un insieme C si dice limitato se esiste una sfera di raggio finito R che lo contiene.
Un insieme C si dice chiuso se contiene la sua frontiera.
Semispazi e iperpiani
Si definisce semispazio in Rn l’insieme di punti che soddisfa una disequazione lineare in Rn:
Xn j=1
wjxj ≤ v
(in forma vettoriale: wx ≤ v).
Si definisce iperpiano in Rn l’insieme di punti che soddisfa un’equazione lineare in Rn:
Xn j=1
wjxj = v
(in forma vettoriale: wx = v).
Teoria della Programmazione Lineare – p. 18/89
Poliedri e politopi
Si definisce poliedro l’intersezione di un numero finito di
semispazi e/o iperpiani. Se il poliedro è limitato esso viene chiamato politopo.
La regione ammissibile S a
La regione ammissibile Sa di un problema di PL in forma canonica
Sa = {x ∈ Rn : aix ≤ bi, i = 1, . . . , m, x ≥ 0}.
è un poliedro.
Semispazi e iperpiani sono insiemi chiusi
L’intersezione di un numero finito di insiemi chiusi è un insieme chiuso
⇓
I poliedri (e quindi Sa) sono insiemi chiusi
Teoria della Programmazione Lineare – p. 20/89
Convessità
Siano x, y ∈ Sa, ovvero
aix ≤ bi i = 1, . . . , m x ≥ 0, e
aiy ≤ bi i = 1, . . . , m y ≥ 0.
Per ogni λ ∈ (0, 1) e per ogni i ∈ {1, . . . , m} avremo:
ai[λx + (1 − λ)y] =
= λ|{z}
>0
aix
|{z}
≤bi
+ (1 − λ)
| {z }
>0
aiy
|{z}
≤bi
≤
Continua
Inoltre:
|{z}λ
>0
|{z}x
≥0
+ (1 − λ)
| {z }
>0
y
|{z}≥0
≥ 0.
Quindi:
λx + (1 − λ)y ∈ Sa.
⇓
La regione ammissibile Sa è un insieme convesso.
Teoria della Programmazione Lineare – p. 22/89
Limitatezza e illimitatezza
La regione ammissibile Sa può essere:
= ∅
max x1 + x2 x1 ≤ −1 x1 + x2 ≤ 1
x1, x2 ≥ 0 un poliedro limitato (politopo)
max x1 + x2 x1 + x2 ≤ 1
x1, x2 ≥ 0
Continua
un poliedro illimitato
max x1 + x2 x1 − x2 ≤ 0
x1, x2 ≥ 0
Teoria della Programmazione Lineare – p. 24/89
Ricapitolando ...
... la regione ammissibile Sa di un problema di PL è un poliedro e come tale è un insieme chiuso e convesso.
Inoltre, può essere un insieme vuoto, un insieme limitato (politopo) oppure un insieme illimitato.
Vertici di S a
Si definisce vertice di Sa un punto x ∈ Sa tale che non esistono due punti distinti x1, x2 ∈ Sa, x1 6= x2, tali che
x = 1
2x1 + 1
2x2.
ovvero x è il punto medio del segmento che congiunge x1 e x2.
Teoria della Programmazione Lineare – p. 26/89
Alcuni risultati
Teorema
Dato un problema di PL in forma canonica, se Sa 6= ∅, allora Sa contiene almeno un vertice.
Osservazione
Sa ha sempre un numero finito di vertici.
Raggi
Nel caso Sa sia un poliedro illimitato possiamo anche introdurre le definizioni di raggio e raggio estremo.
Si definisce raggio di Sa un vettore r tale che
∀ x0 ∈ Sa ∀ λ ≥ 0 : x0 + λr ∈ Sa, cioè la semiretta con origine in x0 e direzione r è
completamente contenuta in Sa per qualsiasi punto x0 ∈ Sa.
Teoria della Programmazione Lineare – p. 28/89
Raggi estremi
Un raggio r di Sa si definisce raggio estremo di Sa se non esistono altri due raggi r1 e r2 di Sa con direzioni distinte, ovvero
r1 6= µr2 ∀ µ ∈ R, tali che
r = 1
2r1 + 1 2r2.
Osservazione
Sa ha sempre un numero finito di raggi estremi.
Teorema di rappresentazione di S a
Teorema Sia dato un problema di PL in forma canonica con Sa 6= ∅. Siano v1, . . . , vk i vertici di Sa e, nel caso in cui Sa sia un poliedro illimitato, siano r1, . . . , rh i raggi estremi di Sa. Allora
x ∈ Sa se e solo se
∃ λ1, . . . , λk ≥ 0,
Xk i=1
λi = 1, ∃ µ1, . . . , µh ≥ 0
tali che
x =
Xk i=1
λivi +
Xh j=1
µjrj.
Teoria della Programmazione Lineare – p. 30/89
Ovvero ...
... i punti in Sa sono tutti e soli i punti ottenibili come somma di
una combinazione convessa dei vertici di Sa
una combinazione lineare con coefficienti non negativi dei raggi estremi di Sa
Quindi un numero finito di oggetti (vertici e raggi estremi) mi permettono di rappresentare tutto l’insieme Sa.
L’insieme delle soluzioni ottime S ott
Insieme soluzioni ottime
Sott = {x∗ ∈ Sa : cx∗ ≥ cx ∀ x ∈ Sa},
Sott ⊆ Sa, quindi Sa = ∅ ⇒ Sott = ∅.
Teoria della Programmazione Lineare – p. 32/89
Una, nessuna, infinite
Osservazione
Se Sott è un insieme finito e non vuoto, Sott contiene un solo punto.
Dimostrazione Per assurdo sia Sott un insieme finito e
contenga più di un punto. Siano x1, x2 ∈ Sott, x1 6= x2, due punti distinti di Sott.
Continua
Per l’ottimalità di x1 e x2 si deve avere cx1 = cx2. Per la convessità di Sa e x1, x2 ∈ Sa:
λx1 + (1 − λ)x2 ∈ Sa ∀ λ ∈ (0, 1),
Per la linearità della funzione obiettivo ∀ λ ∈ (0, 1):
c[λx1+(1−λ)x2] = λcx1+(1−λ)cx2 = λcx1+(1−λ)cx1 = cx1. Quindi:
λx1 + (1 − λ)x2 ∈ Sott ∀ λ ∈ (0, 1)
cioè tutto il segmento che congiunge x1 e x2 è contenuto in Sott, il che contraddice la finitezza dell’insieme Sott.
Teoria della Programmazione Lineare – p. 34/89
Le diverse forme possibili di S ott
Caso 1 Sa = ∅ ⇒ Sott = ∅.
Caso 2 Sa 6= ∅ e politopo.
Politopo è insieme chiuso e limitato, funzione obiettivo è lineare e quindi continua ⇒ (Teorema di Weierstrass) Sott 6= ∅.
Sono possibili due sottocasi.
Caso 2.1 Sott è costituito da un solo punto.
max 2x1 + x2 x1 + x2 ≤ 1
x1, x2 ≥ 0
Continua
Caso 2.2 Sott è costituito da un insieme infinito e limitato di punti.
max x1 + x2 x1 + x2 ≤ 1
x1, x2 ≥ 0
Teoria della Programmazione Lineare – p. 36/89
Continua
Caso 3 Sa 6= ∅ e poliedro illimitato. Sono possibili quattro sottocasi.
Caso 3.1 Sott = ∅ in quanto l’obiettivo è illimitato, ovvero esiste una sequenza infinita di punti {xk} di Sa lungo cui la funzione obiettivo cresce a +∞. Formalmente:
∃ {xk} : xk ∈ Sa ∀ k e cxk → +∞ k → +∞.
max x1 + x2
−x1 + x2 ≤ 0 x1 − x2 ≤ 1
x ≥ 1
Continua
Caso 3.2 Sott è costituito da un solo punto.
max −x1
−x1 + x2 ≤ 0 x1 − x2 ≤ 1
x2 ≥ 1 x1, x2 ≥ 0
Teoria della Programmazione Lineare – p. 38/89
Continua
Caso 3.3 Sott è costituito da un insieme infinito e limitato di punti.
max −x2
−x1 + x2 ≤ 0 x1 − x2 ≤ 1
x2 ≥ 1 x1, x2 ≥ 0
Continua
Caso 3.4 Sott è costituito da un insieme infinito e illimitato di punti.
max x1 − x2
−x1 + x2 ≤ 0 x1 − x2 ≤ 1
x2 ≥ 1 x1, x2 ≥ 0
Teoria della Programmazione Lineare – p. 40/89
Un lemma
Lemma
Dato un problema di PL in forma canonica, se Sott 6= ∅, allora per ogni raggio estremo r di Sa si ha:
cr ≤ 0.
Dimostrazione
Per assurdo supponiamo esista un raggio estremo r tale che
cr > 0 Sott 6= ∅ ⇒ Sa 6= ∅.
Sia x0 ∈ Sa. Per definizione di raggio avremo che
∀ λ ≥ 0 : x0 + λr ∈ Sa. Valore funzione obiettivo in punti x0 + λr:
c(x0 + λr) = cx0 + λ cr
|{z}>0
|{z}→
λ→+∞
+∞
Allora Sott = ∅ in quanto l’obiettivo è illimitato sulla regione ammissibile, il che contraddice Sott 6= ∅.
Teoria della Programmazione Lineare – p. 42/89
Teorema fondamentale della PL
Teorema
Dato un problema di PL in forma canonica, se Sott 6= ∅, allora Sott contiene almeno un vertice di Sa.
Dimostrazione
Siano v1, . . . , vk i vertici di Sa e, nel caso in cui Sa sia un
poliedro illimitato, indichiamo con r1, . . . , rh i raggi estremi di Sa.
Se Sott 6= ∅, sia x∗ ∈ Sott.
Per assurdo supponiamo che
v1, . . . , vk 6∈ Sott da cui:
cvi < cx∗ i = 1, . . . , k
Teoria della Programmazione Lineare – p. 44/89
Continua
Per il teorema di rappresentazione di Sa, x∗ ∈ Sa implica che
∃ λ∗1, . . . , λ∗k ≥ 0,
Xk i=1
λ∗i = 1, ∃ µ∗1, . . . , µ∗h ≥ 0
tali che
x∗ =
Xk i=1
λ∗i vi +
Xh j=1
µ∗jrj.
Quindi:
cx∗ = c
Xk
λ∗i vi +
Xh
µ∗jrj
Continua
Per la linearità della funzione obiettivo
cx∗ =
Xk i=1
λ∗i (cvi) +
Xh j=1
µ∗j(crj).
Dal lemma precedente:
crj ≤ 0 j = 1, . . . , h.
Teoria della Programmazione Lineare – p. 46/89
Continua
Quindi:
cx∗ =
Xk i=1
λ∗i (cvi) +
Xh j=1
µ∗j
|{z}≥0
(crj)
| {z }
≤0
.
da cui:
cx∗ ≤
Xk i=1
λ∗i (cvi).
Continua
Da cvi < cx∗, ∀ i segue che:
cx∗ ≤
Xk i=1
λ∗i (cvi)
| {z }
<cx∗
<
Xk i=1
λ∗i (cx∗).
NB: lo strettamente minore vale perchè almeno uno dei λ∗i è strettamente positivo in quanto la loro somma deve essere pari a 1.
Quindi:
cx∗ < (cx∗)
Xk i=1
λ∗i = cx∗.
il che è assurdo.
Teoria della Programmazione Lineare – p. 48/89
Un commento
Il teorema fondamentale della PL è alla base della
procedura di risoluzione che descriveremo, l’algoritmo del simplesso.
Infatti, tale algoritmo ricerca la soluzione ottima cercando di spostarsi ad ogni iterazione in modo intelligente da un
vertice all’altro di Sa. Per modo intelligente si intende che l’algoritmo tenta di spostarsi ad una data iterazione da un vertice a uno con valore della funzione obiettivo maggiore.
I problemi di PL in forma standard
I problemi di PL in forma standard hanno la seguente formulazione:
max cx
aix = bi i = 1, . . . , m x ≥ 0
o, equivalentemente, in forma matriciale:
max cx
Ax = b x ≥ 0
Teoria della Programmazione Lineare – p. 50/89
Un’osservazione
Osservazione
Ogni problema di PL in forma canonica può essere trasformato in uno equivalente in forma standard.
Dimostrazione
Problema di PL in forma canonica
max cx
aix ≤ bi i = 1, . . . , m x ≥ 0
aix ≤ bi ⇔ aix + yi = bi, yi ≥ 0.
Quindi, il problema di PL in forma canonica è equivalente al seguente:
max cx
aix + yi = bi i = 1, . . . , m x ≥ 0
yi ≥ 0 i = 1, . . . , m
che è in forma standard. Teoria della Programmazione Lineare – p. 52/89
Continua
Ogni problema di PL può essere ricondotto ad uno equivalente in forma canonica.
Ogni problema in forma canonica può essere ricondotto ad uno equivalente in forma standard.
Quindi: ogni problema di PL può essere ricondotto ad uno equivalente in forma standard.
NB: nella pratica si passa direttamente da un problema di PL in forma generica ad uno equivalente in forma standard, senza passare necessariamente attraverso un problema in forma canonica.
Un esempio
Si trasformi il seguente problema di PL in forma generica in un problema di PL in forma standard
min x1 + x2 + x3 x1 + 2x2 − x3 ≤ 3 x1 + 4x2 + 5x3 = 5
x1 − 2x2 + x3 ≥ 3 x1 ≥ 0
x2 ≤ 0
x3 libera in segno
Teoria della Programmazione Lineare – p. 54/89
Ipotesi aggiuntiva
Si richiede che la matrice dei vincoli A ∈ Rm×n abbia rango (= numero di righe linearmente indipendenti = numero di colonne linearmente indipendenti) pari a m, il numero delle sue righe, il che equivale a richiedere che:
non ci sono righe di A ottenibili come combinazioni lineari di altre righe di A;
esistono m colonne della matrice A che formano una matrice quadrata invertibile.
NB: Si può dimostrare che anche questa non è una
condizione restrittiva e che ci si può sempre ricondurre ad essa.
Esempi
A1 =
1 2 1 3 2 1 3 4 3 0 5 5
Rango di A1 < m = 3
A2 =
"
1 2 2 1 −1 3 7 1 3 1
#
Rango di A2 = m = 2
Teoria della Programmazione Lineare – p. 56/89
Base di un problema di PL
Si definisce base di un problema di PL in forma standard un sottinsieme:
B = {xi1, . . . , xim}
di m delle n variabili del problema di PL con la proprietà che la matrice AB ∈ Rm×m ottenuta considerando le sole
colonne di A relative alle variabili xik, k = 1, . . . , m, sia invertibile.
Le variabili dell’insieme B verranno dette variabili in base, quelle al di fuori di B verranno raggruppate nell’insieme:
N = {xim+1, . . . , xin}
Un esempio
Dato
max 3x1 + 4x2 + 2x3 + 2x4 + x5 x1 + 2x2 + 2x3 + x4 − x5 = 2 x1 + 2x2 + x3 + 4x4 − 2x5 = 2
x1, x2, x3, x4, x5 ≥ 0 Matrice dei vincoli
A =
"
1 2 2 1 −1 1 2 1 4 −2
#
Teoria della Programmazione Lineare – p. 58/89
Continua
B1 = {x1, x2} → non è una base. Infatti
AB1 =
"
1 2 1 2
#
non è invertibile
Invece, B2 = {x1, x3} è una base in quanto:
AB2 =
"
1 2 1 1
#
è invertibile
Allo stesso modo si verifichi che B3 = {x3, x4} e B4 = {x4, x5} sono basi.
Riformulazione rispetto alla base B
Data una base B, indichiamo con:
xB ∈ Rm il vettore delle variabili in base
xN ∈ Rn−m il vettore delle variabili fuori base
cB ∈ Rm il vettore dei costi relativi alle variabili in base cN ∈ Rn−m il vettore dei costi relativi alle variabili fuori base
AN ∈ Rm×(n−m) la matrice ottenuta da A considerando le sole colonne relative alle variabili fuori base.
Teoria della Programmazione Lineare – p. 60/89
Nell’esempio
Con la base B = {x1, x3} abbiamo:
xB = (x1 x3)
xN = (x2 x4 x5) cB = (3 2)
cN = (4 2 1)
AN =
"
2 1 −1 2 4 −2
#
Riscrittura della riformulazione
Possiamo ora riscrivere il problema di PL in forma standard nella seguente forma equivalente:
max cBxB + cNxN
ABxB + ANxN = b xB, xN ≥ 0
e quindi anche in questo modo:
max cBxB + cNxN ABxB = b − ANxN
xB, xN ≥ 0
Teoria della Programmazione Lineare – p. 62/89
Nell’esempio
max
cBxB
z }| { 3x1 + 2x3 +
cNxN
z }| {
4x2 + 2x4 + x5
ABxB
z }| { x1 + 2x3 +
ANxN
z }| {
2x2 + x4 − x5 = 2 x1 + x3 + 2x2 + 4x4 − 2x5 = 2
x1, x3
| {z }
xB
, x2, x4, x5
| {z }
xN
≥ 0
E quindi ...
max
cBxB
z }| { 3x1 + 2x3 +
cNxN
z }| {
4x2 + 2x4 + x5
ABxB
z }| { x1 + 2x3 =
b−ANxN
z }| {
2 − 2x2 − x4 + x5 x1 + x3 = 2 − 2x2 − 4x4 + 2x5
x1, x3
| {z }
xB
, x2, x4, x5
| {z }
xN
≥ 0
Teoria della Programmazione Lineare – p. 64/89
Continua
Moltiplichiamo ora i vincoli di uguaglianza per A−1B : max cBxB + cNxN
A−1B ABxB = A−1B b − A−1B ANxN xB, xN ≥ 0
e quindi da A−1B ABxB = IxB = xB
max cBxB + cNxN
xB = A−1B b − A−1B ANxN xB, xN ≥ 0
Questo equivale a risolvere il sistema dato dai vincoli di
Nell’esempio
max 3x1 + 2x3 + 4x2 + 2x4 + x5 x1 = 2 − 2x2 − 7x4 + 3x5
x3 = 0 + 3x4 − x5 x1, x3, x2, x4, x5 ≥ 0
Teoria della Programmazione Lineare – p. 66/89
Riformulazione rispetto alla base B
Infine, sostituendo xB nell’obiettivo:
cBxB + cNxN = cB A−1B b − A−1B ANxN
+ cNxN da cui:
max cBA−1B b + (cN − cBA−1B AN)xN xB = A−1B b − A−1B ANxN
xB, xN ≥ 0
Questa riformulazione viene detta riformulazione del problema di PL rispetto alla base B.
NB: tale riformulazione è del tutto equivalente al problema
Nell’esempio
Riformulazione rispetto alla base B = {x1, x3}: max 6 − 2x2 − 13x4 + 8x5
x1 = 2 − 2x2 − 7x4 + 3x5 x3 = 0 + 3x4 − x5
x1, x3, x2, x4, x5 ≥ 0
Teoria della Programmazione Lineare – p. 68/89
Soluzioni di base
Si definisce soluzione di base associata alla base B, la seguente soluzione del sistema di vincoli di uguaglianza ottenuta ponendo xN = 0:
xB = A−1B b xN = 0.
Nell’esempio:
x1 = 2 x3 = 0 x2 = x4 = x5 = 0
Ammissibilità e non degenerazione
Se A−1B b ≥ 0 la soluzione di base si dice ammissibile.
Questo vuol dire che appartiene alla regione ammissibile del problema di PL in quanto, oltre a soddisfare i vincoli di uguaglianza del problema, soddisfa anche quelli di non negatività delle variabili.
Se inoltre si ha A−1B b > 0 si parla di soluzione di base non degenere, altrimenti si parla di soluzione di base degenere.
Teoria della Programmazione Lineare – p. 70/89
Nell’esempio
B2 = {x1, x3} → soluzione di base ammissibile e degenere B3 = {x3, x4}: la soluzione di base è
x3 = 6/7 x4 = 2/7 x1 = x2 = x5 = 0, che è ammissibile e non degenere
B4 = {x4, x5}: la soluzione di base è
x4 = −1 x5 = −3 x1 = x2 = x3 = 0, che è non ammissibile.
Osservazione
Data una soluzione di base ammissibile e non degenere esiste un’unica base che la rappresenta, mentre una
soluzione di base ammissibile e degenere è rappresentata da più basi.
Si verifichi, ad esempio, che la base B5 = {x1, x4} ha come soluzione di base associata:
x1 = 2 x4 = 0 x2 = x3 = x5 = 0, che è la stessa associata alla base B2.
Teoria della Programmazione Lineare – p. 72/89
Ma ...
... cosa hanno a che fare le basi e le soluzioni di base con il teorema fondamentale della PL?
La risposta ci viene dalla seguente osservazione.
Osservazione L’insieme dei vertici di Sa coincide con l’insieme delle soluzioni di base ammissibili del problema di PL.
In pratica, vertici e di soluzioni di base ammissibili sono la stessa cosa vista da due punti di vista diversi: quello
geometrico (i vertici) e quello algebrico (le soluzioni di base ammissibili).
Basi adiacenti
Due basi B′ e B′′ si definiscono adiacenti se hanno m − 1 variabili uguali e differiscono per una sola variabile.
Nell’esempio le basi B3 = {x3, x4} e B4 = {x4, x5} sono adiacenti, mentre non lo sono B2 = {x1, x3} e B4.
Teoria della Programmazione Lineare – p. 74/89
Soluzioni di base adiacenti
Due soluzioni di base distinte si definiscono adiacenti se
esistono due basi B′ e B′′ che le rappresentano e che sono tra loro adiacenti.
Si noti che due basi adiacenti non corrispondono
necessariamente a due soluzioni di base adiacenti. Esse infatti possono corrispondere alla stessa soluzione di base come accade, ad esempio, con le basi B2 = {x1, x3} e
B5 = {x1, x4}.
Riformulazione rispetto alla base B
Sia data la base:
B = {xi1, . . . , xim}.
con
N = {xim+1, . . . , xin}
l’insieme delle variabili fuori base. Abbiamo visto che, data la base B, la riformulazione del problema di PL rispetto alla base B è data da
max cBA−1B b + (cN − cBA−1B AN)xN xB = A−1B b − A−1B ANxN
xB, xN ≥ 0
Teoria della Programmazione Lineare – p. 76/89
Continua
Indichiamo con:
γ0 il valore cBA−1B b;
γj, j = 1, . . . , n − m, le componenti del vettore cN − cBA−B1AN;
βr, r = 1, . . . , m, le componenti del vettore A−1B b;
αrj, r = 1, . . . , m, j = 1, . . . , n − m, le componenti della matrice −A−1B AN
Continua
In forma scalare possiamo riscrivere la riformulazione rispetto alla base B nel seguente modo:
max γ0 + Pn−m
j=1 γjxim+j xi1 = β1 + Pn−m
j=1 α1jxim+j
· · · xik = βk + Pn−m
j=1 αkjxim+j
· · ·
xim = βm + Pn−m
j=1 αmjxim+j x1, . . . , xn ≥ 0
Teoria della Programmazione Lineare – p. 78/89
Nell’esempio
Riformulazione rispetto alla base B2 = {x1, x3}: max 6 − 2x2 − 13x4 + 8x5
x1 = 2 − 2x2 − 7x4 + 3x5 x3 = 0 + 3x4 − x5
x1, x3, x2, x4, x5 ≥ 0
Passaggio ad una base adiacente
Supponiamo ora di voler passare dalla base B alla base adiacente B′ ottenuta rimuovendo da B la variabile xik,
1 ≤ k ≤ m, e sostituendola con la variabile fuori base xim+h, 1 ≤ h ≤ n − m, ovvero:
B′ = {xi1, . . . , xik−1, xim+h, xik+1, . . . , xim}.
La prima domanda che ci dobbiamo porre è :
quando B′ è effettivamente una base. Perché lo sia si deve avere che AB′ è invertibile.
Teoria della Programmazione Lineare – p. 80/89
Continua
Si ha che AB′ è invertibile e quindi B′ è una base se e solo
se nella riformulazione associata alla base B il coefficiente di xim+h nell’equazione relativa a xik è diverso da 0, ovvero se e solo se:
αkh 6= 0.
Nell’esempio:
{x1, x2} non è una base {x1, x5} è una base
L’operazione di cardine
Tale operazione consente di passare dalla riformulazione rispetto alla base B a quella rispetto alla base adiacente B′. Per fare questo dovremo compiere le seguenti operazioni.
Ricavare xim+h dall’equazione relativa a xik, cioè:
xim+h = − βk
αkh + 1
αkh xik −
n−mX
j=1, j6=h
αkj
αkh xim+j. sostituire ogni occorrenza della variabile xim+h nelle
restanti equazioni e nell’obiettivo con la parte destra di tale equazione
Teoria della Programmazione Lineare – p. 82/89
Esempio
Dalla riformulazione rispetto a B2 = {x1, x3} a quella rispetto a B6 = {x1, x5}
Ricavo x5 dall’equazione relativa a x3 x5 = 0 − x3 + 3x4
Sostituisco la parte destra dell’equazione nei restanti vincoli e nell’obiettivo
max 6 − 2x2 − 13x4 + 8(0 − x3 + 3x4) x1 = 2 − 2x2 − 7x4 + 3(0 − x3 + 3x4)
x5 = 0 − x3 + 3x4 x1, x3, x2, x4, x5 ≥ 0
Riformulazione rispetto a B 6 = {x 1 , x 5 }
max 6 − 2x2 − 8x3 + 11x4 x1 = 2 − 2x2 + 2x4 − 3x3
x5 = 0 − x3 + 3x4 x1, x3, x2, x4, x5 ≥ 0
Teoria della Programmazione Lineare – p. 84/89
Nota bene
Per poter recuperare dalle riformulazioni alcune
informazioni (nel seguito vedremo, ad esempio, come
sfruttare la riformulazione rispetto a una base B per poter ottenere la matrice A−1B ) è necessario mantenere un ordine tra le variabili in una base. Quindi se nella base B′ la
variabile xim+h sostituisce la variabile xik a cui corrisponde la k-esima equazione della riformulazione rispetto a B,
nella riformulazione rispetto a B′ l’equazione relativa alla variabile xim+h dovrà ancora essere la k-esima, mentre la posizione delle equazioni relative a tutte le altre variabili deve rimanere invariata rispetto alla precedente
riformulazione.
Nell’esempio ...
... la variabile x5 ha preso il posto della x3 e l’equazione relativa alla x5 è stata messa nella stessa posizione (la
seconda) in cui si trovava quella della x3, mentre la restante equazione ha mantenuto la posizione originaria.
Teoria della Programmazione Lineare – p. 86/89
Un altro esempio
Passaggio da B6 = {x1, x5} a B4 = {x4, x5} Ricavo x4 dall’equazione relativa a x1
x4 = −1 + 1/2x1 + x2 + 3/2x3
Sostituisco la parte destra dell’equazione nei restanti vincoli e nell’obiettivo
max 6 − 2x2 − 8x3 + 11(−1 + 1/2x1 + x2 + 3/2x3) x4 = −1 + 1/2x1 + x2 + 3/2x3
x5 = 0 − x3 + 3(−1 + 1/2x1 + x2 + 3/2x3) x1, x3, x2, x4, x5 ≥ 0
Continua
Riformulazione rispetto a B4 = {x4, x5}:
max −5 + 11/2x1 + 9x2 + 17/2x3 x4 = −1 + 1/2x1 + x2 + 3/2x3 x5 = −3 + 3/2x1 + 3x2 + 7/2x3
x1, x3, x2, x4, x5 ≥ 0
Teoria della Programmazione Lineare – p. 88/89
Nota bene
Le operazioni di cardine che abbiamo eseguito sugli
esempi ci hanno consentito di passare da una base ad una adiacente e, nel secondo esempio, anche da una soluzione di base ad una adiacente. Tuttavia, nel secondo caso
siamo passati da una soluzione di base ammissibile (quella associata a B6) ad una non ammissibile (quella associata a B4). Nell’algoritmo di risoluzione che ci apprestiamo a
discutere la scelta della base adiacente verso cui muoversi non verrà fatta a caso come abbiamo fatto nei precedenti esempi, ma sarà guidata da regole precise che
fondamentalmente ci consentiranno di spostarsi tra vertici della regione ammissibile migliorando il valore della
funzione obiettivo.