Problemi lineari equivalenti

Transcript

Problemi lineari equivalenti
Problemi lineari equivalenti
Introduzione
Nel seguito verranno presentati alcuni esempi di trasformazione di problemi di problemi di programmazione
lineare in forme equivalenti. Un problema di programmazione lineare è in forma canonica se si presenta come
segue:
max z
= cT x
Ax ≤ b
x ≥ 0,
(1)
dove c ∈ Rn , b ∈ Rm e A ∈ Rm×n .
Un problema di programmazione lineare è in forma standard se si presenta come segue:
max z
= cT x
Ax = b
con b ≥ 0
x ≥ 0,
(2)
dove c ∈ Rn , b ∈ Rm e A ∈ Rm×n .
Una coppia primale-duale di problemi di programmazione lineare è in forma canonica se si presenta come
segue:
max z
= cT x
Ax ≤ b
min w
⇔
x ≥ 0
AT π
π
= bT π
≥ c
(3)
≥ 0,
dove c ∈ Rn , b ∈ Rm e A ∈ Rm×n .
Se il problema primale non è in forma canonica si può comunque ottenere il duale che presenti rispetto al
primale la natura (max o min) dell’ottimizzazione opposta, la matrice dei coefficienti trasposta, i termini noti
e i coefficienti della funzione obiettivo scambiati. Il verso delle disuguaglianze e il segno delle variabili del
duale dipenderanno dalla natura e, rispettivamente, dal segno delle variabili e dal verso delle disuguaglianze
del primale.
1
Trasformazione da forma canonica a forma standard
Sia dato il seguente problema in forma canonica
max z
=
5x1 + 3x2
4x1 + 2x2
≤ 3
5x1 − 4x2
≤ 6
−x1 − x2
≤
x1 , x2
−1
≥ 0.
(4)
La forma standard differisce da quella canonica nei termini noti che devono essere tutti non negativi e nei
vincoli che devono essere di uguaglianza (a meno dei vincoli su segno delle variabili). Per ottenere tutti i
termini noti non negativi si moltiplicano per -1 gli eventuali vincoli con secondo membro negativo. Si ricordi
che moltiplicare entrambi i membri di una disuguaglianza per -1 implica il cambio di verso alla disuguaglianza.
max z
=
5x1 + 3x2
4x1 + 2x2
≤ 3
5x1 − 4x2
≤ 6
x1 + x2
≥ 1
x1 , x2
≥ 0.
(5)
Per ottenere vincoli di uguaglianza si aggiunge una variabile non negativa per vincolo di disuguaglianza. Tali
variabili vengono dette di slack se associate a vincoli di minore o uguale, di surplus se associate a vincoli di
maggiore o uguale. Questa trasformazione si basa sulle seguenti banali osservazioni
(primo membro) ≤ (secondo membro)
⇔
(primo membro)+(quantità positiva o nulla) = (secondo membro)
(primo membro) ≥ (secondo membro)
⇔
(primo membro)−(quantità positiva o nulla) = (secondo membro).
max z
=
5x1 + 3x2
4x1 + 2x2 + s1
=
3
5x1 − 4x2 + s2
=
6
x1 + x2 − s3
=
1
≥ 0.
x1 , x2 , s1 , s2 , s3
Le variabili s1 e s2 sono di slack, la variabile s3 è di surplus. Il problema (6) è in forma standard.
Trasformazione da forma standard a forma canonica
Sia dato il seguente problema in forma standard
max z
=
2
5x1 + 3x2 − x3
(6)
4x1 + 2x2 + x3
=
3
5x1 − 4x2 − 2x3
=
6
x1 , x2 , x3
≥ 0.
(7)
Per ottenere vincoli di disuguaglianza si trasforma ogni vincolo di uguaglianza in una coppia di vincoli di
disuguaglianza con verso opposto. Questa trasformazione si basa sulla seguente banale osservazione

 (primo membro) ≥ (secondo membro)
(primo membro) = (secondo membro) ⇔
 (primo membro) ≤ (secondo membro)
