laboratorio 6 Prof. E. Amaldi Ottimizzazione Metodo di Barriera (o dei Punti Interni) per la Programmazione Lineare Si consideri il seguente problema di programmazione lineare: (P ) min s.t. cT x (1) Ax = b (2) x≥0 (3) I vincoli che rendono difficile la soluzione del problema (P ) sono quelli di non negativit` a sulle variabili. Si consideri dunque l’applicazione del metodo di barriera logaritmica (metodo dei punti interni) al problema in cui si rilassano solamente i vincoli x ≥ 0. Sia (P (µ)) il problema che si ottiene per un dato valore del parametro di barriera µ, ovvero (P (µ)) min cT x − µ n X ln xi (4) i=1 s.t. Ax = b. (5) a) Si scrivano le condizioni di Karush-Kuhn-Tucker per il problema originale (P ). Le condizioni di KKT sono necessarie e/o sufficienti per l’ottimalit`a in ogni punto della regione ammissibile? Si considerino ora le condizioni di KKT del problema (P ): si perturbi ciascuna condizione di complementariet`a con lo stesso parametro µ > 0. Si ottengono quindi le seguenti condizioni: c − v + AT u = 0 (6) Ax = b (7) x≥0 (8) v≥0 (9) xj v j = µ per j = 1, . . . , n. (10) Definizione: Sia (x (µ) , u (µ) , v (µ)) una terna di vettori che soddisfi le condizioni (6)-(10). Al variare del parametro µ > 0, le terne di vettori (x (µ) , u (µ) , v (µ)) descrivono una traiettoria detta cammino centrale (central path). Osserviamo che, se µ tende a 0, le condizioni di complementariet`a si avvicinano a essere soddisfatte. Pi` u precisamente, si pu`o dimostrare che, se µ → 0, la terna (x (µ) , u (µ) , v (µ)) converge a una terna (x∗ , u∗ , v ∗ ) che soddisfa le condizioni di KKT del problema (P ). In particolare, si pu`o verificare che vale L (x (µ) , u (µ) , v (µ)) = cT x (µ) − nµ ≤ cT x∗ ≤ cT x (µ) dove x∗ `e una soluzione ottima per il problema (P ) (per la dimostrazione si veda l’Appendice 1). Pertanto, lungo il cammino centrale, per ogni µ > 0, il valore della funzione obiettivo di (P ) u nµ dal valore ottimo cT x∗ . cT x (µ) dista al pi` Documento preparato da S. Coniglio, L. Taccari, V. Danese 1 laboratorio 6 Ottimizzazione Prof. E. Amaldi b) Si consideri ora il problema con barriera logaritmica (P (µ)) per un dato µ > 0. Si scrivano le condizioni di Karush-Kuhn-Tucker per tale problema. Le condizioni di KKT sono necessarie e/o sufficienti per l’ottimalit`a in ogni punto della regione ammissibile? c) Sia x∗ (µ) una soluzione che soddisfa le condizioni di KKT del problema (P (µ)) per determinati moltiplicatori u∗ (µ). La coppia (x∗ (µ) , u∗ (µ)) pu`o essere parte di una terna (x∗ (µ) , u∗ (µ) , v ∗ (µ)) che appartenga al cammino centrale? d) Si consideri l’algoritmo iterativo in cui si applica il metodo di Newton per la soluzione del problema con barriera ad ogni iterazione. Si mostri come adattare la regola di derivazione del passo di Newton in modo che le soluzioni soddisfino un insieme di vincoli lineari di uguaglianza. e) Si consideri il seguente problema: min x1 − x2 (11) s.t. − x1 + x2 ≤ 1 (12) x1 + x2 ≤ 3 (13) x1 , x2 ≥ 0. (14) Si implementi il metodo in Matlab per risolverlo, partendo dal punto ammissibile x ¯ = (1, 1). f) Si risolva il problema (11)-(14) con il metodo del simplesso, usando AMPL e il risolutore CPLEX. Si verifichi che la soluzione trovata dal metodo dei punti interni non `e su un vertice del poliedro ammissibile, al contrario di quella trovata da CPLEX. Qual’`e il motivo? g) Si risolva ora il problema ottenuto modificando la funzione obiettivo in 21 x1 − x2 . Si verifichi che la soluzione ottenuta col metodo dei punti interni coincide con quella trovata dal metodo del simplesso. Per quale motivo? Uno scheletro della funzione che implementa il metodo dei punti interni si trova in ipm stub.m: Documento preparato da S. Coniglio, L. Taccari, V. Danese 2 laboratorio 6 Ottimizzazione Prof. E. Amaldi % interior point method for LPs of the form min c’*x : A*x <= b function [xstar, vstar] = ipm(c, A, b, mu, x_init, gamma, epsilon) OPTIONS = []; [m, n] = size(A); %%bring to standard form s = b - A*x_init x = [ x_init ; s ] A = [A eye(m,m)] c = [c zeros(1,m)] %[m, n] = size(AA) grad = zeros(m+n, 1); H = zeros(m+n, m+n); d = zeros(m+n, 1); z = zeros(m, 1); xks = [x_init’] %% iterative method while n * mu >= epsilon %% compute gradient and Hessian %% compute direction d with adapted Newton update alpha = fminbnd(@(alpha) % write here the objective function f(x+alpha*d), ... 0, 1, OPTIONS); xstar = x + alpha * d; mu = gamma * mu; x = xstar; xks = [xks; x(1:n)’] end polyhedron_print(A,b); hold on; plot(xks(:,1), xks(:,2), ’r.’); end % end of function Per rappresentare la regione ammissibile e la sequenza di soluzioni trovate, `e inclusa la Documento preparato da S. Coniglio, L. Taccari, V. Danese 3 laboratorio 6 Ottimizzazione Prof. E. Amaldi funzione polyhedron print.m: function polyhedron_print(A, b) [m, n] = size(A); Ineq = A(:, 1 : n-m); rel = ’’; for i = 1 : m rel = [ rel ’<’ ]; end t = extrpts(Ineq,rel,b); t = t(1:2,:); t = delcols(t); t1 = t(1,:); t2 = t(2,:); z = convhull(t1,t2); hold on patch(t1(z),t2(z),[0.9, 0.9, 0.5]) end % end of function che si appoggia agli script vr.m function e = vr(m,i) % The ith coordinate vector e in the m-dimensional Euclidean space. e = zeros(m,1); e(i) = 1; delcols.m function d = delcols(d) % Delete duplicated columns of the matrix d. d = union(d’,d’,’rows’)’; n = size(d,2); j = []; for k =1:n c = d(:,k); for l=k+1:n if norm(c - d(:,l),’inf’) <= 100*eps j = [j l]; end end end if ~isempty(j) j = sort(j); d(:,j) = []; end Documento preparato da S. Coniglio, L. Taccari, V. Danese 4 laboratorio 6 Ottimizzazione Prof. E. Amaldi e extrpts.m function vert = extrpts(A, rel, b) % Extreme points vert of the polyhedral set % X = {x: Ax <= b or Ax >= b, x >= 0}. % Inequality signs are stored in the string rel, e.g., % rel = ’<<>’ stands for <= , <= , and >= , respectively. [m, n] = size(A); nlv = n; for i=1:m if(rel(i) == ’>’) A = [A -vr(m,i)]; else A = [A vr(m,i)]; end if b(i) < 0 A(i,:) = - A(i,:); b(i) = -b(i); end end warning off [m, n]= size(A); b = b(:); vert = []; if (n >= m) t = nchoosek(1:n,m); nv = nchoosek(n,m); for i=1:nv y = zeros(n,1); x = A(:,t(i,:))\b; if all(x >= 0 & (x ~= inf & x ~= -inf)) y(t(i,:)) = x; vert = [vert y]; end end else error(’Number of equations is greater than the number of variables’) end vert = delcols(vert); vert = vert(1:nlv,:); Documento preparato da S. Coniglio, L. Taccari, V. Danese 5 laboratorio 6 Prof. E. Amaldi Ottimizzazione Appendice 1: calcolo del valore della lagrangiana di (P ) lungo il cammino centrale Sia (˜ x (µ) , u ˜ (µ) , v˜ (µ)) un punto appartenente al cammino centrale. In questo punto la lagrangiana di (P ) vale: L (˜ x (µ) , u ˜ (µ) , v˜ (µ)) = cT x ˜− n X v˜j x ˜j + u ˜ T (A˜ x − b) = cT x ˜− j=1 n X v˜j x ˜ j = cT x ˜ − nµ, j=1 dato che (6)-(10) sono soddisfatte. Inoltre, possiamo anche scrivere: ˜ (µ) , v˜ (µ)) = cT x ˜− L (˜ x (µ) , u n X v˜j x ˜j = −AT u ˜ + v˜ T j=1 x− n X T ˜ = −˜ uT A˜ uT b v˜j x ˜j = (−AT u ˜) x x = −˜ j=1 La lagrangiana di (P ) valutata in un punto del cammino centrale coincide quindi con il valore della funzione obiettivo del problema duale. [ Il duale di (P ) ha la seguente formulazione: (D) max bT u s.t. AT u ≤ c. Poich`e le variabili u sono libere da vincoli di non negativit` a, il seguente problema ha lo stesso valore ottimo del problema (D): max − bT u s.t. − AT u ≤ c ] Indicando con x∗ una soluzione ottima per il problema (P ), valgono quindi le relazioni cT x ˜ − nµ = −˜ uT b ≤ c T x ∗ T ∗ (per la dualit`a debole in programmazione lineare) (perch´e cT x∗ `e il valore ottimo), T ˜ c x ≤c x che implicano cT x ˜ − nµ ≤ cT x∗ ≤ cT x ˜ Pertanto, lungo il cammino centrale, facendo convergere µ a 0, la lagrangiana di (P ) tende al valore ottimo della funzione obiettivo. Documento preparato da S. Coniglio, L. Taccari, V. Danese 6 laboratorio 6 Prof. E. Amaldi Ottimizzazione Soluzione a) Siano u e v, rispettivamente, i moltiplicatori dei vincoli di uguaglianza e di non negativit` a. La funzione Lagrangiana di P `e: L(x, v, u) = cT x − n X vj xj + uT (Ax − b) j=1 e le condizioni KKT sono: c − v + AT u = 0 (15) Ax = b (16) x≥0 (17) v≥0 (18) xj v j = 0 per j = 1, . . . , n. (19) Si ricordi che la condizione di qualifica dei vincoli `e sempre soddisfatta nel caso in cui i vincoli siano lineari, anche nel caso in cui questi non abbiano gradienti linearmente indipendenti in ogni punto della regione ammissibile (si faccia riferimento, ad esempio, al libro Numerical Optimization di J. Nocedal e S. Wright, pagina 364). Quindi le KKT sono necessarie. Inoltre, si osservi che il problema (P ) `e convesso, in quanto sia la funzione obiettivo, sia i vincoli, sono lineari. Quindi la funzione lagrangiana di (P ) `e convessa e le condizioni di KKT sono anche sufficienti. b) La funzione Lagrangiana di P (µ) `e: Lµ (x, u) = cT x − µ n X ln xj + uT (Ax − b) j=1 e le condizioni KKT, ponendo β = β(x) := 1 1 ,..., x1 xn !T , sono c − µβ + AT u = 0 (20) Ax = b. (21) Si osservi che non compare esplicitamente la condizione x ≥ 0 ma ogni soluzione x di P (µ) in cui la funzione obiettivo assume valore finito deve soddisfare x > 0. La condizione di qualifica dei vincoli `e sempre soddisfatta perch`e i vincoli sono lineari (si faccia riferimento al punto a)). Quindi le KKT sono necessarie. Inoltre, si osservi che il problema (P (µ)) `e convesso, in quanto la funzione obiettivo `e data dalla somma di un termine lineare con una funzione convessa moltiplicata per un parametro positivo e i vincoli sono lineari. Quindi la funzione lagrangiana di (P ) `e convessa e le KKT sono anche sufficienti. c) Sia x∗ , u∗ una soluzione di (20)-(21). dev’essere: Affinch`e la coppia di vettori soddisfi (6)-(10), !T 1 1 v ∗ (µ) = µ ,..., , (22) x1 xn Documento preparato da S. Coniglio, L. Taccari, V. Danese 7 laboratorio 6 Prof. E. Amaldi Ottimizzazione da (22) deriviamo: xj vj = µ. (23) La terna (x∗ , u∗ , v ∗ ) cos`ı definita appartiene dunque al cammino centrale. Pertanto, quando µ → 0, la soluzione ottima del problema (P (µ)) converge a una soluzione ottima del problema (P ). ¯ `e data da: d) Per il problema min f (x), la direzione di Newton in un punto x d = −(∇2 f (¯ x))−1 ∇f (¯ x). Per un problema con vincoli di uguaglianza del tipo: min f (x) : Ax = b, (24) dobbiamo trovare una direzione di discesa d tale che il nuovo punto x + d, partendo da un x che soddisfi Ax = b, sia anch’esso ammissibile, soddisfando A(x + d) = b. Questo implica Ad = 0. Le condizioni KKT di (24) sono: ∇f (x) + AT u = 0 (25) Ax = b. (26) Applicandole al problema min f (x + d) : A(x + d) = b (27) ∇f (x + d) + AT u = 0 (28) Ad = 0. (29) d abbiamo: Applichiamo ora il metodo di Newton, approssimando in serie di Taylor al primo ordine il sistema nonlineare nell’intorno di d = 0. Otteniamo: ∇f (x) + ∇2 f (x)d + AT u = 0 (30) Ad = 0 (31) che, riscritto in forma matriciale, diventa: ! ∇2 f (x) AT A 0 d u ! = −∇f (x) 0 ! . L’aggiornamento iterativo di x `e xk+1 = xk + αk dk , dove αk `e ottenuto mediante ricerca unidimensionale. Se tale ricerca `e esatta, abbiamo: αk = argminα≥0 f (xk + αdk ). Si noti che, se xk `e ammissibile, anche xk + αk dk lo `e. Infatti, Axk+1 = Axk + Aαk dk = b, dato che Adk = 0 per costruzione. Documento preparato da S. Coniglio, L. Taccari, V. Danese 8 laboratorio 6 Prof. E. Amaldi Ottimizzazione e) Portiamo il problema originale in forma standard: (P ) min x1 − x2 s.t. − x1 + x2 + x3 = 1 x1 + x2 + x4 = 3 x1 , x2 , x3 , x4 ≥ 0. Il corrispondente problema con barriera logaritmica `e: (P (µ)) min x1 − x2 − µ 4 X ln xj j=1 s.t. − x1 + x2 + x3 = 1 x1 + x2 + x4 = 3. La matrice A `e: −1 1 1 0 1 1 0 1 ! . Il gradiente della funzione obiettivo `e: µ µ µ µ T 1 − , −1 − , − , − x1 x2 x3 x4 e l’hessiano `e: diag µ µ µ µ , , , x21 x22 x23 x24 . Il sistema da risolvere nel metodo di Newton `e quindi: µ x21 0 0 0 −1 1 0 µ x22 0 0 1 0 0 µ x23 0 1 0 0 0 0 µ x24 −1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 d1 µ x1 µ x2 −1 + d2 1+ µ d3 x3 = µ d4 x4 u1 0 u2 0 , Sia ǫ > 0, γ < 1, k = 0, µ0 > 0 e x(µ0 ) ammissibile per (P ), ossia tale che x(µ0 ) > 0 e Ax(µ0 ) = b. Lo schema iterativo del metodo `e il seguente: 1. Si risolve P (µk ) partendo dal punto x(µk ), ottenendo una soluzione x(µk )∗ . 2. Se nµk < ǫ, l’algoritmo termina con soluzione x∗ (µk ). 3. Si aggiornano µk+1 := γµk , x(µk+1 ) := x(µk )∗ e k := k + 1. 4. Si ripete dal passo 1. Documento preparato da S. Coniglio, L. Taccari, V. Danese 9 laboratorio 6 Ottimizzazione Prof. E. Amaldi Il file Matlab che implementa il metodo `e ipm.m % interior point method for LPs of the form min c’*x : A*x <= b function [xstar, vstar] = ipm(c, A, b, mu, x_init, gamma, epsilon) OPTIONS = []; [m, n] = size(A); %%bring to standard form s = b - A*x_init x = [ x_init ; s ] A = [A eye(m,m)] c = [c zeros(1,m)] %[m, n] = size(AA) grad = zeros(m+n, 1); H = zeros(m+n, m+n); d = zeros(m+n, 1); z = zeros(m, 1); xks = [x_init’] %% iterative method while n * mu >= epsilon for i = 1 : m+n grad(i) = c(i) - mu / x(i) H(i,i) = mu/x(i)^2; end H A N = [ H, A’; A, zeros(m, m) ] bN = [ -grad; zeros(m, 1) ] xN = N \ bN d = xN(1 : m+n) z = xN(m+n + 1 : m+n + m) alpha = fminbnd(@(alpha) c*(x + alpha*d) - mu*sum(log(x + alpha*d),1), ... 0, 1, OPTIONS); xstar = x + alpha * d; mu = gamma * mu; x = xstar; xks = [xks; x(1:n)’] end vstar = mu ./ xstar; polyhedron_print(A,b); hold on; plot(xks(:,1), xks(:,2), ’r.’); end % end of function Utilizziamo i parametri µ0 = 1, γ = 0.9, ǫ = 0.001. Si ricordi che c = (1, −1, 0, 0)T , b = (1, 3)T e x(µ0 ) = (1, 1)T . Documento preparato da S. Coniglio, L. Taccari, V. Danese 10 laboratorio 6 Prof. E. Amaldi Ottimizzazione Per eseguire il codice usiamo il comando: ipm([1 -1 ], [-1 1 ; 1 1], [1; 3], 1, [1; 1], 0.5, 0.01) ottenendo la soluzione x∗ = (0.58, 1.58, 0.00, 0.85)T , v = (0.00, 0.00, 0.50, 0.00)T . L’algoritmo traccia la successione di punti illustrata in Figura 1. Si noti che la soluzione trovata non `e su un vertice del poliedro. 2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 2 2.5 3 Figura 1: Punti x(µk ) individuati dall’algoritmo. f) Utilizziamo il modello AMPL ipm-simplex.mod # file: ipm-simplex.mod var x{1..4} >= 0; minimize f : 0.5*x[1] - x[2]; c1 : -x[1] + x[2] + x[3] = 1; c2 : x[1] + x[2] + x[4] = 3; e il file ipm-simplex.run # file: ipm-simplex.run model ipm-simplex.mod option solver cplex; solve; display x; display x.rc; Risolvendo con CPLEX, otteniamo la soluzione xs = (0, 1, 0, 2)T . L’istruzione display x.rc stampa i costi ridotti delle variabili nella soluzione ottima trovata. Il fatto che vi siano costi ridotti nulli indica che la soluzione ottima non sia unica (`e possibile effettuare un cambio di base, facendo pivot su una delle variabili a costo ridotto nullo, ottenendo un’altra soluzione di costo uguale). Analiticamente, questo `e conseguenza del fatto che il gradiente della funzione obiettivo `e perpendicolare alla retta −x1 + x2 = 1, corrispondente al primo vincolo. Il poliedro ha quindi una faccetta ottima, quella congiungente i punti del segmento tra R = (0, 1) e S = (1, 2). Tutti i punti nel segmento hanno lo stesso valore di funzione obiettivo, ma un diverso valore del termine di barriera. La soluzione individuata dal metodo dei punti interni, detta centro analitico, `e una soluzione che, tra quelle ottime, minimizza anche il termine di barriera. Documento preparato da S. Coniglio, L. Taccari, V. Danese 11 laboratorio 6 Prof. E. Amaldi Ottimizzazione T g) Risolviamo con i due metodi il problema modificato in cui c = ( 12 , −1, 0, 0) , ottenendo x∗ = (1.000, 2.000, 0.000, 0.000) v ∗ = (0.000, 0.000, 0.6750, 0.2250) xs = (1, 2, 0, 0) v s = (0, 0, 0.75, 0.25), ` evidente che la soluzione del metodo dei punti interni con un tolleranza ǫ = 10−5 . E converge allo stesso valore di quella del simplesso, come si pu`o osservare dal cammino centrale (central path)in Figura 2. Dato che il gradiente della funzione obiettivo non `e parallelo ad alcun vincolo, il problema ammette una singola soluzione ottima. 2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.5 1 1.5 2 2.5 3 Figura 2: Punti x(µk ) individuati dall’algoritmo applicato al problema modificato. (Facoltativo) Appendice 2: confronto con il metodo del simplesso Consideriamo l’algoritmo del simplesso primale applicato al problema (P ). Riprendiamo le KKT del problema (P ) e vediamo quali vengono violate prima che tale algoritmo termini: c − v + AT u = 0 (32) Ax = b (33) x≥0 (34) v≥0 (35) xj v j = 0 per j = 1, . . . , n. (36) Il metodo del simplesso propone a ogni iterazione k una soluzione ammissibile per il primale (P ), ossia tale da soddisfare Axk = b e xk ≥ 0. Sia Bk la sottomatrice di A formata dalle colonne associate alle variabili in base all’iterazione k, Nk la sottomatrice corrispondente alle variabili fuori base. Abbiamo dunque A = [Bk | Nk ] e xk = (xBk , xNk ) = (Bk −1 b, 0) Documento preparato da S. Coniglio, L. Taccari, V. Danese 12 laboratorio 6 Prof. E. Amaldi Ottimizzazione Ad ogni iterazione k, `e possibile associare alla soluzione corrente xk un vettore (uk , v k ) costruito in modo tale da soddisfare le condizioni (32) e (36). Sia xkj la j-esima componente del vettore xk . Per garantire il rispetto della complementariet`a, innanzitutto imponiamo vkj = 0 se xkj `e in base. Per garantire la condizione (32), imponiamo AT uk + v k = ck , ovvero Bk T u k + v B k = c B k N k T u k + v Nk = cNk . Poich`e abbiamo imposto v Bk = 0, otteniamo uk = (Bk T ) −1 c Bk v Nk = cNk − Nk T (Bk T ) −1 cB k L’unica condizione di KKT che viene violata prima che l’algoritmo termini `e quindi v Nk ≥ 0. In particolare, osserviamo che il vettore v Nk coincide esattamente con i costi ridotti delle variabili fuori base: l’algoritmo termina quando tutti i costi ridotti sono non negativi, ovvero quando v Nk ≥ 0. Documento preparato da S. Coniglio, L. Taccari, V. Danese 13
© Copyright 2024 ExpyDoc