...

Metodi di Generazione di Colonne

by user

on
Category: Documents
71

views

Report

Comments

Transcript

Metodi di Generazione di Colonne
Generazione di Colonne AA 2009/10
1
Metodi di Generazione di Colonne
Alcuni problemi di programmazione lineare sono caratterizzati da un
elevato numero di variabili e/o vincoli.
Alcuni di questi problemi hanno generalmente una struttura della matrice dei vincoli tale per cui sia possibile risolverli decomponendoli in
sottoproblemi di piú facile soluzione.
In generale l’obiettivo é quello di risolvere tali problemi senza considerare esplicitamente tutti le variabili e/o vincoli del problema.
L’algoritmo che sta alla base dei metodi basati sulla generazione di
colonne é il metodo del simplesso revisionato.
Si consideri la seguente coppia di problemi primale-duale:
(P ) z(P ) = Min cT x
s.t. Ax = b
x≥0
(D) z(D) = Max uT b
s.t. uT A ≤ cT
dove A é una matrice (m × n), e c(n), b(m), x(n) e u(m).
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
2
Sia nel metodo del simplesso primale che in quello duale si eseguono
iterativamente le seguenti operazioni:
(1) Selezione di una colonna s di A;
(2) Selezione di una riga r di A;
(3) Esecuzione di un’operazione di pivoting usando ars come elemento
di pivot.
Nota una base B di A:
- uT = cTB B −1 : variabili duali associate a B;
- b = B −1 b: valore delle variabili in base;
- Aj : colonna j di A;
- cj = cj − uAj : costo ridotto associato alla variabile xj ;
- aij : elemento (i, j) della matrice B −1 A.
Le operazioni del metodo del simplesso primale e duale possono essere
riassunte come segue.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
3
Simplesso primale e duale
Simplesso Primale
Simplesso Duale
Test di ottimalitá
cj ≥ 0, j = 1, . . . , m
bi ≥ 0, i = 1, . . . , m
Var. entrante in base
s = argmin{cj : j = 1, . . . , n}
s = argmin{ |arjj | : arj < 0, j = 1, . . . , n}
c
Var. uscente dalla base r = argmin{ abisi : ais > 0, i = 1, . . . , m}
Elemento di pivoting
ars
r = argmin{bi : i = 1, . . . , m}
ars
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
4
Si noti che nel caso in cui n e/o m siano molto grandi, potrebbe diventare proibitivo effettuare le operazione di pivoting.
Simplesso in formato tableau:
z
-1
0
...
0
x1 . . . xm xm+1 . . . xn
cTB
cTF
B
F
BxB + F xF = b
−z + cTB xB + cTF xF = 0
0
b
xB = b − F xF
−z + cTB B −1 b + (cTF − cB B −1F )xF = 0
−z + c0 + cTF xF = 0
z
-1
0
...
0
x1 . . . xm xm+1 . . . xn
0 ... 0
cTF
−c0
I
F
b
Si noti che non é necessario calcolare A = B −1A ma é sufficiente calcolare B −1 e uT = cTB B −1:
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
5
Il simplesso revisionato
0 ... 0
cTB
cTF
0
I
B
F
b
CARRY
tableau normale
Effettuando i pivot anche sulla matrice CARRY
0 − uI = −u
B −1
CARRY
cTB − uT B = 0
I
cTF − uT F
−uT b
B −1F
B −1 b
tableau normale
Nella matrice CARRY sono memorizzati B −1 e u.
Possiamo eliminare il tableau normale e usare solo la CARRY.
Algoritmo Simplesso Rivisto
1. Calcola i costi cj = cj − uT Aj per ogni j ∈ F ;
2. scegli la variabile entrante xh;
3. genera la sola colonna Ah = B −1Ah e orla la CARRY;
4. scegli la riga t del pivot (criterio del rapporto bi /aih > 0);
5. effettua il pivot sulla CARRY e sulla colonna dei r.h.s.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
−uT
ch
a1h
ath
amh
B −1
6
−uT b
−ue T
−ue T b
B −1b
f −1
B
f −1
B
b
⇒
CARRY orlata
Nuova CARRY
Esempio
0 2 1 0 0
1 2 1 0 6
4 -1 2 1 8

