Bioinformática Avançada e Biologia de Sistemas Optimização A. Ismael F. Vaz Departamento de Produção e Sistemas Escola de Engenharia Universidade do Minho aivaz@dps.uminho.pt Mestrado em Bioinformática Ano lectivo 2007/2008 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 1 / 190
Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 2 / 190
Introdução Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 3 / 190
Introdução Apresentação - Docente Aulas teóricas e teórico-práticas A. Ismael F. Vaz - aivaz@dps.uminho.pt www.norg.uminho.pt/aivaz Horário de atendimento Marcação por email. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 4 / 190
Introdução Apresentação - Disciplina Página da disciplina; www.norg.uminho.pt/aivaz Três fichas TPs para resolver ao longo desta parte do módulo (Nota mínima de 8); A classificação final do módulo é: Ficha TP1+Ficha TP2+Ficha TP3 3. A classificação na Unidade Curricular (UC) tem uma fórmula de cálculo própria. É obrigatória a presença em 2/3 das aulas efectivas (1/3 de faltas atenção às justificações/estatutos). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 5 / 190
Introdução Material necessário e de apoio Calculadora científica; Folhas das fichas TPs; Papel e caneta; Livro de Computação Numérica; www.norg.uminho.pt/emgpf Sebenta de Optimização Não Linear; www.norg.uminho.pt/emgpf Software MATLAB + toolbox de Optimização (+ AMPL + Solver); Fichas TPs e acetatos disponíveis na página; www.norg.uminho.pt/aivaz A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 6 / 190
Introdução Motivação da disciplina Optimização A optimização é uma área da matemática aplicada com inúmeras aplicações no nosso dia a dia. Exemplo de aplicações Poluição do ar (determinação de políticas óptimas), Robótica (determinação de trajectórias óptimas), Processos de fermentação semi-contínua (etanol, cerveja!!), etc... e astrofísica. Engenharia Está presente em todas as áreas da engenharia (sem excepção)... A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 7 / 190
Introdução Controlo óptimo - Um exemplo Problema de optimização do processo semi-contínuo de produção de Etanol. O problema de optimização é: (t 0 = 0 e t f = 61.2 dias) max u(t) J(t f ) x 3 (t f )x 4 (t f ) s.a dx 1 = g 1 x 1 u x 1 dt x 4 dx 2 = 10g 1 x 1 + u 150 x 2 dt x 4 dx 3 = g 2 x 1 u x 3 dt x 4 dx 4 = u dt 0 x 4 (t f ) 200 0 u(t) 12 t [t 0, t f ] com ( ) ( ) 0.408 x 2 g 1 = 1 + x 3 /16 0.22 + x 2 ( ) ( ) 1 x 2 g 2 = 1 + x 3 /71.5 0.44 + x 2 onde x 1, x 2 e x 3 são as concentrações da massa celular, substrato e produto (g/l), e x 4 é o volume (L). As condições iniciais são: x(t 0 ) = (1, 150, 0, 10) T. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 8 / 190
Introdução Abordagem para a resolução Grande exigência em termos numéricos; Grande exigência em termos de programação; Solução da equação diferencial com o CVODE (software em C); Problemas codificados em AMPL (linguagem de modelação); Algoritmo para optimização sem derivadas; A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 9 / 190
Introdução Programa detalhado Aula Matéria 1 Grafos (Cláudio Alves) 2 Optimização Combinatória (Cláudio Alves) 3 Ficha de avaliação. Introdução ao MATLAB. Definição de vectores e matrizes. Codificação de funções matemáticas e operadores. Uso de ficheiros M (M-Files). 4 Introdução à optimização não linear (sem restrições). Definições e condições de optimalidade. 5 Método de Newton e quasi-newton. Modelação de casos em MA- TLAB (função fminsearch e fminunc). 6 Ficha de Avaliação. Introdução à optimização não linear com restrições. Tipos de problemas e suas características. Condições de optimalidade. Tratamento de restrições lineares e não lineares. 7 Modelação de casos e uso de MATLAB (função fmincon). 8 Modelação de casos e uso de MATLAB (função fmincon). 9 Revisões. 10 Revisões e Ficha de avaliação. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 10 / 190
MATLAB Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 11 / 190
MATLAB O que é o MATLAB? MATLAB Começou como sendo um programa iterativo para cálculos com matrizes e transformou-se numa linguagem matemática de alto nível. O seu desenvolvimento permite agora, por exemplo, a resolução de equações diferenciais e o desenho de gráficos a duas e três dimensões. Possuindo o MATLAB uma linguagem de programação poder-se-ia dizer que qualquer algoritmo pode ser implementado em MATLAB. O que aprender? Neste caso apenas iremos introduzir os comandos básicos e a criação de scripts necessários aos capítulos seguintes. O MATLAB possui uma toolbox (entre outras) que fornece um conjunto de algoritmos para optimização. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 12 / 190
MATLAB Só existe o MATLAB? Ferramentas similares Outros programas similares são o Mathematica e o Maple Mathematica Mais vocacionado para manipulação simbólica, embora o MATLAB também já incorpore algumas destas funcionalidades. Maple Exemplo Resolver a equação diferencial com condições iniciais d 2 y dx 2 (x) 3y(x) = x, y(0) = 1 dy dx (0) = 2 dsolve( diff(y(x),x,x) - 3*y(x) = x, y(0)=1, D(y)(0)=2, y(x) ); A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 13 / 190
MATLAB Ambiente MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 14 / 190
MATLAB Operações básicas Aritméticas >> 2+3*2-1.5*2^2 ans = 2 ans é uma variável built-in que é criada sempre que um resultado não é atribuído. Variáveis built-in constantes >> pi ans = 3.1416 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 15 / 190
MATLAB Operações básicas Funções >> a=2*sin(pi)^2+3*exp(1)+sqrt(2)+cosh(2) a = 13.3313 Ajuda >> help acos ACOS Inverse cosine. ACOS(X) is the arccosine of the elements of X. Complex results are obtained if ABS(x) > 1.0 for some element.... See also cos, acosd. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 16 / 190
MATLAB Operações básicas Formatos Precisão O MATLAB usa sempre aritmética com precisão de 15 algarismos significativos, no entanto, por defeito apenas mostra 4. >> format long >> a a = 13.33125473883387 >> format short >> a a = 13.3313 >> format short e >> a a = 1.3331e+001 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 17 / 190
MATLAB Operações básicas com escalares O ; Os comandos que terminam com o ; não são impressos no ecrã. >> a=log(2)+log10(2)+log2(2); >> a a = 1.9942 >> a=log(2)+log10(2)+log2(2) a = 1.9942 Útil quando se pretende efectuar vários comandos seguidos (scripts) e não se pretende ver determinados resultados. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 18 / 190
MATLAB Operações básicas com vectores e matrizes Vectores linha >> a=[1 2 3] a = 1 2 3 >> a=[1,2,3] a = 1 2 3 O(A) transposto(a) >> a=[1;2;3] a = 1 2 3 Vectores coluna >> a=[1;2;3] a = 1 2 3 O(A) transposto(a) >> a=[1,2,3] a = 1 2 3 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 19 / 190
MATLAB Operações básicas com vectores e matrizes Operações com vectores Funções >> a a = 1 2 3 >> b=sin(a) b = 0.8415 0.9093 0.1411 Operações com vectores >> a+b ans = 1.8415 2.9093 3.1411 >> a^2??? Error using ==> mpower Matrix must be square. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 20 / 190
MATLAB Operações básicas com vectores e matrizes Operações elemento a elemento >> a.^2 ans = 1 4 9 >> (a+b).^2 ans = 3.3910 8.4640 9.8666 >> a.*b ans = 0.8415 1.8186 0.4234 Operações com vectores >> 2*a+b.^2 ans = 2.7081 4.8268 6.0199 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 21 / 190
MATLAB Operações básicas com vectores e matrizes Operações elemento a elemento >> a*b??? Error using ==> mtimes Inner matrix dimensions must agree. >> a*b ans = 3.0834 Operações com vectores >> a *b ans = 0.8415 0.9093 0.1411 1.6829 1.8186 0.2822 2.5244 2.7279 0.4234 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 22 / 190
MATLAB Operações básicas com vectores e matrizes Matriz >> A=[ 1 2 3; 4 5 6] A = 1 2 3 4 5 6 Matriz 2 3. O MATLAB é case sensitive, i.e., A é diferente de a. Matriz transposta >> A=[ 1 2 3; 4 5 6] A = 1 4 2 5 3 6 Matriz 3 2. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 23 / 190
MATLAB Operações básicas com vectores e matrizes Definição >> A+B ans = 3 5 5 7 7 9 >> A +B ans = 3 5 7 5 7 9 >> (A+B) ans = 3 5 7 5 7 9 Soma >> A=[2 3; 3 4; 4 5] A = 2 3 3 4 4 5 >> B=[1 2; 2 3; 3 4] B = 1 2 2 3 3 4 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 24 / 190
MATLAB Operações básicas com vectores e matrizes Produto >> A*B??? Error using ==> mtimes Inner matrix dimensions... >> A*B ans = 8 13 18 11 18 25 14 23 32 O número de colunas da primeira matriz tem de ser igual ao número de linhas da segunda matriz. Produto elemento a elemento >> A.*B ans = 2 6 6 12 12 20 >> A^2??? Error using ==> mpower Matrix must be square. >> A.^2 ans = 4 9 9 16 16 25 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 25 / 190
MATLAB Sistemas lineares Um sistema linear pode ser representado na forma de matricial como Ax = b, em que A é uma matriz (dos coeficientes), x é a solução do sistemas e b é um vector (dos termos independentes). Sistema x 1 +2x 2 +3x 3 = 1 4x 1 +5x 2 +6x 3 = 2 7x 1 +8x 2 +9x 3 = 3 i.e. A = 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 x = x 1 x 2 x 3 x 1 x 2 x 3 = e b = 1 2 3 1 2 3 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 26 / 190
MATLAB Resolução de Sistemas lineares O exemplo anterior >> A=[1 2 3; 4 5 6; 7 8 9]; b=[1 2 3] ; >> x=a\b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.203039e-018. x = -0.3333 0.6667 0 >> A*x-b ans = 1.0e-015 * 0-0.2220 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 27 / 190
MATLAB Resolução de Sistemas lineares Curiosidades >> det(a) ans = 0 >> [L,U]=lu(A) L = 0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 0 0 U = 7.0000 8.0000 9.0000 0 0.8571 1.7143 0 0-0.0000 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 28 / 190
MATLAB Resolução de Sistemas lineares Não fazer Porquê? >> x=inv(a)*b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.203039e-018. x = 0 0 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 29 / 190
MATLAB Acesso a elementos de vectores e matrizes Acesso a vectores >> b=sin(b); >> b(1) ans = 0.8415 >> b(2:3) ans = 0.9093 0.1411 >> b(:) ans = 0.8415 0.9093 0.1411 Acesso a matrizes >> A(2,2) ans = 5 >> A(2,:) ans = 4 5 6 >> A(:,1) ans = 1 4 7 >> A(1:2,2:3) ans = 2 3 5 6 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 30 / 190
MATLAB Matrizes e vectores especiais Zeros e uns >> zeros(2,3) ans = 0 0 0 0 0 0 >> ones(2,1) ans = 1 1 >> t=1:1:3 t = 1 2 3 >> t=1.1:0.1:1.2 t = 1.1000 1.2000 Identidade >> eye(3) ans = 1 0 0 0 1 0 0 0 1 >> rand(3,2) ans = 0.6068 0.7621 0.4860 0.4565 0.8913 0.0185 >> randn(2,2) ans = 1.1892 0.3273-0.0376 0.1746 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 31 / 190
MATLAB Modificação de elementos em vectores e matrizes Atribuições >> A=ones(3,3); >> A(1:2,1)=3 A = 3 1 1 3 1 1 1 1 1 >> A(3,1:2:3)=4 A = 3 1 1 3 1 1 4 1 4 Troca de valores >> A([1 2],1)=2*A([1 2],1) A = 6 1 1 6 1 1 4 1 4 >> A([1 3],1)=A([3 1],1) A = 4 1 1 6 1 1 6 1 4 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 32 / 190
MATLAB find >> v=[0.1 0.4 0.12 0.13] v = 0.1000 0.4000 0.1200 0.1300 >> i=find(v>0.12) i = 2 4 >> a=v(i) a = 0.4000 0.1300 >> i=find(v==0.1) i = 1 >> i=find(v~=0.1) i = 2 3 4 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 33 / 190 Operadores lógicos e o find
MATLAB Operadores lógicos e o find Operadores lógicos Símbolo Representa Símbolo Representa > Maior que >= Maior ou igual que < Menor que <= Menor ou igual que = Diferente de == Igual a Negação & E Ou A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 34 / 190
MATLAB Funções básicas Funções Função max min sum mean stdev Descrição Elemento máximo de um vector Elemento mínimo de um vector Soma de todos os elementos Média aritmética Desvio padrão A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 35 / 190
MATLAB Mensagens e display de variáveis Ficheiros >> x = 0:.1:1; y = [x; exp(x)]; >> fid = fopen( exp.txt, w ) fid = 3 >> fprintf(fid, %6.2f %12.8f\n,y); >> fclose(fid); Conteúdo de exp.txt 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881... 0.90 2.45960311 1.00 2.71828183 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 36 / 190
MATLAB Mensagens e display de variáveis Terminal >> x=1;y=2; >> fprintf( Duas variáveis: %5.1f %6.2f\n,x,y); Duas variáveis: 1.0 2.00 >> x=[1 2];y=[3 4]; >> fprintf( Dois vectores: %5.1f %6.2f\n,x,y); Dois vectores: 1.0 2.00 Dois vectores: 3.0 4.00 Terminal >> x x = 1 2 >> disp(x) 1 2 Terminal >> x=1.23; >> s=sprintf( Uma string %4.2f,x) s = Uma string 1.23 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 37 / 190
MATLAB Scripts Definição Um script trata-se da execução de uma série de comandos. Os scripts são guardados em ficheiros de extensão.m e por isso designámos por M-Files (ficheiros M). Ficheiro bioinf.m x = 0:.1:1; y = exp(x); fprintf( %4.2f %8.4f\n,x,y); Execução >> bioinf 0.00 0.1000 0.20 0.3000... 2.01 2.2255 2.46 2.7183 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 38 / 190
MATLAB Desenho de gráficos 2D Plot >> x=0:0.05:4*pi; >> plot(x,sin(x).^2+2*exp(x/(4*pi))); >> xlabel( x ); >> ylabel( sin^2(x)+2e^{x/(4\pi)} ); >> title( O meu primeiro plot ); >> axis([0 4*pi 1 7]); A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 39 / 190
MATLAB Desenho de gráficos 2D 7 O meu primeiro plot 6 5 sin 2 (x)+2e x/(4π) 4 3 2 1 0 2 4 6 8 10 12 x A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 40 / 190
MATLAB Desenho de gráficos 2D Sobreposição >> x=0:0.05:4*pi; >> plot(x,sin(x).^2+2*exp(x/(4*pi))); >> hold on; >> plot(x,-sin(x).^2+2*exp(x/(4*pi))); >> hold off; >> x=0:0.05:4*pi; >> y1=sin(x).^2+2*exp(x/(4*pi)); >> y2=-sin(x).^2+2*exp(x/(4*pi)); >> plot(x,y1,x,y2); Dois gráficos quase idênticos (atenção às cores). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 41 / 190
MATLAB Desenho de gráficos 2D 6 5.5 5 4.5 4 3.5 3 2.5 2 1.5 1 0 2 4 6 8 10 12 14 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 42 / 190
MATLAB Desenho de gráficos 2D Usando marcas e tipos de linhas >> x=0:0.05:4*pi; >> y=0:1:4*pi; >> plot(x,sin(x).^2+2*exp(x/(4*pi)), --r,1,3, ok,... 3,4, *g,y,-sin(y).^2+2*exp(y/(4*pi)), +k ); A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 43 / 190
MATLAB Desenho de gráficos 2D 6 5.5 5 4.5 4 3.5 3 2.5 2 1.5 1 0 2 4 6 8 10 12 14 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 44 / 190
MATLAB Desenho de gráficos 3D Plot3 >> t = 0:pi/50:10*pi; >> plot3(sin(t),cos(t),t); >> [x,y]=meshgrid(0:0.1:4*pi,0:0.1:pi); >> plot3(x,y,sin(x).*cos(y)); >> surf(x,y,sin(x).*cos(y)); A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 45 / 190
MATLAB Desenho de gráficos 3D 40 30 20 10 0 1 0.5 0 0.5 1 1 0.5 0 0.5 1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 46 / 190
MATLAB Desenho de gráficos 3D 1 0.5 0 0.5 1 4 3 2 1 0 0 2 4 6 8 10 12 14 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 47 / 190
MATLAB Desenho de gráficos 3D 1 0.5 0 0.5 1 4 3 2 1 0 0 2 4 6 8 10 12 14 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 48 / 190
MATLAB Desenho de curvas de nível Contour >> [x,y]=meshgrid(0:0.1:4*pi,0:0.1:pi); >> contour(x,y,sin(x).*cos(y)); >> contour(x,y,sin(x).*cos(y),50); A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 49 / 190
MATLAB Desenho de curvas de nível 3 3 2.5 2.5 2 2 1.5 1.5 1 1 0.5 0.5 0 0 2 4 6 8 10 12 0 0 2 4 6 8 10 12 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 50 / 190
MATLAB Funções MATLAB As funções em MATLAB são escritas em ficheiros M. O nome do ficheiro deve corresponder ao nome da função Execução >> simples(2) ans = 4 >> a=simples([1 2]) a = 1 4 >> b=simples([1 2; 2 3]) b = 1 4 4 9 simples.m function f = simples(x) % O quadrado de x %.^ para... f=x.^2; Help >> help simples O quadrado de x A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 51 / 190
MATLAB Funções MATLAB O if myfun.m function [a, b] = myfun(x,y) % % Argumentos de entrada: % x - O meu primeiro argumento % y - O meu segundo argumento % % Argumentos de saída: % a - O meu primeiro argumento de saída % b - O meu segundo argumento de saída % Isto já não aparece no Help A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 52 / 190
MATLAB Funções MATLAB O if myfun.m Cont. % Verificar os argumentos de entrada [d1,d2]=size(x); if d2 ~= 1 error( Só aceito vectores coluna ); else if nargin < 2 y=ones(d1,1); % Valor por defeito para o y else [d3,d4]=size(y); if d4 ~= 1 error( Só aceito vectores coluna ); end if d3 ~= d1 error( Dimensões de x e y não são iguais ); end end end A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 53 / 190
MATLAB Funções MATLAB O if myfun.m Cont. if nargout < 1 error( Pelo menos um argumento de saída ); end a=2*x+y; if nargout > 1 b=3*x+2*y; end A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 54 / 190
MATLAB Funções MATLAB O if Execução >> myfun([1 2])??? Error using ==> myfun Só aceito vectores coluna >> myfun([1 2] )??? Error using ==> myfun Pelo menos um argumento de saída >> f=myfun([1 2] ) f = 3 5 >> f=myfun([1 2],[1 2 3])??? Error using ==> myfun Só aceito vectores coluna A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 55 / 190
MATLAB Funções MATLAB O if Execução >> f=myfun([1 2],[1 2 3] )??? Error using ==> myfun Dimensões de x e y não são iguais >> [f1,f2]=myfun([1 2],[1 2] ) f1 = 3 6 f2 = 5 10 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 56 / 190
MATLAB Funções MATLAB O for Execução >> for i=1:2 fprintf( %d --> %d\n,i,2*i); end 1 --> 2 2 --> 4 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 57 / 190
MATLAB Funções MATLAB O inline Execução >> g=inline( sin(x) ); >> g(1) ans = 0.8415 >> g=inline( sin(x)*a, x, a ); >> g(1,2) ans = 1.6829 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 58 / 190
MATLAB Zeros de funções A função fzero >> g=inline( cos(x) ); >> fzero(g,1.1) ans = 1.5708 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 59 / 190
Optimização Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 60 / 190
Optimização Classificação Os problemas de optimização podem ser classificados de acordo com: as funções envolvidas (na função objectivo e nas restrições) o tipo de variáveis usadas (inteiras, binárias, discretas, contínuas, etc...) o tipo de restrições consideradas (igualdade, desigualdade, infinitas, complementaridade, etc...) o tipo de solução que se pretende obter (local ou global) diferenciabilidade das funções envolvidas (optimização com ou sem derivadas) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 61 / 190
Optimização Importância da classificação Não existe software que resolva todos os tipos de problemas. O tipo de problema que se pretende resolver condiciona o software (solver) a usar. Um solver para optimização contínua não pode ser usado para resolver problemas com variáveis discretas. Um solver que use derivadas (ou as estime), aplicado a um problema que envolva funções não diferenciáveis, pode convergir (se convergir!!!) para um ponto de descontinuidade da derivada, apresentando-a como solução. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 62 / 190
Optimização Tipo de problemas Programação linear min(max) c T x(+d) s.a Ax = b Ex ( )f Programação quadrática min x T Qx + c T x s.a Ax = b Ex f A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 63 / 190
Optimização Tipo de problemas Optimização não linear min f(x) s.a c(x) = 0 h(x) 0 Desde que na definição do problema seja usada uma função não linear. f(x), c(x) e h(x) podem ser funções lineares. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 64 / 190
Optimização Classificação das variáveis Booleanas ou binárias (0 ou 1) Inteiras (Por exemplo 1,2,3,4,5,6,... ) Discretas (Por exemplo preto, azul, verde, vermelho, etc...) Contínuas (Por exemplo x [0, 2]) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 65 / 190
Optimização Classificação quanto à solução pretendida Óptimo local (determinação de um minimizante local ou relativo) Óptimo global (determinação de uma minimizante global ou absoluto) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 66 / 190
Optimização Classificação quanto à estrutura Programação semi-definida (envolve matrizes semi-definidas) Programação semi-infinita (uma função objectivo sujeita a uma infinidade de restrições) Programação estocástica ou robusta (envolve parâmetros incertos, conhecendo-se um intervalo de variação) Problemas de complementaridade (restrições em que se uma for diferente de zero então a outra é necessariamente zero) Problemas de controlo óptimo (determinar a melhor forma de controlar um determinado sistema - frequentemente modelado com equações diferenciais) etc... A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 67 / 190
Optimização Classificação de algoritmos Estocásticos (Procura da solução de forma aleatória, mas controlada) Algoritmos genéticos Colónias de formigas Colónias de partículas etc... Grande parte das vezes sem convergência garantida. Usados para a procura global (quando funcionam!!!). Determinísticos Dados os parâmetros iniciais (aproximação inicial e parâmetros do algoritmo) executa sempre da mesma forma. Grande parte das vezes com convergência garantida para um óptimo local. Híbridos Uma mistura das duas abordagens A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 68 / 190
Optimização não linear sem restrições Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 69 / 190
Optimização não linear sem restrições Forma geral do problema A formulação matemática de um problema de optimização, na sua forma mais geral, é s.a min f(x) x R n c i (x) = 0, i = 1,..., m c j (x) 0, j = m + 1,..., t onde f(x) é a função objectivo, c i (x) = 0 são as restrições de igualdade e c j (x) são as restrições de desigualdade. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 70 / 190
Optimização não linear sem restrições Equivalência entre problemas O problema de optimização (maximização) s.a max g(x) x R n c i (x) = 0, i = 1,..., m c j (x) 0, j = m + 1,..., t é equivalente ao problema de optimização (minimização) s.a min f(x) g(x) x Rn c i (x) = 0, i = 1,..., m c j (x) c j (x) 0, j = m + 1,..., t A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 71 / 190
Optimização não linear sem restrições Interpretação geométrica 6 4 2 f(x*) f(x), f(x) 0 x* 2 f(x*) 4 6 1.5 1 0.5 0 0.5 1 1.5 2 2.5 x f(x) = (x 0.5) 2 + 2 g(x) = f(x) = (x 0.5) 2 2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 72 / 190
Optimização não linear sem restrições Exemplo Pretende-se determinar o volume máximo de uma lata (cilindro), fechada nas duas extremidades, sabendo que a quantidade de chapa a usar é de 1000 cm 2. Sendo r o raio da tampa e h a altura da lata, uma possível formulação do problema de optimização é max (r,h) R πr2 h 2 s.a 2πr 2 + 2πrh = 1000 que pode ser transformado no problema de minimização min x R 2 πx2 1x 2 s.a 2πx 2 1 + 2πx 1 x 2 = 1000 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 73 / 190
Optimização não linear sem restrições Optimização sem restrições Apenas iremos considerar problemas de minimização e sem restrições. A sua formulação é pois min x R n f(x). Classificação dos problemas (mais usuais) Problemas unidimensionais (n = 1, ou seja, x R); Problemas multidimensionais (n > 1, ou seja, x = (x 1,..., x n ) T R n ); Problemas de programação linear (f(x) e c(x) são funções lineares, i.e., f(x) = Ax, c(x) = Ax b); Problemas de programação quadrática (f(x) é uma função quadrática, i.e., f(x) = 1 2 xt Gx + d T x, e c(x) são funções lineares); Problemas com limites simples (restrições nas variáveis do tipo a l x l b l, l = 1,..., n); Problemas de programação não linear (pelo menos uma das funções envolvidas, f(x), c(x) é não linear). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 74 / 190
Optimização não linear sem restrições Classificação de mínimos x é minimizante local forte se δ tal que f(x ) < f( x), x V δ (x ); minimizante local fraco se δ tal que f(x ) f( x), x V δ (x ); minimizante global forte se f(x ) < f( x), x R n ; minimizante global fraco se f(x ) f( x), x R n ; Onde V δ (x ) é uma vizinhança de x de raio δ ( x x < δ). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 75 / 190
Optimização não linear sem restrições Mínimo global Mínimo global forte Função ilimitada Mínimo global fraco f(x ) < f( x) x R f(x ) f( x) x R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 76 / 190
Optimização não linear sem restrições Mínimo local δ : f(x ) < f( x), x V δ (x ). δ : f(x ) f( x), x V δ (x ). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 77 / 190
Optimização não linear sem restrições Conceitos Máximo e maximizante; Mínimo e minimizante; Óptimo local ou global; Convergência local e global de algoritmos. Um algoritmo diz-se global se determina um minimizante (maximizante) dada uma qualquer aproximação inicial. Um algoritmo diz-se local se determina um minimizante partindo apenas de uma aproximação inicial suficientemente perto do minimizante. (Não confundir com a determinação de mínimos locais ou globais). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 78 / 190
Optimização não linear sem restrições Condições de optimalidade Condições necessárias para a existência de um mínimo f (x ) = 0; f (x ) 0. Condições suficientes para a existência de um mínimo f (x ) = 0; f (x ) > 0. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 79 / 190
Optimização não linear sem restrições Exemplos f(x) = (x 1.5) 2 f(x) = sin(x) f (1.5) = 2 (1.5 1.5) = 0 f (1.5) = 2 > 0 f ( π 2 ) = cos( π 2 ) = 0 f ( π 2 ) = sin( π 2 ) = 1 < 0 0.25 1.02 1 0.2 0.98 0.96 0.15 0.94 0.1 0.92 0.9 0.05 0.88 0.86 0 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 0.84 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2 Pelas condições necessária e suficiente A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 80 / 190
Optimização não linear sem restrições Exemplos f(x) = x 4 f(x) = x 3 f (0) = 3 (0) 3 = 0 f (0) = 3 (0) 2 = 0 f (0) = 12 (0) 2 = 0 f (0) = 6 (0) = 0 1 1 0.9 0.8 0.8 0.6 0.7 0.4 0.6 0.2 0.5 0 0.4 0.2 0.3 0.4 0.2 0.6 0.1 0.8 0 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 1 1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 1 Verifica-se a condição necessária, mas não a condição suficiente A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 81 / 190
Optimização não linear sem restrições Alguma notação Gradiente de f(x) : R n R, x = (x 1,..., x n ) T, vector de dimensão n f x 1 f ( f(x) = g(x) = x 2 f... =, f,..., f ) T x 1 x 2 x n f x n Matriz Hessiana, matriz de dimensão n n 2 f(x) = G(x) = 2 f x 2 1... 2 f x n x 1...... 2 f x 1 x n... 2 f x 2 n A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 82 / 190
Optimização não linear sem restrições Condições de optimalidade Condições necessárias para a existência de um mínimo g(x ) = 0 (sistema não linear); G(x ) 0 (semi-definida positiva). Condições suficientes para a existência de um mínimo g(x ) = 0 (sistema não linear); G(x ) 0 (definida positiva). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 83 / 190
Optimização não linear sem restrições Exemplo Pretende-se determinar todos os pontos óptimos do seguinte problema de optimização min x R 2x2 1 + x 3 2 + 2x 1 x 2 f(x) Da condição de necessária e suficiente de primeira ordem temos que g(x) = (2x 1 + 2x 2, 3x 2 2 + 2x 1 ) T = (0, 0) T, ou seja, { { 2x1 + 2x 2 = 0 3x 2 2 + 2x 1 = 0 x 1 = x 2 3x 2 2 2x 2 = 0 x 1 = x 2 x 2 = 0 x 2 = 2 3 Os pontos x = (0, 0) T e ˆx = ( 2 3, 2 3 )T são pontos estacionários de f(x). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 84 / 190
Optimização não linear sem restrições Cont. Para verificar as condições de segunda ordem temos que estudar G( x) e G(ˆx). ( 2 2 G(x) = 2 6x 2 ( 2 2 det( 2 ) = 2, det 2 0 ) ( 2 2, G( x) = 2 0 ) ) ( 2 2, G(ˆx) = 2 4 ( 2 2 = 4, det 2 4 ) = 4 e temos que G( x) é indefinida ( x é ponto sela - descanso) e G(ˆx) é definida positiva (ˆx é mínimo local forte). ) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 85 / 190
Optimização não linear sem restrições Representação gráfica/curvas de nível 1.5 15 10 1 f(x) 5 0 5 0.5 0 10 2 0.5 1 0 x2 1 2 1.5 1 0.5 x1 0 0.5 1 1.5 1 1.5 1.5 1 0.5 0 0.5 1 1.5 f(x) = x 2 1 + x3 2 + 2x 1x 2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 86 / 190
Optimização não linear sem restrições Motivação para os métodos numéricos Na determinação analítica dos pontos estacionários é necessário resolver um sistema não linear, que é quase sempre de difícil resolução. Exemplo Considere-se a função f(x) = x 1 e x 2 2x 1 x 2. Os pontos estacionários de f(x) obtêm-se através da resolução do sistema não linear { e x 2 2x 2 = 0 x 1 e x 2 2x 1 = 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 87 / 190
Método de Segurança de Newton Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 88 / 190
Método de Segurança de Newton Forma geral do problema A formulação matemática de um problema de optimização multidimensional, sem restrições é min f(x), x R n com f(x) : R n R (n > 1) duas vezes diferenciável. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 89 / 190
Método de Segurança de Newton Notação Gradiente de f(x) : R n R, x = (x 1,..., x n ) T, vector de dimensão n f x 1 f ( f(x) = g(x) = x 2 f... =, f,..., f ) T x 1 x 2 x n f x n Matriz Hessiana, matriz de dimensão n n 2 f(x) = G(x) = 2 f x 2 1... 2 f x n x 1...... 2 f x 1 x n... 2 f x 2 n A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 90 / 190
Método de Segurança de Newton Alguns conceitos O vector gradiente aponta no sentido de subida da função. 100 g(x) g(x) 0 10 100 200 10 5 0 5 10 10 5 0 5 f(x) = x 2 1 x 2 2 2x 1 x 2 + 10 g(x) = ( 2x 1 2x 2, 2x 2 2x 1 ) T g(1, 1) = ( 4, 4) T A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 91 / 190
Método de Segurança de Newton Alguns conceitos - Cont. A matrix Hessiana indica a concavidade (convexa ou côncava). 50 0 50 100 150 200 10 5 0 5 10 10 5 0 5 10 f(x) = x 2 1 x 2 2 2x 1 x 2 + 10 ( ) 2 2 G(x) = 2 2 Semi-definida negativa. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 92 / 190
Método de Segurança de Newton Método de Newton A função f(x), em x = x + d pode ser aproximada por f(x ) f(x) + g(x) T d + 1 2 dt G(x)d (1) que resulta da expansão em série de Taylor de f(x), com x suficientemente perto de x. A aproximação quadrática (1) pode ser usada para determinar o vector d em que x é um vector fixo. Derivando em ordem a d e igualando a zero obtemos g(x) + G(x)d = 0 G(x)d = g(x) (2) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 93 / 190
Método de Segurança de Newton Cont. Quando a função f(x) é quadrática obtém-se a solução resolvendo o sistema linear (2). No caso em que f(x) não é quadrática, o novo ponto x + d não é mínimo e o processo deve ser repetido iterativamente. As equações iterativas do processo são x (k+1) = x (k) + d (k) G(x (k) )d (k) = g(x (k) ), para k = 1, 2,... Nota: O método de Newton possui terminação quadrática, i.e., se f(x) for uma função quadrática convexa o método de Newton necessita no máximo de n iterações para encontrar a solução exacta. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 94 / 190
Método de Segurança de Newton Método de Newton - Falhas de convergência O método de Newton pode falhar nas seguintes condições: A matriz G(x (k) ) é singular e d (k) não é sequer definido. O vector direcção d (k) é quase ortogonal a g(x (k) ) e não é possível progredir ao longo de d (k). O vector direcção d (k) não aponta no sentido descendente de f e não é possível garantir a descida do valor da função. A matriz G(x (k) ) 1 existe e é definida positiva, o vector direcção d (k) é de descida, no entanto o comprimento é tal que f(x (k+1) ) > f(x (k) ), e o novo ponto não é melhor que o anterior. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 95 / 190
Método de Segurança de Newton Método de segurança de Newton O método de segurança de Newton resolve as possíveis falhas do método de Newton. A matriz G(x (k) ) é singular e d (k) não é sequer definido. Neste caso toma-se como direcção de procura a direcção de descida máxima (d (k) = g(x (k) )). Como a direcção de descida máxima resolve os restantes problemas (excepto o problema do comprimento da direcção) não e necessário verificar a quase-ortogonalidade e a descida da função objectivo. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 96 / 190
Método de Segurança de Newton Cont. O vector direcção d (k) é quase ortogonal a g(x (k) ) e não é possível progredir ao longo de d (k). 6 4 g(1,1) 2 0 g(1,1) 2 4 6 6 4 2 0 2 4 6 Quase ortogonal se g(x (k) ) T d (k) η g(x (k) ) d (k) Se for quase ortogonal então d (k) = g(x (k) ) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 97 / 190
Método de Segurança de Newton Cont. O vector direcção d (k) não aponta no sentido descendente de f e não é possível garantir a descida do valor da função. d (k) é direcção de descida se g(x (k) ) T d (k) η g(x (k) ) d (k). Caso d (k) não seja direcção de descida faz-se d (k) = d (k). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 98 / 190
Método de Segurança de Newton Cont. A matriz G(x (k) ) 1 existe e é definida positiva, o vector direcção d (k) é de descida, no entanto o comprimento é tal que f(x (k+1) ) > f(x (k) ), e o novo ponto não é melhor que o anterior. O método de Newton tem convergência local, i.e., x (k) tem de ser suficientemente próximo de x para que o método funcione. A convergência global obtém-se através da introdução da procura unidimensional (regiões de confiança!!). x (k+1) = x (k) + αd (k) em que o α deve ser calculado para garantir que f(x (k+1) ) < f(x (k) ) Decréscimo simples A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 99 / 190
Método de Segurança de Newton Procura unidimensional exacta Na procura unidimensional exacta pretende-se determinar (exactamente) qual o valor de α que minimiza a função φ(α) = f(x (k+1) ) com x (k+1) = x (k) + αd (k), usando as condições de optimalidade φ (α) = 0 e φ (α) > 0. No entanto a solução para o problema min α R φ(α) não é de fácil resolução (difícil implementação e cálculos computacionais pesados). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 100 / 190
Método de Segurança de Newton Procura unidimensional Critério de Armijo e divisões sucessivas de α por dois. Pressupondo que a direcção de procura é de descida, gera-se uma sequência de valores, {ω j α}, j = 0, 1, 2,... com α = 1 e ω = 1 2 até se encontrar um elemento que origine uma redução (significativa) no valor de f f(x (k) ) f(x (k) + ω j αd (k) ) µ 1 ω j αg(x (k) ) T d (k). O primeiro elemento encontrado é usado como o comprimento do passo na iteração k (α (k) = ω j α). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 101 / 190
Método de Segurança de Newton Critério de paragem Considera-se as três condições para o critério de paragem x (k+1) x (k) x (k+1) ɛ 1 f (k+1) f (k) f (k+1) ɛ 2 g (k+1) ɛ 3 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 102 / 190
Método de Segurança de Newton Exemplo Considere-se o seguinte problema de optimização min x R 2 x4 1 + x 2 2 3x 1 partindo de x (1) = (0, 1) T e com ɛ = 0.5. Temos que g(x) = (4x 3 1 3, 2x 2 ) T e G(x) = ( 12x 2 1 0 0 2 ) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 103 / 190
Método de Segurança de Newton 1 a iteração g (1) = g(x (1) ) = ( 3, 2) T G (1) = G(x (1) ) = ( 0 0 3 0 2 2 ) Impossível ( 0 0 0 2 ) Como a matriz G(x (1) ) é singular temos que d (1) = g (1) = (3, 2) T. Não é necessário verificar a quase ortogonalidade e passa-se para a procura unidimensional. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 104 / 190
Método de Segurança de Newton Procura unidimensional x (1) = (0, 1) T f (1) = 1 g (1)T d (1) = 13 α = 1 x = x (1) + d (1) = (0, 1) T + 1(3, 2) T = (3, 1) T f( x) = 73 1 73 = f(x (1) ) f( x) 10 3 1 13 α = 0.5 x = (0, 1) T + 0.5(3, 2) T = (1.5, 0) T f( x) = 0.5625 1 0.5625 = f(x (1) ) f( x) 10 3 0.5 13 Aceita-se α (1) = 0.5 e tem-se x (2) = (1.5, 0) T. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 105 / 190
Método de Segurança de Newton Critério de paragem x (2) x (1) x (2) = 1.5 2 + 1 2 1.5 = 1.201 0.5 Logo passa-se à próxima iteração. As restantes condições seriam (neste caso não é necessário verificar) e f (2) f (1) f (2) = 1 0.5625 0.5625 = 0.7778 0.5 g (2) = (10.5, 0) T = 10.5 0.5 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 106 / 190
Método de Segurança de Newton 2 a iteração x (2) = (1.5, 0) T ( ) g (2) = (10.5, 0) T G (2) 27 0 = ( ) 0 2 27 0 10.5 d (2) = ( 0.3889, 0) T 0 2 0 d (2) é quase ortogonal com o gradiente? d (2) = 0.3889 g (2) = 10.5 (g (2) ) T d (2) = (10.5, 0)( 0.3889, 0) T = 4.0835 4.0835 = (g (2) ) T d (2) 10 4 0.3889 10.5 = 4.0835 10 4, logo d (2) não é quase ortogonal com o gradiente (se fosse d (2) = g (2) ). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 107 / 190
Método de Segurança de Newton 2 a iteração - Cont. d (2) é direcção de descida? d (2) = 0.3889 g (2) = 10.5 (g (2) ) T d (2) = (10.5, 0)( 0.3889, 0) T = 4.0835 4.0835 = (g (2) ) T d (2) 10 4 0.3889 10.5 = 4.0835 10 4, logo d (2) é direcção de descida (se não fosse d (2) = d (2) ). Inicia-se a procura unidimensional. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 108 / 190
Método quasi-newton Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 109 / 190
Método quasi-newton Método Quasi-Newton O método Quasi-Newton usa uma matriz aproximação à matriz Hessiana (ou à sua inversa) da função objectivo. O uso de uma matriz aproximação evita o cálculo da matriz Hessiana (segundas derivadas) que pode ser difícil de obter. A aproximação à inversa da Hessiana, em vez da própria Hessiana, substituí a resolução de um sistema linear em cada iteração, por um produto matriz vector. (G(x)d = g(d) d = G(x) 1 g(x)). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 110 / 190
Método quasi-newton Cont. A matriz aproximação é actualizada em cada iteração usando a informação das derivadas (gradiente) da iteração anterior. A fórmula mais conhecida é devida a Broyden, Fletcher, Goldfarb e Shanno (B.F.G.S.) ( ) ( ) H (k+1) = I s(k) y (k)t s (k)t y (k) H (k) I y(k) s (k)t y (k)t s (k) + s(k) s (k)t s (k)t y (k) em que s (k) = α (k) d (k) = x (k+1) x (k) e y (k) = g (k+1) g (k). Quando s (k)t y (k) > 0 e H (k) é simétrica e definida positiva, a formula de actualização garante que a matriz H (k+1) é simétrica e definida positiva. A fórmula B.F.G.S. satisfaz a propriedade de terminação quadrática. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 111 / 190
Método quasi-newton Cont. Na primeira iteração temos que H (1) = I (simétrica e definida positiva). Quando se usa a técnica de recomeço a matriz H (k) = I sempre que (k 1) mod n = 0. Como H (k) é simétrica e definida positiva não é necessário verificar a quase ortogonalidade e se a direcção calculada é de descida para a função objectivo. Os problemas numéricos com a matriz H (k), tais como overflow na actualização de H (k), um deslocamento ao longo da direcção de procura muito longo devido à quase ortogonalidade da direcção com o gradiente, podem ser ultrapassados usando a técnica do recomeço. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 112 / 190
Método quasi-newton Exemplo Considere-se o seguinte problema de optimização (x (1) = (0, 1) T e ɛ = 0.5) Temos que g(x) = (4x 3 1 3, 2x 2) T. 1 a iteração min x R 2 x4 1 + x 2 2 3x 1 g (1) = g(x (1) ) = ( 3, 2) T H (1) = I d (1) = Hg (1) = (3, 2) T. Procura unidimensional... (ver exemplo do segurança de Newton) Aceita-se α (1) = 0.5 e vem que x (2) = (1.5, 0) T. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 113 / 190
Método quasi-newton Critério de paragem x (2) x (1) x (2) = 1.5 2 + 1 2 1.5 Logo passa-se à próxima iteração. 2 a iteração x (2) = (1.5, 0) T e g (2) = (10.5, 0) T H (2) = ( I s(1) y (1)T s (1)T y (1) ) H (1) ( = 1.201 0.5 I y(1) s (1)T y (1)T s (1) ) + s(1) s (1)T s (1)T y (1) s (1) = x (2) x (1) = (1.5, 0) T (0, 1) T = (1.5, 1) T y (1) = g (2) g (1) = (10.5, 0) T ( 3, 2) T = (13.5, 2) T A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 114 / 190
Método quasi-newton Cont. s (1) y (1)T = I s(1) y (1)T ( 1 0 s (1)T y = (1) 0 1 H (2) = ( 0.0899 0.1348 0.6067 0.9101 ( 1.5 1 ) ( 20.25 3 (13.5, 2) = 13.5 2 s (1)T y (1) = (1.5, 1)(13.5, 2) T = 22.25 ) ( ) ( ) 0.9101 0.1348 0.0899 0.1348 = 0.6067 0.0899 0.6067 0.9101 ( ) ( ) s (1) s (1)T 1.5 2.25 1.5 = (1.5, 1) = 1 1.5 2 ) ( ) ( ) H (1) 0.0899 0.6067 0.1011 0.0674 + 0.1348 0.9101 0.0674 0.0899 ( ) H (2) 0.1274 0.1098 = 0.1098 0.8202 ) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 115 / 190
Método quasi-newton Cont. ( d (2) = H (2) g (2) 0.1274 0.1098 = 0.1098 0.8202 ( ) d (2) 1.3377 = 1.1529 Procura unidimensional... ) ( 10.5 0 ) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 116 / 190
Optimização sem restrições com o MATLAB Conteúdo 1 Introdução 2 MATLAB 3 Optimização 4 Optimização não linear sem restrições 5 Método de Segurança de Newton 6 Método quasi-newton 7 Optimização sem restrições com o MATLAB 8 Optimização não linear com restrições de igualdade 9 Optimização não linear com restrições de desigualdade 10 Optimização com restrições com o MATLAB A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 117 / 190
Optimização sem restrições com o MATLAB Funções MATLAB O MATLAB fornece um conjunto de funções para optimização linear e não linear das quais se destacam: fzero - Zero de funções unidimensionais (Scalar functions); fminbound - Optimização não linear com limites simples de funções unidimensionais (escalares). fminsearch - Optimização não linear sem restrições e derivadas; fminunc - Optimização não linear sem restrições A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 118 / 190
Optimização sem restrições com o MATLAB As opções para os algoritmos Um dos argumentos aceite por determinados algoritmos é o OPTIONS. Esse argumento é uma estrutura com diversos parâmetros que podem ser modificados pelo utilizador para controlar o algoritmo. A estrutura OPTIONS pode ser criada/actualizada através da função OPTIMSET. >> optimset......... Display: [ off on iter notify final ] MaxFunEvals: [ positive scalar ] MaxIter: [ positive scalar ] TolFun: [ positive scalar ] TolX: [ positive scalar ] GradObj: [ on {off} ] Hessian: [ on {off} ] Jacobian: [ on {off} ] A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 119 / 190
Optimização sem restrições com o MATLAB As opções para os algoritmos >> opt=optimset( display, iter ); >> fzero(g,1.1,opt) Search for an interval around 1.1 containing a sign change: Func-count a f(a) b f(b) Procedure 1 1.1 0.453596 1.1 0.453596 initial i 3 1.06889 0.4811 1.13111 0.425653 search... 17 0.748 0.733051 1.452 0.118517 search 19 0.602197 0.824093 1.5978-0.0270036 search Search for a zero in the interval [0.6022, 1.5978]: Func-count x f(x) Procedure 19 1.5978-0.0270036 initial... 24 1.5708 6.12323e-017 interpolation Zero found in the interval [0.602197, 1.5978] ans = 1.5708 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 120 / 190
Optimização sem restrições com o MATLAB Exemplo não linear Considere que um montante x i é afectado ao projecto i, para i = 1,..., n, sendo o retorno esperado desta carteira de projectos dado por f(x 1,..., x n ) = n (α i x i 1 2 β ix 2 i ) + 1 n 1 (x i x i+1 ) (n > 1). 2 i=1 i=1 Para n = 2, α 1 = 1, α 2 = 2, β 1 = β 2 = 1, pretende-se calcular x 1 e x 2 de modo a maximizar o retorno esperado. O problema é modelado como um problema de optimização sem restrições max f(x 1, x 2 ) ( x 1 x2 1 2 ) + ( 2x 2 x2 2 2 ) + x 1x 2 2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 121 / 190
Optimização sem restrições com o MATLAB A resolução Simples fminsearch >> g=inline( -(x(1)-x(1)^2/2+2*x(2)-x(2)^2/2+x(1)*x(2)/2) ); >> fminsearch(g,[1 1]) ans = 2.6666 3.3333 4 3.8 3.6 3.4 3.2 3 2.8 2.6 2.4 2.2 2 2 2.2 2.4 2.6 2.8 3 3.2 3.4 3.6 3.8 4 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 122 / 190
Optimização sem restrições com o MATLAB Sintaxe A função fminsearch usa o algoritmo de Nelder-Mead. A sintaxe completa da função é: [X,FVAL,EXITFLAG,OUTPUT] = FMINSEARCH(FUN,X0,OPTIONS) X - A solução encontrada. FVAL - O valor da função em X. EXITFLAG - 1 se o algoritmo convergiu, 0 se atingiu o número máximo de iterações e -1 em caso de erro. OUTPUT - retorna uma estrutura com o número de iterações em OUTPUT.iterations, o número de cálculos da função objectivo em OUTPUT.funcCount, o nome do algoritmo em OUTPUT.algorithm e a mensagem de saída em OUTPUT.message. FUN - Nome da função a minimizar. X0 - Aproximação inicial. OPTIONS - Estrutura com opções para o algoritmo. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 123 / 190
Optimização sem restrições com o MATLAB A resolução Mais elaborada >> g=inline( -(x(1)-x(1)^2/2+2*x(2)-x(2)^2/2+x(1)*x(2)/2) ); >> opt=optimset( display, iter ); >> [x,fval,e,o]=fminsearch(g,[1 1],opt) Iteration Func-count min f(x) Procedure 0 1-2.5 1 3-2.57375 initial simplex 2 5-2.64719 expand... 25 49-4.66665 contract outside 26 51-4.66665 contract inside 27 52-4.66665 reflect... 45 86-4.66667 contract inside Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX and F(X) satisfies the convergence criteria using OPTIONS.TolFun of A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 124 / 190
Optimização sem restrições com o MATLAB A resolução Mais elaborada x = 2.6666 3.3333 fval = -4.6667 e = 1 o = iterations: 45 funccount: 86 algorithm: Nelder-Mead simplex direct search message: [1x196 char] A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 125 / 190
Optimização sem restrições com o MATLAB A resolução com fminunc >> [x,fval,e,o,g,h]=fminunc(g,[1 1],opt) Warning: Gradient must be provided for trust-region method; using line-search method instead. > In fminunc at 241 Gradient s Iteration Func-count f(x) Step-size infinity-nor 0 3-2.5 1.5 1 6-3.77778 0.666667 0.667 2 9-4.65765 1 0.132 3 12-4.66664 1 0.00658 4 15-4.66667 1 0.000165 5 18-4.66667 1 1.34e-006 Optimization terminated: relative infinity-norm of gradient less than options.tolfun. Computing finite-difference Hessian using user-supplied objective function. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 126 / 190
Optimização sem restrições com o MATLAB A solução com fminunc x = 2.6667 3.3333 o = iterations: 5 funccount: 18 stepsize: 1 firstorderopt: 1.3411e-006 algorithm: medium-scale: Quasi-Newton line search message: [1x85 char] g = 1.0e-005 * 0.1341 0.0966 H = 1.0000-0.5000-0.5000 1.0000 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 127 / 190
Optimização sem restrições com o MATLAB A resolução com fminunc usando o gradiente retorno.m function [f,g] = retorno(x) f=-x(1)+x(1)^2/2-2*x(2)+x(2)^2/2-x(1)*x(2)/2; if nargout > 1 % gradiente g(1)=-1+x(1)-x(2)/2; g(2)=-2+x(2)-x(1)/2; end A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 128 / 190
Optimização sem restrições com o MATLAB A resolução com fminunc usando o gradiente >> opt=optimset( display, iter, GradObj, on ); >> [x,fval,e,o,g,h]=fminunc( retorno,[1 1],opt) Norm of First-order Iteration f(x) step optimality CG-iterat 0-2.5 1.5 1-4.28571 2.25877 0.857 1 2-4.59969 0.695006 0.264 1 3-4.65489 0.397146 0.151 1 4-4.6646 0.122199 0.0464 1 5-4.6663 0.0698279 0.0265 1 6-4.6666 0.0214855 0.00815 1 7-4.66666 0.0122774 0.00466 1 8-4.66666 0.00377767 0.00143 1 9-4.66667 0.00215867 0.000819 1 Optimization terminated: Relative function value changing by less than OPTIONS.TolFun. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 07/08 129 / 190