Métodos Numéricos MEI - Logística e distribuição Programação quadrática sequencial 2004/2005
Métodos Numéricos - MEI 1 Motivação Considere-se o seguinte exemplo de um problema de minimização com restrições de igualdade. A função Lagrangeana é min x R 2100(x 2 x 2 1) 2 + (1 x 1 ) 2 x 1 s.a 3 + x 2 + 0.1 = 0 L(x, λ) = 100(x 2 x 2 1) 2 + (1 x 1 ) 2 λ ( x1 ) 3 + x 2 + 0.1
Métodos Numéricos - MEI 2 Condição de optimalidade de 1 a ordem Para calcular os pontos KT resolver-se o seguinte sistema (não linear) x1 L(x, λ) = 0 x2 L(x, λ) = 0 c(x) = 0 400x 1 (x 2 x 2 1) 2(1 x 1 ) λ 3 = 0 200(x 2 x 2 1) λ = 0 x 1 3 + x 2 + 0.1 = 0 No entanto quase sempre o sistema não linear é de difícil resolução. Neste caso tem de se calcular os zeros de uma função cúbica. Após determinar os pontos KT ainda é necessário classificá-los.
Métodos Numéricos - MEI 3 Formulação geral min x R nf(x) s.a c(x) = 0 em que f(x) : R n R e c(x) : R n R m. n é o número de variáveis, m é o número de restrições de igualdade.
Métodos Numéricos - MEI 4 Função Lagrangeana L(x, λ, π) = f(x) λ T c(x) em que λ são os vectores dos multiplicadores de Lagrange associados às restrições de igualdade.
Métodos Numéricos - MEI 5 Equação iterativa Usando as condições de optimalidade de primeira ordem temos que L(x, λ) = 0 e aplicando o método de Newton (na iteração k) vem que ( ) x 2 L(x k, λ k k ) λ k = L(x k, λ k ) em que x k e λ k constituem a direcção de procura (Newton).
Métodos Numéricos - MEI 6 O sistema linear tem a forma Equação iterativa (cont.) ( 2 xx L( k, λ k ) c(x k ) c(x k ) T 0 ) ( x k λ k ) = ( x L(x k, λ k ) c(x k ) ) O sistema representa as condições de optimalidade de primeira ordem do problema 1 min ( d R n 2 dt 2 xxl(x k, λ k ) ) d + d T ( x L(x k, λ k ) ) s.a ( c(x k ) ) T d + c(x k ) = 0 em que d = x k e os multiplicadores de Lagrange são λ k.
Métodos Numéricos - MEI 7 Globalização O método de Newton determina um zero do sistema não linear L(x, λ) = 0 e tem convergência local. Para obtermos convergência global pode usar-se uma de duas estratégias: Regiões de confiança (trust region - fora do programa). Procura unidimensional (line search). A técnica da procura unidimensional consiste no uso da direcção Newton, mas com um determinado passo.
Métodos Numéricos - MEI 8 Função mérito Uma das possíveis técnicas de globalização consiste no uso de uma função mérito (outra seria, por exemplo, a técnica dos filtros). M(x) = f(x) + ρc(x) T c(x) m = f(x) + ρ c i (x) 2 onde ρ é um parâmetro calculado por forma a que a direcção de procura seja de descida para a função mérito ( M(x k ) T x k < 0). i=1
Métodos Numéricos - MEI 9 Procura unidimensional { x k+1 = x k + α k x k λ k+1 = λ k + λ k α k é o maior valor da sequência {1, 1 2, 1 4, 1 8,... } que satisfaz a condição de Armijo (decréscimo significativo) com µ << 1 (µ = 0.0001). M(x k+1 ) M(x k ) + µα k M(x k ) T x k
Métodos Numéricos - MEI 10 Possíveis critérios de paragem Admissibilidade c(x k+1 ) 2 ɛ 1 Estacionaridade L(x k+1, λ k+1 ) 2 ɛ 2
Métodos Numéricos - MEI 11 Considerações Existem algumas variantes do método PQS, nomeadamente, o problema quadrático é uma aproximação quadrática da função objectivo (e não da Lagrangeana); usam diferentes funções mérito e eventualmente considerando funções mérito que usam os multiplicadores de Lagrange.
Métodos Numéricos - MEI 12 Algoritmo 1. Dadas aproximações iniciais para x e λ. Dado o parâmetro µ e valores para o critério de paragem. 2. Formar e resolver o sistema linear para obter a direcção de procura. 3. Calcular o tamanho do passo por forma a obter uma redução significativa da função mérito. 4. Calcular novas aproximações à solução. 5. Se o critério de paragem for falso então voltar a 2, senão parar.
Métodos Numéricos - MEI 13 10 Exemplo 8 6 4 2 0 2 4 6 8 10 10 8 6 4 2 0 2 4 6 8 10 x L(x, λ) = ( x1 λ 2 3 x 2 + λ ) [x1,x2]=meshgrid(-10:0.5:10,-10:0.5:10); contour(x1,x2,0.5*x1.^2+(x2.^2)/3,100); hold on; plot((-10:0.5:10)-1,-10:0.5:10); plot(0,0, +k ); plot(-0.4,0.6, *k ); 1 min x R 2 2 x2 1 + 1 3 x2 2 s.a x 1 x 2 + 1 = 0 ( ) 1 0 2 xxl(x, λ) = 0 2 3
Métodos Numéricos - MEI 14 Exemplo (direcção) Para x 0 = ( 0.3, 0.5) T e λ 0 = 0.3 temos 1 0 1 0 0 0.6666 1 0.0333 1 1 0 0.2 Resolvendo por EGPP temos x 0 = ( 0.1000, 0.1000) T e λ 0 = 0.1000. O método de PQS encontra a solução exacta de um problema quadrático numa única iteração.
Métodos Numéricos - MEI 15 Exemplo (função mérito - ρ = 10) M(x 0 ) = 1 2 ( 0.3)2 + 1 3 (0.5)2 + 10 ( 0.3 0.5 + 1) 2 = 0.1283 + 0.4 = 0.5283 Para x = x 0 + α x 0, com α = 1 vem M( x) = 1 2 ( 0.4)2 + 1 3 (0.6)2 + 10 ( 0.4 0.6 + 1) 2 = 0.2 + 0 = 0.2 Existindo um decréscimo simples (aumento da função objectivo compensado pela admissibilidade).
Métodos Numéricos - MEI 16 Exemplo (redução significativa - µ = 0.0001) ( ) ( ) ( 0.3) + 20( 0.3 0.5 + 1) M(x 0 3.7 ) = 2 = 3 (0.5) 20( 0.3 0.5 + 1) 3.6667 ( ) ( x 0 ) T M(x 0 3.7 ) = ( 0.1, 0.1) = 0.7367 < 0 (descida) 3.6667 α k = 1 aceite. M( x) M(x k ) + µα k M(x k ) T x k 0.2 0.5283 + 0.0001 1 ( 0.7367) 0.2 0.5282 (decréscimo significativo)
Métodos Numéricos - MEI 17 Exemplo (nova aproximação) A nova aproximação à solução é x 1 1 = x 0 1 + 1 x 0 1 = 0.3 0.1 = 0.4 x 1 2 = x 0 2 + 1 x 0 2 = 0.5 + 0.1 = 0.6 λ 1 = λ 0 + λ 0 = 0.3 0.1 = 0.4 x 1 é a solução do problema.
Métodos Numéricos - MEI 18 Programação quadrática sequencial quasi-newton A dificuldade do cálculo da Hessiana da Lagrangeana (existe software que fornece as derivadas) pode ser aliviado através do uso da versão quasi-newton. A versão quasi-newton calcula uma matriz H, aproximação à Hessiana da Lagrangeana (ou a sua inversa), através do uso de informação de primeira ordem (primeiras derivadas). As primeiras derivadas podem também ser estimadas por diferenças finitas.
Métodos Numéricos - MEI 19 MATLAB A função MATLAB para resolver problemas de minimização com restrições é a fmincon. A formulação do problema é min x R nf(x) s.a c(x) 0 c eq (x) = 0 Ax b A eq x = b eq lb x ub
Métodos Numéricos - MEI 20 Sintaxe fmincon [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(fun,x0,a,b,aeq,beq,lb,ub,nonlcon,options,p1,p2,...) x - Solução do problema. fval - Valor da função objectivo na solução. exitflag - Condição final (>0 convergiu, =0 número máximo de iterações atingido, <0 não convergiu). output - Informação acerca do algoritmo (número de iterações, número de cálculo da função objectivo, etc). lambda - Multiplicadores de Lagrange (restrições lineares, não lineares e de limites simples). grad - Gradiente da função objectivo na solução. hessian - Hessiana da função objectivo na solução.
Métodos Numéricos - MEI 21 fun - Função objectivo (ficheiro.m ou inline). x0 - Aproximação inicial. A - Matriz dos coeficientes das restrições lineares de desigualdades. b - Vector dos termos independentes das restrições lineares de desigualdade. Aeq - Matriz dos coeficientes das restrições lineares de igualdades. beq - Vector dos termos independentes das restrições lineares de igualdade. lb - Vector dos limites simples inferiores. ub - Vector dos limites simples superiores. nonlcon - Função que calcula as restrições não lineares de igualdade e desigualdade. options - Opções para o algoritmo. P.. - Argumentos extra (opcionais) para passar às funções (objectivo e das restrições não lineares).
Métodos Numéricos - MEI 22 Um exemplo com derivadas Considere-se o seguinte problema 1 min x R 2 2 ( ) (x 1 1) 2 + x 2 2 s.a x 1 + 1 4 x2 2 = 0 x 2 1 + 5x 2 0 x 1 + x 2 5 = 0 x 1 0 x 2 4
Métodos Numéricos - MEI 23 function [f,g,h]=myfun(x) f=0.5*((x(1)-1)^2+x(2)^2); Função objectivo - myfun.m if nargout > 1 % Devolver o gradiente g(1)=x(1)-1; g(2)=x(2); end if nargout > 2 % Devolver Hessiana h(1,1)=1; h(1,2)=0; h(2,1)=0; h(2,2)=1; end
Métodos Numéricos - MEI 24 function [c,ceq,gc,gceq]=mycon(x) % Apenas restrições não lineares Restrições - mycon.m c(1)=x(1)^2-5*x(2); % restrição de desigualdade <= 0 ceq(1)=-x(1)+0.25*x(2)^2; % restrição de igualdade if nargout > 2 GC(1,1)=2*x(1); % <= 0 GC(2,1)=-5; end GCeq(1,1)=-1; GCeq(2,1)=0.5*x(2);
Métodos Numéricos - MEI 25 Resolução com derivadas >> opt=optimset( GradObj, on, Jacobian, on ); >> [x,f,e,o,l,g,h]=fmincon( myfun,[1.5-1.2],[],[],[1 1],[5],... [0 -Inf],[Inf 4], mycon,opt); Warning: Large-scale (trust region) method does not currently solve this type of problem, switching to medium-scale (line search). > In C:\MATLAB6p1\toolbox\optim\fmincon.m at line 213 Optimization terminated successfully: Search direction less than 2*options.TolX and maximum constraint violation is less than options.tolcon Active Constraints: 1 2
Métodos Numéricos - MEI 26 >> x x = 2.1010 2.8990 >> f f = 4.8082 >> e e = 1 >> o o = iterations: 5 funccount: 23 stepsize: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: [] cgiterations: [] >> l l = lower: [2x1 double] upper: [2x1 double] eqlin: 1.8350 eqnonlin: 0.7340 ineqlin: [0x1 double] ineqnonlin: 0 >> g g = 1.1010 2.8990 >> h h = 0.6152-0.3849-0.3849 0.2479
Métodos Numéricos - MEI 27 Resolução sem derivadas >> opt=optimset( GradObj, off, Jacobian, off ); >> [x,f,e,o,l,g,h]=fmincon( myfun,[1.5-1.2],[],[],[1 1],[5],... [0 -Inf],[Inf 4], mycon,opt); Warning: Large-scale (trust region) method does not currently solve this type of problem, switching to medium-scale (line search). > In C:\MATLAB6p1\toolbox\optim\fmincon.m at line 213 Optimization terminated successfully: Search direction less than 2*options.TolX and maximum constraint violation is less than options.tolcon Active Constraints: 1 2
Métodos Numéricos - MEI 28 >> x x = 2.1010 2.8990 >> f f = 4.8082 >> e e = 1 >> o o = iterations: 5 funccount: 23 stepsize: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: [] cgiterations: [] >> l l = lower: [2x1 double] upper: [2x1 double] eqlin: 1.8350 eqnonlin: 0.7340 ineqlin: [0x1 double] ineqnonlin: 0 >> g g = 1.1010 2.8990 >> h h = 0.6152-0.3851-0.3851 0.2482
Métodos Numéricos - MEI 29 Instalação do solver. Excel
Métodos Numéricos - MEI 30 Introdução do problema
Métodos Numéricos - MEI 31 Adicionar restrições
Métodos Numéricos - MEI 32 Opções
Métodos Numéricos - MEI 33 Resolução do problema
Métodos Numéricos - MEI 34 Relatório com resposta
Métodos Numéricos - MEI 35 Relatório com sensibilidade
Métodos Numéricos - MEI 36 Relatório com limites