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)