...

Esercizi di Programmazione Intera

by user

on
Category: Documents
3

views

Report

Comments

Transcript

Esercizi di Programmazione Intera
Esercizi di Programmazione Intera
1
Tagli di Gomory
Si consideri il seguente problema di programmazione lineare intera:
max
s.t.
x1 + x2
x1 + 2x2 ≤ 15
3x1 − x2 ≤ 6
x1 , x2 ∈ Z+
a) Si individui per via grafica una soluzione di base ottima del rilassamento continuo, la corrispondente matrice
di base AB , e la sua inversa A−1
B .
b) Si calcolino i tagli di Gomory relativi alle componenti frazionarie della soluzione ottima di base trovata.
c) Si dia la rappresentazione grafica delle disuguaglianze trovate.
Soluzione
a)
Prima di poter trovare i tagli di Gomory il problema deve essere riscritto nella forma min{cx | Ax = b, x ∈ Z},
introducendo eventualmente delle variabili di scarto:
min
s.t.
− x1 − x2
x1 + 2x2 + x3 = 15
3x1 − x2 + x4 = 6
x1 , x2 ∈ Z+
10
7.5
c
5
2.5
-2.5
0
2.5
5
7.5
10
12.5
15
Il gradiente della funzione obiettivo può essere espresso come una combinazione lineare non negativa del primo e
39
del secondo vincolo,-2.5la cui intersezione da il punto x∗ = ( 27
7 , 7 ), soluzione ottima del rilassamento del problema di
1
programmazione lineare intera proposto. Tale soluzione individua la soluzione di base data dal primo e dal secondo
vincolo e individua le seguenti matrici di base:
1 2
1/7 2/7
−1
AB =
AB =
3 −1
3/7 −1/7
b)
Si noti come la variabile di base trovata al punto precedente, implica che le variabili fuori base (che
all’ottimo prendono un valore nullo) siano x3 e x4 , dando come matrice delle variabili fuori base la matrice
1 0
AN =
0 1
I tagli di Gomory corrispondenti alla soluzione di base ottima sono ottenuti come segue:
Ax = b
(1)
AB x B + AN x N = b
(2)
−1
xB + A−1
B AN x N = AB b
−1
xB + bA−1
B AN c x N ≤ AB b
−1
xB + bA−1
B AN c xN ≤ bAB bc
AB invertibile (di base)
(3)
poichè x ≥ 0
(4)
x è intera
(5)
applicando la diseguaglianza (3) alla soluzione di base ottima, e usando la matrice inversa della matrice di base, si
ottiene:
x1
1/7 2/7
1 0
x3
1/7 2/7
15
+
=
x2
3/7 −1/7
0 1
x4
3/7 −1/7
6
facendo i conti e riscrivendo i vincoli per ogni variabile di base frazionaria si ottiene:
x1 + 1/7x3 + 2/7x4
=
27/7
(6)
x2 + 3/7x3 − 1/7x4
=
39/7
(7)
e applicando gli operatori di arrotondamento per difetto (vedi (4) e (5)):
x1
≤ 3
(8)
x2 − x4
≤ 5
(9)
Osservazione: I tagli di Gomory vanno generati applicando la (5), solo a quelle variabili di base che hanno un
coefficiente frazionario. Si veda il prossimo esercizio per un esempio di questa osservazione.
c)
Per poter dare la rappresentazione grafica dei tagli trovati, dobbiamo scrivere il secondo taglio in funzione
delle prime due variabili (senza le variabili di scarto x3 e x4 ). Usando il secondo vincolo otteniamo:
x4 = 6 − 3x1 + x2
da cui otteniamo x1 ≤ b11/3c = 3 uguale al primo taglio di Gomory trovato.
Aggiungendo il taglio di Gomory trovato alla soluzione grafica, otteniamo come nuova soluzione di base ottima
il punto x∗ = (3, 6) che essendo intero è anche la soluzione ottima del problema di partenza.
2
Tagli di Gomory
Si consideri il seguente problema di programmazione lineare intera:
max
s.t.
3x1 + x2
− x1 + 5x2 ≤ 20
4x1 + 2x2 ≤ 19
x1 − x2 ≤ 1
x1 , x2 ∈ Z+
a) Dopo aver introdotto le opportune variabili di scarto, si individui una soluzione ottima di base, la corrispondente matrice di base AB , e la sua inversa A−1
B .
b) Si calcolino i tagli di Gomory relativi alle componenti frazionarie della soluzione.
c) Si dia la rappresentazione grafica delle disuguaglianze trovate.
2
Soluzione
a)
Prima di poter trovare i tagli di Gomory il problema deve essere riscritto nella forma min{cx | Ax = b, x ∈ Z},
introducendo eventualmente delle variabili di scarto:
min
s.t.
− 3x1 − x2
− x1 + 5x2 + x3 = 20
4x1 + 2x2 + x4 = 19
x1 − x2 + x5 = 1
x1 , x2 ∈ Z+
5
4
3
c
2
1
-2
-1
0
1
2
3
4
5
6
7
Il gradiente della funzione obiettivo può essere espresso come una combinazione lineare non negativa del secondo
-1
e del terzo vincolo, la cui intersezione da il punto x∗ = (x1 , x2 ) = ( 27 , 52 ), soluzione ottima del rilassamento del
problema di programmazione lineare intera proposto. Le variabili (di scarto) x4 e x5 in tale punto prendono valore
nullo, e saranno variabili fuori base. Si noti che per essere ammissibile, la soluzione deve avere anche il primo
vincolo attivo, e quindi si avrà x3 = 11 > 0. La soluzione ottima x∗ = (x1 , x2 , x3 , x4 , x5 ) = ( 27 , 52 , 11, 0, 0) individua
la soluzione di base B = {1, 2, 3} e individua le seguenti matrici:






1
1
0
−1 5 1
0 0
6
3
1
 0
2 0 
− 32 
AB =  4
A−1
AN =  1 0 
B =
6
2
1 −1 0
0 1
1 − 3 11
3
b)
Applicando la diseguaglianza (3) alla soluzione di base ottima, e usando la matrice inversa della matrice
di base, si ottiene:



 



1
1
1
1
0
0
0 0
20
x1
6
3
6
3
x4
1
1
 x2  +  0
− 23   1 0 
− 23   19 
= 0
6
6
x5
2
11
2
0 1
1
x3
1 −3
1 − 3 11
3
3
facendo i conti e riscrivendo i vincoli per ogni variabile di base frazionaria si ottiene:
1
1
x1 + x4 + x5
6
3
1
2
x2 + x4 − x5
6
3
2
11
x3 − x4 + x5
3
3
=
19/6 + 2/6 = 21/6 = 7/2 = 3.5
=
19/6 − 4/6 = 15/6 = 5/2 = 2.5
=
20 − 38/3 + 11/3 = 20 − 27/3 = 20 − 9 = 11
3
da cui si ottengono i tagli:
x1
≤
3
x2 − x5
≤
2
x3 − x4 + 3x5
≤
11
I conti per il taglio di Gomory associati a x3 sono fatti a solo scopo didattico, essendo il valore ottimo di x3 intero.
c)
Per poter rappresentare per via grafica il secondo taglio di Gomory, dobbiamo scriverlo come funzione
delle sole variabili x1 e x2 . Usando il vincolo della quinta variabile di scarto abbiamo:
x5 = 1 − x1 + x2
e sostituendo nel secondo taglio di Gormory:
x2 − x5 ≤ 2
→
x2 − 1 + x1 − x2 ≤ 2
→
x1 ≤ 3
Rappresentando questo taglio nel piano, si vede come effettivamente riduca lo spazio delle soluzione ammissibili,
rendono non più valida la soluzione di base individuata al punto precedente.
Volendo provare a generare un taglio di Gomory anche per la variabile di base x3 che all’ottimo assume valore
intero, abbiamo:
x3 − x4 + 3x5 ≤ 11
→
(20 + x1 − 5x2 ) + (4x1 − 2x2 − 19) + 3 − 3x1 + 3x2 ≤ 11
2x1 − 4x2 ≤ 7
Andando a rappresentare questo taglio nel piano, si nota subito essere un taglio ridondante.
3
Branch-and-Bound Grafico
Si consideri il seguente problema di programmazione lineare intera:
max
s.t.
2x1 + 3x2
x1 + x2 ≤ 3
x1 + 3x2 ≤ 6
x1 , x2 ∈ Z+
a) Risolvere il rilassamento continuo del problema per via geometrica.
b) Ricavare una stima per eccesso della soluzione ottima.
c) Risolvere il problema originale con un metodo di branch-and-bound risolvendo per via geometrica i problemi
corrispondenti ai vari nodi dell’albero di decisione corrispondente.
Soluzione
a)
La soluzione ottima del rilassamento continuo del problema dato è il punto x∗ = ( 23 , 32 ). Il valore della funzione
del punto di ottimo è pari a 15
2 .
b)
Poichè tutte le variabili sono intere e i coefficienti della funzione obiettivo sono interi, anche il valore
ottimo del problema sarà un numero intero. Il massimo valore della funzione obiettivo è d 15
2 e = 7.
c)
DA FARE
4
Fly UP