la programmazione lineare - Dipartimento di Matematica e Informatica

Transcript

la programmazione lineare - Dipartimento di Matematica e Informatica
LA PROGRAMMAZIONE LINEARE
Franca Rinaldi
Dipartimento di Matematica e Informatica
Università degli Studi di Udine
A.A. 2005 / 2006
1
Introduzione
In un problema di programmazione lineare (PL) si vuole ottimizzare, cioè
minimizzare o massimizzare, una funzione obiettivo lineare
cx =
n
X
cj x j
j=1
sotto il vincolo che il vettore di variabili x = (x1 , . . . , xn ) ∈ IRn soddisfi un
assegnato insieme finito di vincoli lineari
Ai x =
n
X
Aij xj ≤ (=, ≥) bi
i = 1, . . . , m.
j=1
L’importanza della programmazione lineare nell’ambito dell’ottimizzazione
si deve a due aspetti fondamentali. Da un lato la PL offre un modello formale per una ampia varietà di problemi che emergono in ambito applicativo,
ed in particolare nel contesto della gestione dei sistemi di produzione, di
distribuzione, di trasporto ecc., dall’altro rappresenta un elemento centrale
nella definizione di approcci risolutivi per problemi di programmazione lineare intera, e quindi, in particolare, per una larga varietà di problemi di
ottimizzazione combinatoria N P -hard.
2
Forme canoniche
Un problema di PL può essere espresso senza perdita di generalità in una
delle due forme
forma canonica :
forma standard
min
cx
(1)
Ax ≥ b
(2)
x ≥ 0
(3)
min
cx
(4)
Ax = b
(5)
x ≥ 0
(6)
dove A è una matrice m × n detta matrice dei vincoli, c ∈ IRn è il vettore dei
costi e b ∈ IRm il vettore dei termini noti.
La riformulazione di un generico problema di programmazione lineare P in
forma canonica utilizza le seguenti semplici operazioni:
1
- ogni vincolo Ai x ≤ bi viene riscritto nella forma −Ai x ≥ −bi ;
- ogni vincolo di eguaglianza Ai x = bi viene sostituito con la coppia di
vincoli Ai x ≥ bi e −Ai x ≥ −bi ;
- per ogni variabile xj libera, cioè non soggetta al vincolo di non negatività,
−
si introducono due nuove variabili x+
j , xj ≥ 0 e si opera la sostituzione
−
xj = x+
j − xj .
−
È facile riconoscere che al variare di x+
j , xj in IR+ , xj può assumere qualsiasi
valore reale.
Per esprimere un problema di programmazione lineare P in forma standard
è necessario riformulare eventuali vincoli di diseguaglianza come vincoli di
eguaglianza. A tale scopo, per ogni vincolo di diseguaglianza Ai x ≤ bi (Ai x ≥
bi ) viene introdotta una nuova variabile si ≥ 0 di costo nullo, detta variabile
di slack, ed il vincolo viene sostituito con Ai x + si = bi (Ai x − si = bi ).
La variabile di slack si “misura” lo scostamento della soluzione x dal vincolo
corrispondente e la condizione di non negatività su si assicura l’ammissibilità
di x rispetto al vincolo originale. La variabile di slack si annulla se e solo se
tale vincolo è soddisfatto da x come eguaglianza.
Si noti che, sebbene le precedenti operazioni possano modificare il numero
di variabili e/o di vincoli del problema P, il problema P 0 che ne deriva risulta
equivalente a quello iniziale, nel senso che ogni soluzione ammissibile x di P
corrisponde ad almeno una soluzione x0 di P 0 dello stesso costo e viceversa.
Quindi la soluzione x è ottima per P se e solo se x0 è ottima per P 0 ed i valori
ottimi dei due problemi sono uguali.
Infine, si noti che ogni problema di massimizzazione max{cx : x ∈ X} è
equivalente al problema di minimizzazione − min{−cx : x ∈ X}.
3
Geometria della PL
Ogni vincolo lineare Ai x ≥ bi (Ai x ≤ bi ) definisce un semispazio chiuso di
IRn la cui frontiera è costituita dall’iperpiano Ai x = bi . Tale iperpiano è
normale al vettore Ai ed Ai è diretto all’interno (all’esterno) del semispazio.
L’insieme di ammissibilità di un problema di PL, essendo intersezione di un
numero finito di semispazi è, per definizione, un poliedro. Si ricorda che un
punto di un poliedro P si dice un vertice se non può essere espresso come
combinazione convessa propria di altri punti di P o, equivalentemente, se è
una faccia di dimensione 0 di P . Ancora, d ∈ Rn si dice una direzione di P
se x + αd ∈ P per ogni x ∈ P e α ≥ 0. Una direzione di P è una direzione
2
estrema di P se non può essere espressa come combinazione conica propria
di altre direzioni di P o, equivalentemente, se esiste uno spigolo S di P tale
che S = {x : x = x + αd, α ≥ 0} per un opportuno x ∈ P .
Il teorema che segue fornisce una caratterizzazione dei vertici e delle direzioni estreme di un poliedro.
Teorema 1 Sia P = {x ∈ IRn : Ax ≤ b}.
i) Un punto x ∈ P è un vertice di P se e solo se la sottomatrice A0 formata
dalle righe Ai di A tali che Ai x = bi ha rango n;
ii) d ∈ IRn è una direzione estrema di P se e solo se Ad ≤ 0 e la sottomatrice
formata dalle righe Ai di A tali che Ai x = 0 ha rango n − 1.
E’ facile dimostrare che, nel caso più generale di un poliedro della forma
P 0 = {x : A1 x ≤ b1 , A2 x ≥ b2 , A3 x = b3 }, la parte i) del precedente
teorema rimane invariata, mentre nella parte ii) la condizione Ad ≤ 0 deve
essere sostituita con le condizioni A1 d ≤ 0, A2 d ≥ 0 e A3 d = 0.
Dal Teorema 1 segue che ogni vertice di P giace su almeno n degli iperpiani
che definiscono la frontiera di P . Inoltre, ogni direzione estrema di P è una
direzione di almeno n − 1 delle degli iperpiani che definiscono la frontiera di
P.
Nel caso di un problema scritto in forma standard, il Teorema 1 può essere
riformulato come segue.
Teorema 2 Sia P = {x : Ax = b, x ≥ 0}. Un punto x di P è un vertice se
e solo se le colonne di A che corrispondono a componenti di x strettamente
maggiori di 0 sono linearmente indipendenti.


