Programmazione Lineare
Andrea Scozzari
a.a. 2013-2014
March 18, 2014
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
1 / 18
Teorema Fondamentale della Programmazione Lineare
Si consideri il seguente problema generale di PL
max c T x
Ax ≤ b
Teorema
Si supponga che il poliedro P = {x ∈ Rn : Ax ≤ b} non contenga rette.
Allora una e una sola delle seguenti tre affermazioni è vera:
1. Il problema è inammissibile, ovvero P = ∅;
2. Il problema è illimitato superiormente;
3. Il problema ammette soluzioni ottime e almeno una di queste
soluzioni è un vertice del poliedro P.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
2 / 18
Teorema Fondamentale della Programmazione Lineare
Il teorema ci dice che in pratica si possono verificare solo le seguenti
situazioni:
1. Il problema ammette soluzione ottima (che può essere o non essere
unica) in un vertice del pliedro che delimita la regione ammissibile;
2. il problema non ammette soluzione ottima perché
2.1 la regione ammissibile è vuota
2.2 la regione ammissibile è illimitata e la funzione obiettivo è illimitata
superiormente (se il problema è di massimizzazione) o illimitata
inferiormente (se il problema è di minimizzazione).
Il teorema e la proprietà 1. è ci dice che la ricerca delle soluzioni ottime di
un problema di PL può restringersi all’analisi dei soli vertici del poliedro P.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
3 / 18
Metodo del Simplesso: Teorema di caratterizzazione delle SBA
Teorema
Sia dato un problema di PL in forma standard e sia Ax = b il relativo
sistema dei vincoli con A ∈ Rm×n e rango(A) = m e x ≥ 0. x è una SBA
per il sistema dato se e solo se le colonne di A = {a1 , a2 , . . . , an } relative
alle componenti positive di x sono linearmente indipendenti (diremo anche
che x usa colonne linearmente indipendenti della matrice A).
NOTA: Il fatto che rango(A) = m implica m ≤ n e garantisce l’esistenza di almeno una
sottomatrice B non singolare.
Dimostrazione
Necessità (⇒): Supponiamo che x sia una SBA. Allora esiste una base B tale che
xN = 0,
BxB = b
j
Pertanto x usa colonne a con j ∈ B. Dato che B è non singolare e le sue colonne sono
linearmente indipendenti, allora anche le colonne aj ”usate” da x sono linearmente
indipendenti.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
4 / 18
Metodo del Simplesso
Dimostrazione
Sufficienza (⇐): Supponiamo che x sia una soluzione e che usi k colonne
linearmente indipendenti di A. Allora k ≤ m (m è il rango di A), e
supponiamo che queste colonne siano le prime k, a1 , a2 , . . . , ak . Dato che
x è comunque una soluzione del sistema allora vale:
a1 x1 +a2 x2 +. . .+ak xk = b
x1 , x2 , . . . , xk > 0
e
xk+1 , xk+2 , . . . , xn = 0
Pertanto vale anche:
a1 x1 + a2 x2 + . . . + an xn = b
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
5 / 18
Metodo del Simplesso
Dimostrazione
Si hanno 2 casi:
Caso 1: k = m
In questo caso la sottomatrice che fa riferimento alle colonne
a1 , a2 , . . . , am è una matrice di base B dato le colonne sono linearmente
indipendenti. Per cui B è invertibile e la soluzione x può riscriversi
xB = B −1 b ≥ 0,
Andrea Scozzari (a.a. 2013-2014)
xN = 0
Programmazione Lineare
March 18, 2014
6 / 18
Metodo del Simplesso
Dimostrazione
Caso 2: k < m
Dato che il rango di A è m, alle k colonne aj (linearmente indipendenti) ne
possiamo aggiungere m − k per ottenere una base
a1 , a2 , . . . , ak , ak+1 , . . . , am dello spazio vettoriale generato dalle colonne di
A. Consideriamo B la sottomatrice ottenuta estraendo tali colonne da A e
per l’ipotesi che x sia una soluzione del sistema avremo
a1 x1 + a2 x2 + . . . + ak xk + ak+1 xk+1 + . . . + am xm = b
con ak+1 xk+1 , . . . , am xm tutti nulli e xN = 0 per ipotesi. Allora la
soluzione x = (xB , xN ) è una SBA ed in particolare essa è degenere con le
componenti xk+1 , . . . , xm tutte nulle.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
7 / 18
Metodo del Simplesso
Teorema
Sia A una matrice m × n con m ≤ n e rango(A) = m. Dato il sistema di
equazioni lineari
Ax = b
le Soluzioni Basiche Ammissibili del sistema sono tutti e soli i punti
estremi del poliedro
P = {x ∈ Rn : Ax = b, x ≥ 0}
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
8 / 18
Metodo del Simplesso
Dimostrazione
Necessità: Sia x una SBA del sistema Ax = b e assumiamo per assurdo
che x non sia un vertice del poliedro P. Esistono due punti y , z ∈ P,
y 6= z, e 0 < α < 1 tali che:
x = αy + (1 − α)z
Dato che x è una SBA, esiste una base B tale che:
x = (xB , xN ) = (B −1 b, 0). In particolare, si avrà
xN = αyN + (1 − α)zN = 0
Dato che 0 < α < 1, l’equazione sopra vale se yN = zN = 0
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
9 / 18
Metodo del Simplesso
Dimostrazione
Dato che y , z ∈ P sono soluzioni ammissibili per il sistema Ax = b e deve
aversi
ByB + NyN = b
BzB + NzN = b
Ossia
ByB = b
⇒
yB = B −1 b
BzB = b
⇒
zB = B −1 b
da cui anche yB = zB e pertanto,
y =z
Dunque non esistono due punti y , z ∈ P con y 6= z per cui x è
combinazione convessa di questi e, pertanto, x è un vertice di P.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
10 / 18
Metodo del Simplesso
Dimostrazione
Sufficienza: Sia x un punto estremo di P. Per il teorema di
caratterizzazione si ha che x è una SBA per Ax = b se e solo se usa
colonne linearmente indipendenti di A. Assumiamo che x usi le prime k
per cui:
a 1 x1 + . . . + a k xk = b
Supponiamo per assurdo che x non sia una SBA e quindi le k colonne
sono linearmente dipendenti. Pertanto, per definizione avremo:
a1 y1 + . . . + ak yk = 0
con gli scalari y j , j = 1, . . . , k non tutti nulli.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
11 / 18
Metodo del Simplesso
Dimostrazione
Sia y = (y1 , . . . , yk , 0, 0, . . . , 0) un vettore ad n componenti. Consideriamo
due vettori z 1 e z 2 e > 0 tali che
z 1 = x + y
z 2 = x − y
Preso il vettore z 1 ed sufficientemente piccolo si ha:
z 1 = (x1 + y1 , . . . , xk + yk , 0, 0, . . . , 0)
Dato che xi > 0, i = 1, . . . , k si avrà xi + yi > 0, i = 1, . . . , k, per cui
z1 > 0
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
12 / 18
Metodo del Simplesso
Dimostrazione
Dalla dipendenza delle k colonne si avrà anche
Ay = a1 y1 , . . . , ak yk , ak+1 yk+1 , . . . , an yn = 0
Pertanto,
Az 1 = A(x + y ) = Ax + Ay = Ax = b
Per cui z 1 ∈ P. In modo analogo si dimostra che z 2 ∈ P. Dato che z 1 6= z 2 , si ha
x + y
x − y
z1 + z2
=
+
=x
2
2
2
La relazione precedente implica che x può essere ottenuto come combinazione convessa
di due punti z 1 , z 2 ∈ P con z 1 6= z 2 e ciò è assurdo perché x è un vertice. Per cui x usa
colonne linearmente indipendenti di A ed è una SBA.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
13 / 18
Metodo del Simplesso
1. Il metodo del simplesso trasforma un problema di PL in un problema
Standard in modo tale che il poliedro P non contenga rette;
2. Cerca la soluzione ottima tra i vertici del poliedro della regione
ammissibile che sono in numero finito muovendosi da un vertice ad un
vertice adiacente;
3. Algebricamente si arriva alla soluzione ottima di un problema di PL
generando una sequenza di SBA contigue.
Definizione
Due matrici di base B e B 0 sono contigue se differiscono esattamente per
una colonna.
NOTA: Ad un insieme di indici di base (i.e., una base) è associata esattamente una
SBA, ma una SBA può provenire da più basi differenti.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
14 / 18
Algoritmo del Simplesso
Passi: Ogni iterazione dell’algoritmo consiste in 6 passi
1. Determinazione della SBA corrente
2. Test di ottimalità
3. Scelta della variabile che dovrà entrare in base nella iterazione
successiva (variabile entrante)
4. Test di illimitatezza
5. Scelta della variabile uscente dalla base corrente
6. Aggiornamento del valore della F.O.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
15 / 18
Algoritmo del Simplesso
Dato un problema di PL:
Trovare una Soluzione Basica è (relativamente) facile
Trovare una SBA non è banale
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
16 / 18
Algoritmo del Simplesso
La SBA di partenza si ottiene ponendo a zero le variabili originali, e
assegnando alle variabili ausiliarie (Slack) il valore del termine noto del
vincolo corrispondente.
È sempre possibile effettuare una tale assegnazione?
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
17 / 18
Algoritmo del Simplesso
La SBA di partenza si ottiene ponendo a zero le variabili originali, e
assegnando alle variabili ausiliarie (Slack) il valore del termine noto del
vincolo corrispondente.
È sempre possibile effettuare una tale assegnazione? No
min
2x1 − 5x2
x1 + 2x2 ≤ 5
4x1 − 3x2 = −6
x1 − x2 ≥ 1
x1 , x2 ≥ 0
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
17 / 18
Algoritmo del Simplesso
In forma standard
Z = − max
5x2 − 2x1
x1 + 2x2 + x3 = 5
−4x1 + 3x2 = 6
x1 − x2 − x4 = 1
x1 , x2 , x3 , x4 ≥ 0
Il sistema Ax = b non è in Forma Canonica Ammissibile
Definizione
Un sistema di equazioni si dice:
1. in Forma Canonica se ad ogni equazione si può associare una variabile basica che
ha coefficiente 1 in quella equazione e 0 in tutte le altre.
2. in Forma Canonica Ammissibile se ha inoltre la proprietà che tutti i termini noti
sono maggiori od uguali a 0.
Andrea Scozzari (a.a. 2013-2014)
Programmazione Lineare
March 18, 2014
18 / 18