• Non ci sono risultati.

Rilassamento lineare

N/A
N/A
Protected

Academic year: 2021

Condividi "Rilassamento lineare"

Copied!
44
0
0

Testo completo

(1)

Programmazione Lineare Intera

Programmazione Lineare Intera – p. 1/44

(2)

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}.

(3)

Rilassamento lineare

Il rilassamento lineare di un problema di PLI è il problema di PL ottenuto dal problema di PLI omettendo la richiesta che le variabili siano intere, e quindi

max cx

Ax = b x ≥ 0

Sa e Sott denotano rispettivamente la regione ammissibile e l’insieme delle soluzioni ottime del rilassamento lineare del problema di PLI.

Programmazione Lineare Intera – p. 3/44

(4)

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.

(5)

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

(6)

Continua

Se Sott 6= ∅ e Zott 6= ∅, allora dato x ∈ Sott e z ∈ Zott, si ha

z ∈ Zott ⇒ z ∈ Za ⇒ z ∈ Sa ⇒ cz ≤ cx

cioè il valore ottimo del problema di PLI non puó essere superiore 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

(7)

Esempio

max x2

x1 + 2x2 ≤ 4 2x1 + x2 ≤ 4

x1, x2 ≥ 0, x1, x2 ∈ I.

Programmazione Lineare Intera – p. 7/44

(8)

Altri casi possibili

Za = ∅ ma Sott 6= ∅

Za = ∅ ma l’obiettivo del rilassamento lineare é illimitato Se A, b e c contengono solo valori razionali, allora

Zott 6= ∅ implica Sott 6= ∅. Se vi sono coefficienti irrazionali allora puó accadere che Zott 6= ∅ ma il rilassamento lineare ha obiettivo illimitato.

(9)

Esempi

max x2

x114 x134 x2 ≤ 2

x1, x2 ≥ 0, x1, x2 ∈ I.

Programmazione Lineare Intera – p. 9/44

(10)

Esempi

max x2

x114 x134

x1, x2 ≥ 0, x1, x2 ∈ I.

max x2

x2 = √

2x1

x1, x2 ≥ 0, x1, x2 ∈ I.

(11)

Un’importante osservazione

I problemi di PL sono in generale molto piú semplici e rapidi da risolvere dei problemi di PLI In particolare il rilassamento lineare di un problema di PLI é tipicamente molto piú facile da risolvere del problema di PLI stesso.

Programmazione Lineare Intera – p. 11/44

(12)

Metodi di risoluzione

Perché non risolvere il rilassamento lineare e poi

arrotondare a valori interi gli eventuali valori non interi nella soluzione ottima del rilassamento lineare?

Tale procedura é accettabile solo se i valori delle variabili sono elevati. In tal caso infatti l’arrotondamento introduce un errore relativo del tutto trascurabile.

É del tutto inaccettabile quando le variabili assumono valori piccoli (in particolare con le variabili binarie che assumono solo i valori 0 e 1)

(13)

Problema di PLI in forma standard

Si adottano le stesse regole già viste per i problemi di PL ma occorre prestare attenzione ad un ulteriore aspetto.

Un esempio:

max x2

x112 x212

x1, x2 ≥ 0, x1, x2 ∈ I.

Programmazione Lineare Intera – p. 13/44

(14)

Continua

Con un problema di PL potremmo trasformarlo in forma standard 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 possono assumere anche valori non interi. Infatti, ad esempio, se

scelgo x1 = x2 = 0, valori ammissibili per il nostro problema di PLI, il corrispondente valore di y1 e y2 è pari a 1/2.

(15)

Il rimedio

Per fare in modo che anche le nuove variabili possano

assumere solo valori interi quando quelle originarie hanno valori interi, è sufficiente:

trasformare i vincoli in modo tale che in essi compaiano solo coefficienti e termini noti interi.

Programmazione Lineare Intera – p. 15/44

(16)

Nell’esempio

Nel nostro esempio basta moltiplicare entrambi i vincoli per 2:

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.

(17)

Taglio valido

Sia x una soluzione ottima del rilassamento lineare, che si suppone abbia almeno una coordinata non intera (se tutte le sue coordinate fossero intere allora x ∈ Zott).

Definizione 1 Una disequazione wx ≤ v si definisce taglio valido per il problema di PLI se non é soddisfatta da x ma é soddisfatta da tutti i punti nella regione ammissibile del problema di PLI, ovvero

wx > v, wx ≤ v ∀ x ∈ Za

Programmazione Lineare Intera – p. 17/44