A 
Dimostrazione La matrice dei vincoli che definiscono P è A0 = 
,
I
dove I è la matrice identica n × n. Sia J = {j : xj = 0} ed A0 la sottomatrice
formata dalle righe di A e dalle righe Ij , j ∈ J. Per il Teorema 1, x è un
vertice di P se e solo se A0 ha rango n e quindi, contenendo A0 n colonne, se
P
e solo se le colonne di A0 sono linearmente indipendenti. Sia nj=1 αj Aj0 = 0.
Poichè Aj0 , j ∈ J, è l’unica colonna di A0 con componente (m + j)–esima
diversa da 0, deve essere αj = 0 per ogni j ∈ J. Quindi le colonne di A0 sono
linearmente indipendenti se e solo se lo sono le colonne Aj0 , j ∈
/ J. Poichè le
componenti di indice maggiore di m di queste colonne sono nulle, esse sono
linearmente indipendenti se e solo se lo sono le corrispondenti colonne di A.
In particolare, per il terorema precedente, se A ha m righe, ci possono
essere al più m colonne di A linearmente indipendenti. Quindi ogni vertice
3
di P = {x : Ax = b, x ≥ 0} ha al più m componenti strettamente maggiori
di 0.
Il seguente Teorema enuncia una proprietà fondamentale dei problemi di
PL.
Teorema 3 Teorema fondamentale della PL. Dato un problema di PL definito in forma canonica o in forma standard, si verifica una delle seguenti
condizioni:
1. il problema è inammissibile;
2. il problema è illimitato;
3. esiste almeno un vertice di P ottimo.
Dimostrazione Sia P non vuoto. Poichè P è contenuto nell’ortante positivo, P non contiene rette. In tal caso P = conv(vertex(P )) + cone(dext(P ))
e quindi ogni x in P risulta somma di una combinazione convessa di vertici
di P e di una direzione di P , cioè
x=
X
αi vi + d
i∈I
dove vi ∈ vertex(P ), αi ≥ 0 per ogni i ∈ I, i∈I αi = 1 e d è una direzione di
P . Se esiste una direzione d di P tale che cd < 0 il problema è illimitato. Sia
infatti x ∈ P . Allora x+αd ∈ P per ogni α ≥ 0 e risulta c(x+αd) = cx+αcd.
Per α → +∞ tale valore tende a −∞. In caso contrario cd ≥ 0 per ogni
direzione d di P e quindi cx ≤ c(x + d) per ogni x ∈ P e d direzione di P .
Dunque la ricerca di una soluzione ottima può essere limitata al sottoinsieme
V = conv(vertex(P )). Poichè V è un insieme chiuso e limitato e la funzione
cx è continua, per il Teorema di Weierstrass il problema ammette ottimo su
P
V . Sia x̂ = i∈I αi vi una soluzione ottima. Da
P
cx̂ =
X
i∈I
αi cvi ≥
X
αi min cvi = min cvi
i∈I
i∈I
i∈I
segue che almeno un vertice vi , i ∈ I, è ottimo.
Per il teorema precedente un problema di PL, pur essendo un problema
continuo, può essere risolto limitando la ricerca delle soluzioni ottime ad un
numero finito di punti, i vertici del suo insieme di ammissibilità. Ancora,
è necessario individuare eventuali direzioni di P lungo le quali la funzione
obiettivo tende a −∞. È facile riconoscere che una tale direzione esiste
se e solo se esiste una direzione estrema con la stessa proprietà, e quindi
uno spigolo del poliedro lungo il quale la funzione obiettivo assume valori
arbitrariamente bassi.
4
4
Il metodo del simplesso
Il teorema fondamentale della PL è alla base di un metodo classico per la
risoluzione dei problemi di PL, detto Metodo del simplesso, proposto da Dantzig nei primi anni 50. Benchè la complessità dell’algoritmo sia esponenziale,
tale metodo è ancora uno dei metodi più largamente utilizzati.
L’idea base del metodo del simplesso è la seguente. Un problema di PL viene
dapprima espresso in forma standard, cosicchè il suo insieme di ammissibilità
P , se non vuoto, contiene almeno un vertice. In una prima fase, il metodo
determina un vertice di P (o che P è vuoto). Nelle iterazioni successive la
procedura visita vertici di P , lasciando ogni vertice lungo uno spigolo su cui
la funzione decresce strettamente. Se tale spigolo è illimitato il problema è
illimitato, in caso contrario lo spostamento termina in un nuovo vertice di P ,
adiacente a quello precedente e di valore strettamente inferiore. Se il vertice
non soddisfa opportune condizioni di ottimalità, l’iterazione viene ripetuta.
Il metodo termina quando individua o un vertice ottimo o una direzione
estrema di P lungo la quale la funzione obiettivo decresce strettamente.
Per realizzare questa idea generale in un algoritmo, è necessario esplicitare
i seguenti aspetti: caratterizzare i vertici di P algebricamente, individuare
delle condizioni di ottimalità e illimitatezza e definire il passaggio da un
vertice ad uno adiacente. Infine, è necessario determinare un vertice iniziale
o dimostrare che il problema è inammissibile.
Vediamo questi diversi aspetti in dettaglio.
4.1
Vertici e soluzioni di base
Il metodo del simplesso opera su problemi di PL scritti in forma standard
cioè della forma
min
cx
(7)
Ax = b
x ≥ 0.
dove A è una matrice m × n con m < n. Questa assunzione non è restrittiva dato che, se m ≥ n, o il sistema Ax = b è inammissibile (caso rango
A 6= rango (Ab)) o almeno m − n vincoli risultano combinazione lineare dei
rimanenti e possono essere eliminati ottenendo un sistema con m ≤ n. Se
m = n il sistema ammette una unica soluzione che può essere calcolata per
via elementare. Nel seguito supporremo A di rango m. Questa condizione
5
può essere sempre garantita eliminando eventuali vincoli linearmente dipendenti dagli altri (operazione che, se necessaria, viene effettuata durante la
prima fase del metodo del simplesso descritta in seguito).
Vediamo innanzitutto come i vertici di P vengano caratterizzati algebricamente tramite il concetto di base e soluzione di base.
Si definisce base ogni sottoinsieme β ⊆ {1, . . . , m}, |β| = m, tale che la
sottomatrice B formata dalle colonne di A con indice in β, detta matrice
di base, sia non singolare (e quindi invertibile). Data una particolare base
β, la matrice A può essere partizionata in due sottomatrici B ed N dove
B è formata dalle colonne di A con indice in β, dette colonne in base, ed
N dalle colonne con indice in η = {1, . . . , m} \ β, dette colonne fuori base.
Analogamente i vettori delle variabili e dei costi possono essere decomposti
in x = (xB , xN ) e c = (cB , cN ) in modo da evidenziare le componenti in base
e quelle fuori base.
Fissata una base, i vincoli Ax = b possono essere riscritti nella forma
BxB + N xN = b
ed ancora, essendo B invertibile, come
xB = B −1 (b − N xN ).
Di conseguenza il problema (7) può essere riscritto come
min
cB x B + cN x N
−1
xB = B (b − N xN )
xB , xN ≥ 0.
(8)
(9)
(10)
Dalla (9) risulta evidente che le variabili in base risultano univocamente
determinate dalle variabili fuori base. Si consideri la particolare la soluzione,
detta soluzione di base,
x̂B = B −1 b,
x̂N = 0
che si ottiene assegnando valore nullo a tutte le variabili fuori base. Tale
soluzione di base si dice ammissibile se xB ≥ 0. Inoltre si dice degenere se
(xB )i = 0 per qualche i = 1, . . . , m, non degenere altrimenti.
Si noti che il numero di componenti non nulle di ogni soluzione di base è al
più m ed è minore di m se e solo se la base è degenere.
Proposizione 1 i) Ogni soluzione di base ammissibile x̂ è un vertice di P .
ii) Ogni vertice di P è soluzione di base per almeno una base.
6
Dimostrazione i) L’affermazione segue dal Teorema 2 dato che le colonne
di A corrispondenti a variabili maggiori di zero di x̂ sono colonne di B e
risultano quindi linearmente indipendenti.
ii) Per il Teorema 2, le colonne di A corrispondenti a componenti non nulle
di un vertice di P sono linearmente indipendenti. Poichè A ha rango m, è
sempre possibile integrare l’insieme di queste colonne con altre colonne di A
in modo da ottenere una base di Rm . Gli indici delle colonne finali formano
evidentemente una base.
Si noti che se un vertice ha esattamente n − m componenti uguali a 0, cioè
giace su esattamente n degli iperpiani che definiscono la frontiera di P (gli
m piani definiti dai vincoli Ai x = bi ed altri n − m piani del tipo xj = 0)
allora è soluzione di base per esattamente una base contenente gli indici delle
variabili ¿ 0. Al contrario, vertici di P che giacciono su più di n piani della
frontiera possono essere soluzioni di base (degeneri) per basi diverse. Questo
avviene perchè al passo ii) della dimostrazione precedente le colonne iniziali
possono essere integrate ad una base di IRm in modi diversi.
4.2
Condizioni di ottimalità
Sia B una matrice di base ammissibile e x̂ = (B −1 b, 0) la corrispondente
soluzione di base. Il costo di x̂ è pari a cB B −1 b + cN 0 = cB B −1 b. Dalla (9)
segue che il costo di una qualsiasi soluzione ammissibile può essere espresso
come
cB xB + cN xN = cB B −1 b + (cN − cB B −1 N )xN = cx̂ + (cN − cB B −1 N )xN (11)
e risulta quindi somma del costo della soluzione di base corrente e del termine
(cN − cB B −1 N )xN .
Le componenti
cj = cj − cB B −1 Aj
del vettore cN = cN − cB B −1 N vengono detti costi ridotti.
Dal fatto che xN ≥ 0 per ogni soluzione ammissibile, si ottiene immediatamente la seguente condizione di ottimalità per la soluzione di base
corrente.
Teorema 4 Se cj ≥ 0 per ogni j ∈ η, la soluzione di base corrente è ottima.
La condizione di non negatività dei costi ridotti è in generale una condizione
sufficiente ma non necessaria per l’ottimalità della soluzione di base. Come
7
verrà dimostrato nel paragrafo successivo, è anche necessaria se la soluzione
di base è non degenere.
Per capire il significato del costo ridotto di una variabile fuori base, si
immagini di poter aumentare una sola delle variabili fuori base, diciamo
xp , mantenendo tutte le altre a 0 e rimanendo in ammissibilità. Ponendo
xN = (0, . . . , xp , . . . , 0) nella espressione (9) si ottiene che, al crescere di xp ,
la variazione nel valore della funzione obiettivo risulta pari a cp xp . Quindi il costo ridotto di una variabile rappresenta la variazione nel valore della
funzione obiettivo che si ottiene aumentando la relativa variabile fuori base
di una unità, mantenendo nulle tutte le altre variabili fuori base e facendo
variare le variabili in base in modo che il sistema Ax = b continui ad essere
soddisfatto.
Se tutti i costi ridotti delle variabili fuori base risultano non negativi, il
metodo termina fornendo in output la soluzione di base corrente che è ottima.
Osservazione Si noti che i costi ridotti possono essere definiti anche per le
variabili xj , j ∈ β. In questo caso si ottiene cB = cB − cB B −1 B = 0. Quindi
i costi ridotti delle variabili in base sono sempre nulli.
4.3
Cambiamento di base
Si supponga che la condizione di ottimalità non sia soddisfatta e sia p ∈ η
un indice tale che cp < 0. Si consideri il problema di determinare il massimo
incremento della variabile xp che può essere ottenuto mantenendo a zero le
altre variabili fuori base e l’ammissibilità della soluzione. Come visto nel
paragrafo precedente, un tale aumento comporta una variazione dei valori
delle variabili in base dato dalla
xB = B −1 b − B −1 Ap xp
(12)
ottenuta dalla (9) ponendo xj = 0 per ogni j ∈ η \ {p}. Si noti che una tale
variazione corrisponde ad un movimento lungo l’intersezione di n − 1 piani
della frontiera (i piani Ax = b ed i piani xj = 0, j ∈ η \ {p}), e quindi lungo
uno spigolo del poliedro uscente dalla soluzione di base corrente. Tale spigolo
ha direzione d = (−B −1 Ap , 0, . . . , 1, . . .) dove la componente 1 compare in
corrispondenza alla variabile xp . In accordo con la (11), il costo del generico
punto y dello spigolo è dato da
cy = cx̂ + cp xp
(13)
e, poichè cp < 0, il valore cx decresce strettamente lungo lo spigolo. Il punto
y è un punto ammissibile fin tanto che le variabili in base (12) rimangono
8
non negative. Si possono verificare due situazioni: o lo spigolo è illimitato
oppure lo spostamento lungo lo spigolo viene bloccato dal fatto che qualche
variabile in base raggiunge il valore 0 e quindi viene raggiunto un nuovo
vertice di P . Dal punto di vista algebrico, per stabilire qual è il massimo
incremento di xp compatibile con l’ammissibilità della soluzione, è sufficiente
determinare il massimo incremento di xp che mantiene tutte le variabili in
base non negative. Questo è dato dal massimo valore di xp ≥ 0 tale che
risulti x̂B − B −1 Ap xp ≥ 0 o, equivalentemente, B −1 Ap xp ≤ x̂B o ancora,
posto ã = B −1 Ap ,
ãi xp ≤ (B −1 b)i = (x̂B )i
i = 1, . . . m.
(14)
Il problema può essere risolto in modo elementare. Essendo (x̂B )i ≥ 0, se
ãi ≤ 0 la condizione (14) è soddisfatta da ogni xp ≥ 0. Di conseguenza,
se ã ≤ 0, la variabile xp può crescere indefinitamente. In questo caso in
base alla (13) il problema di PL è illimitato. In caso contrario, il massimo
incremento di xp è dato da
(
x̂p = min
i:ãi >0
(x̂B )i
ãi
)
=
(x̂B )q
.
ãq
Si noti in particolare che risulta x̂p > 0 se la soluzione di base x̂ è non
degenere. In caso di degenerazione può anche essere x̂p = 0.
Sia q un indice tale che risulti x̂p = (x̂ãBq)q e si consideri la soluzione x0
ottenuta dalla soluzione di base corrente aumentando xp del valore x̂p . Le
componenti di x0 sono
x0B = x̂B − x̂p ã,
x0p = x̂p ,
x0j = 0 se j ∈ η \ {p}.
Poichè (x0B )q = 0, la soluzione x0 ha almeno n − m componenti nulle. È facile
riconoscere che x0 è la soluzione di base corrispondente alla base β 0 che si
ottiene da β eliminando l’indice β(q) e introducendo l’indice p. Per dimostrare che la corrispondente matrice di base B 0 , ottenuta da B sostituendo la
q-esima colonna con Ap , è non singolare è sufficiente dimostrare che B −1 B 0 è
non singolare. Ora B −1 B i = I i per ogni i 6= q, mentre B −1 (Ap ) = ã. Poichè
ãq 6= 0 la matrice B −1 B 0 è non singolare.
Per poter eseguire una nuova iterazione a partire dalla nuova soluzione di
base è necessario aggiornare l’inversa della matrice di base. Ciò può essere
fatto senza ricalcolare direttamente l’inversa di B 0 (calcolo di costo O(m3 ))
tenendo conto del fatto che B 0 differisce da B solo per una colonna. Denotando con W = B −1 e W 0 = B 0−1 , W 0 può essere calcolata in O(m2 ) in base
alla seguente formula di aggiornamento delle righe di W
Wi0 =

 Wi
