programmazione lineare intera - dipartimento di ...locatell/didattica/ro1/taglio-sl-bf.pdf ·...
TRANSCRIPT
Programmazione Lineare Intera
Programmazione Lineare Intera – p. 1/44
Programmazione Lineare Intera
Problema di PLI in forma standard:
max cx
Ax = b
x ≥ 0, x ∈ In
I → insieme degli interi.
Regione ammissibile:
Za = {x ∈ In : Ax = b, x ≥ 0},
Insieme delle sue soluzioni ottime:
Zott = {x∗ ∈ Za : cx∗ ≥ cx ∀ x ∈ Za}.
Programmazione Lineare Intera – p. 2/44
Rilassamento lineare
Il rilassamento lineare di un problema di PLI è il problema diPL ottenuto dal problema di PLI omettendo la richiesta chele variabili siano intere, e quindi
max cx
Ax = b
x ≥ 0
Sa e Sott denotano rispettivamente la regione ammissibile el’insieme delle soluzioni ottime del rilassamento lineare delproblema di PLI.
Programmazione Lineare Intera – p. 3/44
Esempio
Problema di PLI:
max x1 + x2
x1 + 2x2 ≤ 4
2x1 + x2 ≤ 4
x1, x2 ≥ 0, x1, x2 ∈ I.
Rilassamento lineare:
max x1 + x2
x1 + 2x2 ≤ 4
2x1 + x2 ≤ 4
x1, x2 ≥ 0.
Programmazione Lineare Intera – p. 4/44
Relazioni tra i due problemi
Si ha che:Za ⊆ Sa
e i due problemi hanno la stessa funzione obiettivo cx
quindi:
Se Sa = ∅, allora Za = ∅.
Se ∃ {xk} tale che xk ∈ Za per ogni k e
cxk → +∞ k → +∞,
(obiettivo del problema di PLI illimitato), allora éillimitato anche l’obiettivo del suo rilassamento lineare.
Programmazione Lineare Intera – p. 5/44
Continua
Se Sott 6= ∅ e Zott 6= ∅, allora dato x∗ ∈ Sott e z
∗ ∈ Zott, siha
z∗ ∈ Zott ⇒ z
∗ ∈ Za ⇒ z∗ ∈ Sa ⇒ cz
∗ ≤ cx∗
cioè il valore ottimo del problema di PLI non puó esseresuperiore al valore ottimo del suo rilassamento lineare.
Se Sott 6= ∅ contiene un punto x∗ a coordinate tutte
intere, allora x∗ ∈ Zott e i valori ottimi dei due problemi
coincidono. Infatti:
x∗ ∈ Sott ⇒ cx ≤ cx
∗ ∀ x ∈ Sa ⇒ cx ≤ cx∗ ∀ x ∈ Za
x∗ a coordinate intere ⇒ x
∗ ∈ Za
Programmazione Lineare Intera – p. 6/44
Esempio
max x2
x1 + 2x2 ≤ 4
2x1 + x2 ≤ 4
x1, x2 ≥ 0, x1, x2 ∈ I.
Programmazione Lineare Intera – p. 7/44
Altri casi possibili
Za = ∅ ma Sott 6= ∅Za = ∅ ma l’obiettivo del rilassamento lineare é illimitato
Se A,b e c contengono solo valori razionali, alloraZott 6= ∅ implica Sott 6= ∅. Se vi sono coefficientiirrazionali allora puó accadere che Zott 6= ∅ ma ilrilassamento lineare ha obiettivo illimitato.
Programmazione Lineare Intera – p. 8/44
Esempi
max x2
x1 ≥ 14
x1 ≤ 34
x2 ≤ 2
x1, x2 ≥ 0, x1, x2 ∈ I.
Programmazione Lineare Intera – p. 9/44
Esempi
max x2
x1 ≥ 14
x1 ≤ 34
x1, x2 ≥ 0, x1, x2 ∈ I.
max x2
x2 =√
2x1
x1, x2 ≥ 0, x1, x2 ∈ I.
Programmazione Lineare Intera – p. 10/44
Un’importante osservazione
I problemi di PL sono in generale molto piú semplici e rapidida risolvere dei problemi di PLI In particolare il rilassamentolineare di un problema di PLI é tipicamente molto piú facileda risolvere del problema di PLI stesso.
Programmazione Lineare Intera – p. 11/44
Metodi di risoluzione
Perché non risolvere il rilassamento lineare e poiarrotondare a valori interi gli eventuali valori non interi nellasoluzione ottima del rilassamento lineare?
Tale procedura é accettabile solo se i valori delle variabilisono elevati. In tal caso infatti l’arrotondamento introduceun errore relativo del tutto trascurabile.
É del tutto inaccettabile quando le variabili assumono valoripiccoli (in particolare con le variabili binarie che assumonosolo i valori 0 e 1)
Programmazione Lineare Intera – p. 12/44
Problema di PLI in forma standard
Si adottano le stesse regole già viste per i problemi di PLma occorre prestare attenzione ad un ulteriore aspetto.
Un esempio:
max x2
x1 ≤ 12
x2 ≤ 12
x1, x2 ≥ 0, x1, x2 ∈ I.
Programmazione Lineare Intera – p. 13/44
Continua
Con un problema di PL potremmo trasformarlo in formastandard con l’aggiunta di due variabili y1 e y2:
max x2
x1 + y1 = 12
x2 + y2 = 12
x1, x2, y1, y2 ≥ 0, x1, x2 ∈ I.
Ma: ci ritroviamo con un problema in cui alcune variabili (x1
e x2) possono assumere solo valori interi e altre possonoassumere anche valori non interi. Infatti, ad esempio, sescelgo x1 = x2 = 0, valori ammissibili per il nostro problemadi PLI, il corrispondente valore di y1 e y2 è pari a 1/2.
Programmazione Lineare Intera – p. 14/44
Il rimedio
Per fare in modo che anche le nuove variabili possanoassumere solo valori interi quando quelle originarie hannovalori interi, è sufficiente:
trasformare i vincoli in modo tale che in essi compaianosolo coefficienti e termini noti interi.
Programmazione Lineare Intera – p. 15/44
Nell’esempio
Nel nostro esempio basta moltiplicare entrambi i vincoli per2:
max x2
2x1 ≤ 1
2x2 ≤ 1
x1, x2 ≥ 0, x1, x2 ∈ I.
e solo a questo punto aggiungere le due variabili y1 e y2:
max x2
2x1 + y1 = 1
2x2 + y2 = 1
x1, x2, y1, y2 ≥ 0, x1, x2, y1, y2 ∈ I.
Programmazione Lineare Intera – p. 16/44
Taglio valido
Sia x∗ una soluzione ottima del rilassamento lineare, che si
suppone abbia almeno una coordinata non intera (se tuttele sue coordinate fossero intere allora x
∗ ∈ Zott).Definizione 1 Una disequazione wx ≤ v si definisce tagliovalido per il problema di PLI se non é soddisfatta da x
∗ maé soddisfatta da tutti i punti nella regione ammissibile delproblema di PLI, ovvero
wx∗ > v, wx ≤ v ∀ x ∈ Za
Programmazione Lineare Intera – p. 17/44
Algoritmi di taglio
Inizializzazione Si risolva il rilassamento lineare
max cx
aix = bi i = 1, . . . ,m
xj ≥ 0 j = 1, . . . , n
Se:Sa = ∅, allora STOP con Za = ∅;esiste una soluzione ottima, indicata con x
∗1. Se x∗1
ha coordinate tutte intere, allora STOP: x∗1 ∈ Zott.
Altrimenti si ponga k = 1 e si vada al Passo 1.
Programmazione Lineare Intera – p. 18/44
Continua
Passo 1 Si generi un taglio valido, ovvero una disequazionewkx ≤ vk tale che
wkx∗k > vk wkx ≤ vk ∀ x ∈ Za
Programmazione Lineare Intera – p. 19/44
Continua
Passo 2 Si aggiunga il nuovo taglio valido ai vincoli originaridel problema e ai tagli validi generati in precedenza e sirisolva il problema di PL
max cx
aix = bi i = 1, . . . ,m
wrx ≤ vr r = 1, . . . , k
xj ≥ 0 j = 1, . . . , n
Se:il problema ha regione ammissibile vuota, alloraSTOP: Za = ∅.
Altrimenti sia x∗(k+1) la sua soluzione ottima. Se
x∗(k+1) ha coordinate tutte intere, allora STOP:
x∗(k+1) ∈ Zott. Altrimenti si ponga k = k + 1 e si ritorni
al Passo 1.Programmazione Lineare Intera – p. 20/44
Nota bene
Il problema di PL con l’aggiunta dei tagli non é in formastandard. Basta la semplice aggiunta di una variabile yr ≥ 0in ciascuno dei tagli per portarlo alla forma standard:
max cx
aix = bi i = 1, . . . ,m
wrx + yr = vr r = 1, . . . , k
xj ≥ 0 j = 1, . . . , n
yr ≥ 0 r = 1, . . . , k
Programmazione Lineare Intera – p. 21/44
Tagli di Gomory
Sia data la base ottima B∗ = {xi1 , . . . , xim} per ilrilassamento lineare del problema di PLI con la seguenteriformulazione rispetto a tale base é la seguente:
max γ0 +∑n−m
j=1 γjxim+j
xi1 = β1 +∑n−m
j=1 α1jxim+j
· · ·xik = βk +
∑n−mj=1 αkjxim+j
· · ·xim = βm +
∑n−mj=1 αmjxim+j
x1, . . . , xn ≥ 0
Programmazione Lineare Intera – p. 22/44
Ipotesi
Si suppone che almeno uno dei valori βr, r = 1, . . . ,m, sianon intero (se fossero tutti interi la soluzione di baseassociata a B∗ sarebbe non solo ottima per il rilassamentolineare ma anche per il problema di PLI).
Programmazione Lineare Intera – p. 23/44
Esempio
max 56x1 − 13
3 x4
5x1 + 6x3 − 8x4 = 12
−5x1 + 30x2 + 22x4 = 150
x1, x2, x3, x4 ≥ 0, x1, x2, x3, x4 ∈ I.
Programmazione Lineare Intera – p. 24/44
Rilassamento lineare
Base ottima B∗ = {x1, x2}
max 2 − x3 − 3x4
x1 = 125 − 6
5x3 + 85x4
x2 = 275 + 1
5x3 + 25x4
x1, x2, x3, x4 ≥ 0
Programmazione Lineare Intera – p. 25/44
Il taglio di Gomory
Sia βk un valore non intero. Equazione relativa a xik
(equazione generatrice del taglio):
xik = βk + αk1xim+1+ αk2xim+2
+ · · · + αk,n−mxin.
Taglio di Gomory:
−fk + fk1xim+1+ fk2xim+2
+ · · · + fk,n−mxin ≥ 0
dove
fkj, j = 1, . . . , n − m, é la mantissa di −αkj, cioé
fkj = −αkj − ⌊−αkj⌋ ≥ 0,
fk é la mantissa di βk, cioé
fk = βk − ⌊βk⌋ > 0.
Inoltre: f , f < 1.
Programmazione Lineare Intera – p. 26/44
Esempio
Equazione generatrice del taglio:
x1 =12
5− 6
5x3 +
8
5x4
Mantissa di 125 :
12
5− ⌊12
5⌋ =
12
5− 2 =
2
5
Mantissa di 65 :
6
5− ⌊6
5⌋ =
6
5− 1 =
1
5
Programmazione Lineare Intera – p. 27/44
Continua
Mantissa di −85 :
−8
5− ⌊−8
5⌋ = −8
5− (−2) =
2
5
Taglio di Gomory:
−2
5+
1
5x3 +
2
5x4 ≥ 0
Programmazione Lineare Intera – p. 28/44
Continua
Per mantenere il formato standard, possiamo aggiungereuna nuova variabile y1 e riscrivere il taglio attraverso laseguente coppia di vincoli:
y1 = −fk + fk1xim+1+ fk2xim+2
+ · · · + fk,n−mxin
y1 ≥ 0.
Programmazione Lineare Intera – p. 29/44
Nell’esempio
−2
5+
1
5x3 +
2
5x4 ≥ 0
m
y1 = −2
5+
1
5x3 +
2
5x4 y1 ≥ 0
Programmazione Lineare Intera – p. 30/44
Il taglio di Gomory è valido
La soluzione ottima del rilassamento lineare non soddisfa i l taglio .
Nella soluzione ottima del rilassamento lineare si ha:
xim+1= · · · = xin = 0
quindi, in corrispondenza della soluzione ottima delrilassamento lineare si ha:
y1 = −fk < 0.
Programmazione Lineare Intera – p. 31/44
Il taglio di Gomory è valido
Generico punto in Za:
xi1, . . . , xin
Sostituiamo le coordinate di tale punto nell’ equazionegeneratrice del taglio:
xik = βk +n−m∑
j=1
αkjxim+j
e nel taglio di Gomory:
y1 = −fk +
n−m∑
j=1
fkjxim+j
Programmazione Lineare Intera – p. 32/44
Continua
Si vuole dimostrare che il valore di y1 é ≥ 0 e cioé che lagenerica soluzione ammissibile in Za soddisfa il taglio. Maprima dimostriamo che:
in corrispondenza di ogni punto in Za, il valore di y1 e intero
Sommo membro a membro le due equazioni:
xik = βk +
n−m∑
j=1
αkjxim+j
e:
y1 = −fk +n−m∑
j=1
fkjxim+j
Programmazione Lineare Intera – p. 33/44
Continua
Dalla somma ho:
y1 + xik = (βk − fk) +n−m∑
j=1
(αkj + fkj)xim+j
−fk + βk = ⌊βk⌋ fkj + αkj = −⌊−αkj⌋Quindi:
y1 = ⌊βk⌋ − xik −n−m∑
j=1
⌊−αkj⌋xim+j
Programmazione Lineare Intera – p. 34/44
Continua
y1 ≥ 0 in corrispondenza di punti in Za
y1 + fk =n−m∑
j=1
fkj︸︷︷︸
≥0
xim+j︸ ︷︷ ︸
≥0
Quindi:y1 + fk ≥ 0
e, per la interezza di y1 e fk < 1, abbiamo che deve esserey1 ≥ 0.
Programmazione Lineare Intera – p. 35/44
Osservazione 1
Abbiamo dimostrato che la nuova variabile che vieneintrodotta (la y1) assume sempre valori interi incorrispondenza di ogni punto di Za. Quindi con l’aggiuntadel taglio posso riscrivere il mio problema di PLI in questomodo:
max cx
aix = bi i = 1, . . . ,m
y1 = −fk +∑n−m
j=1 fkjxim+j
xj ≥ 0, xj ∈ I j = 1, . . . , n
y1 ≥ 0, y1 ∈ I
Programmazione Lineare Intera – p. 36/44
Nell’esempio
max 56x1 − 13
3 x4
5x1 + 6x3 − 8x4 = 12
−5x1 + 30x2 + 22x4 = 150
y1 = −25 + 1
5x3 + 25x4
x1, x2, x3, x4, y1 ≥ 0, x1, x2, x3, x4, y1 ∈ I.
Programmazione Lineare Intera – p. 37/44
Continua
Quindi: dal momento che il nuovo problema con l’aggiuntadel taglio é ancora un problema di PLI (tutte la variabili,compresa la nuova, y1, sono vincolate ad essere intere)possiamo iterare la procedura, cioé se dopo l’aggiunta delprimo taglio la risoluzione del nuovo rilassamento linearenon ha coordinate tutte intere, possiamo generare un nuovotaglio utilizzando la stessa regola di generazione.
Programmazione Lineare Intera – p. 38/44
Osservazione 2
Il rilassamento lineare del problema di PLI dopo l’aggiuntadel taglio non deve essere risolto da zero. Infatti, possiamoprendere la coppia di vincoli
y1 = −fk +n−m∑
j=1
fkjxim+jy1 ≥ 0,
che esprime il taglio ed aggiungerla alla riformulazionerispetto alla base ottima B∗ del rilassamento lineare primadell’introduzione del taglio.
Programmazione Lineare Intera – p. 39/44
Continua
max γ0 +∑n−m
j=1 γjxim+j
xi1 = β1 +∑n−m
j=1 α1jxim+j
· · ·xik = βk +
∑n−mj=1 αkjxim+j
· · ·xim = βm +
∑n−mj=1 αmjxim+j
y1 = −fk +∑n−m
j=1 fkjxim+j
x1, . . . , xn, y1 ≥ 0
Programmazione Lineare Intera – p. 40/44
Continua
Questa è giá la riformulazione del nuovo rilassamentolineare rispetto alla base B∗ ∪ {y1}. Tale base è
non ammissibile per il primale (y1 = −fk < 0)
ammissibile per il duale
Programmazione Lineare Intera – p. 41/44
Nell’esempio
Base B∗ ∪ {y1} = {x1, x2, y1} ammissibile per il duale
max 2 − x3 − 3x4
x1 = 125 − 6
5x3 + 85x4
x2 = 275 + 1
5x3 + 25x4
y1 = −25 + 1
5x3 + 25x4
x1, x2, x3, x4, y1 ≥ 0.
Programmazione Lineare Intera – p. 42/44
Continua
Applicando il simplesso duale si arriva in una iterazione allabase ottima {x1, x2, x3}:
max 0 − 5y1 − x4
x1 = 0 − 6y1 + 4x4
x2 = 5 − y1 + 3x4
x3 = 2 + 5y1 − 2x4
x1, x2, x3, x4, y1 ≥ 0
Soluzione ottima del rilassamento lineare e del problema diPLI:
x∗1 = 0 x∗
2 = 5 x∗3 = 2 x∗
4 = 0
Valore ottimo del rilassamento lineare e del problema di PLI= 0
Programmazione Lineare Intera – p. 43/44
Osservazione 3
Se ad ogni iterazione il taglio di Gomory viene realizzato apartire dalla prima equazione con un termine noto βk nonintero, allora l’algoritmo termina in un numero finito diiterazioni.
Programmazione Lineare Intera – p. 44/44