Scelta la base B = [A2, A4] si ha





2 0
1/2 0 
 3 
−1
T
, B
 , u = [1, 0] b = 

B = 
= 
−1 1
1/2 1
11






1 1
1   1/2 
−1 
 = [−1, 0] ⇒(h=1)Ah = B

 = 

cTF = [0, 1]T −[1, 0] 
4 2
4
9/2
CARRY
orlata
B −1
-1 0
1/2 0
1/2 1
Ah
-1
1/2
9/2
b
-6
3
11

⇒
f −1
B
-8/9 2/9
4/9 -1/9
1/9 2/9
f
A
h
0
0
1
be
-32/9
16/9
22/9

1 0
 = [5/9, 2/9]
cTF = [1, 0]T − [8/9, −2/9] 
2 1
Soluzione ottima x1 = 22/9, x2 = 16/9, z = 32/9
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
7
Generazione di Colonne
Dato il seguente problema di programmazione lineare
(P ) z(P ) = Min
s.t.
n
X
j=1
n
X
j=1
cij xj
aij xj = bi,
i = 1, . . . , m
xj ≥ 0, j = 1, . . . , n
abbiamo visto che la soluzione base associata ad una base B di A puó
essere migliorata se posto
∆ = min [cj − cB B −1Aj ]
j=1,...,n
(1)
risulta ∆ < 0.
In generale perció il problema é quello di determinare il valore ∆ del
sottoproblema (1).
Abbiamo visto come questo puó essere fatto per problemi di programmazione lineare utilizzando il simplesso revisionato e che puó risultare
proibitivo se il numero di colonne é elevato.
Vedremo in seguito che per alcuni problemi la struttura del sottoproblema (1) é tale per cui possa essere risolto senza considerare esplicitamente
tutte le variabili j.
Il metodo prende il nome di generazione di colonne (column generation)
perché nella risoluzione del sottoproblema (1) le colonne/variabili del
problema vengono generate solo quando servono.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
Algoritmo Generazione di Colonne
Step 1. Scegli una base ammissibile iniziale B.
Step 2. Calcola xB = B −1 b.
Step 3. Determina la variabile j ∗ con costo ridotto
c∗j = c∗j − cTB B −1 A∗j minimo.
Step 4. Se c∗ ≥ 0 STOP, altrimenti costruisci la
nuova base B e vai allo Step 2.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
8
Generazione di Colonne AA 2009/10
9
Problema del taglio monodimensionale
(Cutting Stock Problem, Gilmore e Gomory (1960))
Sia I un insieme di n oggetti ognuno di lunghezza pari a li, i =
1, . . . , n.
Sia ni il numero di pezzi che si devono produrre per ogni oggetto i,
i = 1, . . . , n.
Sia L la lunghezza delle lastre a disposizione dalle quali tagliare gli
oggetti necessari.
Uno schema di taglio (o pattern) é una possibile configurazione di
taglio degli oggetti I su di una lastra.
Ad esempio, dati i seguenti 3 oggetti:
Oggetto
A
B
C
li
ni
(cm)
5 150
7 200
9 300
e lastre di lunghezza L = 20 cm, alcune configurazioni di taglio sono le
seguenti.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
10
Pattern 1
20
7
9
4
Setting 1
Pattern 2
20
20
5
5
7
3
Setting 2
Pattern 3
20
5
5
9
1
Setting 3
Altre configurazioni:
Pattern 1 Pattern 2 Pattern 3 Pattern 4 Pattern 5
A (5 cm)
0
2
2
4
1
B (7 cm)
1
1
0
0
2
C (9 cm)
1
0
1
0
0
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
11
Sia J l’insieme degli indici di tutte le possibili configurazioni di taglio.
Sia inoltre aij il numero di volte in cui l’oggetto i é tagliato nella configurazione j, i ∈ I, j ∈ J.
L’obiettivo del problema é quello di tagliare dalle lastre tutti i pezzi
necessari minimizzando il numero di lastre necessarie.
Sia yj una variabile non negativa intera rappresentante il numero di
volte che la configurazione j ∈ J é usata per tagliare i pezzi.
La formulazione matematica del problema é la seguente:
X
(P ) M in
j∈J
|
yj
{z
}
numero di lastre
X
j∈J
|
aij yj ≥ ni ,
{z
∀i ∈ I
}
n. di pezzi i
yj ≥ 0 intera ,
∀j ∈ J
Si noti che la cardinalitá dell’insieme J puó essere grande.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
12
Si consideri il rilassamento lineare di P , ovvero:
X
(LP ) M in
j∈J
|
yj
{z
}
numero di lastre
X
j∈J
|
aij yj ≥ ni ,
{z
∀i ∈ I
}
n. di pezzi i
yj ≥ 0,
∀j ∈ J
Sia LP ′ il problema LP dove l’insieme J delle configurazioni é sostituito dall’insieme J ′ ⊂ J (si supponga che J ′ sia tale da garantire che
LP ′ ammette una soluzione ammissibile).
Si risolva il problema LP ′ e siano ui, i ∈ I, la variabile duale associata
ai vincoli di LP ′.
Il costo ridotto di ogni configurazione j ∈ J é dato da:
cj = 1 −
X
i∈I
aij ui
Se risulta
min [cj ] < 0
j∈J\J ′
allora la soluzione base corrente non é ottima per LP.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
13
Siccome i costi ridotti cj , j ∈ J ′ , sono non negativi:
min ′ [1 −
j∈J\J
= min[1 −
j∈J
X
aij ui ]
X
aij ui]
i∈I
i∈I
e ció equivale a risolvere il seguente problema
M in
1−
X
i∈I
X
uizi
lizi ≤ L
i∈I
zi ≥ 0 intera , ∀i ∈ I

