−
1
 Wq
ãq
ãi
Wq
ãq
9
if i 6= q
if i = q.
(15)
4.4
Criteri per la scelta della variabile che entra in base
Per terminare la descrizione della generica iterazione del simplesso, vengono
elencati alcuni criteri utilizzabili nella scelta della variabile che entra in base
tra quelle che hanno costo ridotto negativo.
1. Si sceglie una variabile fuori base di costo ridotto minimo. Questo criterio richiede di calcolare tutti i costi ridotti ed ha un costo computazionale limitato. Si noti che tale criterio non comporta necessariamente il
decremento maggiore nel valore della funzione obiettivo. Infatti questo
è dato da cp x̂p e quindi dipende non solo dal valore del costo ridotto
ma anche dal massimo incremento possibile di xp .
2. Si sceglie la variabile che produce il più alto decremento cp x̂p nella
funzione obiettivo. Questo criterio che sembra teoricamente attraente
è di fatto troppo oneroso dal punto di vista computazionale.
3. si sceglie la prima variabile fuori base il cui costo ridotto è negativo.
4.5
Prima fase del metodo del simplesso
Nei paragrafi precedenti è stata descritta la generica iterazione del metodo
del simplesso, basata sulla conoscenza di una particolare soluzione di base
ammissibile. Per completare la descrizione del metodo è ora necessario definire come determinare una soluzione di base ammissibile iniziale o stabilire
che il poliedro di ammissibilità è vuoto.
In alcuni casi particolari, una base ammissibile è immediatamente disponibile. Questo avviene, per esempio, quando si vuole risolvere un problema
P della forma {min cx : Ax ≤ b} con b ≥ 0. In questo caso la base che
contiene gli indici delle variabili di slack della forma standard di P è una
base ammissibile dato che risulta B = I = B −1 e quindi x̂B = Ib = b ≥ 0.
Quindi il problema artificiale è sempre ammissibile. Quando l’individuazione
di una base ammissibile non sia immediata è necessario eseguire una fase di
inizializzazione del metodo detta Prima fase del simplesso.
La prima fase del simplesso consiste nel risolvere un nuovo problema di
PL. Si riscriva il sistema Ax = b in modo che risulti b ≥ 0 e si consideri il
problema, detto problema artificiale,
PA :
min
m
X
zi
(16)
i=1
Ax + Iz = b
(17)
x, z ≥ 0
(18)
10
definito nelle variabili originali x ed in m nuove variabili zi , i = 1, . . . , m,
associate ai vincoli e dette variabili artificiali. Si noti che, essendo b ≥ 0, la
base che contiene gli indici delle variabili artificiali è una base ammissibile
per il problema artificiale. Inoltre, per i vincoli z ≥ 0, il valore ottimo del
problema artificiale è non negativo.
Proposizione 2 Il problema artificiale ha valore ottimo nullo se e solo se il
problema originale è ammissibile.
Dimostrazione Se x ∈ P , (x, 0) è una soluzione ammissibile di PA di valore
0 e quindi ottima. Viceversa, se (x, z) è una soluzione (ammissibile) ottima
di valore 0, allora deve necessariamente essere z = 0. Ciò implica Ax = b,
x ≥ 0 e quindi x ∈ P .
Rimane da stabilire come ottenere una base ammissibile del problema originale dalla base ottima del problema artificiale. Se la base ottima di PA
non contiene indici di variabili artificiali, allora è una base ammissibile per il
problema originale. In caso di degenerazione, può però accadere che qualche
variabile artificiale sia in base (con valore nullo). In questo caso è necessario
sostituirla con una variabile originale fuori base da scegliersi in modo che
la corrispondente matrice di base risulti non singolare. Più precisamente,
supponiamo che la q–esima colonna della matrice di base BA ottima per il
problema artificiale corrisponda ad una variable artificiale e siano B ed N
le sottomatrici formate dalle colonne di A che sono attualmente in base e
fuori base nella base ottima del problema artificiale. Si vuole sostituire BAq
con una colonna Aj di N sotto la condizione che la matrice risultante B 0
sia non singolare. Questa circostanza si verifica se e solo se BA−1 B 0 è non
singolare. Quest’ultima matrice coincide con la matrice identica su tutte le
colonne tranne la q–esima, data da BA−1 Aj , e risulta quindi non singolare se e
solo se (BA−1 Aj )q 6= 0. La ricerca della colonna Aj può quindi essere operata
calcolando il vettore
f = eq BA−1 N
Se fj 6= 0 per qualche indice j, l’indice j può essere sostituito al q-esimo
elemento della base corrente. In caso contrario, poichè B non contiene la
q-esima colonna di BA , valgono le condizioni
eq BA−1 N = 0
eq BA−1 B = 0
cioè eq BA−1 A = 0 e le righe di A risultano linearmente dipendenti dato che la
loro combinazione lineare con vettore dei coefficienti eq BA−1 è il vettore nullo.
Una riga Ai tale che (eq BA−1 )i 6= 0, risultando linearmente dipendente dalle
altre, può allora essere eliminata.
11
4.6
Complessità del metodo del simplesso
La complessità di ogni iterazione del metodo del simplesso è polinomiale ed è
dovuta al calcolo di u = cB B −1 (O(m2 )), dei costi ridotti (O(m(n − m)), dell’incremento della variabile che entra in base (O(m2 )) ed agli aggiornamenti
(O(m2 )). Quindi il costo computazionale di queste operazioni è dominato
dal calcolo dei costi ridotti che richiede, nel caso peggiore, O(nm) operazioni
elementari.
La complessità finale dipende dal numero di passi richiesti per raggiungere
una condizione di terminazione. Come primo aspetto, consideriamo il problema della finitezza del metodo, cioè se sia vero che il metodo termina in
un numero finito di passi per qualsiasi istanza. La risposta è affermativa nel
caso di non degenerazione. Infatti, in questa ipotesi, iterazioni successive
corrispondono a soluzioni di base di costo strettamente decrescente e quindi
il metodo visita al più una volta ogni soluzione di base. Poichè queste sono
in numero finito, il metodo termina in un numero finito di passi.
In caso di degenerazione, un vertice può essere soluzione di base per basi
diverse e può accadere che queste vengano visitate in iterazioni successive e
che il metodo torni su una base già visitata. Questa circostanza viene detta
ciclaggio del metodo.
Per evitarla è necessario adottare delle opportune regole anticiclaggio. La
più semplice e nota è la seguente regola di Bland che stabilisce un criterio
particolare per la scelta della variabile che entra in base e per quella della
variabile che esce dalla base.
Teorema 5 Si scelga l’indice p che entra in base con il criterio
p = min{j : cj < 0}
e l’indice β(q) che esce dalla base con il criterio
β(q) = min{β(i) :
(x̂B )k
(x̂B )i
≤
per ogni ãk > 0}.
ãi
ãk
Allora il metodo del simplesso termina in un numero finito di passi.
Se vengono adottate regole anticiclaggio, il metodo del simplesso converge
in un numero finito di passi. In generale questo numero non è polinomiale.
Infatti sono state individuate istanze che vengono risolte dal simplesso in un
numero esponenziale di iterazioni.
12
Esempio (Klee and Minty 1972) Si considerino le istanze di PL definite da
min
−xk
xj−1 ≤ xj ≤ 1 − xj−1 ∀j = 2, . . . , k
Se > 0 l’insieme di ammissibilità è un cubo leggermente deformato (si disegni nel caso m = 2). Si può dimostrare che le basi della forma standard del
problema sono tutte non degeneri e che esiste una sequenza di base adiacenti
con costo strettamente decrescente che corrisponde ad una sequenza di tutti
i 2m vertici del cubo (che sono esponenenziali rispetto al numero di variabili
n = k e di vincoli m = 2k della forma standard).
A discapito di questo risultato teorico negativo, il metodo è tuttora uno dei
più frequentemente utilizzati nelle applicazioni. Studi sperimentali hanno
evidenziato che, mediamente, il numero di passi è lineare nel numero m dei
vincoli e sublineare nel numero n delle variabili.
5
Complessità della programmazione lineare
Il problema della polinomialità (o meno) della programmazione lineare è rimasto aperto per diversi anni ed ha avuto una risposta definitiva nel 1979
ad opera del matematico russo Leonard Khachiyan. Il metodo proposto da
Khachiyan, detto metodo dell’elissoide, consente di risolvere una istanza di
PL in tempo polinomiale rispetto alla lunghezza della sua codifica. Tale algoritmo, benchè di fondamentale importanza dal punto di vista teorico, non
risulta però adottabile nella pratica per l’alto grado del polinomio che definisce la complessità del metodo. Comunque tale procedura ha avuto anche
un ruolo importante nella definizione di algoritmi approssimati randomizzati basati sulla programmazione semidefinita per problemi di ottimizzazione
combinatorica NP-hard. Il primo algoritmo polinomiale competitivo con il
metodo del simplesso segue un approccio completamente diverso da esso ed è
stato proposto dal matematico indiano Narendra Karmarkar nel 1984. Tale
metodo e le sue varianti sviluppate in seguito vengono dette metodi a punti interni proprio perchè convergono verso un vertice ottimo visitando una
sequenza di soluzioni interne al poliedro.
13
6
Programmazione Lineare e Dualità
La teoria della dualità studia le importanti relazioni esistenti tra un problema
di ottimizzazione, detto problema primale, ed un problema ad esso correlato,
detto problema duale. Le variabili del problema duale hanno una interessante
interpretazione geometrica ed economica. In questo capitolo vengono presentati i risultati di dualità nel caso in cui il problema primale sia un problema
di PL.
Si consideri un problema di PL della forma
P:
v = min
c1 x 1 + c2 x 2
(19)
A11 x1 + A12 x2 ≥ b1
(20)
A21 x1 + A22 x2 = b2
(21)
x1 ≥ 0
(22)
dove è stata evidenzata la decomposizione dei vincoli in vincoli di eguaglianza
e di diseguaglianza e delle variabili in variabili libere e non.
Il problema duale di P è il problema
D:
d = max
u 1 b1 + u 2 b2
(23)
u1 A11 + u2 A21 ≤ c1
(24)
u1 A12 + u2 A22 = c2
(25)
u1 ≥ 0.
(26)
Il problema D è ancora un problema di PL ed ha una variabile per ogni
vincolo del primale ed un vincolo per ogni variabile del primale. Inoltre:
• il vettore dei costi del duale è il vettore dei termini noti del primale;
• il vettore dei termini noti del duale è il vettore dei costi del primale;
• la matrice dei vincoli del duale è la trasposta della matrice dei vincoli
del primale;
• una variabile duale è soggetta al vincolo di non negatività se e solo se
il corrispondente vincolo primale è di diseguaglianza;
• un vincolo duale è di diseguaglianza se e solo se la corrispondente
variabile primale è soggetta al vincolo di non negatività.
È facile verificare che il problema duale di D coincide con P.
14
Nel seguito indicheremo con Ai , i = 1, 2, la sottomatrice (Ai1 Ai2 ) e con Ai ,
A1i 
i = 1, 2, la sottomatrice 
.
A2i
Un primo risultato di dualità, noto come dualità debole, stabilisce che il
valore ottimo del problema duale è sempre una limitazione inferiore del valore
ottimo primale.
Teorema 6 Risulta d ≤ v. In particolare, se uno dei due problemi è illimitato, l’altro è inammissibile.
Dimostrazione Dimostrariamo innanzitutto che se x = (x1 , x2 ) e u =
(u1 , u2 ) sono due soluzioni ammissibili per P e D, allora ub ≤ cx. L’ammissibilità di x ed u garantisce le seguenti relazioni: b1 ≤ A1 x, u1 ≥ 0, b2 = A2 x,
x1 ≥ 0, c1 ≥ uA1 e c2 = uA2 . Di conseguenza
ub = u1 b1 + u2 b2 ≤ u1 A1 x + u2 A2 x = uAx
e
cx = c1 x1 + c2 x2 ≥ uA1 x1 + uA2 x2 = uAx
da cui si ottiene
ub ≤ uAx ≤ cx.
(27)
Poichè la (27) vale per due generiche soluzioni primale e duale, risulta d ≤ v.
In particolare, se il problema P (il problema D) ammette una soluzione x
(u), il valore cx (ub) rappresenta una limitazione superiore (inferiore) per d
(v) e quindi D (P) non può essere illimitato.
La differenza v − d viene detta scarto di dualità.
Corollario 7 Siano x e u soluzioni ammissibili, rispettivamente, per P e D.
Se cx = ub, allora x e u sono ottimi.
La dualità debole è una proprietà verificata da ogni coppia primale duale
di problemi di ottimizzazione. Nel caso della PL tale condizione può essere
rafforzata per il seguente fondamentale risultato che inverte la condizione
espressa nel Corollario 7.
Teorema 8 Il problema P ammette ottimo se e solo se il problema D ammette ottimo. In questo caso risulta d = v.
15
Dimostrazione Si consideri la forma standard P 0 del problema P. Il
problema P ammette ottimo se e solo P 0 ammette ottimo e questo avviene se e
solo se esiste una soluzione di base x̂ = (B −1 b, 0) che soddisfa le condizioni di
ottimalità cN = cN −cB B −1 N ≥ 0. Si consideri la soluzione duale u = cB B −1 .
Essa è ammissibile per il problema duale D0 di P 0 se e solo se uA ≤ c. Poichè
risulta uB = cB B −1 B = cB e uN = cB B −1 N ≤ cN per le condizioni di
ottimalità, u è ammissibile duale. Inoltre ub = cB B −1 b = cB xB = cx. È ora
facile verificare che la soluzione u risulta ammissibile e quindi ottima anche
per D.
La non ammissibilità di uno dei due problemi non implica la illimitatezza
dell’altro. Infatti esistono istanze per cui sia il problema primale che il duale
sono non ammissibili e quindi lo scarto di dualità è infinito (si prenda ad
esempio A matrice nulla, b = 1 e c = −1).
Il Lemma di Farkas e la dualità forte
In questo paragrafo si considerano due problemi primale e duale scritti in
forma canonica
min
cx
Ax ≥ b
x≥0
(28)
(29)
(30)
ed il problema duale sia quindi
min
ub
uA ≤ c
u ≥ 0.
(31)
(32)
(33)
La dualità forte della PL può essere dimostrata come conseguenza di un
importante risultato della teoria dei sistemi lineari noto come Lemma di
Farkas. Esistono diverse varianti di questo risultato, noti anche come Teoremi
dell’alternativa.
Teorema 9 Lemma di Farkas Data una matrice A ed un vettore b, esattamente uno degli insiemi
- P = {x : Ax ≥ 0, cx < 0}
- Q = {u : uA = c, u ≥ 0}
è non vuoto.
16
Dimostrazione Sia Q 6= ∅ e u ≥ 0 tale che uA = c. Allora cx = uAx
per ogni x e quindi, se Ax ≥ 0 risulta necessariamente cx ≥ 0 cioè P = ∅.
Viceversa supponiamo Q = ∅ e consideriamo l’insieme Z = {z : z = uA, u ≥
0} cioè l’insieme delle combinazioni coniche delle righe di A. Poichè per
ipotesi c ∈
/ Z e Z è un insieme chiuso e convesso esiste un iperpiano xx = α,
x ∈ Rn e α ∈ R, che separa strettamente Z da c cioè tale che xc < α e
xz ≥ α per ogni z ∈ Z per un opportuno vettore . Poichè lo 0 appartiene
a Z risulta α ≤ 0. Quindi cx < 0. D’altra parte uAx ≥ 0 per ogni u ≥ 0
e questo implica Ax ≥ 0. Infatti, se fosse Ai x < 0 per qualche i, ponendo
ui = 1 e uj = 0 se j 6= i si otterrebbe uAx = ui Ai x < 0. Da questo segue
che x ∈ P .
Il Lemma di Farkas ha la seguente interpretazione geometrica. Il poliedro
definito dai vincoli Ax ≥ 0 è un cono convesso ed ogni sup elemento diverso dal vettore nullo è una direzione del cono. La funzione cx è limitata
inferiormente sul cono se e solo se P è vuoto e quindi se e solo se c è una
combinazione conica combinazione conica delle righe di A.
Dimostrazione del Teorema 8. Supponiamo che il problema primale
ammetta soluzione ottima x∗ di valore v ∗ (il caso simmetrico può essere
trattato in modo analogo). Dimostreremo che allora esiste u∗ ammissibile
per il problema duale e tale che u∗ b ≥ cx∗ da cui, per la dualità debole,
u∗ b = cx∗ . Per l’ottimalità di x∗ risulta non ammissibile il sistema
Ax ≥ b
(34)
x ≥ 0
(35)
cx < v ∗
(36)
Come primo passo dimostriamo che questo sistema è non compatibile se e
solo se è non compatibile il sistema omogeneo
Ax − λb ≥ 0
(37)
cx − λv ∗ < 0
(38)
x ≥ 0, λ ≥ 0
(39)
Infatti, se esiste una soluzione x del primo sistema allora (x, 1) è una soluzione
del secondo sistema. Viceversa sia (x, λ) una soluzione del secondo sistema.
Se λ > 0, allora λx è una soluzione del primo. Se λ = 0 si ha Ax ≥ 0,
cx < 0 ed è allora facile verificare che la soluzione x̂ = x + x∗ è una soluzione
ammissibile del primo sistema.
Quindi possiamo assumere che il sistema (37) sia non ammissibile. Esso può
17
essere scritto nella forma


0m
A −b  



x
 I

 ≥  0n

 n 0 
λ
0
0 1


cT −v ∗




(40)

x 

< 0
λ
(41)
Per il Lemma di Farkas esiste quindi un vettore (u, y, w) ≥ 0 tale che




A −b
T


c


.
(u, y, w) 
 In 0  =
−v ∗
0 1
Questi vincoli possono essere riscritti nella forma
uA + In y = cT
(42)
−ub + w = −v ∗
(43)
u, y, w ≥ 0
(44)
da cui risulta che u è una soluzione ammissibile duale (uA ≤ cT , u ≥ 0), tale
che ub ≥ v ∗ . Per la dualità debole deve allora essere ub = v ∗ .
6.1
Condizioni di complementarità
La dualità forte stabilisce una relazione tra i valori ottimi di P e D. Consideriamo ora un insieme di condizioni, dette condizioni di complementarità,
che stabiliscono delle relazioni tra le soluzioni ottime dei due problemi.
Teorema 10 Due soluzioni x e u ammissibili rispettivamente per i problemi
P e D sono ottime se e solo se soddisfano le condizioni
u(Ax − b) = 0
(45)
(uA − c)x = 0.
(46)
Dimostrazione Necessità Per quanto provato nella dimostrazione del Teorema 6 risulta ub ≤ uAx ≤ cx. Dalla dualità forte cx = ub si ottiene
allora
ub = uAx = cx,
(47)
18
da cui seguono le (45) e (46).
Sufficienza Le condizioni di complementarietà implicano la (47) e quindi le
due soluzioni sono ottime per il Corollario 7.
In ammissibilità, le condizioni di complementarità esprimono condizioni più
forti rispetto alla semplice condizione di ortogonalità tra le coppie di vettori
u, Ax − b e uA − c, x. Si noti infatti che, per l’ammissibilità delle soluzioni x
P
e u, ogni termine della sommatoria u(Ax − b) = m
i=1 ui (Ai x − bi ) risulta non
negativo. Infatti (Ai x − bi ) ≥ 0 e, se la diseguaglianza vale in senso stretto,
deve essere ui ≥ 0 per il vincolo di nonnegatività sulla variabile ui . Quindi
u(Ax − b), essendo una somma di termini non negativi, è nullo se e solo se
tutti i suoi termini sono nulli cioè se e solo se
ui (Ai x − bi ) = 0
∀ i = 1, . . . , m.
Analogamente si può dimostrare che, in ammissibilità, la condizione (uA −
c)x = 0 è equivalente alle n condizioni
(uAj − cj )xj = 0
∀ j = 1, . . . , n.
In particolare, per il Teorema 10, in ottimalità valgono le seguenti implicazioni
Ai x − bi > 0
→
ui = 0
(48)
xj > 0
→
j
uA − cj = 0
(49)
uAj − cj < 0
→
xj = 0
(50)
ui > 0
→
Ai x − bi = 0.
(51)
Interpretazione geometrica delle variabili duali ottime
Quanto affermato ci consente di interpretare geometricamente le variabili
duali ottime. Si consideri un problema primale nella forma {max cx : Ax ≤ b}
(in cui la matrice A comprende tutti i vincoli e i vettori Ai puntano all’esterno del poliedro primale, vedi Fig. 1), il cui problema duale è {max ub :
uA = c, u ≥ 0}. È facile riconoscere che le soluzioni ammissibili duali sono
tutti e soli i vettori dei coefficienti di combinazioni coniche delle righe di A
che danno il vettore c. Sia u una soluzione ottima duale. Per le condizioni
di complementarietà (48) possono essere diverse da zero solo le componenti
ui corrispondenti a vincoli primali soddisfatti come uguaglianza in ogni soluzione ottima primale. Quindi x è una soluzione ottima primale se e solo se c
è una combinazione conica delle righe di A che corrispondono a vincoli attivi
in x. Le variabili ottime duali sono proprio i coefficienti di tale combinazione
conica. Inoltre, essendo ub = cx per la dualità forte, l’iperpiano di equazione
cx = cx risulta una combinazione conica dei vincoli attivi in x.
19
A2
A1
A1
x*
A2
A2
c
A2
A2
Figura 1: Cono dei vettori c per cui x∗ è soluzione ottima
6.2
Interpretazione economica delle variabili duali
Le variabili duali ottime di un problema di PL hanno anche una interessante
interpretazione economica.
Si consideri un problema in forma standard e siano β e x̂ = (x̂B , x̂N ) =
(B −1 b, 0) una base ottima e la corrispondente soluzione di base. Si supponga
ora di variare il q–esimo termine noto di una quantità , cioè si consideri un
nuovo vettore di termini della forma b0 = b+eq , dove eq rappresenta il q-esimo
elemento della base canonica di Rm . Se la base β è non degenere, per valori
di sufficientemente piccoli, β è una base ammissibile anche per il problema
modificato e le variabili in base della corrispondente soluzione di base sono
x0B = B −1 (b + eq ) ≥ 0. Poichè i costi ridotti non vengono modificati da
variazioni nel vettore b, β è ancora una base ottima. La variazione nel valore
ottimo dei due problemi è data da
cB (x0B − x̂B ) = cB B −1 eq = ûeq = ûq
dove û = cB B −1 è una soluzione duale ottima. Quindi ûq rappresenta la variazione nel valore ottimo conseguente ad una variazione unitaria del q-esimo
termino noto. Un valore ûq < 0 (ûq > 0) indica il decremento (aumento) nel
valore ottimo del problema corrispondente ad un incremento unitario del q–
esimo termine noto. Per tale motivo le variabili duali ottime possono essere
interpretate come prezzi connessi alla presenza dei vincoli e vengono anche
dette prezzi ombra.
Esempio Si consideri un problema di pianificazione della produzione. Una
azienda può produrre n diversi prodotti utilizzando m risorse (materie prime,
ore lavoro ecc). Sia cj il profitto ottenibile da una unità del prodotto j, bi
la quantità di risorsa i e aij la quantità di risorsa i necessaria per produrre
una unità del prodotto j. Allora il problema di massimizzazione del profitto
totale può essere espresso come
20
max
cx
Ax ≤ b
x ≥ 0.
(52)
(53)
(54)
Immaginiamo ora che l’azienda possa investire nell’acquisto di nuove risorse,
e sia ri il costo unitario della risorsa i-esima. Quali sono le risorse che è
conveniente acquistare e in quali quantità?
Se u∗ è la soluzione ottima duale, la generica componente u∗i indica l’aumento nel valore della funzione ottenibile per un incremento unitario del termine
noto bi . Quindi il guadagno netto per aumento unitario della risorsa i è dato
da gi = u∗i − ri . Evidentemente conviene investire in una o più risorse q
con valore gq massimo. Il ragionamento può essere applicato purchè la base
continui a rimanere ottima. Poichè una variazione dei termini noti non incide sull’ottimalità, è sufficiente che la base continui a rimanere ammissibile e
quindi la quantità ∆bq deve essere tale che
B −1 b + B −1 ∆bq eq ≥ 0,
cioè
∆bq B −1q ≥ −x∗B .
Se B −1q ≥ 0 questo incremento può essere a priori illimitato e quindi conviene investire completamente nella risorsa i, in caso contrario il valore ∆bq
massimo è dato da
−x∗β(k)
min
−1 .
−1
k:Bkq
<0 Bkq
Ogni altro incremento di bq non porterebbe a nessun vantaggio e conviene
investire su una diversa risorsa.
6.3
Simplesso e dualità
Si consideri un problema di PL espresso in forma standard
min
cx
(55)
Ax = b
(56)
x ≥ 0
(57)
ed il suo problema duale
min
ub
uA ≤ c
21
(58)
(59)
Ad ogni soluzione di base x = (xB , 0) è associato il vettore
u = cB B −1
che, avendo dimensione m, può essere interpretato come un vettore di variabili duali.
Vediamo come si comporta questo particolare vettore u rispetto ai vincoli del
problema duale. Tali vincoli possono essere riscritti come u[BN ] ≤ [cB cN ]T
e quindi scomposti nei due gruppi
uB ≤ cB
(60)
uN ≤ cN .
(61)
Sostituendo a primo membro il vettore u = cB B −1 otteniamo che il primo
gruppo di vincoli è sempre soddisfatto con l’eguaglianza dato che cB B −1 B =
cB I = cB , mentre il seconda gruppo di vincoli è equivalente a
cB B −1 N ≤ cN
⇔
cN = cN − cB B −1 N ≥ 0.
Quindi u è una soluzione ammissibile duale se e solo se i costi ridotti sono
tutti non negativi, cioè se e solo se è soddisfatta la condizione di ottimalità
richiesta dal simplesso. In generale, una soluzione duale u viene detta una
soluzione di base se risulta u = cB B −1 per una opportuna matrice di base B.
Da quanto detto si può osservare che il metodo del simplesso lavora considerando ad ogni passo una coppia di soluzioni primale e duale che soddisfano
le condizioni di complementarietà ed hanno lo stesso valore (si verifichi per
esercizio). Mentre la soluzione primale è ammissibile, la soluzione duale in
generale è non ammissibile e diventa ammissibile solo quando la soluzione
primale soddisfa le condizioni di ottimalità ed è quindi ottima.
7
Analisi di sensitività o di post–ottimalità.
Molto spesso i parametri che intervengono nel modello matematico di un
problema reale contengono un certo grado di approssimazione rispetto ai
valori reali. Ha allora senso chiedersi quanto dell’informazione che si ottiene
risolvendo il modello matematico sia sensibile a possibili inaccuratezze del
modello, o, in altre parole, quanto la soluzione ottenuta sia robusta rispetto
a piccole modifiche dei dati. L’analisi di sensività è una analisi a posteriori
che cerca di rispondere a queste domande.
I parametri che intervengono in un modello di PL sono: i costi, i termini
noti dei vincoli e gli elementi della matrice dei vincoli.
22
Sia x̂ = (x̂B , x̂N ) una soluzione di base ottima di un problema in forma
standard.
Consideriamo dapprima una variazione in uno dei termini noti del problema,
assumendo che il vettore b venga modificato in b0 = b + eq . Poichè una tale
modifica non altera i costi, la soluzione di base x0 = (x0B = B −1 b0 , x0N = 0)
soddifa ancora la condizione di ottimalità cN ≥ 0. Quindi, se ammissibile,
essa è anche ottima. Essendo tutte le variabili fuori base nulle, la condizione
di ammissibilità, posto W = B −1 , è data da
x0B = W b0 = W (b + eq ) = x̂B + W q ≥ 0.
L’intervallo di valori di per cui tale condizione è soddisfatta è allora
max{
−(xB )i
−(xB )i
: Wiq > 0} ≤ ≤ min{
: Wiq < 0}.
Wiq
Wiq
(62)
Si noti che, essendo x̂B ≥ 0, l’intervallo in (62) contiene lo 0, valore corrispondente al problema di partenza.
Si consideri ora una variazione nel costo della p-esima variabile, cioè una
variazione nel vettore dei costi del tipo c0 = c + ep . Tale variazione non
modifica l’insieme di ammissibilità del problema e quindi x̂ è una soluzione
di base ammissibile per il problema modificato. Quali sono i valori di per
cui verifica ancora le condizioni di ottimalità cN ≥ 0? Si devono distinguere
i due casi p ∈ η e p ∈ β. Nel primo caso una variazione di cp altera il
costo ridotto della sola variabile xp e quindi le condizioni di ottimalità sono
soddisfatte se e solo se
c0p = cp + ≥ 0
⇐⇒
≥ −cp .
(63)
Nel secondo caso, sia p = β(q) il q-esimo elemento in base. Le condizioni di
ottimalità richiedono
c0N = cN − (cB + eq )B −1 N = cN − eq B −1 N ≥ 0.
(64)
Sia ã = eq B −1 N. La (64) è equivalente alle condizioni
c0j = cj − ãj ≥ 0
per ogni j ∈ η.
Quindi x̂ soddisfa le condizioni di ottimalità per ogni valore di nell’intervallo
max{
cj
cj
: j ∈ η, ãj < 0} ≤ ≤ min{ : j ∈ η, ãj > 0}.
ãj
ãj
Si noti che, essendo cN ≥ 0, l’intervallo contiene lo 0.
23
(65)
Una analisi analoga può essere condotta per studiare quali variazioni in un
termine della matrice dei vincoli A sono compatibili con l’ottimalità della
base corrente.
Si noti che modifiche nei termini noti e nei costi compatibili con le condizioni
(62), (63) e (65) , mantengono l’ottimalità della base corrente ma comportano
una variazione dei valori delle variabili ottime (nel primo caso) e del valore
ottimo del problema nel secondo caso. Ciò che non varia è la base ottima.
Nel caso di variazioni dei parametri che non soddisfano tali condizioni sarà
necessario eseguire una fase di riottimizzazione.
8
Algoritmo del simplesso duale
Si supponga di aver risolto un problema di PL in forma standard
min
cx
(66)
Ax = b
(67)
x ≥ 0
(68)
con il metodo del simplesso determinando una soluzione di base ottima x∗ e
la corrispondente soluzione duale ottima u∗ date da
x∗ = (B −1 b, 0)
u∗ = cB B −1
dove B è la matrice di base ottima.
Si assuma ora di modificare il problema in uno dei seguenti modi
a) variando il vettore dei termini noti b;
b) introducendo un nuovo vincolo;
e che questa variazione renda la soluzione x∗ inammissibile. Per risolvere il
nuovo problema con il metodo del simplesso si dovrebbe a questo punto far
ripartire la prima fase del metodo e quindi si perderebbe tutta l’informazione
precedentemente acquisita. Questo sembra poco sensato dato che una modifica come quelle considerate probabilmente determina un problema la cui
soluzione ottima non è molto “distante” dalla soluzione ottima del problema
originale. Un metodo che consente di risolvere il nuovo problema a partire
dalla base corrente è il metodo del simplesso duale.
Si consideri dapprima una modifica del vettore dei termini noti b che renda
x∗ inammissibile. Tale modifica fa variare l’insieme ammissibile primale e
la funzione obiettivo duale, mentre non varia l’insieme ammissibile duale e
24
la funzione obiettivo primale. In particolare, se anche la soluzione ottima
primale x∗ non è più ammissibile, la soluzione duale ottima u∗ è ancora
ammissibile. Eventualmente, essendo variata la funzione obiettivo del duale,
u∗ non sarà più ottima.
Nel caso b) in cui venga introdotto un nuovo vincolo primale
gx ≤ h
l’insieme dei vincoli del problema primale diventa