max z
=
5x1 + 3x2 − x3
4x1 + 2x2 + x3
≥ 3
4x1 + 2x2 + x3
≤ 3
5x1 − 4x2 − 2x3
≥ 6
5x1 − 4x2 − 2x3
≤ 6
x1 , x2 , x3
≥ 0.
(8)
Infine si moltiplicano i vincoli di maggiore e uguale per -1.
max z
=
5x1 + 3x2 − x3
−4x1 − 2x2 − x3
≤
−3
≤ 3
4x1 + 2x2 + x3
−5x1 + 4x2 + 2x3
≤
−6
5x1 − 4x2 − 2x3
≤ 6
x1 , x2 , x3
≥ 0.
Il problema (9) è in forma canonica.
Trasformazione da forma generale a forma canonica
Sia dato il seguente problema
min z
=
5x1 + 3x2 − x3
4x1 + 2x2 + x3
=
3
5x1 − 4x2 − 2x3
≤ 6
7x1 + x2 + 2x3
≥ 5
x1
≥ 0
x2
≤ 0
3
(9)
x3
libera.
(10)
Si trasforma il problema in un problema di max cambiando il segno ai coefficienti della funzione obiettivo
min z = 5x1 + 3x2 − x3
⇔
max w = −5x1 − 3x2 + x3 .
Attraverso opportuni cambi di variabili si rendono tutte le variabili positive o nulle. In particolare le
variabili negative o nulle vengono sostituite con variabili positive o nulle moltiplicate per -1, i.e., x2 = −x̂2 e
−
le variabili libere vengono sostituite dalla differenza di due variabili positive o nulle x3 = x+
3 − x3 . L’ultima
trasformazione si basa sul fatto che qualunque numero può essere espresso come differenza di due numeri
positivi o nulli, e.g., 5 = 5 − 0 e −5 = 0 − 5. Una volta risolto il problema nelle nuove variabili si calcolerà il
valore delle variabili originali applicando le trasformazioni inverse.
max w
−
4x1 − 2x̂2 + x+
3 − x3
−
= −5x1 + 3x̂2 + x+
3 − x3
=
3
−
5x1 + 4x̂2 − 2x+
3 + 2x3
≤ 6
−
7x1 − x̂2 + 2x+
3 − 2x3
≥ 5
−
x1 , x̂2 , x+
3 , x3
≥ 0.
(11)
Infine si moltiplicano i vincoli di maggiore e uguale per -1 e si sdoppiano i vincoli di uguaglianza come visto
in precedenza.
max w
−
4x1 − 2x̂2 + x+
3 − x3
−
−4x1 + 2x̂2 − x+
3 + x3
−
5x1 + 4x̂2 − 2x+
3 + 2x3
−
−7x1 + x̂2 − 2x+
3 + 2x3
−
x1 , x̂2 , x+
3 , x3
−
= −5x1 + 3x̂2 + x+
3 − x3
≤ 3
≤
−3
≤ 6
≤
−5
≥ 0.
Il problema (12) è in forma canonica.
Trasformazione primale duale
Sia dato il seguente problema primale
min z
=
5x1 + 3x2 − x3 + 3x4
4x1 + 2x2 + x3 + x4
=
3
5x1 − 4x2 − 2x3 − x4
≤ 6
4
(12)
7x1 + x2 + 2x3
≥ 5
x1 , x4
≥ 0
x2
≤ 0
x3
libera.
(13)
Si formula il problema in forma canonica (sono indicate tra parentesi le variabili duali associate a ogni vincolo
primale)
max w
−
4x1 − 2x̂2 + x+
3 − x3 + x4
−
−4x1 + 2x̂2 − x+
3 + x3 − x4
−
5x1 + 4x̂2 − 2x+
3 + 2x3 − x4
−
−7x1 + x̂2 − 2x+
3 + 2x3
−
x1 , x̂2 , x+
3 , x3 , x4
−
= −5x1 + 3x̂2 + x+
3 − x3 − 3x4
≤ 3
≤
−3
≤ 6
≤
(y1 )
(y2 )
(y3 )
−5
(y4 )
≥ 0.
(14)
Si scrive il duale del problema (14) (sono indicate tra parentesi le variabili primali associate a ogni vincolo
duale)
min ω
=
3y1 − 3y2 + 6y3 − 5y4
4y1 − 4y2 + 5y3 − 7y4
≥
−5
−2y1 + 2y2 + 4y3 + y4
≥ 3
(x̂2 )
y1 − y2 − 2y3 − 2y4
≥ 1
(x+
3)
(x1 )
−y1 + y2 + 2y3 + 2y4
≥
−1
(x−
3)
y1 − y2 − y 3
≥
−3
(x4 )
y1 , y 2 , y 3 , y 4
≥ 0.
(15)
Si riduce il numero di vincoli e di variabili. In particolare si osserva che
• il terzo e il quarto vincolo sono equivalenti ad un unico vincolo di uguaglianza;
• le variabili y1 e y2 presentano sempre gli stessi coefficienti ma con segno opposto e quindi possono essere
sostituite da un unica variabile non π1 = y2 − y1 non vincolata in segno (libera). Scegliere π1 = y2 − y1
oppure π1 = y1 − y2 è concettualmente indifferente, una scelta piuttosto che l’altra potrebbe però
richiedere nel seguito un ulteriore cambio di variabile.
Si ottiene quindi
min ω
−4π1 + 5y3 − 7y4
= −3π1 + 6y3 − 5y4
≥
5
−5
(x1 )
≥ 3
(x̂2 )
−π1 − 2y3 − 2y4
=
1
(x3 )
−π1 − y3
≥
−3
2π1 + 4y3 + y4
π1
y3 , y 4
(x4 )
libera
≥ 0.
(16)
Si moltiplicano alcuni vincoli di (16) per ottenere che i segni dei termini noti del duale coincidano con i
coefficienti della funzione obiettivo del primale
min ω
= −3π1 + 6y3 − 5y4
4π1 − 5y3 + 7y4
≤ 5
(x1 )
2π1 + 4y3 + y4
≥ 3
(x2 )
π1 + 2y3 + 2y4
= −1
π1 + y 3
≤ 3
π1
y3 , y 4
(x3 )
(x4 )
libera
≥ 0.
(17)
Si cambia la natura del problema di ottimizzazione
max ζ
=
3π1 − 6y3 + 5y4
4π1 − 5y3 + 7y4
≤ 5
(x1 )
2π1 + 4y3 + y4
≥ 3
(x2 )
π1 + 2y3 + 2y4
= −1
π1 + y 3
≤ 3
π1
y3 , y 4
(x3 )
(x4 )
libera
≥ 0.
(18)
Ci si riconduce ad una matrice dei coefficienti uguale alla trasposta della matrice dei coefficienti del problema
primale osservando che si devono invertire i segni dei coefficienti associati alla variabile y3 . Questo risultato
può essere ottenuto introducendo una variabile opposta in segno π2 = −y3 . Per uniformità di simbolismo si
ribattezza inoltre y4 come π3 .
max ζ
=
3π1 + 6π2 + 5π3
4π1 + 5π2 + 7π3
≤ 5
(x1 )
2π1 − 4π2 + π3
≥ 3
(x2 )
π1 − 2π2 + 2π3
= −1
π1 − π2
≤ 3
6
(x3 )
(x4 )
π1
libera
π2
≤ 0
π3
≥ 0.
I problemi (13) and (19) formano la coppia primale duale desiderata.
7
(19)