informatica |
|
|||||
FORMA STANDARD
min cTx
Ax = b (2
x
Ogni problema di PL si può mettere in questa forma con semplici artifici, come sostituire max cTx con min (- cTx) oppure introducendo variabili ausiliarie per trasformare vincoli di disuguaglianza in vincoli di uguaglianza, dato che ai x + yi = bi è equivalente a ai x bi purché yi
a) problema dello Zaino continuo
max cTx
aTx b
xj j = 1,2, .. ,n
Ordina gli n oggetti secondo rapporti cj/aj non-crescenti
Mettili nello zaino in questo ordine prendendo sempre il massimo possibile di ogni oggetto finché la capacità b è esaurita
b) problemi di PL con due sole variabili possono essere risolti per via grafica
esempio: max 2x1 + x2
-x1 + 4x2
x1 + x2
3x1 + x2
x1 , x2
Problemi di PL inammissibili, cioè con regione di ammissibilità vuota, X = F
esempio: max
Problemi di PL illimitati, cioè con funzione obbiettivo
che può tendere a + per problemi di max o a - per quelli di min
esempio: max
Problemi di PL con molti punti di ottimo alternativi:
ciò accade quando il vettore dei coefficienti della
funzione obbiettivo è un multiplo positivo di uno o
più vettori di coefficienti dei vincoli
esempio: max
moltiplicare una riga per una costante
aggiungere una riga ad un'altra o alla funzione
obbiettivo
Queste operazioni non cambiano l'insieme delle soluzioni ammissibili di (2) dato che tutti i vincoli sono sotto forma di eguaglianza. Con una serie di operazioni elementari di questo tipo ogni problema di PL espresso nella forma (2) può essere portato in una forma in cui c'è una sola variabile isolata per vincolo con coefficiente 1 e costo 0.
Esempio
min z(x) = (1,1,-8,6)x = x1 + x2 - 8x3 + 6x4
(2,1,-l4,10)x = 16
(1,1,-l1,7)x = 10
x
Sottraendo la seconda equazione di vincolo alla prima e alla funzione obbiettivo si ha
min z(x) = (0,0,3,-l) x + 10
(1,0,-3,3) x = 6
(1,1,-l1,7) x = 10
x
sottraendo ora il primo vincolo dal secondo si ottiene la forma richiesta
min z(x) = 0x1 + 0x2 + 3x3 - x4
x1 - 3x3 + 3x4 = 6
x2 - 8x3 + 4x4 = 4
xi i = 1, . , 4
x = (6,4,0,0) è una soluzione di base ammissibile di costo z = 10.
4-METODO DEL SIMPLESSO
Facciamo riferimento al problema di PL in forma standard.
ASSUNZIONE 1: A è di rango pieno (= numero righe m)
DEFINIZIONE: si dice base di A una collezione di m colonne linearmente indipendenti cui corrisponde una matrice mxm non singolare B.
Riordinando opportunamente le variabili, poniamo A = [B N] e xT= [xTB xTN]. Allora
BxB+ NxN = b
e
xB = B-lb - B-lNxN
soddisfa ai vincoli Ax = b.
DEFINIZIONE: ponendo xN= 0 si ha la soluzione di base
xB = B-lb , xN= 0
DEFINIZIONE: una soluzione di base si dice ammissibile (SBA) se xB
ASSUNZIONE 2: la regione di ammissibilità
F = sia non-vuota.
ASSUNZIONE 3: l'insieme dei valori reali della funzione obbiettivo cTx sia limitato in F.
Geometricamente l'insieme di vincoli di un problema di PL definisce un politopo e ogni punto di esso può esprimersi come combinazione convessa dei suoi vertici. Condizione necessaria e sufficiente perché x sia una SBA è che x sia un vertice di tale politopo.
Un problema di PL potrebbe essere risolto in un numero finito (ma molto grande) di passi considerando a turno tutti i vertici del corrispondente politopo.
L'algoritmo del simplesso (Dantzig, 1947) è quasi sempre molto più efficiente dato che esplora solo una piccola parte dei vertici (ovvero di SBA)
DEFINIZIONE: due SBA distinte si dicono adiacenti se si possono ottenere l'una dall'altra scambiando due colonne. Ciò corrisponde geometricamente a passare da un vertice ad uno adiacente nel politopo.
IDEA DI FONDO DELL'ALGORITMO: data una SBA di partenza, passare ad un'altra adiacente di costo minore fino a trovare quella ottima.
Si sceglie di solito tra tutti gli scambi possibili quello più vantaggioso dal punto di vista della funzione obbiettivo.
LEMMA 1: una SBA è di costo minimo se i costi ridotti
cN = cN - cBB-lN
sono tutti non-negativi.
LEMMA 2: se in corrispondenza di una SBA esiste una variabile non di base xs con costo ridotto negativo tale che la corrispondente colonna [ais] della matrice B-lA abbia tutti i suoi elementi non-positivi, allora la funzione obbiettivo è illimitata (si viola l'assunzione 3).
LEMMA 3: se in corrispondenza di una SBA esiste una variabile non di base xs con costo ridotto negativo e per almeno un valore dell'indice i, ais>0, allora si può costruire una nuova SBA di costo inferiore.
Algoritmo del Simplesso (semplificato):
nopt:= V ; limit := V ;
while nopt limit do
if cj j then nopt := F else
begin
4. scegli j tale che cj<0 ;
if aij i then limit := F else
begin
6. q := mini = br/arj ;
s := j ; scambia colonne s e r
end
end
TEOREMA: se non si presentano SBA degeneri, (cioè con qualche variabile di base di valore nullo) il metodo del simplesso termina in un numero finito di iterazioni.
METODO DI BLAND
Quando si incontra una base degenere si procede con le varianti seguenti.
Al passo 4:
s := min
al passo 6:
r := min }
NOTA: tali scelte comportano una minore efficienza e vanno eseguite solo in caso di SBA degenere.
RICERCA DI UNA SBA (metodo delle due fasi)
FASE 1 - risolvere (e = vettore di tutti 1, I matrice identità):
z = min
se z=0 si ha una SBA da cui partire con la
FASE 2 - applicare il metodo del simplesso al problema originale.
5-DUALITA'
Problema primale (P): min
Problema duale (D): max
TEOREMA (della dualità debole) : per qualunque coppia di vettori x,u ammissibili rispettivamente per P e per D, cTx ub.
COROLLARIO: se x* e u* sono ammissibili e avviene che cTx* = u*b, allora x* è ottimo per P e u* è ottimo per D.
TEOREMA (della dualità forte): se le rispettive regioni di ammissibilità sono non-vuote, esistono sempre due vettori x* e u* tali che cTx* = u*b.
TEOREMA (degli scarti complementari): due vettori x ed u rispettivamente ammissibili per P e per D sono ottimi se e solo se
u(Ax - b) = 0 e (c - uA)x = 0.
DUALITA' IN GENERALE
min cTx max ub
aix bi ui
aix bi ui
aix = bi ui non vincolata
xj uAj cj
xj uAj cj
xj non vincolata uAj = cj
CASI POSSIBILI (X) E NO
Duale
ottimo illimitato regione
finito vuota
Primale
ottimo X
finito
illimitato X
regione X X
vuota
6-MATRICI TOTALMENTE UNIMODULARI
In alcuni casi di PL (es. flusso di costo minimo) le condizioni di integralità sono superflue, cioè la soluzione risulta intera senza doverlo imporre. Un caso importante di PL per cui ciò accade è illustrato qui.
Min
dove assumiamo che A e b siano rispettivamente un matrice e un vettore interi. La soluzione x* ottenuta ignorando il vincolo di integralità ad esempio col metodo del Simplesso assegna i valori B-lb alle variabili in base e 0 alle altre e avrà quindi componenti frazionarie solo se ne ha B-lb. Ciò può accadere solo se det(B) è diverso da +1 o -l (non potendo essere nullo, dato che B è per ipotesi non-singolare).
N.B. questa condizione non è necessaria, ma per ogni matrice A contenente una base B con determinante diverso da 0, +1, o -l esiste un problema di PL con b intero e x* frazionario.
DEF. Una matrice mxn A con m n si dice unimodulare se ogni sottomatrice mxm B ha determinante di valore 0, +1, o -l.
TEOREMA Sia A unimodulare e b intero. Allora il poliedro P = ha solo vertici interi.
(dimostrazione ovvia, dato che per ogni vertice x di P esiste una base B tale che xB = B-lb e xN = 0.)
Si consideri adesso:
Min
in forma standard:
Min
Per ogni base B di A' = [A,-I] possiamo scrivere permutando opportunamente righe e colonne
B = -I' F
O Q
dove le prime colonne sono quelle nella base B provenienti da -I, mentre le successive sono colonne di A.
Abbiamo allora che det(B) det(Q) e quindi A' sarà unimodulare se e solo se det(Q) può prendere solo valori 1, 0 e -l per ogni sottomatrice quadrata Q di A.
DEF. Una matrice m x n intera A si deice totalmente unimodulare (totally unimodular matrix, TUM) se il determinante di ogni sottomatrice quadrata Q di A può prendere solo valori 1, 0 e -l.
TEOREMA: Se A è TUM e b è intero, il poliedro
P =
ha solo vertici a coordinate intere.
DIM. I vertici di P sono quelli del poliedro P' ottenuto introducendo le variabili ausiliarie e il risultato segue dal Teorema precedente applicato a P'.
Come fare a sapere se una matrice A è o no TUM ?
Enumerare tutte le sottomatrici quadrate richiede evidentemente troppo tempo. Ci sono metodi polinomiali, ma molto sofisticati (derivanti dai risultati di P. Seymour). Una condizione sufficiente e di larga applicabilità è la seguente.
TEOREMA: Sia A una matrice con elementi 1, 0 e
ogni colonna ha al massimo due elementi diversi da 0;
esiste una partizione delle righe di A in due gruppi tali che ogni colonna con due elementi diversi da 0 li colloca su righe appartenenti a gruppi diversi se e solo se i due elementi hanno lo stesso segno.
Sappiamo che la soluzione ottima x*,u* si ha quando:
Ax* = b , x* (ammissibilità primale)
c u*A (ammissibilità duale)
(c - u*A)x* = 0 (ortogonalità)
Ad ogni iterazione il metodo del Simplesso calcola:
Quando c' 0 il metodo ha trovato l'ottimo.
Quindi il metodo del Simplesso (primale) soddisfa ad ogni iterazione alle condizioni (1) e (3), mentre la condizione (2) è soddisfatta solo alla fine.
SIMPLESSO DUALE
In questa versione del metodo ad ogni iterazione si soddisfa alle relazioni (2) e (3), mentre la relazione (1) viene soddisfatta solo alla fine. Cioè si soddisfa sempre all'ammissibilità duale e all'ortogonalità, mentre l'ammissibilità primale viene soddisfatta dopo: da qui il nome.
Geometricamente ad ogni iterazione x' è più che ottimo ma è inammissibile e si avvicina sempre più alla regione di ammissibilità.
Min z = 3x1 + 4x2 + 5x3
2x1 + 2x2 + x3
x1 + 2x2 + 3x3
x1, x2, x3
Min z = 3x1 + 4x2 + 5x3
-2x1 - 2x2 - x3 + x4 = -6
-x1 - 2x2 - 3x3 + x5 = -5
x1, x2, x3
x1 x2 x3 x4 x5
__________ ______ ____ _______
-z 0 3 4 5 0 0
x4 -6 -2 -2 -l 1 0
x5 -5 -l -2 -3 0 1
NUOVO TABLEAU
x1 x2 x3 x4 x5
__________ ______ ____ _______
-z -9 0 1 7/2 3/2 0
x1 3 1 1 1/2 -l/2 0
x5 -2 0 -l -5/2 -l/2 1
NUOVO TABLEAU
x1 x2 x3 x4 x5
__________ ______ ____ _____ _______ ______ ____________
-z -l1 0 0 1 1 1
x1 1 1 0 -2 -l 1
x2 2 0 1 5/2 1/2 -l
Valori positivi delle variabili in base e quindi siamo nel punto ottimo.
SIMPLESSO DUALE
Passo 1 se x'i i allora STOP /ottimo/
Passo 2 altrimenti seleziona una variabile di base
x'r < 0 /ad esempio quella più negativa/
Passo 3 se a'rj 0 , j = m+1, . , n allora STOP
/non esiste soluzione primale ammissibile/
Passo 4 altrimenti trova una variabile non di base
xs tale che
c's/|a'rs| = min
Passo 5 fare PIVOT su a'rs trovando una nuova base duale ammissibile di costo maggiore
Simplesso Primale
Step 1 - risolvi il sistema yB = cB (calcolando B-l) ;
Step 2 - (scelta della variabile entrante)
cerca una colonna aj di N tale che yaj > cj : if una colonna siffatta non esiste then STOP (la soluzione corrente è ottima) ;
Step 3 - calcola d = B-laj ;
Step 4 - trova il valore massimo di q tale che xB-qd
mantenendo Ax = b ;
if tale valore non esiste then STOP (problema illimitato) else almeno una componente di xB-qd vale zero e la variabile corrispondente lascia la base ;
Step 5 - poni uguale a q il valore della variabile entrante e il
valore delle altre variabili uguale a quelli del vettore xB-qd ;
sostituisci aj in B alla colonna corrispondente alla variabile che lascia la base ;
go to STEP 1
N.B. lo Step 2 è formulato per un problema di minimo; se si tratta di un problema di massimo bisogna cercare una colonna tale che yaj < cj !
Il metodo del simplesso come visto fino a qui viene detto primale per le ragioni seguenti.
Per il problema in forma standard
min
un punto di ottimo x*,u* viene raggiunto quando
Ax* = b , x* ammissibilità primale
c u*A ammissibilità duale
(c-u*A)x* = 0 ortogonalità
Quindi il simplesso primale soddisfa a (1) e (3) ad ogni iterazione mentre la (2) è soddisfatta solo alla fine.
Se ad ogni iterazione si soddisfa invece alle (2) e (3) arrivando a soddisfare alla (1) solo alla fine, si ha il cosiddetto Simplesso Duale.
N.B. Il metodo del simplesso duale NON è il simplesso applicato al problema duale !
Step 1 - if tutte le componenti di b' = B-lb sono non
-negative then STOP (soluzione ottima) else seleziona una variabile di base xr tale che b'r sia <0 (ad esempio b'r = min ;
Step 2 - if a'rj 0 , j = m+1, . ,n then STOP (non esistono
soluzioni ammissibili primali) else trova una variabile non in base xs tale che
c's/|a'rs| = min ;
Step 3 - fai PIVOT su a'rs trovando una nuova soluzione di
base duale ammissibile di costo maggiore ;
go to STEP 1
Geometricamente nel simplesso primale ad ogni iterazione x' fornisce una soluzione ammissibile sub-ottima, mentre nel simplesso duale x' resta non ammissibile e super-ottimo fino alla fine, avvicinandosi ad ogni iterazione alla regione di ammissibilità.
Privacy
|
© ePerTutti.com : tutti i diritti riservati
:::::
Condizioni Generali - Invia - Contatta