A 0   b 
à = 
≤
g 1
h
dove l’ultima riga si riferisce al nuovo vincolo ed è stata introdotta una nuova
variabile (di slack) e quindi una colonna della matrice identica. In questo
caso, poichè B è non singolare, anche


B 0 
B̃ = 
gB 1
è non singolare. Si può allora considerare la soluzione di base (B̃ −1 (b, h)T , 0)
e la corrispondente soluzione duale di base (cB , 0)B̃ −1 = (u∗ , 0)T . È facile
verificare che (u∗ , 0) risulta ammissibile per il nuovo problema duale.
Vediamo ora come, a partire da una soluzione di base duale ammissibile, sia
possibile risolvere il nuovo problema primale.
L’algoritmo del simplesso duale
Si è già visto come il metodo del simplesso lavori mantenendo ad ogni passo
una coppia di soluzioni primale-duale x, u con le seguenti proprietà: 1) x e u
soddisfano le condizioni di complementarità, 2) x è ammissibile, 3) uB = cB
e 4) la condizione uN − cN ≤ 0, equivalente alla condizione di ottimalità
cN ≥ 0, risulta soddisfatta solo in ottimalità.
Il metodo del simplesso duale opera in modo simmetrico, cioè ad ogni passo
considera una coppia di soluzioni primale e duale che soddisfano le condizioni
di complementarità e di cui solo la soluzione duale è ammissibile. L’obiettivo
è quello di portare la soluzione primale verso l’ammissibilità dato che questa
condizione implica l’ottimalità per il Teorema 10.
Alla generica iterazione la soluzione di base duale u = cB B −1 è ammissibile
mentre la soluzione di base primale (B −1 b, 0) è non ammissibile. Poichè
tutte le variabili fuori base sono nulle, questo implica che una variabile in
25
base deve avere un valore strettamente negativo. Sia essa la variabile di
indice β(q), cioè la q-esima variabile in base. Un modo per rendere questa
variabile non negativa è quello di portarla fuori base, sotto la condizione di
mantenere l’ammissibilità duale. Attualmente il vincolo duale corrispondente
alla colonna B q risulta soddisfatto come uguaglianza. Portare la variabile
fuori base significa consentire che questo vincolo possa essere soddisfatto con
il ≤. L’obiettivo è allora quello di determinare una nuova soluzione duale u0
tale che risulti
u0 B = cB − αeq
(69)
u0 N ≤ cN
(70)
per un opportuno α ≥ 0. Inoltre, per ottenenere una nuova base, è necessario
individuare un valore di α per cui almeno uno dei vincoli corrispondenti alle
variabili fuori base risulti soddisfatto con l’eguaglianza. Per determinare un
tale valore si esplicitino le condizioni (70) sostituendo u0 = (cB − αeq )B −1
nel secondo blocco di disequazioni. Si ottiene
(cB − αeq )B −1 N = cB B −1 N − αeq B −1 N ≤ cN .
Posto ã = eq B −1 N , il valore massimo di α è dato dalle condizioni
−αã ≤ cN − cB B −1 N = cN .
Si noti che, essendo u = cB B −1 ammissibile, i costi ridotti cj , j ∈ η, sono
tutti ≥ 0. Ne segue che componenti ãj ≥ 0 non pongono alcun impedimento
all’aumento di α. Quindi il valore massimo per α è dato da
α∗ = min{
−cj
: j ∈ η,
ãj
ãj < 0}.
In particolare, se ã ≥ 0, α∗ = +∞, cioè α può tendere all’infinito mantenendo
la soluzione duale ammissibile. Il costo della nuova soluzione duale u0 è dato
da
u0 b = cB B −1 b − αeq B −1 b = cB B −1 b − α∗ xβq .
(71)
Poichè xβq < 0, se α∗ = +∞ il valore della soluzione duale tende ad infinito
ed il problema duale è illimitato. Per il Teorema 6 si può concludere che il
primale è inammissibile. In caso contrario, sia p una variabile fuori base per
cui risulta
−cp
.
α∗ =
ãp
Allora il vincolo u0 Ap è soddisfatto con l’uguaglianza e la variabile p entra
in base. Considerando nuovamente la (71), si può notare che, se α∗ > 0, il
valore duale è aumentato.
26
Analogamente a quanto fatto per il simplesso primale, si può dimostrare
che la matrice di base ottenuta sostituendo la q–esima colonna di B con la
colonna Ap è non singolare, e che quindi u0 è una nuova soluzione di base.
Se le componenti della corrispondente soluzione di base primale sono tutte
non negative, allora la soluzioni di base primale corrente è ottima. In caso
contrario, si esegue una nuova iterazione.
Anche in questo caso, se vengono utilizzate regole anticiclaggio, il metodo
termina in un numero finito di passi o producendo una soluzione ottima o
determinando che il problema primale è inammissibile.
Bibliografia
Il materiale contenuto nella dispensa è ampiamente e liberamente tratto dal
testo: P. Serafini, Ottimizzazione, Zanichelli, 2000, (cap. 6 e 7).
Altri riferimenti bibliografici:
D. Goldfarb e M.J. Todd, Linear Programming, in Optimization, Handbooks
of Operations Research and Management Science, Vol. 1, North–Holland.
27