(18)

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 x1. Se x1 ha coordinate tutte intere, allora STOP: x1 ∈ Zott. Altrimenti si ponga k = 1 e si vada al Passo 1.

(19)

Continua

Passo 1 Si generi un taglio valido, ovvero una disequazione wkx ≤ vk tale che

wkxk > vk wkx ≤ vk ∀ x ∈ Za

Programmazione Lineare Intera – p. 19/44

(20)

Continua

Passo 2 Si aggiunga il nuovo taglio valido ai vincoli originari del problema e ai tagli validi generati in precedenza e si risolva 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, allora STOP: Za = ∅.

Altrimenti sia x(k+1) la sua soluzione ottima. Se x(k+1) ha coordinate tutte intere, allora STOP:

x(k+1) ∈ Z . Altrimenti si ponga k = k + 1 e si ritorni

(21)

Nota bene

Il problema di PL con l’aggiunta dei tagli non é in forma

standard. Basta la semplice aggiunta di una variabile yr ≥ 0 in 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

(22)

Tagli di Gomory

Sia data la base ottima B = {xi1, . . . , xim} per il

rilassamento lineare del problema di PLI con la seguente riformulazione rispetto a tale base é la seguente:

max γ0 + Pn−m

j=1 γjxim+j xi1 = β1 + Pn−m

j=1 α1jxim+j

· · · xik = βk + Pn−m

j=1 αkjxim+j

· · ·

xim = βm + Pn−m

j=1 αmjxim+j x1, . . . , xn ≥ 0

(23)

Ipotesi

Si suppone che almeno uno dei valori βr, r = 1, . . . , m, sia non intero (se fossero tutti interi la soluzione di base

associata a B sarebbe non solo ottima per il rilassamento lineare ma anche per il problema di PLI).

Programmazione Lineare Intera – p. 23/44

(24)

Esempio

max 56x1133 x4

5x1 + 6x3 − 8x4 = 12

−5x1 + 30x2 + 22x4 = 150

x1, x2, x3, x4 ≥ 0, x1, x2, x3, x4 ∈ I.

(25)

Rilassamento lineare

Base ottima B = {x1, x2}

max 2 − x3 − 3x4

x1 = 12565x3 + 85x4 x2 = 275 + 15x3 + 25x4

x1, x2, x3, x4 ≥ 0

Programmazione Lineare Intera – p. 25/44

(26)

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. Programmazione Lineare Intera – p. 26/44

(27)

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

(28)

Continua

Mantissa di 85:

−8

5 − ⌊−8

5⌋ = −8

5 − (−2) = 2 5 Taglio di Gomory:

−2

5 + 1

5x3 + 2

5x4 ≥ 0

(29)

Continua

Per mantenere il formato standard, possiamo aggiungere una nuova variabile y1 e riscrivere il taglio attraverso la seguente coppia di vincoli:

y1 = −fk + fk1xim+1 + fk2xim+2 + · · · + fk,n−mxin y1 ≥ 0.

Programmazione Lineare Intera – p. 29/44

(30)

Nell’esempio

−2

5 + 1

5x3 + 2

5x4 ≥ 0 m

y1 = −2

5 + 1

5x3 + 2

5x4 y1 ≥ 0

(31)

Il taglio di Gomory è valido

La soluzione ottima del rilassamento lineare non soddisfa il taglio. Nella soluzione ottima del rilassamento lineare si ha:

xim+1 = · · · = xin = 0

quindi, in corrispondenza della soluzione ottima del rilassamento lineare si ha:

y1 = −fk < 0.

Programmazione Lineare Intera – p. 31/44

(32)

Il taglio di Gomory è valido

Generico punto in Za:

xi1, . . . , xin

Sostituiamo le coordinate di tale punto nell’ equazione generatrice del taglio:

xik = βk +

n−mX

j=1

αkjxim+j

e nel taglio di Gomory:

y1 = −fk +

n−mX

j=1

fkjxim+j

(33)

Continua

Si vuole dimostrare che il valore di y1 é ≥ 0 e cioé che la generica soluzione ammissibile in Za soddisfa il taglio. Ma prima 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−mX

j=1

αkjxim+j

e:

y1 = −fk +

n−mX

j=1

fkjxim+j

Programmazione Lineare Intera – p. 33/44

(34)

Continua

Dalla somma ho:

y1 + xik = (βk − fk) +

n−mX

j=1

kj + fkj)xim+j

−fk + βk = ⌊βk⌋ fkj + αkj = −⌊−αkj⌋ Quindi:

y1 = ⌊βk⌋ − xik

n−mX

j=1

⌊−αkj⌋xim+j

(35)

Continua

y1 ≥ 0 in corrispondenza di punti in Za

y1 + fk =

n−mX

j=1

fkj

|{z}

0

xim+j

| {z }

0

Quindi:

y1 + fk ≥ 0

e, per la interezza di y1 e fk < 1, abbiamo che deve essere y1 ≥ 0.

Programmazione Lineare Intera – p. 35/44

(36)

Osservazione 1

Abbiamo dimostrato che la nuova variabile che viene introdotta (la y1) assume sempre valori interi in

corrispondenza di ogni punto di Za. Quindi con l’aggiunta del taglio posso riscrivere il mio problema di PLI in questo modo:

max cx

aix = bi i = 1, . . . , m y1 = −fk + Pn−m

j=1 fkjxim+j

xj ≥ 0, xj ∈ I j = 1, . . . , n y1 ≥ 0, y1 ∈ I

(37)

Nell’esempio

max 56x1133 x4

5x1 + 6x3 − 8x4 = 12

−5x1 + 30x2 + 22x4 = 150 y1 = −25 + 15x3 + 25x4

x1, x2, x3, x4, y1 ≥ 0, x1, x2, x3, x4, y1 ∈ I.

Programmazione Lineare Intera – p. 37/44

(38)

Continua

Quindi: dal momento che il nuovo problema con l’aggiunta del 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 del primo taglio la risoluzione del nuovo rilassamento lineare non ha coordinate tutte intere, possiamo generare un nuovo taglio utilizzando la stessa regola di generazione.

(39)

Osservazione 2

Il rilassamento lineare del problema di PLI dopo l’aggiunta del taglio non deve essere risolto da zero. Infatti, possiamo prendere la coppia di vincoli

y1 = −fk +

n−mX

j=1

fkjxim+j y1 ≥ 0,

che esprime il taglio ed aggiungerla alla riformulazione

rispetto alla base ottima B del rilassamento lineare prima dell’introduzione del taglio.

Programmazione Lineare Intera – p. 39/44

(40)

Continua

max γ0 + Pn−m

j=1 γjxim+j xi1 = β1 + Pn−m

j=1 α1jxim+j

· · · xik = βk + Pn−m

j=1 αkjxim+j

· · ·

xim = βm + Pn−m

j=1 αmjxim+j y1 = −fk + Pn−m

j=1 fkjxim+j x1, . . . , xn, y1 ≥ 0

(41)

Continua

Questa è giá la riformulazione del nuovo rilassamento lineare 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

(42)

Nell’esempio

Base B ∪ {y1} = {x1, x2, y1} ammissibile per il duale max 2 − x3 − 3x4

x1 = 12565x3 + 85x4 x2 = 275 + 15x3 + 25x4 y1 = −25 + 15x3 + 25x4

x1, x2, x3, x4, y1 ≥ 0.

(43)

Continua

Applicando il simplesso duale si arriva in una iterazione alla base 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 di PLI:

x1 = 0 x2 = 5 x3 = 2 x4 = 0

Valore ottimo del rilassamento lineare e del problema di PLI

= 0

Programmazione Lineare Intera – p. 43/44

(44)

Osservazione 3

Se ad ogni iterazione il taglio di Gomory viene realizzato a partire dalla prima equazione con un termine noto βk non intero, allora l’algoritmo termina in un numero finito di

iterazioni.

Riferimenti

Documenti correlati

Lineare del

Nel nostro esempio la forza ha due componenti: la forza di gravit` a, m g, che agisce dall’alto verso il basso, e la forza di attrito fattr, che agisce in senso inverso ed `e

[r]

Note per il corso di Analisi Matematica (II modulo) per gli studenti di Ingegneria Automatica e In- gegneria Informatica - Anno Accademico 2007/2008 (I canale). Queste note hanno

The results are neat: the odds ratio of showing respiratory symptoms after using formalin was nine to ten times higher than for workers using UVS and having

Si scriva uno script di utilizzo di tale function e si provi a risolvere lo stesso sistema con tale metodo, producendo un grafico come indicato nell’Esercizio 1..

Per ogni valore di λ &gt; 0 fissato, la soluzione ottima del problema lagrangiano costituisce un bound duale sull'ottimo del problema originario.. Infatti, il

I risultati ottenuti nella presente ricerca suggeriscono che il metodo T-touch è efficace nell’indurre uno stato di rilassamento nel cane, ma la sua efficacia appare