la programmazione lineare - Dipartimento di Matematica e Informatica
Transcript
la programmazione lineare - Dipartimento di Matematica e Informatica
LA PROGRAMMAZIONE LINEARE Franca Rinaldi Dipartimento di Matematica e Informatica Università degli Studi di Udine A.A. 2005 / 2006 1 Introduzione In un problema di programmazione lineare (PL) si vuole ottimizzare, cioè minimizzare o massimizzare, una funzione obiettivo lineare cx = n X cj x j j=1 sotto il vincolo che il vettore di variabili x = (x1 , . . . , xn ) ∈ IRn soddisfi un assegnato insieme finito di vincoli lineari Ai x = n X Aij xj ≤ (=, ≥) bi i = 1, . . . , m. j=1 L’importanza della programmazione lineare nell’ambito dell’ottimizzazione si deve a due aspetti fondamentali. Da un lato la PL offre un modello formale per una ampia varietà di problemi che emergono in ambito applicativo, ed in particolare nel contesto della gestione dei sistemi di produzione, di distribuzione, di trasporto ecc., dall’altro rappresenta un elemento centrale nella definizione di approcci risolutivi per problemi di programmazione lineare intera, e quindi, in particolare, per una larga varietà di problemi di ottimizzazione combinatoria N P -hard. 2 Forme canoniche Un problema di PL può essere espresso senza perdita di generalità in una delle due forme forma canonica : forma standard min cx (1) Ax ≥ b (2) x ≥ 0 (3) min cx (4) Ax = b (5) x ≥ 0 (6) dove A è una matrice m × n detta matrice dei vincoli, c ∈ IRn è il vettore dei costi e b ∈ IRm il vettore dei termini noti. La riformulazione di un generico problema di programmazione lineare P in forma canonica utilizza le seguenti semplici operazioni: 1 - ogni vincolo Ai x ≤ bi viene riscritto nella forma −Ai x ≥ −bi ; - ogni vincolo di eguaglianza Ai x = bi viene sostituito con la coppia di vincoli Ai x ≥ bi e −Ai x ≥ −bi ; - per ogni variabile xj libera, cioè non soggetta al vincolo di non negatività, − si introducono due nuove variabili x+ j , xj ≥ 0 e si opera la sostituzione − xj = x+ j − xj . − È facile riconoscere che al variare di x+ j , xj in IR+ , xj può assumere qualsiasi valore reale. Per esprimere un problema di programmazione lineare P in forma standard è necessario riformulare eventuali vincoli di diseguaglianza come vincoli di eguaglianza. A tale scopo, per ogni vincolo di diseguaglianza Ai x ≤ bi (Ai x ≥ bi ) viene introdotta una nuova variabile si ≥ 0 di costo nullo, detta variabile di slack, ed il vincolo viene sostituito con Ai x + si = bi (Ai x − si = bi ). La variabile di slack si “misura” lo scostamento della soluzione x dal vincolo corrispondente e la condizione di non negatività su si assicura l’ammissibilità di x rispetto al vincolo originale. La variabile di slack si annulla se e solo se tale vincolo è soddisfatto da x come eguaglianza. Si noti che, sebbene le precedenti operazioni possano modificare il numero di variabili e/o di vincoli del problema P, il problema P 0 che ne deriva risulta equivalente a quello iniziale, nel senso che ogni soluzione ammissibile x di P corrisponde ad almeno una soluzione x0 di P 0 dello stesso costo e viceversa. Quindi la soluzione x è ottima per P se e solo se x0 è ottima per P 0 ed i valori ottimi dei due problemi sono uguali. Infine, si noti che ogni problema di massimizzazione max{cx : x ∈ X} è equivalente al problema di minimizzazione − min{−cx : x ∈ X}. 3 Geometria della PL Ogni vincolo lineare Ai x ≥ bi (Ai x ≤ bi ) definisce un semispazio chiuso di IRn la cui frontiera è costituita dall’iperpiano Ai x = bi . Tale iperpiano è normale al vettore Ai ed Ai è diretto all’interno (all’esterno) del semispazio. L’insieme di ammissibilità di un problema di PL, essendo intersezione di un numero finito di semispazi è, per definizione, un poliedro. Si ricorda che un punto di un poliedro P si dice un vertice se non può essere espresso come combinazione convessa propria di altri punti di P o, equivalentemente, se è una faccia di dimensione 0 di P . Ancora, d ∈ Rn si dice una direzione di P se x + αd ∈ P per ogni x ∈ P e α ≥ 0. Una direzione di P è una direzione 2 estrema di P se non può essere espressa come combinazione conica propria di altre direzioni di P o, equivalentemente, se esiste uno spigolo S di P tale che S = {x : x = x + αd, α ≥ 0} per un opportuno x ∈ P . Il teorema che segue fornisce una caratterizzazione dei vertici e delle direzioni estreme di un poliedro. Teorema 1 Sia P = {x ∈ IRn : Ax ≤ b}. i) Un punto x ∈ P è un vertice di P se e solo se la sottomatrice A0 formata dalle righe Ai di A tali che Ai x = bi ha rango n; ii) d ∈ IRn è una direzione estrema di P se e solo se Ad ≤ 0 e la sottomatrice formata dalle righe Ai di A tali che Ai x = 0 ha rango n − 1. E’ facile dimostrare che, nel caso più generale di un poliedro della forma P 0 = {x : A1 x ≤ b1 , A2 x ≥ b2 , A3 x = b3 }, la parte i) del precedente teorema rimane invariata, mentre nella parte ii) la condizione Ad ≤ 0 deve essere sostituita con le condizioni A1 d ≤ 0, A2 d ≥ 0 e A3 d = 0. Dal Teorema 1 segue che ogni vertice di P giace su almeno n degli iperpiani che definiscono la frontiera di P . Inoltre, ogni direzione estrema di P è una direzione di almeno n − 1 delle degli iperpiani che definiscono la frontiera di P. Nel caso di un problema scritto in forma standard, il Teorema 1 può essere riformulato come segue. Teorema 2 Sia P = {x : Ax = b, x ≥ 0}. Un punto x di P è un vertice se e solo se le colonne di A che corrispondono a componenti di x strettamente maggiori di 0 sono linearmente indipendenti. A Dimostrazione La matrice dei vincoli che definiscono P è A0 = , I dove I è la matrice identica n × n. Sia J = {j : xj = 0} ed A0 la sottomatrice formata dalle righe di A e dalle righe Ij , j ∈ J. Per il Teorema 1, x è un vertice di P se e solo se A0 ha rango n e quindi, contenendo A0 n colonne, se P e solo se le colonne di A0 sono linearmente indipendenti. Sia nj=1 αj Aj0 = 0. Poichè Aj0 , j ∈ J, è l’unica colonna di A0 con componente (m + j)–esima diversa da 0, deve essere αj = 0 per ogni j ∈ J. Quindi le colonne di A0 sono linearmente indipendenti se e solo se lo sono le colonne Aj0 , j ∈ / J. Poichè le componenti di indice maggiore di m di queste colonne sono nulle, esse sono linearmente indipendenti se e solo se lo sono le corrispondenti colonne di A. In particolare, per il terorema precedente, se A ha m righe, ci possono essere al più m colonne di A linearmente indipendenti. Quindi ogni vertice 3 di P = {x : Ax = b, x ≥ 0} ha al più m componenti strettamente maggiori di 0. Il seguente Teorema enuncia una proprietà fondamentale dei problemi di PL. Teorema 3 Teorema fondamentale della PL. Dato un problema di PL definito in forma canonica o in forma standard, si verifica una delle seguenti condizioni: 1. il problema è inammissibile; 2. il problema è illimitato; 3. esiste almeno un vertice di P ottimo. Dimostrazione Sia P non vuoto. Poichè P è contenuto nell’ortante positivo, P non contiene rette. In tal caso P = conv(vertex(P )) + cone(dext(P )) e quindi ogni x in P risulta somma di una combinazione convessa di vertici di P e di una direzione di P , cioè x= X αi vi + d i∈I dove vi ∈ vertex(P ), αi ≥ 0 per ogni i ∈ I, i∈I αi = 1 e d è una direzione di P . Se esiste una direzione d di P tale che cd < 0 il problema è illimitato. Sia infatti x ∈ P . Allora x+αd ∈ P per ogni α ≥ 0 e risulta c(x+αd) = cx+αcd. Per α → +∞ tale valore tende a −∞. In caso contrario cd ≥ 0 per ogni direzione d di P e quindi cx ≤ c(x + d) per ogni x ∈ P e d direzione di P . Dunque la ricerca di una soluzione ottima può essere limitata al sottoinsieme V = conv(vertex(P )). Poichè V è un insieme chiuso e limitato e la funzione cx è continua, per il Teorema di Weierstrass il problema ammette ottimo su P V . Sia x̂ = i∈I αi vi una soluzione ottima. Da P cx̂ = X i∈I αi cvi ≥ X αi min cvi = min cvi i∈I i∈I i∈I segue che almeno un vertice vi , i ∈ I, è ottimo. Per il teorema precedente un problema di PL, pur essendo un problema continuo, può essere risolto limitando la ricerca delle soluzioni ottime ad un numero finito di punti, i vertici del suo insieme di ammissibilità. Ancora, è necessario individuare eventuali direzioni di P lungo le quali la funzione obiettivo tende a −∞. È facile riconoscere che una tale direzione esiste se e solo se esiste una direzione estrema con la stessa proprietà, e quindi uno spigolo del poliedro lungo il quale la funzione obiettivo assume valori arbitrariamente bassi. 4 4 Il metodo del simplesso Il teorema fondamentale della PL è alla base di un metodo classico per la risoluzione dei problemi di PL, detto Metodo del simplesso, proposto da Dantzig nei primi anni 50. Benchè la complessità dell’algoritmo sia esponenziale, tale metodo è ancora uno dei metodi più largamente utilizzati. L’idea base del metodo del simplesso è la seguente. Un problema di PL viene dapprima espresso in forma standard, cosicchè il suo insieme di ammissibilità P , se non vuoto, contiene almeno un vertice. In una prima fase, il metodo determina un vertice di P (o che P è vuoto). Nelle iterazioni successive la procedura visita vertici di P , lasciando ogni vertice lungo uno spigolo su cui la funzione decresce strettamente. Se tale spigolo è illimitato il problema è illimitato, in caso contrario lo spostamento termina in un nuovo vertice di P , adiacente a quello precedente e di valore strettamente inferiore. Se il vertice non soddisfa opportune condizioni di ottimalità, l’iterazione viene ripetuta. Il metodo termina quando individua o un vertice ottimo o una direzione estrema di P lungo la quale la funzione obiettivo decresce strettamente. Per realizzare questa idea generale in un algoritmo, è necessario esplicitare i seguenti aspetti: caratterizzare i vertici di P algebricamente, individuare delle condizioni di ottimalità e illimitatezza e definire il passaggio da un vertice ad uno adiacente. Infine, è necessario determinare un vertice iniziale o dimostrare che il problema è inammissibile. Vediamo questi diversi aspetti in dettaglio. 4.1 Vertici e soluzioni di base Il metodo del simplesso opera su problemi di PL scritti in forma standard cioè della forma min cx (7) Ax = b x ≥ 0. dove A è una matrice m × n con m < n. Questa assunzione non è restrittiva dato che, se m ≥ n, o il sistema Ax = b è inammissibile (caso rango A 6= rango (Ab)) o almeno m − n vincoli risultano combinazione lineare dei rimanenti e possono essere eliminati ottenendo un sistema con m ≤ n. Se m = n il sistema ammette una unica soluzione che può essere calcolata per via elementare. Nel seguito supporremo A di rango m. Questa condizione 5 può essere sempre garantita eliminando eventuali vincoli linearmente dipendenti dagli altri (operazione che, se necessaria, viene effettuata durante la prima fase del metodo del simplesso descritta in seguito). Vediamo innanzitutto come i vertici di P vengano caratterizzati algebricamente tramite il concetto di base e soluzione di base. Si definisce base ogni sottoinsieme β ⊆ {1, . . . , m}, |β| = m, tale che la sottomatrice B formata dalle colonne di A con indice in β, detta matrice di base, sia non singolare (e quindi invertibile). Data una particolare base β, la matrice A può essere partizionata in due sottomatrici B ed N dove B è formata dalle colonne di A con indice in β, dette colonne in base, ed N dalle colonne con indice in η = {1, . . . , m} \ β, dette colonne fuori base. Analogamente i vettori delle variabili e dei costi possono essere decomposti in x = (xB , xN ) e c = (cB , cN ) in modo da evidenziare le componenti in base e quelle fuori base. Fissata una base, i vincoli Ax = b possono essere riscritti nella forma BxB + N xN = b ed ancora, essendo B invertibile, come xB = B −1 (b − N xN ). Di conseguenza il problema (7) può essere riscritto come min cB x B + cN x N −1 xB = B (b − N xN ) xB , xN ≥ 0. (8) (9) (10) Dalla (9) risulta evidente che le variabili in base risultano univocamente determinate dalle variabili fuori base. Si consideri la particolare la soluzione, detta soluzione di base, x̂B = B −1 b, x̂N = 0 che si ottiene assegnando valore nullo a tutte le variabili fuori base. Tale soluzione di base si dice ammissibile se xB ≥ 0. Inoltre si dice degenere se (xB )i = 0 per qualche i = 1, . . . , m, non degenere altrimenti. Si noti che il numero di componenti non nulle di ogni soluzione di base è al più m ed è minore di m se e solo se la base è degenere. Proposizione 1 i) Ogni soluzione di base ammissibile x̂ è un vertice di P . ii) Ogni vertice di P è soluzione di base per almeno una base. 6 Dimostrazione i) L’affermazione segue dal Teorema 2 dato che le colonne di A corrispondenti a variabili maggiori di zero di x̂ sono colonne di B e risultano quindi linearmente indipendenti. ii) Per il Teorema 2, le colonne di A corrispondenti a componenti non nulle di un vertice di P sono linearmente indipendenti. Poichè A ha rango m, è sempre possibile integrare l’insieme di queste colonne con altre colonne di A in modo da ottenere una base di Rm . Gli indici delle colonne finali formano evidentemente una base. Si noti che se un vertice ha esattamente n − m componenti uguali a 0, cioè giace su esattamente n degli iperpiani che definiscono la frontiera di P (gli m piani definiti dai vincoli Ai x = bi ed altri n − m piani del tipo xj = 0) allora è soluzione di base per esattamente una base contenente gli indici delle variabili ¿ 0. Al contrario, vertici di P che giacciono su più di n piani della frontiera possono essere soluzioni di base (degeneri) per basi diverse. Questo avviene perchè al passo ii) della dimostrazione precedente le colonne iniziali possono essere integrate ad una base di IRm in modi diversi. 4.2 Condizioni di ottimalità Sia B una matrice di base ammissibile e x̂ = (B −1 b, 0) la corrispondente soluzione di base. Il costo di x̂ è pari a cB B −1 b + cN 0 = cB B −1 b. Dalla (9) segue che il costo di una qualsiasi soluzione ammissibile può essere espresso come cB xB + cN xN = cB B −1 b + (cN − cB B −1 N )xN = cx̂ + (cN − cB B −1 N )xN (11) e risulta quindi somma del costo della soluzione di base corrente e del termine (cN − cB B −1 N )xN . Le componenti cj = cj − cB B −1 Aj del vettore cN = cN − cB B −1 N vengono detti costi ridotti. Dal fatto che xN ≥ 0 per ogni soluzione ammissibile, si ottiene immediatamente la seguente condizione di ottimalità per la soluzione di base corrente. Teorema 4 Se cj ≥ 0 per ogni j ∈ η, la soluzione di base corrente è ottima. La condizione di non negatività dei costi ridotti è in generale una condizione sufficiente ma non necessaria per l’ottimalità della soluzione di base. Come 7 verrà dimostrato nel paragrafo successivo, è anche necessaria se la soluzione di base è non degenere. Per capire il significato del costo ridotto di una variabile fuori base, si immagini di poter aumentare una sola delle variabili fuori base, diciamo xp , mantenendo tutte le altre a 0 e rimanendo in ammissibilità. Ponendo xN = (0, . . . , xp , . . . , 0) nella espressione (9) si ottiene che, al crescere di xp , la variazione nel valore della funzione obiettivo risulta pari a cp xp . Quindi il costo ridotto di una variabile rappresenta la variazione nel valore della funzione obiettivo che si ottiene aumentando la relativa variabile fuori base di una unità, mantenendo nulle tutte le altre variabili fuori base e facendo variare le variabili in base in modo che il sistema Ax = b continui ad essere soddisfatto. Se tutti i costi ridotti delle variabili fuori base risultano non negativi, il metodo termina fornendo in output la soluzione di base corrente che è ottima. Osservazione Si noti che i costi ridotti possono essere definiti anche per le variabili xj , j ∈ β. In questo caso si ottiene cB = cB − cB B −1 B = 0. Quindi i costi ridotti delle variabili in base sono sempre nulli. 4.3 Cambiamento di base Si supponga che la condizione di ottimalità non sia soddisfatta e sia p ∈ η un indice tale che cp < 0. Si consideri il problema di determinare il massimo incremento della variabile xp che può essere ottenuto mantenendo a zero le altre variabili fuori base e l’ammissibilità della soluzione. Come visto nel paragrafo precedente, un tale aumento comporta una variazione dei valori delle variabili in base dato dalla xB = B −1 b − B −1 Ap xp (12) ottenuta dalla (9) ponendo xj = 0 per ogni j ∈ η \ {p}. Si noti che una tale variazione corrisponde ad un movimento lungo l’intersezione di n − 1 piani della frontiera (i piani Ax = b ed i piani xj = 0, j ∈ η \ {p}), e quindi lungo uno spigolo del poliedro uscente dalla soluzione di base corrente. Tale spigolo ha direzione d = (−B −1 Ap , 0, . . . , 1, . . .) dove la componente 1 compare in corrispondenza alla variabile xp . In accordo con la (11), il costo del generico punto y dello spigolo è dato da cy = cx̂ + cp xp (13) e, poichè cp < 0, il valore cx decresce strettamente lungo lo spigolo. Il punto y è un punto ammissibile fin tanto che le variabili in base (12) rimangono 8 non negative. Si possono verificare due situazioni: o lo spigolo è illimitato oppure lo spostamento lungo lo spigolo viene bloccato dal fatto che qualche variabile in base raggiunge il valore 0 e quindi viene raggiunto un nuovo vertice di P . Dal punto di vista algebrico, per stabilire qual è il massimo incremento di xp compatibile con l’ammissibilità della soluzione, è sufficiente determinare il massimo incremento di xp che mantiene tutte le variabili in base non negative. Questo è dato dal massimo valore di xp ≥ 0 tale che risulti x̂B − B −1 Ap xp ≥ 0 o, equivalentemente, B −1 Ap xp ≤ x̂B o ancora, posto ã = B −1 Ap , ãi xp ≤ (B −1 b)i = (x̂B )i i = 1, . . . m. (14) Il problema può essere risolto in modo elementare. Essendo (x̂B )i ≥ 0, se ãi ≤ 0 la condizione (14) è soddisfatta da ogni xp ≥ 0. Di conseguenza, se ã ≤ 0, la variabile xp può crescere indefinitamente. In questo caso in base alla (13) il problema di PL è illimitato. In caso contrario, il massimo incremento di xp è dato da ( x̂p = min i:ãi >0 (x̂B )i ãi ) = (x̂B )q . ãq Si noti in particolare che risulta x̂p > 0 se la soluzione di base x̂ è non degenere. In caso di degenerazione può anche essere x̂p = 0. Sia q un indice tale che risulti x̂p = (x̂ãBq)q e si consideri la soluzione x0 ottenuta dalla soluzione di base corrente aumentando xp del valore x̂p . Le componenti di x0 sono x0B = x̂B − x̂p ã, x0p = x̂p , x0j = 0 se j ∈ η \ {p}. Poichè (x0B )q = 0, la soluzione x0 ha almeno n − m componenti nulle. È facile riconoscere che x0 è la soluzione di base corrispondente alla base β 0 che si ottiene da β eliminando l’indice β(q) e introducendo l’indice p. Per dimostrare che la corrispondente matrice di base B 0 , ottenuta da B sostituendo la q-esima colonna con Ap , è non singolare è sufficiente dimostrare che B −1 B 0 è non singolare. Ora B −1 B i = I i per ogni i 6= q, mentre B −1 (Ap ) = ã. Poichè ãq 6= 0 la matrice B −1 B 0 è non singolare. Per poter eseguire una nuova iterazione a partire dalla nuova soluzione di base è necessario aggiornare l’inversa della matrice di base. Ciò può essere fatto senza ricalcolare direttamente l’inversa di B 0 (calcolo di costo O(m3 )) tenendo conto del fatto che B 0 differisce da B solo per una colonna. Denotando con W = B −1 e W 0 = B 0−1 , W 0 può essere calcolata in O(m2 ) in base alla seguente formula di aggiornamento delle righe di W Wi0 = Wi − 1 Wq ãq ãi Wq ãq 9 if i 6= q if i = q. (15) 4.4 Criteri per la scelta della variabile che entra in base Per terminare la descrizione della generica iterazione del simplesso, vengono elencati alcuni criteri utilizzabili nella scelta della variabile che entra in base tra quelle che hanno costo ridotto negativo. 1. Si sceglie una variabile fuori base di costo ridotto minimo. Questo criterio richiede di calcolare tutti i costi ridotti ed ha un costo computazionale limitato. Si noti che tale criterio non comporta necessariamente il decremento maggiore nel valore della funzione obiettivo. Infatti questo è dato da cp x̂p e quindi dipende non solo dal valore del costo ridotto ma anche dal massimo incremento possibile di xp . 2. Si sceglie la variabile che produce il più alto decremento cp x̂p nella funzione obiettivo. Questo criterio che sembra teoricamente attraente è di fatto troppo oneroso dal punto di vista computazionale. 3. si sceglie la prima variabile fuori base il cui costo ridotto è negativo. 4.5 Prima fase del metodo del simplesso Nei paragrafi precedenti è stata descritta la generica iterazione del metodo del simplesso, basata sulla conoscenza di una particolare soluzione di base ammissibile. Per completare la descrizione del metodo è ora necessario definire come determinare una soluzione di base ammissibile iniziale o stabilire che il poliedro di ammissibilità è vuoto. In alcuni casi particolari, una base ammissibile è immediatamente disponibile. Questo avviene, per esempio, quando si vuole risolvere un problema P della forma {min cx : Ax ≤ b} con b ≥ 0. In questo caso la base che contiene gli indici delle variabili di slack della forma standard di P è una base ammissibile dato che risulta B = I = B −1 e quindi x̂B = Ib = b ≥ 0. Quindi il problema artificiale è sempre ammissibile. Quando l’individuazione di una base ammissibile non sia immediata è necessario eseguire una fase di inizializzazione del metodo detta Prima fase del simplesso. La prima fase del simplesso consiste nel risolvere un nuovo problema di PL. Si riscriva il sistema Ax = b in modo che risulti b ≥ 0 e si consideri il problema, detto problema artificiale, PA : min m X zi (16) i=1 Ax + Iz = b (17) x, z ≥ 0 (18) 10 definito nelle variabili originali x ed in m nuove variabili zi , i = 1, . . . , m, associate ai vincoli e dette variabili artificiali. Si noti che, essendo b ≥ 0, la base che contiene gli indici delle variabili artificiali è una base ammissibile per il problema artificiale. Inoltre, per i vincoli z ≥ 0, il valore ottimo del problema artificiale è non negativo. Proposizione 2 Il problema artificiale ha valore ottimo nullo se e solo se il problema originale è ammissibile. Dimostrazione Se x ∈ P , (x, 0) è una soluzione ammissibile di PA di valore 0 e quindi ottima. Viceversa, se (x, z) è una soluzione (ammissibile) ottima di valore 0, allora deve necessariamente essere z = 0. Ciò implica Ax = b, x ≥ 0 e quindi x ∈ P . Rimane da stabilire come ottenere una base ammissibile del problema originale dalla base ottima del problema artificiale. Se la base ottima di PA non contiene indici di variabili artificiali, allora è una base ammissibile per il problema originale. In caso di degenerazione, può però accadere che qualche variabile artificiale sia in base (con valore nullo). In questo caso è necessario sostituirla con una variabile originale fuori base da scegliersi in modo che la corrispondente matrice di base risulti non singolare. Più precisamente, supponiamo che la q–esima colonna della matrice di base BA ottima per il problema artificiale corrisponda ad una variable artificiale e siano B ed N le sottomatrici formate dalle colonne di A che sono attualmente in base e fuori base nella base ottima del problema artificiale. Si vuole sostituire BAq con una colonna Aj di N sotto la condizione che la matrice risultante B 0 sia non singolare. Questa circostanza si verifica se e solo se BA−1 B 0 è non singolare. Quest’ultima matrice coincide con la matrice identica su tutte le colonne tranne la q–esima, data da BA−1 Aj , e risulta quindi non singolare se e solo se (BA−1 Aj )q 6= 0. La ricerca della colonna Aj può quindi essere operata calcolando il vettore f = eq BA−1 N Se fj 6= 0 per qualche indice j, l’indice j può essere sostituito al q-esimo elemento della base corrente. In caso contrario, poichè B non contiene la q-esima colonna di BA , valgono le condizioni eq BA−1 N = 0 eq BA−1 B = 0 cioè eq BA−1 A = 0 e le righe di A risultano linearmente dipendenti dato che la loro combinazione lineare con vettore dei coefficienti eq BA−1 è il vettore nullo. Una riga Ai tale che (eq BA−1 )i 6= 0, risultando linearmente dipendente dalle altre, può allora essere eliminata. 11 4.6 Complessità del metodo del simplesso La complessità di ogni iterazione del metodo del simplesso è polinomiale ed è dovuta al calcolo di u = cB B −1 (O(m2 )), dei costi ridotti (O(m(n − m)), dell’incremento della variabile che entra in base (O(m2 )) ed agli aggiornamenti (O(m2 )). Quindi il costo computazionale di queste operazioni è dominato dal calcolo dei costi ridotti che richiede, nel caso peggiore, O(nm) operazioni elementari. La complessità finale dipende dal numero di passi richiesti per raggiungere una condizione di terminazione. Come primo aspetto, consideriamo il problema della finitezza del metodo, cioè se sia vero che il metodo termina in un numero finito di passi per qualsiasi istanza. La risposta è affermativa nel caso di non degenerazione. Infatti, in questa ipotesi, iterazioni successive corrispondono a soluzioni di base di costo strettamente decrescente e quindi il metodo visita al più una volta ogni soluzione di base. Poichè queste sono in numero finito, il metodo termina in un numero finito di passi. In caso di degenerazione, un vertice può essere soluzione di base per basi diverse e può accadere che queste vengano visitate in iterazioni successive e che il metodo torni su una base già visitata. Questa circostanza viene detta ciclaggio del metodo. Per evitarla è necessario adottare delle opportune regole anticiclaggio. La più semplice e nota è la seguente regola di Bland che stabilisce un criterio particolare per la scelta della variabile che entra in base e per quella della variabile che esce dalla base. Teorema 5 Si scelga l’indice p che entra in base con il criterio p = min{j : cj < 0} e l’indice β(q) che esce dalla base con il criterio β(q) = min{β(i) : (x̂B )k (x̂B )i ≤ per ogni ãk > 0}. ãi ãk Allora il metodo del simplesso termina in un numero finito di passi. Se vengono adottate regole anticiclaggio, il metodo del simplesso converge in un numero finito di passi. In generale questo numero non è polinomiale. Infatti sono state individuate istanze che vengono risolte dal simplesso in un numero esponenziale di iterazioni. 12 Esempio (Klee and Minty 1972) Si considerino le istanze di PL definite da min −xk xj−1 ≤ xj ≤ 1 − xj−1 ∀j = 2, . . . , k Se > 0 l’insieme di ammissibilità è un cubo leggermente deformato (si disegni nel caso m = 2). Si può dimostrare che le basi della forma standard del problema sono tutte non degeneri e che esiste una sequenza di base adiacenti con costo strettamente decrescente che corrisponde ad una sequenza di tutti i 2m vertici del cubo (che sono esponenenziali rispetto al numero di variabili n = k e di vincoli m = 2k della forma standard). A discapito di questo risultato teorico negativo, il metodo è tuttora uno dei più frequentemente utilizzati nelle applicazioni. Studi sperimentali hanno evidenziato che, mediamente, il numero di passi è lineare nel numero m dei vincoli e sublineare nel numero n delle variabili. 5 Complessità della programmazione lineare Il problema della polinomialità (o meno) della programmazione lineare è rimasto aperto per diversi anni ed ha avuto una risposta definitiva nel 1979 ad opera del matematico russo Leonard Khachiyan. Il metodo proposto da Khachiyan, detto metodo dell’elissoide, consente di risolvere una istanza di PL in tempo polinomiale rispetto alla lunghezza della sua codifica. Tale algoritmo, benchè di fondamentale importanza dal punto di vista teorico, non risulta però adottabile nella pratica per l’alto grado del polinomio che definisce la complessità del metodo. Comunque tale procedura ha avuto anche un ruolo importante nella definizione di algoritmi approssimati randomizzati basati sulla programmazione semidefinita per problemi di ottimizzazione combinatorica NP-hard. Il primo algoritmo polinomiale competitivo con il metodo del simplesso segue un approccio completamente diverso da esso ed è stato proposto dal matematico indiano Narendra Karmarkar nel 1984. Tale metodo e le sue varianti sviluppate in seguito vengono dette metodi a punti interni proprio perchè convergono verso un vertice ottimo visitando una sequenza di soluzioni interne al poliedro. 13 6 Programmazione Lineare e Dualità La teoria della dualità studia le importanti relazioni esistenti tra un problema di ottimizzazione, detto problema primale, ed un problema ad esso correlato, detto problema duale. Le variabili del problema duale hanno una interessante interpretazione geometrica ed economica. In questo capitolo vengono presentati i risultati di dualità nel caso in cui il problema primale sia un problema di PL. Si consideri un problema di PL della forma P: v = min c1 x 1 + c2 x 2 (19) A11 x1 + A12 x2 ≥ b1 (20) A21 x1 + A22 x2 = b2 (21) x1 ≥ 0 (22) dove è stata evidenzata la decomposizione dei vincoli in vincoli di eguaglianza e di diseguaglianza e delle variabili in variabili libere e non. Il problema duale di P è il problema D: d = max u 1 b1 + u 2 b2 (23) u1 A11 + u2 A21 ≤ c1 (24) u1 A12 + u2 A22 = c2 (25) u1 ≥ 0. (26) Il problema D è ancora un problema di PL ed ha una variabile per ogni vincolo del primale ed un vincolo per ogni variabile del primale. Inoltre: • il vettore dei costi del duale è il vettore dei termini noti del primale; • il vettore dei termini noti del duale è il vettore dei costi del primale; • la matrice dei vincoli del duale è la trasposta della matrice dei vincoli del primale; • una variabile duale è soggetta al vincolo di non negatività se e solo se il corrispondente vincolo primale è di diseguaglianza; • un vincolo duale è di diseguaglianza se e solo se la corrispondente variabile primale è soggetta al vincolo di non negatività. È facile verificare che il problema duale di D coincide con P. 14 Nel seguito indicheremo con Ai , i = 1, 2, la sottomatrice (Ai1 Ai2 ) e con Ai , A1i i = 1, 2, la sottomatrice . A2i Un primo risultato di dualità, noto come dualità debole, stabilisce che il valore ottimo del problema duale è sempre una limitazione inferiore del valore ottimo primale. Teorema 6 Risulta d ≤ v. In particolare, se uno dei due problemi è illimitato, l’altro è inammissibile. Dimostrazione Dimostrariamo innanzitutto che se x = (x1 , x2 ) e u = (u1 , u2 ) sono due soluzioni ammissibili per P e D, allora ub ≤ cx. L’ammissibilità di x ed u garantisce le seguenti relazioni: b1 ≤ A1 x, u1 ≥ 0, b2 = A2 x, x1 ≥ 0, c1 ≥ uA1 e c2 = uA2 . Di conseguenza ub = u1 b1 + u2 b2 ≤ u1 A1 x + u2 A2 x = uAx e cx = c1 x1 + c2 x2 ≥ uA1 x1 + uA2 x2 = uAx da cui si ottiene ub ≤ uAx ≤ cx. (27) Poichè la (27) vale per due generiche soluzioni primale e duale, risulta d ≤ v. In particolare, se il problema P (il problema D) ammette una soluzione x (u), il valore cx (ub) rappresenta una limitazione superiore (inferiore) per d (v) e quindi D (P) non può essere illimitato. La differenza v − d viene detta scarto di dualità. Corollario 7 Siano x e u soluzioni ammissibili, rispettivamente, per P e D. Se cx = ub, allora x e u sono ottimi. La dualità debole è una proprietà verificata da ogni coppia primale duale di problemi di ottimizzazione. Nel caso della PL tale condizione può essere rafforzata per il seguente fondamentale risultato che inverte la condizione espressa nel Corollario 7. Teorema 8 Il problema P ammette ottimo se e solo se il problema D ammette ottimo. In questo caso risulta d = v. 15 Dimostrazione Si consideri la forma standard P 0 del problema P. Il problema P ammette ottimo se e solo P 0 ammette ottimo e questo avviene se e solo se esiste una soluzione di base x̂ = (B −1 b, 0) che soddisfa le condizioni di ottimalità cN = cN −cB B −1 N ≥ 0. Si consideri la soluzione duale u = cB B −1 . Essa è ammissibile per il problema duale D0 di P 0 se e solo se uA ≤ c. Poichè risulta uB = cB B −1 B = cB e uN = cB B −1 N ≤ cN per le condizioni di ottimalità, u è ammissibile duale. Inoltre ub = cB B −1 b = cB xB = cx. È ora facile verificare che la soluzione u risulta ammissibile e quindi ottima anche per D. La non ammissibilità di uno dei due problemi non implica la illimitatezza dell’altro. Infatti esistono istanze per cui sia il problema primale che il duale sono non ammissibili e quindi lo scarto di dualità è infinito (si prenda ad esempio A matrice nulla, b = 1 e c = −1). Il Lemma di Farkas e la dualità forte In questo paragrafo si considerano due problemi primale e duale scritti in forma canonica min cx Ax ≥ b x≥0 (28) (29) (30) ed il problema duale sia quindi min ub uA ≤ c u ≥ 0. (31) (32) (33) La dualità forte della PL può essere dimostrata come conseguenza di un importante risultato della teoria dei sistemi lineari noto come Lemma di Farkas. Esistono diverse varianti di questo risultato, noti anche come Teoremi dell’alternativa. Teorema 9 Lemma di Farkas Data una matrice A ed un vettore b, esattamente uno degli insiemi - P = {x : Ax ≥ 0, cx < 0} - Q = {u : uA = c, u ≥ 0} è non vuoto. 16 Dimostrazione Sia Q 6= ∅ e u ≥ 0 tale che uA = c. Allora cx = uAx per ogni x e quindi, se Ax ≥ 0 risulta necessariamente cx ≥ 0 cioè P = ∅. Viceversa supponiamo Q = ∅ e consideriamo l’insieme Z = {z : z = uA, u ≥ 0} cioè l’insieme delle combinazioni coniche delle righe di A. Poichè per ipotesi c ∈ / Z e Z è un insieme chiuso e convesso esiste un iperpiano xx = α, x ∈ Rn e α ∈ R, che separa strettamente Z da c cioè tale che xc < α e xz ≥ α per ogni z ∈ Z per un opportuno vettore . Poichè lo 0 appartiene a Z risulta α ≤ 0. Quindi cx < 0. D’altra parte uAx ≥ 0 per ogni u ≥ 0 e questo implica Ax ≥ 0. Infatti, se fosse Ai x < 0 per qualche i, ponendo ui = 1 e uj = 0 se j 6= i si otterrebbe uAx = ui Ai x < 0. Da questo segue che x ∈ P . Il Lemma di Farkas ha la seguente interpretazione geometrica. Il poliedro definito dai vincoli Ax ≥ 0 è un cono convesso ed ogni sup elemento diverso dal vettore nullo è una direzione del cono. La funzione cx è limitata inferiormente sul cono se e solo se P è vuoto e quindi se e solo se c è una combinazione conica combinazione conica delle righe di A. Dimostrazione del Teorema 8. Supponiamo che il problema primale ammetta soluzione ottima x∗ di valore v ∗ (il caso simmetrico può essere trattato in modo analogo). Dimostreremo che allora esiste u∗ ammissibile per il problema duale e tale che u∗ b ≥ cx∗ da cui, per la dualità debole, u∗ b = cx∗ . Per l’ottimalità di x∗ risulta non ammissibile il sistema Ax ≥ b (34) x ≥ 0 (35) cx < v ∗ (36) Come primo passo dimostriamo che questo sistema è non compatibile se e solo se è non compatibile il sistema omogeneo Ax − λb ≥ 0 (37) cx − λv ∗ < 0 (38) x ≥ 0, λ ≥ 0 (39) Infatti, se esiste una soluzione x del primo sistema allora (x, 1) è una soluzione del secondo sistema. Viceversa sia (x, λ) una soluzione del secondo sistema. Se λ > 0, allora λx è una soluzione del primo. Se λ = 0 si ha Ax ≥ 0, cx < 0 ed è allora facile verificare che la soluzione x̂ = x + x∗ è una soluzione ammissibile del primo sistema. Quindi possiamo assumere che il sistema (37) sia non ammissibile. Esso può 17 essere scritto nella forma 0m A −b x I ≥ 0n n 0 λ 0 0 1 cT −v ∗ (40) x < 0 λ (41) Per il Lemma di Farkas esiste quindi un vettore (u, y, w) ≥ 0 tale che A −b T c . (u, y, w) In 0 = −v ∗ 0 1 Questi vincoli possono essere riscritti nella forma uA + In y = cT (42) −ub + w = −v ∗ (43) u, y, w ≥ 0 (44) da cui risulta che u è una soluzione ammissibile duale (uA ≤ cT , u ≥ 0), tale che ub ≥ v ∗ . Per la dualità debole deve allora essere ub = v ∗ . 6.1 Condizioni di complementarità La dualità forte stabilisce una relazione tra i valori ottimi di P e D. Consideriamo ora un insieme di condizioni, dette condizioni di complementarità, che stabiliscono delle relazioni tra le soluzioni ottime dei due problemi. Teorema 10 Due soluzioni x e u ammissibili rispettivamente per i problemi P e D sono ottime se e solo se soddisfano le condizioni u(Ax − b) = 0 (45) (uA − c)x = 0. (46) Dimostrazione Necessità Per quanto provato nella dimostrazione del Teorema 6 risulta ub ≤ uAx ≤ cx. Dalla dualità forte cx = ub si ottiene allora ub = uAx = cx, (47) 18 da cui seguono le (45) e (46). Sufficienza Le condizioni di complementarietà implicano la (47) e quindi le due soluzioni sono ottime per il Corollario 7. In ammissibilità, le condizioni di complementarità esprimono condizioni più forti rispetto alla semplice condizione di ortogonalità tra le coppie di vettori u, Ax − b e uA − c, x. Si noti infatti che, per l’ammissibilità delle soluzioni x P e u, ogni termine della sommatoria u(Ax − b) = m i=1 ui (Ai x − bi ) risulta non negativo. Infatti (Ai x − bi ) ≥ 0 e, se la diseguaglianza vale in senso stretto, deve essere ui ≥ 0 per il vincolo di nonnegatività sulla variabile ui . Quindi u(Ax − b), essendo una somma di termini non negativi, è nullo se e solo se tutti i suoi termini sono nulli cioè se e solo se ui (Ai x − bi ) = 0 ∀ i = 1, . . . , m. Analogamente si può dimostrare che, in ammissibilità, la condizione (uA − c)x = 0 è equivalente alle n condizioni (uAj − cj )xj = 0 ∀ j = 1, . . . , n. In particolare, per il Teorema 10, in ottimalità valgono le seguenti implicazioni Ai x − bi > 0 → ui = 0 (48) xj > 0 → j uA − cj = 0 (49) uAj − cj < 0 → xj = 0 (50) ui > 0 → Ai x − bi = 0. (51) Interpretazione geometrica delle variabili duali ottime Quanto affermato ci consente di interpretare geometricamente le variabili duali ottime. Si consideri un problema primale nella forma {max cx : Ax ≤ b} (in cui la matrice A comprende tutti i vincoli e i vettori Ai puntano all’esterno del poliedro primale, vedi Fig. 1), il cui problema duale è {max ub : uA = c, u ≥ 0}. È facile riconoscere che le soluzioni ammissibili duali sono tutti e soli i vettori dei coefficienti di combinazioni coniche delle righe di A che danno il vettore c. Sia u una soluzione ottima duale. Per le condizioni di complementarietà (48) possono essere diverse da zero solo le componenti ui corrispondenti a vincoli primali soddisfatti come uguaglianza in ogni soluzione ottima primale. Quindi x è una soluzione ottima primale se e solo se c è una combinazione conica delle righe di A che corrispondono a vincoli attivi in x. Le variabili ottime duali sono proprio i coefficienti di tale combinazione conica. Inoltre, essendo ub = cx per la dualità forte, l’iperpiano di equazione cx = cx risulta una combinazione conica dei vincoli attivi in x. 19 A2 A1 A1 x* A2 A2 c A2 A2 Figura 1: Cono dei vettori c per cui x∗ è soluzione ottima 6.2 Interpretazione economica delle variabili duali Le variabili duali ottime di un problema di PL hanno anche una interessante interpretazione economica. Si consideri un problema in forma standard e siano β e x̂ = (x̂B , x̂N ) = (B −1 b, 0) una base ottima e la corrispondente soluzione di base. Si supponga ora di variare il q–esimo termine noto di una quantità , cioè si consideri un nuovo vettore di termini della forma b0 = b+eq , dove eq rappresenta il q-esimo elemento della base canonica di Rm . Se la base β è non degenere, per valori di sufficientemente piccoli, β è una base ammissibile anche per il problema modificato e le variabili in base della corrispondente soluzione di base sono x0B = B −1 (b + eq ) ≥ 0. Poichè i costi ridotti non vengono modificati da variazioni nel vettore b, β è ancora una base ottima. La variazione nel valore ottimo dei due problemi è data da cB (x0B − x̂B ) = cB B −1 eq = ûeq = ûq dove û = cB B −1 è una soluzione duale ottima. Quindi ûq rappresenta la variazione nel valore ottimo conseguente ad una variazione unitaria del q-esimo termino noto. Un valore ûq < 0 (ûq > 0) indica il decremento (aumento) nel valore ottimo del problema corrispondente ad un incremento unitario del q– esimo termine noto. Per tale motivo le variabili duali ottime possono essere interpretate come prezzi connessi alla presenza dei vincoli e vengono anche dette prezzi ombra. Esempio Si consideri un problema di pianificazione della produzione. Una azienda può produrre n diversi prodotti utilizzando m risorse (materie prime, ore lavoro ecc). Sia cj il profitto ottenibile da una unità del prodotto j, bi la quantità di risorsa i e aij la quantità di risorsa i necessaria per produrre una unità del prodotto j. Allora il problema di massimizzazione del profitto totale può essere espresso come 20 max cx Ax ≤ b x ≥ 0. (52) (53) (54) Immaginiamo ora che l’azienda possa investire nell’acquisto di nuove risorse, e sia ri il costo unitario della risorsa i-esima. Quali sono le risorse che è conveniente acquistare e in quali quantità? Se u∗ è la soluzione ottima duale, la generica componente u∗i indica l’aumento nel valore della funzione ottenibile per un incremento unitario del termine noto bi . Quindi il guadagno netto per aumento unitario della risorsa i è dato da gi = u∗i − ri . Evidentemente conviene investire in una o più risorse q con valore gq massimo. Il ragionamento può essere applicato purchè la base continui a rimanere ottima. Poichè una variazione dei termini noti non incide sull’ottimalità, è sufficiente che la base continui a rimanere ammissibile e quindi la quantità ∆bq deve essere tale che B −1 b + B −1 ∆bq eq ≥ 0, cioè ∆bq B −1q ≥ −x∗B . Se B −1q ≥ 0 questo incremento può essere a priori illimitato e quindi conviene investire completamente nella risorsa i, in caso contrario il valore ∆bq massimo è dato da −x∗β(k) min −1 . −1 k:Bkq <0 Bkq Ogni altro incremento di bq non porterebbe a nessun vantaggio e conviene investire su una diversa risorsa. 6.3 Simplesso e dualità Si consideri un problema di PL espresso in forma standard min cx (55) Ax = b (56) x ≥ 0 (57) ed il suo problema duale min ub uA ≤ c 21 (58) (59) Ad ogni soluzione di base x = (xB , 0) è associato il vettore u = cB B −1 che, avendo dimensione m, può essere interpretato come un vettore di variabili duali. Vediamo come si comporta questo particolare vettore u rispetto ai vincoli del problema duale. Tali vincoli possono essere riscritti come u[BN ] ≤ [cB cN ]T e quindi scomposti nei due gruppi uB ≤ cB (60) uN ≤ cN . (61) Sostituendo a primo membro il vettore u = cB B −1 otteniamo che il primo gruppo di vincoli è sempre soddisfatto con l’eguaglianza dato che cB B −1 B = cB I = cB , mentre il seconda gruppo di vincoli è equivalente a cB B −1 N ≤ cN ⇔ cN = cN − cB B −1 N ≥ 0. Quindi u è una soluzione ammissibile duale se e solo se i costi ridotti sono tutti non negativi, cioè se e solo se è soddisfatta la condizione di ottimalità richiesta dal simplesso. In generale, una soluzione duale u viene detta una soluzione di base se risulta u = cB B −1 per una opportuna matrice di base B. Da quanto detto si può osservare che il metodo del simplesso lavora considerando ad ogni passo una coppia di soluzioni primale e duale che soddisfano le condizioni di complementarietà ed hanno lo stesso valore (si verifichi per esercizio). Mentre la soluzione primale è ammissibile, la soluzione duale in generale è non ammissibile e diventa ammissibile solo quando la soluzione primale soddisfa le condizioni di ottimalità ed è quindi ottima. 7 Analisi di sensitività o di post–ottimalità. Molto spesso i parametri che intervengono nel modello matematico di un problema reale contengono un certo grado di approssimazione rispetto ai valori reali. Ha allora senso chiedersi quanto dell’informazione che si ottiene risolvendo il modello matematico sia sensibile a possibili inaccuratezze del modello, o, in altre parole, quanto la soluzione ottenuta sia robusta rispetto a piccole modifiche dei dati. L’analisi di sensività è una analisi a posteriori che cerca di rispondere a queste domande. I parametri che intervengono in un modello di PL sono: i costi, i termini noti dei vincoli e gli elementi della matrice dei vincoli. 22 Sia x̂ = (x̂B , x̂N ) una soluzione di base ottima di un problema in forma standard. Consideriamo dapprima una variazione in uno dei termini noti del problema, assumendo che il vettore b venga modificato in b0 = b + eq . Poichè una tale modifica non altera i costi, la soluzione di base x0 = (x0B = B −1 b0 , x0N = 0) soddifa ancora la condizione di ottimalità cN ≥ 0. Quindi, se ammissibile, essa è anche ottima. Essendo tutte le variabili fuori base nulle, la condizione di ammissibilità, posto W = B −1 , è data da x0B = W b0 = W (b + eq ) = x̂B + W q ≥ 0. L’intervallo di valori di per cui tale condizione è soddisfatta è allora max{ −(xB )i −(xB )i : Wiq > 0} ≤ ≤ min{ : Wiq < 0}. Wiq Wiq (62) Si noti che, essendo x̂B ≥ 0, l’intervallo in (62) contiene lo 0, valore corrispondente al problema di partenza. Si consideri ora una variazione nel costo della p-esima variabile, cioè una variazione nel vettore dei costi del tipo c0 = c + ep . Tale variazione non modifica l’insieme di ammissibilità del problema e quindi x̂ è una soluzione di base ammissibile per il problema modificato. Quali sono i valori di per cui verifica ancora le condizioni di ottimalità cN ≥ 0? Si devono distinguere i due casi p ∈ η e p ∈ β. Nel primo caso una variazione di cp altera il costo ridotto della sola variabile xp e quindi le condizioni di ottimalità sono soddisfatte se e solo se c0p = cp + ≥ 0 ⇐⇒ ≥ −cp . (63) Nel secondo caso, sia p = β(q) il q-esimo elemento in base. Le condizioni di ottimalità richiedono c0N = cN − (cB + eq )B −1 N = cN − eq B −1 N ≥ 0. (64) Sia ã = eq B −1 N. La (64) è equivalente alle condizioni c0j = cj − ãj ≥ 0 per ogni j ∈ η. Quindi x̂ soddisfa le condizioni di ottimalità per ogni valore di nell’intervallo max{ cj cj : j ∈ η, ãj < 0} ≤ ≤ min{ : j ∈ η, ãj > 0}. ãj ãj Si noti che, essendo cN ≥ 0, l’intervallo contiene lo 0. 23 (65) Una analisi analoga può essere condotta per studiare quali variazioni in un termine della matrice dei vincoli A sono compatibili con l’ottimalità della base corrente. Si noti che modifiche nei termini noti e nei costi compatibili con le condizioni (62), (63) e (65) , mantengono l’ottimalità della base corrente ma comportano una variazione dei valori delle variabili ottime (nel primo caso) e del valore ottimo del problema nel secondo caso. Ciò che non varia è la base ottima. Nel caso di variazioni dei parametri che non soddisfano tali condizioni sarà necessario eseguire una fase di riottimizzazione. 8 Algoritmo del simplesso duale Si supponga di aver risolto un problema di PL in forma standard min cx (66) Ax = b (67) x ≥ 0 (68) con il metodo del simplesso determinando una soluzione di base ottima x∗ e la corrispondente soluzione duale ottima u∗ date da x∗ = (B −1 b, 0) u∗ = cB B −1 dove B è la matrice di base ottima. Si assuma ora di modificare il problema in uno dei seguenti modi a) variando il vettore dei termini noti b; b) introducendo un nuovo vincolo; e che questa variazione renda la soluzione x∗ inammissibile. Per risolvere il nuovo problema con il metodo del simplesso si dovrebbe a questo punto far ripartire la prima fase del metodo e quindi si perderebbe tutta l’informazione precedentemente acquisita. Questo sembra poco sensato dato che una modifica come quelle considerate probabilmente determina un problema la cui soluzione ottima non è molto “distante” dalla soluzione ottima del problema originale. Un metodo che consente di risolvere il nuovo problema a partire dalla base corrente è il metodo del simplesso duale. Si consideri dapprima una modifica del vettore dei termini noti b che renda x∗ inammissibile. Tale modifica fa variare l’insieme ammissibile primale e la funzione obiettivo duale, mentre non varia l’insieme ammissibile duale e 24 la funzione obiettivo primale. In particolare, se anche la soluzione ottima primale x∗ non è più ammissibile, la soluzione duale ottima u∗ è ancora ammissibile. Eventualmente, essendo variata la funzione obiettivo del duale, u∗ non sarà più ottima. Nel caso b) in cui venga introdotto un nuovo vincolo primale gx ≤ h l’insieme dei vincoli del problema primale diventa A 0 b à = ≤ g 1 h dove l’ultima riga si riferisce al nuovo vincolo ed è stata introdotta una nuova variabile (di slack) e quindi una colonna della matrice identica. In questo caso, poichè B è non singolare, anche B 0 B̃ = gB 1 è non singolare. Si può allora considerare la soluzione di base (B̃ −1 (b, h)T , 0) e la corrispondente soluzione duale di base (cB , 0)B̃ −1 = (u∗ , 0)T . È facile verificare che (u∗ , 0) risulta ammissibile per il nuovo problema duale. Vediamo ora come, a partire da una soluzione di base duale ammissibile, sia possibile risolvere il nuovo problema primale. L’algoritmo del simplesso duale Si è già visto come il metodo del simplesso lavori mantenendo ad ogni passo una coppia di soluzioni primale-duale x, u con le seguenti proprietà: 1) x e u soddisfano le condizioni di complementarità, 2) x è ammissibile, 3) uB = cB e 4) la condizione uN − cN ≤ 0, equivalente alla condizione di ottimalità cN ≥ 0, risulta soddisfatta solo in ottimalità. Il metodo del simplesso duale opera in modo simmetrico, cioè ad ogni passo considera una coppia di soluzioni primale e duale che soddisfano le condizioni di complementarità e di cui solo la soluzione duale è ammissibile. L’obiettivo è quello di portare la soluzione primale verso l’ammissibilità dato che questa condizione implica l’ottimalità per il Teorema 10. Alla generica iterazione la soluzione di base duale u = cB B −1 è ammissibile mentre la soluzione di base primale (B −1 b, 0) è non ammissibile. Poichè tutte le variabili fuori base sono nulle, questo implica che una variabile in 25 base deve avere un valore strettamente negativo. Sia essa la variabile di indice β(q), cioè la q-esima variabile in base. Un modo per rendere questa variabile non negativa è quello di portarla fuori base, sotto la condizione di mantenere l’ammissibilità duale. Attualmente il vincolo duale corrispondente alla colonna B q risulta soddisfatto come uguaglianza. Portare la variabile fuori base significa consentire che questo vincolo possa essere soddisfatto con il ≤. L’obiettivo è allora quello di determinare una nuova soluzione duale u0 tale che risulti u0 B = cB − αeq (69) u0 N ≤ cN (70) per un opportuno α ≥ 0. Inoltre, per ottenenere una nuova base, è necessario individuare un valore di α per cui almeno uno dei vincoli corrispondenti alle variabili fuori base risulti soddisfatto con l’eguaglianza. Per determinare un tale valore si esplicitino le condizioni (70) sostituendo u0 = (cB − αeq )B −1 nel secondo blocco di disequazioni. Si ottiene (cB − αeq )B −1 N = cB B −1 N − αeq B −1 N ≤ cN . Posto ã = eq B −1 N , il valore massimo di α è dato dalle condizioni −αã ≤ cN − cB B −1 N = cN . Si noti che, essendo u = cB B −1 ammissibile, i costi ridotti cj , j ∈ η, sono tutti ≥ 0. Ne segue che componenti ãj ≥ 0 non pongono alcun impedimento all’aumento di α. Quindi il valore massimo per α è dato da α∗ = min{ −cj : j ∈ η, ãj ãj < 0}. In particolare, se ã ≥ 0, α∗ = +∞, cioè α può tendere all’infinito mantenendo la soluzione duale ammissibile. Il costo della nuova soluzione duale u0 è dato da u0 b = cB B −1 b − αeq B −1 b = cB B −1 b − α∗ xβq . (71) Poichè xβq < 0, se α∗ = +∞ il valore della soluzione duale tende ad infinito ed il problema duale è illimitato. Per il Teorema 6 si può concludere che il primale è inammissibile. In caso contrario, sia p una variabile fuori base per cui risulta −cp . α∗ = ãp Allora il vincolo u0 Ap è soddisfatto con l’uguaglianza e la variabile p entra in base. Considerando nuovamente la (71), si può notare che, se α∗ > 0, il valore duale è aumentato. 26 Analogamente a quanto fatto per il simplesso primale, si può dimostrare che la matrice di base ottenuta sostituendo la q–esima colonna di B con la colonna Ap è non singolare, e che quindi u0 è una nuova soluzione di base. Se le componenti della corrispondente soluzione di base primale sono tutte non negative, allora la soluzioni di base primale corrente è ottima. In caso contrario, si esegue una nuova iterazione. Anche in questo caso, se vengono utilizzate regole anticiclaggio, il metodo termina in un numero finito di passi o producendo una soluzione ottima o determinando che il problema primale è inammissibile. Bibliografia Il materiale contenuto nella dispensa è ampiamente e liberamente tratto dal testo: P. Serafini, Ottimizzazione, Zanichelli, 2000, (cap. 6 e 7). Altri riferimenti bibliografici: D. Goldfarb e M.J. Todd, Linear Programming, in Optimization, Handbooks of Operations Research and Management Science, Vol. 1, North–Holland. 27
Documenti analoghi
Introduzione all`ottimizzazione vincolata
Per gli sviluppi che seguono, è utile ricordare la seguente definizione.
Definizione 3 Dato un insieme di punti x1 , x2 , . . . , xk ∈ IRn , e k scalari λ1 ≥ 0, λ2 ≥
0, . . . , λk ≥ 0 non tutti nul...