(2)
dove zi , i ∈ I é, rappresenta il numero di volte che l’oggetto i é tagliato
sulla nuova configurazione.
Il problema (2) é equivalente al seguente problema di knapsack intero
X
M ax
i∈I
X
i∈I
uizi
li zi ≤ L
zi ≥ 0 intera , ∀i ∈ I

















Il generatore di colonne é in questo caso un problem di knapsack intero
risolubile in tempo pseudopolinomiale.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
14
Algoritmo generazioni di colonne per il
Cutting Stock Problem
Step 1. Si generi un insieme iniziale J ′ di configurazioni di taglio in
modo tale che il problema LP ′ ammetta una soluzione
ammissibile;
Step 2. Si risolva il problema LP ′ definito sull’insieme di
configurazioni J ′ . Sia x∗ la soluzione ottima primale e
sia u∗ la corrispondente soluzione duale;
Step 3. Si risolva il seguente problema di knapsack intero:









M ax
X
i∈I
X








i∈I
u∗i zi
lizi ≤ L
zi ≥ 0 intera , ∀i ∈ I
Sia z∗ la soluzione ottima.
Step 4. Se
X
i∈I
u∗i zi∗ ≤ 1, stop, x∗ é la soluzione ottima,
altrimenti aggiungi a J ′ la colonna data dalla soluzione z∗
(nuova configurazione) e vai allo Step 2.
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Generazione di Colonne AA 2009/10
15
Branch & Price
Nel caso di problemi di Programmazione Lineare, l’algoritmo column
generation determina la soluzione ottima del problema.
Nel caso di problemi di Programmazione Intera, l’algoritmo column
generation applicato al rilassamento lineare del problema puó terminare
con una soluzione che risulta frazionaria.
In questo caso é necessario applicare un’algoritmo di tipo branch and
bound per determinare la soluzione ottima intera dove il calcolo del lower
bound avviene utilizzando la tecnica column generation.
Questi metodi prendono il nome di metodi branch and price.
Albero decisionale
P0
P1
P2
...
Pq
...
Modelli per le Decisioni - M. Dell’Amico/M. Iori
Fly UP