Rascunho dos acetatos das aulas - norg
Transcrição
Rascunho dos acetatos das aulas - norg
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 [email protected] Mestrado em Bioinformática Ano lectivo 2009/2010 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 1 / 218 Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 2 / 218 Introdução Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 3 / 218 Introdução Apresentação - Docente Aulas teóricas e teórico-práticas A. Ismael F. Vaz - [email protected] www.norg.uminho.pt/aivaz Horário de atendimento Marcação por email. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 4 / 218 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 09/10 5 / 218 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 R - http://www.r-project.org; Fichas TPs e acetatos disponíveis na página; www.norg.uminho.pt/aivaz A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 6 / 218 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 09/10 7 / 218 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 é: (t0 = 0 e tf = 61.2 dias) com max J(tf ) ≡ x3 (tf )x4 (tf ) u(t) s.a dx1 x1 = g1 x1 − u dt x4 dx2 150 − x2 = −10g1 x1 + u dt x4 x3 dx3 = g2 x1 − u dt x4 dx4 =u dt 0 ≤ x4 (tf ) ≤ 200 0.408 x2 g1 = 1 + x3 /16 0.22 + x2 1 x2 g2 = 1 + x3 /71.5 0.44 + x2 onde x1 , x2 e x3 são as concentrações da massa celular, substrato e produto (g/L), e x4 é o volume (L). As condições iniciais são: 0 ≤ u(t) ≤ 12 x(t0 ) = (1, 150, 0, 10)T . ∀t ∈ [t0 , tf ] A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 8 / 218 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 09/10 9 / 218 Introdução Programa detalhado Aula 1 2 3 4 5 6 Matéria Grafos (Cláudio Alves) Optimização Combinatória (Cláudio Alves) Ficha de avaliação. Introdução à optimização não linear (sem restrições). Definições e condições de optimalidade. Introdução ao R. Definição de vectores e matrizes. Codificação de funções matemáticas e operadores. Método de Newton e quasi-Newton. Modelação de casos em R (função nlm e optim). 7 8 9 10 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. Modelação de casos e uso de R (funções solveLP, constrOptim e Rdonlp2). Modelação de casos e uso de R (funções solveLP, constrOptim e Rdonlp2). Revisões e Ficha de avaliação. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 10 / 218 Optimização Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 11 / 218 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 09/10 12 / 218 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 09/10 13 / 218 Optimização Tipo de problemas Programação linear min(max) cT x(+d) s.a Ax = b Ex ≤ (≥)f Programação quadrática min xT Qx + cT x s.a Ax = b Ex ≤ f A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 14 / 218 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 09/10 15 / 218 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 09/10 16 / 218 Optimização Classificação quanto à solução pretendida Óptimo local (determinação de um minimizante local ou relativo) Óptimo global (determinação de um minimizante global ou absoluto) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 17 / 218 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 09/10 18 / 218 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 09/10 19 / 218 Optimização não linear sem restrições Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 20 / 218 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, é min f (x) x∈Rn s.a ci (x) = 0, i = 1, . . . , m cj (x) ≥ 0, j = m + 1, . . . , t onde f (x) é a função objectivo, ci (x) = 0 são as restrições de igualdade e cj (x) ≥ são as restrições de desigualdade. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 21 / 218 Optimização não linear sem restrições Equivalência entre problemas O problema de optimização (maximização) max g(x) x∈Rn s.a ci (x) = 0, i = 1, . . . , m c̃j (x) ≤ 0, j = m + 1, . . . , t é equivalente ao problema de optimização (minimização) min f (x) ≡ −g(x) x∈Rn s.a ci (x) = 0, i = 1, . . . , m cj (x) ≡ −c̃j (x) ≥ 0, j = m + 1, . . . , t A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 22 / 218 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 x 1 1.5 2 2.5 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 09/10 23 / 218 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 cm2 . Sendo r o raio da tampa e h a altura da lata, uma possível formulação do problema de optimização é max πr2 h (r,h)∈R2 s.a 2πr2 + 2πrh = 1000 que pode ser transformado no problema de minimização min −πx21 x2 s.a A. Ismael F. Vaz (UMinho) x∈R2 2πx21 + 2πx1 x2 = 1000 Optimização Bioinformática 09/10 24 / 218 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 minn f (x). x∈R Classificação dos problemas (mais usuais) Problemas unidimensionais (n = 1, ou seja, x ∈ R); Problemas multidimensionais (n > 1, ou seja, x = (x1 , . . . , xn )T ∈ Rn ); 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) = 12 xT Gx + dT x, e c(x) são funções lineares); Problemas com limites simples (restrições nas variáveis do tipo al ≤ xl ≤ bl , 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 09/10 25 / 218 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̄ ∈ Rn ; minimizante global fraco se f (x∗ ) ≤ f (x̄), ∀x̄ ∈ Rn ; Onde Vδ (x∗ ) é uma vizinhança de x∗ de raio δ (||x̄ − x∗ || < δ). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 26 / 218 Optimização não linear sem restrições Mínimo global Mínimo global forte Função ilimitada f (x∗ ) < f (x̄) ∀x̄ ∈ R A. Ismael F. Vaz (UMinho) Mínimo global fraco f (x∗ ) ≤ f (x̄) ∀x̄ ∈ R Optimização Bioinformática 09/10 27 / 218 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 09/10 28 / 218 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 09/10 29 / 218 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 0 (x∗ ) = 0; f 00 (x∗ ) ≥ 0. Condições suficientes para a existência de um mínimo f 0 (x∗ ) = 0; f 00 (x∗ ) > 0. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 30 / 218 Optimização não linear sem restrições Exemplos f (x) = (x − 1.5)2 f 0 (1.5) = 2 × (1.5 − 1.5) = 0 f 00 (1.5) = 2 > 0 f (x) = sin(x) f 0 ( π2 ) = cos( π2 ) = 0 f 00 ( π2 ) = − sin( π2 ) = −1 < 0 1.02 0.25 1 0.2 0.98 0.96 0.15 0.94 0.92 0.1 0.9 0.88 0.05 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 09/10 31 / 218 Optimização não linear sem restrições Exemplos f (x) = x4 f 0 (0) = 3 × (0)3 = 0 f 00 (0) = 12 × (0)2 = 0 f (x) = x3 f 0 (0) = 3 × (0)2 = 0 f 00 (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 −1 −0.8 −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 09/10 32 / 218 Optimização não linear sem restrições Alguma notação Gradiente de f (x) : Rn → R, x = (x1 , . . . , xn )T , vector de dimensão n ∂f ∂x ∂f1 ∇f (x) = g(x) = ∂x2 ... ∂f ∂xn ∂f ∂f ∂f T , ,..., = ∂x1 ∂x2 ∂xn Matriz Hessiana, matriz de dimensão n × n ∂2f ∇2 f (x) = G(x) = ∂2f ∂xn ∂x1 ... ... ∂2f ∂2f ∂x21 ∂x1 ∂xn A. Ismael F. Vaz (UMinho) Optimização ... ... ∂x2n Bioinformática 09/10 33 / 218 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 09/10 34 / 218 Optimização não linear sem restrições Exemplo Pretende-se determinar todos os pontos óptimos do seguinte problema de optimização min x21 + x32 + 2x1 x2 ≡ f (x) x∈R2 Da condição de necessária e suficiente de primeira ordem temos que g(x) = (2x1 + 2x2 , 3x22 + 2x1 )T = (0, 0)T , ou seja, ( 2x1 + 2x2 = 0 3x22 + 2x1 = 0 ( ⇔ x1 = −x2 3x22 − 2x2 = 0 ⇔ x1 = −x2 x2 = 0 ∨ x2 = 2 3 Os pontos x̄ = (0, 0)T e x̂ = (− 32 , 23 )T são pontos estacionários de f (x). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 35 / 218 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 2 2 2 2 G(x) = , G(x̄) = , G(x̂) = 2 6x2 2 0 2 4 2 2 det(|2|) = 2, det 2 0 = −4, det 2 2 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 09/10 36 / 218 Optimização não linear sem restrições Representação gráfica/Curvas de nível 1.5 15 1 10 f(x) 5 0.5 0 0 −5 −10 2 −0.5 1 0 −1 x2 −2 −1.5 −1 −0.5 0 0.5 1.5 −1 −1.5 −1.5 x1 f (x) = A. Ismael F. Vaz (UMinho) 1 x21 + x32 −1 −0.5 0 0.5 1 1.5 + 2x1 x2 Optimização Bioinformática 09/10 37 / 218 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) = x1 ex2 − 2x1 x2 . Os pontos estacionários de f (x) obtêm-se através da resolução do sistema não linear ( ex2 − 2x2 = 0 x1 ex2 − 2x1 = 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 38 / 218 R - Introdução Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 39 / 218 R - Introdução O que é o R? R R pode ser considerado como uma implementação da linguagem S desenvolvida nos laboratorios da Bell por Rick Becker, John Chambers e Allan Wilks. O ambiente R (linguagem de programação, GUI, etc..) é usado por muitas pessoas como um sistema estatístico. Embora seja usado para a estatística o ambiente R pode ser visto como um sistema em que muitas das técnicas modernas de estatística se encontram implementadas. Algumas das técnicas são fornecidas com o sistema (built in) enquanto que outras são fornecidas como pacotes adicionais (packages). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 40 / 218 R - Introdução R - Conteúdo 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 R possui algumas funções para optimização disponíveis na versão base, opcionais como pacotes e outras que se podem obter na Internet. Funções na versão base uniroot - Determinação de zeros de funções unidimensionais. optimize - Optimização unidimensional sem restrições. optim - Optimização multidimensional sem restrições. nlm - Optimização multidimensional sem restrições com algoritmo do tipo Newton. constrOptim - optimização multidimensional com restrições lineares. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 41 / 218 R - Introdução Pacotes necessários (usados). Disponíveis na CRAN linprog (solveLP - Programação linear). Instalação usando o Menu Packages->Install package(s). ... Na web Rdonlp2 (donlp2 - Optimização multidimensional com restrições). Obtém-se em arumat.net/Rdonlp2. Algencan - Possui uma interface de ligação ao R, mas é necessário compilar o código fornecido. Pode-se obter em www.ime.usp.br/~egbirgin/tango/r.php ... Carregar os pacotes Não esquecer de fazer Packages->Load package. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 42 / 218 R - Introdução Só existe o R? Ferramentas pouco similares Outros programas pouco similares são o MATLAB, Mathematica e o Maple Ferramentas similares Linguagem de programação Python. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 43 / 218 R - Introdução Ambiente R (R GUI) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 44 / 218 R - Introdução Operações básicas Aritméticas > 2+3*2-1.5*2^2 [1] 2 Variáveis built-in – constantes > pi [1] 3.141593 Expressões (com o recurso a funções matemáticas) > a <- 2*sin(pi)^2+3*exp(1)+sqrt(2)+cosh(2) > a [1] 13.33125 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 45 / 218 R - Introdução Operações básicas Ajuda > help(’acos’) É aberta uma nova janela com a ajuda referentes às funções trigonométricas. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 46 / 218 R - Introdução Operações básicas – Formatos Precisão O R por defeito imprime apenas 7 casa decimais, mas essa opção (entre outras) pode ser modificada. > options(digits=15) > pi [1] 3.14159265358979 > options() $add.smooth [1] TRUE $check.bounds [1] FALSE $chmhelp [1] TRUE ... A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 47 / 218 R - Introdução Operações básicas com vectores Vectores > x <- c(10.4, > x [1] 10.4 5.6 > 1/x [1] 0.09615385 > y <- c(x, 0, > y [1] 10.4 5.6 5.6, 3.1, 6.4, 21.7) 3.1 6.4 21.7 0.17857143 0.32258065 0.15625000 0.04608295 x) 3.1 6.4 21.7 0.0 10.4 5.6 3.1 6.4 21.7 Um vector é definido como a concatenação de vários escalares. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 48 / 218 R - Introdução Operações básicas com vectores Operações com vectores > v <- 2*x + y + 1 Warning message: In 2 * x + y : longer object length is not a multiple of shorter object leng > v <- x*c(2, 3, 4, 5, 6)+1 > v [1] 21.8 17.8 13.4 33.0 131.2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 49 / 218 R - Introdução Operações básicas com arrays e matrizes Operações com arrays Um vector para ser considerado um array tem que ser definida a sua dimensão. > dim(v) <- c(1,5) > v [,1] [,2] [,3] [,4] [,5] [1,] 21.8 17.8 13.4 33 131.2 > dim(v) <- c(5,1) > v [,1] [1,] 21.8 [2,] 17.8 [3,] 13.4 [4,] 33.0 [5,] 131.2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 50 / 218 R - Introdução Operações básicas com vectores e matrizes Função para definição de arrays e matrizes As funções matrix() e array() permitem uma forma mais rápida e natural de definir matrizes e arrays. > x <- array(1:20, dim=c(4,5)) > x [,1] [,2] [,3] [,4] [,5] [1,] 1 5 9 13 17 [2,] 2 6 10 14 18 [3,] 3 7 11 15 19 [4,] 4 8 12 16 20 > i <- array(c(1:3,3:1), dim=c(3,2)) > i [,1] [,2] [1,] 1 3 [2,] 2 2 [3,] 3 1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 51 / 218 R - Introdução Operações básicas com vectores e matrizes Visualização e atribuição > x[i] [1] 9 6 3 > x[i] <- 0 > x [,1] [,2] [,3] [,4] [,5] [1,] 1 5 0 13 17 [2,] 2 0 10 14 18 [3,] 0 7 11 15 19 [4,] 4 8 12 16 20 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 52 / 218 R - Introdução Operações básicas com vectores e matrizes Repetição de valores > Z <- array(0, c(3,4,2)) > Z , , 1 [1,] [2,] [3,] [,1] [,2] [,3] [,4] 0 0 0 0 0 0 0 0 0 0 0 0 , , 2 [1,] [2,] [3,] [,1] [,2] [,3] [,4] 0 0 0 0 0 0 0 0 0 0 0 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 53 / 218 R - Introdução Operações básicas com vectores e matrizes Operações com matrizes e vectores > > > > I=matrix(1,2,2) x=array(c(1,2),dim=c(2,1)) Ix <- I %*% x Ix [,1] [1,] 3 [2,] 3 > I*x Error in I * x : non-conformable arrays A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 54 / 218 R - Introdução Operações básicas com vectores e matrizes Operações com vectores – Funções > Ix [,1] [1,] 3 [2,] 3 > cos(Ix) [,1] [1,] -0.9899925 [2,] -0.9899925 Operações com vectores > a=array(1:3,dim=c(1,3)) > b=array(4:6,dim=c(1,3)) > a+b [,1] [,2] [,3] [1,] 5 7 9 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 55 / 218 R - Introdução Operações básicas com vectores e matrizes Operações elemento a elemento > a*b [,1] [,2] [,3] [1,] 4 10 18 Operações com vectores > 2*a+b^2 [,1] [,2] [,3] [1,] 18 29 42 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 56 / 218 R - Introdução Operações básicas com vectores e matrizes Operações com vectores > a %*% b Error in a %*% b : non-conformable arguments > a %*% aperm(b) [,1] [1,] 32 Operações com vectores > aperm(a) %*% b [,1] [,2] [,3] [1,] 4 5 6 [2,] 8 10 12 [3,] 12 15 18 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 57 / 218 R - Introdução Operações básicas com vectores e matrizes Matriz > A<-matrix(1:6,3,2) > A [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 Matriz transposta > aperm(A) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 Matriz 2 × 3. Matriz 3 × 2. O R é case sensitive, i.e., A é diferente de a. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 58 / 218 R - Introdução Operações básicas com vectores e matrizes Operações com matrizes > B<-matrix(6:1,3,2) > B [,1] [,2] [1,] 6 3 [2,] 5 2 [3,] 4 1 > A %*% aperm(B) [,1] [,2] [,3] [1,] 18 13 8 [2,] 27 20 13 [3,] 36 27 18 > aperm(A) %*% B [,1] [,2] [1,] 28 10 [2,] 73 28 A. Ismael F. Vaz (UMinho) Soma > A+B [,1] [,2] [1,] 7 7 [2,] 7 7 [3,] 7 7 > A %+% B Error: could not find function "%+%" Optimização Bioinformática 09/10 59 / 218 R - Introdução 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 x1 +2x2 +3x3 = 1 4x1 +5x2 +6x3 = 2 ≡ 7x1 +8x2 +9x3 = 3 1 2 3 i.e. A = 4 5 6 7 8 9 A. Ismael F. Vaz (UMinho) Optimização 1 2 3 4 5 6 7 8 9 x1 x = x2 x3 x1 1 x2 = 2 3 x3 1 e b= 2 3 Bioinformática 09/10 60 / 218 R - Introdução Resolução de Sistemas lineares Um exemplo (diferente do anterior) > > > > A<-matrix(c(1,2,3,5,6,7,3,4,7),3,3) b<-array(1:3,dim=c(3,1)) x <- solve(A,b) x [,1] [1,] 1.000000e+00 [2,] 4.163336e-17 [3,] -8.326673e-17 > A%*%x-b [,1] [1,] 0 [2,] 0 [3,] 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 61 / 218 R - Introdução Inversa de uma matriz O exemplo anterior > A<-matrix(c(1,2,3,5,6,7,3,4,7),3,3) > solve(A) [,1] [,2] [,3] [1,] -1.75 1.75 -0.25 [2,] 0.25 0.25 -0.25 [3,] 0.50 -1.00 0.50 > A%*%solve(A) [,1] [,2] [,3] [1,] 1.000000e+00 2.220446e-16 1.110223e-16 [2,] 0.000000e+00 1.000000e+00 0.000000e+00 [3,] 3.330669e-16 2.220446e-16 1.000000e+00 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 62 / 218 R - Introdução Resolução de Sistemas lineares Curiosidades > absdetA <- prod(svd(A)$d) > absdetA [1] 8 > det(A) [1] -8 svd - singular value decomposition - retorna uma lista em que d são os elementos da diagonal. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 63 / 218 R - Introdução Acesso a elementos de vectores e matrizes Acesso a vectores > x <- seq(-pi, pi, by=.5) > x [1] -3.1415927 -2.6415927 -2.1415927 -1.6415927 -1.1415927 -0. [7] -0.1415927 0.3584073 0.8584073 1.3584073 1.8584073 2. [13] 2.8584073 > y <- sin(x) > y [1] -1.224606e-16 -4.794255e-01 -8.414710e-01 -9.974950e-01 -9 [6] -5.984721e-01 -1.411200e-01 3.507832e-01 7.568025e-01 9 [11] 9.589243e-01 7.055403e-01 2.794155e-01 > y[2:3] [1] -0.4794255 -0.8414710 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 64 / 218 R - Introdução Acesso a elementos de vectores e matrizes Acesso a matrizes > A <- matrix(seq(length=10, from=-5, by=.2),5,2) > A [,1] [,2] [1,] -5.0 -4.0 [2,] -4.8 -3.8 [3,] -4.6 -3.6 [4,] -4.4 -3.4 [5,] -4.2 -3.2 > A[2:4,1] [1] -4.8 -4.6 -4.4 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 65 / 218 R - Introdução Matrizes e vectores especiais Zeros e uns > matrix(0,2,2) [,1] [,2] [1,] 0 0 [2,] 0 0 > matrix(1,2,2) [,1] [,2] [1,] 1 1 [2,] 1 1 A. Ismael F. Vaz (UMinho) Identidade - Aleatórias > diag(3) [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 > x <- rnorm(50) > X <- matrix(rnorm(4),2,2) > X [,1] [,2] [1,] 0.9333478 -0.9596665 [2,] 1.2975969 1.1051097 > Y <- matrix(runif(4),2,2) > Y [,1] [,2] [1,] 0.8034793 0.9085925 [2,] 0.2916994 0.2851831 Optimização Bioinformática 09/10 66 / 218 R - Introdução Modificação de elementos em vectores e matrizes Atribuições > A <- matrix(1,3,3) > A[1:2,1] <- 2 > A [,1] [,2] [,3] [1,] 2 1 1 [2,] 2 1 1 [3,] 1 1 1 > A[3,c(1,3)]<-4 > A [,1] [,2] [,3] [1,] 2 1 1 [2,] 2 1 1 [3,] 4 1 4 A. Ismael F. Vaz (UMinho) Troca de valores > A[c(1,2),1]<-2*A[c(1,2),1] > A [,1] [,2] [,3] [1,] 4 1 1 [2,] 4 1 1 [3,] 4 1 4 > A[2:3,3]=A[3:2,3] > A [,1] [,2] [,3] [1,] 4 1 1 [2,] 4 1 4 [3,] 4 1 1 Optimização Bioinformática 09/10 67 / 218 R - Introdução Vectores lógicos Vectores lógicos > ages <- c(12, 11, 18, 19, 11, 60, 65, 71, 7, 10) > adults <- ages >= 18 > old <- ages >=65 > adults [1] FALSE FALSE TRUE TRUE FALSE TRUE TRUE TRUE FALSE FALSE > old [1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE > active <- adults & !old > active [1] FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE FALSE FALSE > totaladults <- sum(adults*ages) > totaladults [1] 233 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 68 / 218 R - Introdução Operadores lógicos Operadores lógicos Símbolo > < != ! | Representa Maior que Menor que Diferente de Negação Ou A. Ismael F. Vaz (UMinho) Símbolo >= <= == & Representa Maior ou igual que Menor ou igual que Igual a E Optimização Bioinformática 09/10 69 / 218 R - Introdução Valores em falta Not a Number (NaN) e infinito (Inf) > x <- c(1, 2, NaN, 0) > y <- c(1, 0, 2, 0) > z <- x/y > z [1] 1 Inf NaN NaN > is.na(z) [1] FALSE FALSE TRUE TRUE > is.nan(z) [1] FALSE FALSE TRUE TRUE > is.finite(z) [1] TRUE FALSE FALSE FALSE > is.infinite(z) [1] FALSE TRUE FALSE FALSE A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 70 / 218 R - Introdução Funções básicas Funções Função max min sum mean sd A. Ismael F. Vaz (UMinho) 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 Optimização Bioinformática 09/10 71 / 218 R - Introdução Mensagens e display de variáveis Conteúdo de exp.txt Ficheiros > i <- 1:3 1 2 3 4 5 > X <- matrix(1:10,ncol=5) 6 7 8 9 10 > write(X, file="exp.txt", sep = "\t") 1 2 > write(cbind(i,X[1,i]), 3 1 file="exp.txt", ncolumns=2, 3 5 append=TRUE, sep = "\t") A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 72 / 218 R - Introdução União de matrizes União de matrizes > i [1] 1 2 3 > x [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 > c(i,x[1,i]) [1] 1 2 3 1 3 5 > cbind(i,x[1,i]) i [1,] 1 1 [2,] 2 3 [3,] 3 5 > rbind(i,x[1,i]) [,1] [,2] [,3] i 1 2 3 1 3 5 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 73 / 218 R - Introdução Definição de funções > fx <- function(x) x^2+3+cos(x) > fx function(x) x^2+3+cos(x) > fx(2) [1] 6.583853 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 74 / 218 R - Introdução Argumentos de funções > fun1 <- function(data, data.frame, graph, limit) { [corpo da função omitido] } A função pode então ser chamada de diversas formas equivalentes: > ans <- fun1(d, df, TRUE, 20) > ans <- fun1(d, df, graph=TRUE, limit=20) > ans <- fun1(data=d, limit=20, graph=TRUE, data.frame=df) Também podem ser definidos valores por defeito para determinados parâmetros > fun1 <- function(data, data.frame, graph=TRUE, limit=20) { .. Podendo a função ser chamada das diversas formas: > ans <- fun1(d, df) > ans <- fun1(d, df, limit=10) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 75 / 218 R - Introdução 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 .r. Ficheiro bioinf.r i <- 1:3 X <- matrix(1:10,ncol=5) A. Ismael F. Vaz (UMinho) Execução > source("bioinf.r") > X [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 Optimização Bioinformática 09/10 76 / 218 R - Introdução Desenho de gráficos 2D Plot > x <- seq(-pi,pi,0.1) > plot(x,sin(x)) > plot(x,sin(x),’l’) > plot(x,sin(x),’l’,ylab=’sin(x)’) > title(main=’O meu primeiro gráfico’, xlab=’x’, ylab=’sin(x)’) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 77 / 218 R - Introdução Desenho de gráficos 2D 0.0 -1.0 -0.5 sin(x) 0.5 1.0 O meu primeiro gráfico -3 A. Ismael F. Vaz (UMinho) -2 -1 0 x Optimização 1 2 3 Bioinformática 09/10 78 / 218 R - Introdução Desenho de gráficos 2D Sobreposição > x<-seq(0,4*pi,0.1) > plot(x,sin(x),’l’,ylab=’sin(x)+cos(x)’) > par(new=TRUE) > plot(x,cos(x),’l’,ylab=’’) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 79 / 218 R - Introdução 0.0 -1.0 -0.5 sin(x)+cos(x) 0.5 1.0 Desenho de gráficos 2D 0 A. Ismael F. Vaz (UMinho) 2 4 6 x Optimização 8 10 12 Bioinformática 09/10 80 / 218 R - Introdução Desenho de gráficos 2D Usando marcas e tipos de linhas > plot(x,cos(x),’l’,lty=2) > par(lty=2) > plot(x,cos(x),’l’) Função par A função par permite modificar diversos parâmetros. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 81 / 218 R - Introdução 0.0 -1.0 -0.5 cos(x) 0.5 1.0 Desenho de gráficos 2D 0 A. Ismael F. Vaz (UMinho) 2 4 6 x Optimização 8 10 12 Bioinformática 09/10 82 / 218 R - Introdução Desenho de gráficos 3D Plot3 > x <- seq(-10, 10, length= 30) > y <- x > f <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r } > z <- outer(x, y, f) > z[is.na(z)] <- 1 > op <- par(bg = "white") > persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue") A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 83 / 218 R - Introdução Desenho de gráficos 3D y z x A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 84 / 218 R - Introdução Desenho de curvas de nível Contour > x=seq(-pi,pi,0.1) > y=seq(0,pi,0.1) > fx <- function(x,y) {sin(x^2)+2*sin(y)} > z <- outer(x,y,fx) > contour(x,y,z) > contour(x,y,z,nlevel=50) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 85 / 218 R - Introdução 1 1 0 0. 5 0.5 2.5 1.5 1 1.5 0.5 0.5 1 0 1 -0 .5 .5 -0 3.0 Desenho de curvas de nível 2.5 1.5 2.0 2.5 2 2 2.5 2.5 1.0 2 1.5 0.5 0.5 0.5 1 0.5 A. Ismael F. Vaz (UMinho) 0 0 0.0 0 -3 -0.5 -2 -1 0 Optimização 1 2 0.5 0.5 -0. 5 3 Bioinformática 09/10 86 / 218 R - Introdução 0.3 1.6 0.7 1.8 2.7 1 2.2 0. 9 2.9 2 2.1 1.6 2.3 Optimização 1 11.1 0.7 0.2 0.1 0 -0.3 1.3 0.4 0.5 -0.7 1.3 0.9 0.4 0.5 2.1 0.8 1.8 7 0.5 1.0 0.4 0 -0 .7 0.10 -1 0.7 0.3 0.6 8 0. 1.2 0.3 0.10 0.5 00.5. 6 1.3 0.2 0.6 0.0 1.7 4 2. 2.1 1.2 0.3 -2 2.3 0.7 0.9 A. Ismael F. Vaz (UMinho) 1.5 2.1 -0.3 2.6 1.9 -3 2.8 1.7 2.6 2.3 0.9 2.4 2.8 0.9 2 2 2 2.7 2.7 1.5 2.9 2.5 2.5 2.6 2. 7 1.8 0. 4 2.5 2.4 2.4 0.9 0.8 -0 .6 1.5 0.7 0 2.5 0.8 2.3 2.2 1.4 1.6 2.2 1 1 -0.1 0.3 2 0.0. 87 1.1 2.2 1.9 1.4 0.3 0.6 2.6 -0.2 1.4 2.5 0.8 1.9 0 1.5 2.0 0.4 0.6 1.2 .3 -0 0.9 0.2 0.5 0.7 8 0. 0.6 0.2 -0.6 1.1 3.0 Desenho de curvas de nível 3 Bioinformática 09/10 87 / 218 R - Introdução Funções R > + + + + + + + + + + + + + + + + open.account <- function(total) { list( deposit = function(amount) { if(amount <= 0) stop("Deposits must be positive!\n") total <<- total + amount cat(amount, "deposited. Your balance is", total, "\n\n") }, withdraw = function(amount) { if(amount > total) stop("You donŠt have that much money!\n") total <<- total - amount cat(amount, "withdrawn. Your balance is", total, "\n\n") }, balance = function() { cat("Your balance is", total, "\n\n") })} A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 88 / 218 R - Introdução Funções R > ross <- open.account(100) > robert <- open.account(200) > ross$withdraw(30) 30 withdrawn. Your balance is 70 > ross$balance() Your balance is 70 > robert$balance() Your balance is 200 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 89 / 218 R - Introdução Funções R – O if Função > fx <- function(x) { + if(x>0) x else -x + } > fx(2) [1] 2 > fx(-2) [1] 2 > fx(c(2,-2)) [1] 2 -2 Warning message: In if (x > 0) x else -x : the condition has length > 1 and only the first element will be used A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 90 / 218 R - Introdução Funções R – O if Função – Cont. > x <- c(6:-4) > sqrt(x) [1] 2.449490 2.236068 2.000000 1.732051 1.414214 1.000000 0.000000 [9] NaN NaN NaN Warning message: In sqrt(x) : NaNs produced > sqrt(ifelse(x >= 0, x, NA)) [1] 2.449490 2.236068 2.000000 1.732051 1.414214 1.000000 0.000000 [9] NA NA NA > ifelse(x >= 0, x, NA) [1] 6 5 4 3 2 1 0 NA NA NA NA > ifelse(x >= 0, x, 0) [1] 6 5 4 3 2 1 0 0 0 0 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 91 / 218 R - Introdução Funções R – O for Execução > for(i in 1:5) print(1:i) [1] 1 [1] 1 2 [1] 1 2 3 [1] 1 2 3 4 [1] 1 2 3 4 5 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 92 / 218 R - Introdução Funções R – O for Execução > for(n in c(2,5,10,20,50)) { + x <- stats::rnorm(n) + cat(n,":", sum(x^2),"\n") + } 2 : 1.439276 5 : 2.110872 10 : 3.601880 20 : 16.54088 50 : 40.6597 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 93 / 218 R - Introdução Zeros de funções A função uniroot > f <- function (x) sin(x)+2*cos(x) > xmin <- uniroot(f, c(0, pi), tol = 0.0001) > xmin $root [1] 2.034445 $f.root [1] -2.477787e-06 $iter [1] 5 $estim.prec [1] 5e-05 O intervalo tem que obedecer a f (lower) ∗ f (upper) ≤ 0. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 94 / 218 Método de Segurança de Newton Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 95 / 218 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∈Rn com f (x) : Rn → R (n > 1) duas vezes diferenciável. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 96 / 218 Método de Segurança de Newton Notação Gradiente de f (x) : Rn → R, x = (x1 , . . . , xn )T , vector de dimensão n ∂f ∂x ∂f1 ∇f (x) = g(x) = ∂x2 ... ∂f ∂xn ∂f ∂f ∂f T , ,..., = ∂x1 ∂x2 ∂xn Matriz Hessiana, matriz de dimensão n × n ∂2f ∇2 f (x) = G(x) = ∂2f ∂xn ∂x1 ... ... ∂2f ∂2f ∂x21 ∂x1 ∂xn A. Ismael F. Vaz (UMinho) Optimização ... ... ∂x2n Bioinformática 09/10 97 / 218 Método de Segurança de Newton Alguns conceitos O vector gradiente ‘aponta’ no sentido de subida da função. −g(x) g(x) 100 10 0 5 −100 0 −200 −10 −5 −5 f (x) = − x21 − x22 − 2x1 x2 + 10 0 5 10 g(x) = −10 (−2x1 − 2x2 , −2x2 − 2x1 )T g(1, 1) = (−4, −4)T A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 98 / 218 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 10 −200 −10 5 0 −5 0 −5 5 10 −10 f (x) = − x21 − x22 − 2x1 x2 + 10 −2 −2 G(x) = −2 −2 Semi-definida negativa. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 99 / 218 Método de Segurança de Newton Método de Newton A função f (x), em x∗ = x + d pode ser aproximada por 1 f (x∗ ) ≈ f (x) + g(x)T d + dT G(x)d 2 (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 09/10 100 / 218 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 09/10 101 / 218 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 09/10 102 / 218 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 09/10 103 / 218 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 Quase ortogonal se −6 |g(x(k) )T d(k) | ≤ ηkg(x(k) )kkd(k) k −6 −4 −2 0 2 4 6 Se for quase ortogonal então d(k) = −g(x(k) ) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 104 / 218 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) ≤ ηkg(x(k) )kkd(k) 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 09/10 105 / 218 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) ) A. Ismael F. Vaz (UMinho) Decréscimo simples Optimização Bioinformática 09/10 106 / 218 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 (α) = 0 e φ00 (α) > 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 09/10 107 / 218 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 09/10 108 / 218 Método de Segurança de Newton Critério de paragem Considera-se as três condições para o critério de paragem kx(k+1) − x(k) k ≤ 1 kx(k+1) k |f (k+1) − f (k) | ≤ 2 |f (k+1) | kg (k+1) k ≤ 3 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 109 / 218 Método de Segurança de Newton Exemplo Considere-se o seguinte problema de optimização min x41 + x22 − 3x1 x∈R2 partindo de x(1) = (0, 1)T e com = 0.5. Temos que g(x) = (4x31 − 3, 2x2 )T e G(x) = A. Ismael F. Vaz (UMinho) 12x21 0 0 2 Optimização Bioinformática 09/10 110 / 218 Método de Segurança de Newton 1a iteração g (1) (1) = g(x T ) = (−3, 2) G 0 0 3 0 2 −2 (1) = G(x (1) )= 0 0 0 2 → Impossível 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 09/10 111 / 218 Método de Segurança de Newton Procura unidimensional x(1) = (0, 1)T α=1 f (1) = 1 g (1)T d(1) = −13 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 09/10 112 / 218 Método de Segurança de Newton Critério de paragem kx(2) − x(1) k = kx(2) k √ 1.52 + 12 = 1.201 0.5 1.5 Logo passa-se à próxima iteração. As restantes condições seriam (neste caso não é necessário verificar) |f (2) − f (1) | 1 − 0.5625 = = 0.7778 0.5 (2) 0.5625 |f | e kg (2) k = k(10.5, 0)T k = 10.5 0.5 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 113 / 218 Método de Segurança de Newton 2a iteração x(2) = (1.5, 0)T (2) T (2) 27 0 0 2 g = (10.5, 0) G = 27 0 −10.5 → d(2) = (−0.3889, 0)T 0 2 0 d(2) é quase ortogonal com o gradiente? kd(2) k = 0.3889 kg (2) k = 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 09/10 114 / 218 Método de Segurança de Newton 2a iteração - Cont. d(2) é direcção de descida? kd(2) k = 0.3889 kg (2) k = 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 09/10 115 / 218 Método quasi-Newton Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 116 / 218 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 09/10 117 / 218 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.) ! ! (k) s(k)T (k) y (k)T y s(k) s(k)T s H (k+1) = I − (k)T (k) H (k) I − (k)T (k) + (k)T (k) s y y s s y 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 09/10 118 / 218 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 09/10 119 / 218 Método quasi-Newton Exemplo Considere-se o seguinte problema de optimização (x(1) = (0, 1)T e = 0.5) min x41 + x22 − 3x1 x∈R2 Temos que g(x) = (4x31 − 3, 2x2 )T . 1a iteração 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 09/10 120 / 218 Método quasi-Newton Critério de paragem kx(2) − x(1) k = kx(2) k √ 1.52 + 12 = 1.201 0.5 1.5 Logo passa-se à próxima iteração. 2a iteração x(2) = (1.5, 0)T e g (2) = (10.5, 0)T H (2) = s(1) y (1)T I − (1)T (1) s y ! H (1) y (1) s(1)T I − (1)T (1) y s ! + 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 09/10 121 / 218 Método quasi-Newton Cont. s (1) (1)T y 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 s(1) y (1)T I − (1)T (1) = s y 1 0 (1) (1)T s H (2) = s 0.0899 0.6067 0 1 − = 0.1348 0.9101 H A. Ismael F. Vaz (UMinho) 1.5 −1 H (2) 0.9101 −0.6067 (1.5, −1) = (1) = −0.1348 0.0899 0.0899 0.1348 = 0.0899 0.6067 2.25 −1.5 −1.5 1 0.6067 0.9101 0.1274 0.1098 0.1098 1.2413 Optimização + 0.1348 0.9101 0.1011 −0.0674 −0.0674 0.0449 Bioinformática 09/10 122 / 218 Método quasi-Newton Cont. (2) d = −H 0.1274 0.1098 g =− 0.1098 0.8202 −1.3377 (2) d = −1.1529 (2) (2) 10.5 0 Procura unidimensional ... A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 123 / 218 Optimização sem restrições com o R Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 124 / 218 Optimização sem restrições com o R Funções R (base) O R fornece um conjunto de funções para optimização linear e não linear das quais se destacam: uniroot - Zero de funções unidimensionais; optimize - Optimização de uma função unidimensional num intervalo. nlm - Minimização usando um algoritmo do tipo Newton; optim - Função genérica para optimização baseada nos algoritmos de Nelder-Mead, quasi-Newton e gradientes conjugados; A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 125 / 218 Optimização sem restrições com o R Zeros de funções A função uniroot > f <- function (x) sin(x)+2*cos(x) > xmin <- uniroot(f, c(0, pi), tol = 0.0001) > xmin $root [1] 2.034445 $f.root [1] -2.477787e-06 $iter [1] 5 $estim.prec [1] 5e-05 O intervalo tem que obedecer a f (lower) ∗ f (upper) ≤ 0. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 126 / 218 Optimização sem restrições com o R Exemplo não linear unidimensional Um navio encontra-se atracado num porto. A distância h, de um dado ponto do casco do navio ao fundo do mar, varia com a maré. Admita que h é dada, em função do tempo x, por h(x) = 10 − 3 cos(2x). Qual a distância desse ponto do casco ao fundo do mar no momento da maré alta? Formulação do problema maxx∈R h(x) ≡ 10 − 3 cos(2x) Sabendo que x >= 0. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 127 / 218 Optimização sem restrições com o R 10 7 8 9 hx(x) 11 12 13 Exemplo não linear unidimensional 0 1 2 3 4 5 6 x A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 128 / 218 Optimização sem restrições com o R Exemplo não linear unidimensional Resolução > hx <- function(x) 10-3*cos(2*x) > x <- seq(0,6,0.1) # Para o plot > plot(x,hx(x),’l’) # Plot > optimize(hx,c(1,2),maximum=TRUE) $maximum [1] 1.57078 $objective [1] 13 O algoritmo O algoritmo usado é um algoritmo do tipo Secção Dourada com interpolação quadrática. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 129 / 218 Optimização sem restrições com o R Exemplo não linear unidimensional - outra abordagem Resolução > hx <- function(x) 3*cos(2*x)-10 > optimize(hx,c(1,2)) $minimum [1] 1.57078 $objective [1] -13 Função simétrica Atenção que o minimizante é o mesmo que o maximizante, mas os valores das funções objectivo são o simétrico. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 130 / 218 Optimização sem restrições com o R Exemplo não linear Considere que um montante xi é afectado ao projecto i, para i = 1, . . . , n, sendo o retorno esperado desta carteira de projectos dado por f (x1 , . . . , xn ) = n n−1 X 1 1X (αi xi − βi x2i ) + (xi xi+1 ) (n > 1). 2 2 i=1 i=1 Para n = 2, α1 = 1, α2 = 2, β1 = β2 = 1, pretende-se calcular x1 e x2 de modo a maximizar o retorno esperado. O problema é modelado como um problema de optimização sem restrições x21 x22 x1 x2 max f (x1 , x2 ) ≡ x1 − + 2x2 − + 2 2 2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 131 / 218 Optimização sem restrições com o R A resolução – Curvas de nível Função e curvas de nível > f <- function(x) { + (x[1]-x[1]^2/2)+(2*x[2]-x[2]^2/2)+x[1]*x[2]/2 + } > x1=seq(2,4,0.1) > x2=seq(2,4,0.1) > z<-matrix(0,length(x1),length(x2)) > for (i in 1:length(x1)) + { for (j in 1:length(x2)) + { z[i,j]<-f(c(x1[i],x2[j])) } + } > contour(x1,x2,z,50) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 132 / 218 Optimização sem restrições com o R 4.0 A resolução – Curvas de nível 4.3 5 4.4 35 4. 4.5 5 4.4 25 4. 4.65 4.5 3.5 4.5 1 4. 3.6 5 3.0 4.6 3. 45 5 4.3 4.25 4.3 3.9 4.05 2.0 5 3.8 A. Ismael F. Vaz (UMinho) 2.5 5 3.7 3.3 5 3.5 3.5 3.0 Optimização 3.1 3.6 3.8 5 3.7 3.9 4.1 4 15 3. 3.4 4.15 4.2 2.0 3. 2 2.5 5 4.4 4.4 3.3 5 5 3.0 3 3.5 5 2.7 85 2. 2.5 9 2. 6 2. 55 2. 2 2. 4.0 Bioinformática 09/10 133 / 218 Optimização sem restrições com o R Minimização de f (maximização de g) > g <- function(x) { -f(x) } # problema de maximização > nlm(g,c(2.6,3.3)) $minimum [1] -4.666667 $estimate [1] 2.666664 3.333330 $gradient [1] 0.000000e+00 5.329075e-10 $code [1] 1 $iterations [1] 3 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 134 / 218 Optimização sem restrições com o R Usando o gradiente > g <- function(x) { + res <- (x[1]-x[1]^2/2)+(2*x[2]-x[2]^2/2)+x[1]*x[2]/2 + attr(res, "gradient") <- -1.0*c((1-x[1])+x[2]/2,(2-x[2])+x[1]/2) + -res + } > nlm(g,c(2.6,3.3)) $minimum [1] -4.666667 $estimate [1] 2.666667 3.333333 $gradient [1] -2.220446e-16 2.220446e-16 $code [1] 1 $iterations [1] 3 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 135 / 218 Optimização sem restrições com o R Usando o gradiente e a hessiana > + + + + + g <- function(x) { res <- (x[1]-x[1]^2/2)+(2*x[2]-x[2]^2/2)+x[1]*x[2]/2 attr(res, "gradient") <- -1.0*c((1-x[1])+x[2]/2,(2-x[2])+x[1]/2) attr(res, "hessian") <- -1.0*matrix(c(-1.0, 0.5, 0.5, -1.0), 2, 2) -res } A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 136 / 218 Optimização sem restrições com o R Usando o gradiente e a hessiana > nlm(g,c(2.6,3.3),hessian=TRUE) $minimum [1] -4.666667 $estimate [1] 2.666667 3.333333 $gradient [1] -2.220446e-16 2.220446e-16 $hessian [,1] [,2] [1,] 1.0 -0.5 [2,] -0.5 1.0 $code [1] 1 $iterations [1] 1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 137 / 218 Optimização sem restrições com o R A resolução com optim (Nelder-Mead) > fr <- function(x) (x[1]-x[1]^2/2)+(2*x[2]-x[2]^2/2)+x[1]*x[2]/2 > optim(c(2.6,3.3),fr,control=list(fnscale=-1.0)) $par [1] 2.666414 3.333672 $value [1] 4.666667 $counts function gradient 39 NA $convergence [1] 0 $message NULL A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 138 / 218 Optimização sem restrições com o R A resolução com optim (quasi-Newton) sem gradiente > optim(c(2.6,3.3),fr,method="BFGS",control=list(fnscale=-1.0)) $par [1] 2.666667 3.333333 $value [1] 4.666667 $counts function gradient 6 4 $convergence [1] 0 $message NULL A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 139 / 218 Optimização sem restrições com o R A resolução com optim (quasi-Newton) com gradiente > gr <- function(x) c((1-x[1])+x[2]/2,(2-x[2])+x[1]/2) > optim(c(2.6,3.3),fr,gr,method="BFGS",control=list(fnscale=-1.0)) $par [1] 2.666667 3.333333 $value [1] 4.666667 $counts function gradient 5 4 $convergence [1] 0 $message NULL A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 140 / 218 Optimização sem restrições com o R A resolução com optim (quasi-Newton) sem gradiente > optim(c(2.6,3.3),fr,method="BFGS", + control=list(fnscale=-1.0,maxit=4)) $par [1] 2.666667 3.333333 $value [1] 4.666667 $counts function gradient 4 4 $convergence [1] 1 $message NULL A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 141 / 218 Optimização sem restrições com o R A solução do problema proposto > + + > > > > + + + > > > f <- function(x) { (x[1]-x[1]^2/2)+(2*x[2]-x[2]^2/2)+x[1]*x[2]/2 } x1=seq(2,4,0.1) x2=seq(2,4,0.1) z<-matrix(0,length(x1),length(x2)) for (i in 1:length(x1)) { for (j in 1:length(x2)) { z[i,j]<-f(c(x1[i],x2[j])) } } contour(x1,x2,z,50) dim(sol$par) <- c(1,2) points(sol$par,pch=24) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 142 / 218 Optimização sem restrições com o R 4.0 Solução – Curvas de nível 4.3 5 4.4 35 4. 4.5 5 4.4 25 4. 4.65 4.5 3.5 4.5 1 4. 3.6 5 3.0 4.6 3. 45 5 4.3 4.25 4.3 3.9 4.05 2.0 5 3.8 A. Ismael F. Vaz (UMinho) 2.5 5 3.7 3.3 5 3.5 3.5 3.0 Optimização 3.1 3.6 3.8 5 3.7 3.9 4.1 4 15 3. 3.4 4.15 4.2 2.0 3. 2 2.5 5 4.4 4.4 3.3 5 5 3.0 3 3.5 5 2.7 85 2. 2.5 9 2. 6 2. 55 2. 2 2. 4.0 Bioinformática 09/10 143 / 218 Optimização não linear com restrições de igualdade Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 144 / 218 Optimização não linear com restrições de igualdade Formulação geral (3) min f (x) x∈Rn s.a c(x) = 0 em que f (x) e c(x) são funções não lineares em x. f (x) : Rn → R T x = (x1 , x2 , . . . , xn ) c(x) : Rn → Rm n é o número de variáveis do problema m é o número de restrições de igualdade c(x) = (c1 (x), c2 (x), . . . , cm (x))T Vamos supor que f (x) e c(x) são funções duas vezes diferenciáveis. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 145 / 218 Optimização não linear com restrições de igualdade Exemplo Exemplo 1 min ex1 x2 x3 x4 x5 x∈R5 s.a x21 + x22 + x23 + x24 + x25 = 10 x2 x3 = 5x4 x5 x31 + x32 = −1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 146 / 218 Optimização não linear com restrições de igualdade Exemplo (cont.) Temos então f (x) = ex1 x2 x3 x4 x5 c1 (x) = x21 + x22 + x23 + x24 + x25 − 10 c2 (x) = x2 x3 − 5x4 x5 c3 (x) = x31 + x32 + 1 com n = 5 e m = 3. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 147 / 218 Optimização não linear com restrições de igualdade Notação Gradiente de f (x) (vector de n elementos) ∂f ∂x1 ∇f (x) = .. . ∂f ∂xn Hessiana de f (x) (matriz simétrica de n × n) ∂2f ... ∂x21 2 ∇ f (x) = . . . ∂2f ∂x1 ∂xn . . . A. Ismael F. Vaz (UMinho) Optimização ∂2f ∂xn ∂x1 ... ∂2f ∂x2n Bioinformática 09/10 148 / 218 Optimização não linear com restrições de igualdade Notação Gradiente de c1 (x) (vector de n elementos) ∇c1 (x) = ∂c1 ∂x1 .. . ∂c1 ∂xn ... Gradiente de cm (x) (vector de n elementos) ∇cm (x) = A. Ismael F. Vaz (UMinho) ∂cm ∂x1 .. . ∂cn ∂xn Optimização Bioinformática 09/10 149 / 218 Optimização não linear com restrições de igualdade Notação Matriz Jacobiano das restrições (matriz n × m) ∂c1 ∂x1 ∇c(x) = ... ∂c1 ∂xn ∂c2 ∂x1 ... ∂c2 ∂xn ... ... .. . ∂cm ∂x1 .. . ∂cm ∂xn ou ∇c(x) = (∇c1 (x)∇c2 (x) . . . ∇cm (x)) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 150 / 218 Optimização não linear com restrições de igualdade Notação Hessiana de c1 (x) (matriz simétrica de n × n) ∇2 c1 (x) = ∂ 2 c1 ∂x21 ... ... ∂ 2 c1 ∂x1 ∂xn ... ... ∂ 2 c1 ∂xn ∂x1 ... ∂ 2 c1 ∂x2n Hessiana de cm (x) (matriz simétrica de n × n) ∇2 cm (x) = ∂ 2 cm ∂x21 ... ... ∂2c m ∂x1 ∂xn ... ∂ 2 cm ∂xn ∂x1 ... ∂2c m ∂x2n Existem m Hessianas das restrições (n × n). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 151 / 218 Optimização não linear com restrições de igualdade Condições de optimalidade Seja λ um vector de m elementos (vector dos multiplicadores de Lagrange) λ = (λ1 , λ2 , . . . , λm )T A função Lagrangeana associada ao problema (3) é L(x, λ) = f (x) − λT c(x) m X = f (x) − λi ci (x) i=1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 152 / 218 Optimização não linear com restrições de igualdade Condição de regularidade Seja x∗ uma solução do problema. Se os vectores ∇c1 (x∗ ), ∇c2 (x∗ ), . . . , ∇cm (x∗ ) (gradientes das restrições, calculados na solução) forem linearmente independentes, então x∗ é ponto regular. Pergunta: Como se verifica se um conjunto de vectores é linearmente independente (em termos informáticos)? A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 153 / 218 Optimização não linear com restrições de igualdade Condições necessárias e suficientes de 1a ordem Seja x∗ uma solução do problema. Se x∗ é ponto regular, então existe um λ∗ tal que ∇x L(x∗ , λ∗ ) = ∇f (x∗ ) − ∇c(x∗ )λ∗ = 0 n equações e ∇λ L(x∗ , λ∗ ) = −c(x∗ ) = 0 m equações Este sistema de n + m equações é não linear em x e define as condições Kuhn-Tucker (KT). O par (x∗ , λ∗ ) chama-se par KT. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 154 / 218 Optimização não linear com restrições de igualdade Interpretação das condições KT ∇λ L(x∗ , λ∗ ) = c(x∗ ) = 0 significa que o ponto verifica as restrições, ou seja, x∗ é ponto admissível. ∇x L(x∗ , λ∗ ) = ∇f (x∗ ) − ∇c(x∗ )λ∗ = 0 ⇔ ∇f (x∗ ) = ∇c(x∗ )λ∗ m X ⇔ ∇f (x∗ ) = λ∗i ∇ci (x∗ ) i=1 significa que o gradiente de f (∇f ) é uma combinação linear dos gradientes das restrições (das colunas de ∇c(x∗ )). Pergunta: Dado um x∗ como determinar os valores de λ∗ ? A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 155 / 218 Optimização não linear com restrições de igualdade Exemplo Exemplo 2 min f (x) ≡ x1 + x2 x∈R2 s.a c(x) = x21 − x22 = 0 Considere x∗ = (1, −1)T e x̄ = (2, 2)T . Tem-se que 1 2x1 ∇f (x) = e ∇c(x) = 1 −2x2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 156 / 218 Optimização não linear com restrições de igualdade Condições KT Em x∗ Em x̄ ∇f (x∗ ) = 1 1 2 2 2 2 1 1 4 −4 ∇f (x̄) = e ∇c(x∗ ) ⇒ 1 1 = = λ∗ ∇c(x̄) = ∃ um λ∗ (λ∗ = 0.5) A. Ismael F. Vaz (UMinho) ⇒ 1 1 = λ̄ 4 −4 @ um λ̄ Optimização Bioinformática 09/10 157 / 218 Optimização não linear com restrições de igualdade Condição necessária de 2a ordem - Mínimo Seja x∗ uma solução do problema. Se x∗ é ponto regular então para todos os vectores s ∈ Rn que verificam ∇c(x∗ )T s = 0 (direcções tangentes às curvas admissíveis), tem-se sT ∇2xx L(x∗ , λ∗ )s ≥ 0. Nota: ∇2xx L(x, λ) 2 = ∇ f (x) − m X λi ∇2 ci (x) i=1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 158 / 218 Optimização não linear com restrições de igualdade Condição suficiente de 2a ordem - Mínimo Se (x∗ , λ∗ ) é um par KT, isto é, verifica as condições KT ∇x L(x∗ , λ∗ ) = 0 ∇λ L(x∗ , λ∗ ) = 0 e se sT ∇2xx L(x∗ , λ∗ )s > 0 para todo o s (s 6= 0) tal que ∇c(x∗ )T s = 0 então x∗ é minimizante local forte. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 159 / 218 Optimização não linear com restrições de igualdade O exemplo em x∗ ∇2xx L(x∗ , λ∗ ) = 0 0 0 0 − 0.5 2 0 0 −2 = −1 0 0 1 ∇c(x∗ )T s = 0 ⇒ s1 = −s2 Como T s ∇2xx L(x∗ , λ∗ )s = (−s2 , s2 ) −1 0 0 1 −s2 s2 =0 nada se pode concluir. Problema: Verificar as condições de optimalidade para o Exemplo 2 com x1 = (−1, 1), x2 = (0, 0) e x3 = (−1, −1). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 160 / 218 Optimização não linear com restrições de desigualdade Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 161 / 218 Optimização não linear com restrições de desigualdade Formulação geral: (4) min f (x) x∈Rn s.a c(x) ≥ 0 em que f (x) e c(x) são funções não lineares em x. f (x) : Rn → R T x = (x1 , x2 , . . . , xn ) c(x) : Rn → Rm n é o número de variáveis do problema m é o número de restrições de desigualdade c(x) = (c1 (x), c2 (x), . . . , cm (x))T Vamos supor que f (x) e c(x) são funções duas vezes diferenciáveis. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 162 / 218 Optimização não linear com restrições de desigualdade Condições de optimalidade Seja λ um vector de m elementos (vector dos multiplicadores de Lagrange) λ = (λ1 , λ2 , . . . , λm )T A função Lagrangeana associada ao problema (4) é L(x, λ) = f (x) − λT c(x) m X = f (x) − λi ci (x) i=1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 163 / 218 Optimização não linear com restrições de desigualdade Restrições activas Seja x̄ um ponto dado. As restrições ci (x̄) ≥ 0, i ∈ A, dizem-se activas em x̄ se ci (x̄) = 0. O conjunto A contém os índices das restrições activas. Restrições activas Poderíamos dizer que as restrições activas são aquelas que participam na caracterização da solução. Enquanto que as não activas “não interessam” para essa caracterização. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 164 / 218 Optimização não linear com restrições de desigualdade Condição de regularidade Seja x∗ uma solução do problema. Se os vectores ∇ci (x∗ ), i ∈ A (gradientes das restrições activas, calculados na solução) forem linearmente independentes, então x∗ é ponto regular. Ponto regular A definição é idêntica para o caso das restrições de igualdade, mas no caso de problemas com restrições de desigualdade só as restrições activas é que “contam”. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 165 / 218 Optimização não linear com restrições de desigualdade Condições necessárias e suficientes de 1a ordem - Mínimo Seja x∗ uma solução do problema. Se x∗ é ponto regular, então existe um λ∗ tal que ∇x L(x∗ , λ∗ ) = ∇f (x∗ ) − ∇c(x∗ )λ∗ = 0 c(x∗ ) ≥ 0 ponto estacionário da Lag. admissibilidade λ∗ ≥ 0 “positiveness” e (λ∗ )T c(x∗ ) = 0 A. Ismael F. Vaz (UMinho) complementaridade Optimização Bioinformática 09/10 166 / 218 Optimização não linear com restrições de desigualdade Interpretação das condições KT A complementaridade ((λ∗ )T c(x∗ ) = 0) diz-nos que as restrições não activas têm multiplicadores iguais a zero (ci (x∗ ) > 0 ⇒ λ∗i = 0, i ∈ / A). Para as restrições activas os multiplicadores de Lagrange correspondentes podem ou não ser zero. Se forem zero estamos na presença de um problema degenerado. No caso de não existirem multiplicadores iguais a zero para as restrições activas diz-se que a complementaridade é estrita. c(x∗ ) ≥ 0 significa que o ponto verifica as restrições, ou seja, x∗ é ponto admissível. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 167 / 218 Optimização não linear com restrições de desigualdade Interpretação das condições KT ∇x L(x∗ , λ∗ ) = ∇f (x∗ ) − ∇c(x∗ )λ∗ = 0 ⇔ ∇f (x∗ ) = ∇c(x∗ )λ∗ m X ⇔ ∇f (x∗ ) = λ∗i ∇ci (x∗ ) i=1 significa que o gradiente de f (∇f ) é uma combinação linear dos gradientes das restrições (das colunas de ∇c(x∗ ). Nota: As restrições inactivas não influenciam, uma vez que λ∗i = 0, i ∈ / A. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 168 / 218 Optimização não linear com restrições de desigualdade Exemplo (Nash&Sofer) Exemplo min f (x) ≡ x1 x∈R2 s.a (x1 + 1)2 + x22 ≥ 1 x21 + x22 ≤ 2 √ Considere x1 = (0, 0)T , x2 = (−1, −1)T e x3 = (0, 2)T . Tem-se que (x1 + 1)2 + x22 − 1 L(x, λ) = x1 − (λ1 , λ2 ) 2 − x21 − x22 = x1 − λ1 (x1 + 1)2 + x22 − 1 + λ2 x21 + x22 − 2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 169 / 218 Optimização não linear com restrições de desigualdade Condições KT Logo ∇x L(x, λ) = 1 − 2λ1 (x1 + 1) + 2λ2 x1 −2λ1 x2 + 2λ2 x2 Para x1 = (0, 0)T apenas a primeira restrição está activa, logo λ2 = 0. Resolvendo ∇x L(x1 , λ) = 0 em ordem a λ1 vem 1 1 − 2λ1 = 0 ⇒ λ1 = 0 =0 2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 170 / 218 Optimização não linear com restrições de desigualdade Para x2 = (−1, −1)T ambas as restrições estão activas e resolvendo ∇x L(x2 , λ) = 0 em ordem aos multiplicadores de Lagrange obtemos 1 1 − 2λ2 =0 ⇒ λ1 = λ2 = 2λ1 − 2λ2 = 0 2 √ Para x3 = (0, 2)T apenas a segunda restrição está activa e resolvendo ∇x L(x3 , λ) = 0 em ordem a λ2 (λ1 = 0) obtemos 1 +√ 2λ2 (0) = 0 2λ2 2 =0 que é um sistema inconsistente e consequentemente x3 não satisfaz as condições de optimalidade de primeira ordem. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 171 / 218 Optimização não linear com restrições de desigualdade Condição necessária de 2a ordem - Mínimo Seja x∗ uma solução do problema. Se x∗ é ponto regular então para todos os vectores s ∈ Rn que verificam ∇C(x∗ )T s = 0, em que C(x∗ ) é uma matriz formada pelas restrições activas em x∗ (direcções tangentes às curvas admissíveis), tem-se sT ∇2xx L(x∗ , λ∗ )s ≥ 0. Nota Condição idêntica à apresentada para os problemas com restrições de igualdade, mas apenas se considera as restrições activas no caso das desigualdades. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 172 / 218 Optimização não linear com restrições de desigualdade Condição suficiente de 2a ordem - Mínimo Se (x∗ , λ∗ ) é um par KT, isto é, verifica as condições KT ∇x L(x∗ , λ∗ ) = 0 ∇λ L(x∗ , λ∗ ) = 0 e se sT ∇2xx L(x∗ , λ∗ )s > 0 para todo o s (s 6= 0) tal que ∇C+ (x∗ )T s = 0 então x∗ é minimizante local forte. C+ é uma matriz formada pelas restrições activas não degeneradas (multiplicadores diferentes de zero). A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 173 / 218 Optimização não linear com restrições de desigualdade O exemplo em x1 ∇2xx L(x, λ) = 2(λ2 − λ1 ) 0 0 2(λ2 − λ1 ) Logo para x1 = (0, 0)T e λ1 = ( 12 , 0)T temos que ∇2xx L(x, λ) = −1 0 0 −1 1 Como ∇C(x1 ) = (2, 0)T temos s = (0, s2 )T e consequentemente −1 0 0 (0, s2 ) = −s22 ≤ 0 (s2 6= 0) 0 −1 s2 Logo x1 não é mínimo local. Não é máximo local porque λ1 ≥ 0. 1 definida negativa A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 174 / 218 Optimização não linear com restrições de desigualdade O exemplo em x2 0 −2 Como = tem-se que @s 6= 0 : ∇C(x2 )T s = 0 e a 2 2 condição suficiente é verificada trivialmente. ∇C(x2 ) Nota λ1 = λ2 = 1 2 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 175 / 218 Optimização com restrições com o R Conteúdo 1 Introdução 2 Optimização 3 Optimização não linear sem restrições 4 R - Introdução 5 Método de Segurança de Newton 6 Método quasi-Newton 7 Optimização sem restrições com o R 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 R A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 176 / 218 Optimização com restrições com o R Funções R O R fornece um conjunto de funções para optimização linear e não linear das quais se destacam: solveLP - Optimização linear (Pacote linprog); constrOptim - Optimização não linear com restrições lineares; Rdonlp2 ou Rsolnp2 - Optimização não linear com restrições. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 177 / 218 Optimização com restrições com o R Exemplo linear Uma empresa procede à montagem de quatro produtos (1, 2, 3, 4) a partir de componentes entregues. O lucro por unidade para cada produto (1, 2, 3, 4) é 10, 15, 22, 17 euros, respectivamente. O pedido máximo na próxima semana para cada produto (1, 2, 3, 4) é 50, 60, 85 e 70 unidades, respectivamente. Existem três estados (A, B, C) na montagem manual de cada produto e as horas-homem necessárias para cada estado por unidade de produto são Estado A B C 1 2 2 3 Produto 2 3 2 1 4 1 6 1 4 1 2 5 O tempo disponível na próxima semana para a montagem em cada estado (A, B, C) é 160, 200 e 80 homens-hora, respectivamente. É possível variar os homens-hora que montam em cada estado tal que os trabalhadores no estado B possam passar até 20% do seu tempo no estado A e os trabalhadores do estado C possam passar até 30% do seu tempo no estado A. Restrições de produção obrigam a que a razão (número de unidade do produto 1)/(número de unidades do produto 4) tem que estar entre 0.9 e 1.15. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 178 / 218 Optimização com restrições com o R Exemplo linear – formulação Variáveis: xi – quantidade do produto i = 1, 2, 3, 4 produzida, tBA – quantidade de tempo transferido de B para A, tCA – quantidade de tempo transferido de C para A. Restrições de capacidade máxima: x1 ≤ 50, x2 ≤ 60, x3 ≤ 85, x4 ≤ 70 Restrição de razão: 0.9 <= (x1/x4) <= 1.15, i.e., 0.9x4 ≤ x1 e x1 ≤ 1.15x4 Restrições do tempo de trabalho: 2x1 + 2x2 + x3 + x4 ≤ 160 + tBA + tCA , 2x1 + 4x2 + x3 + 2x4 ≤ 200 − tBA , 3x1 + 6x2 + x3 + 5x4 ≤ 80 − tCA Limites nas transferências: tBA ≤ 0.2(200), tC A ≤ 0.3(80) Limites simples: xi ≥ 0, i = 1, 2, 3, 4 Função objectivo: max 10x1 + 15x2 + 22x3 + 17x4 Ignora-se o facto das variáveis xi , i = 1, 2, 3, 4 terem de ser inteiras. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 179 / 218 Optimização com restrições com o R O problema linear min x∈R6 − 10x1 − 15x2 − 22x3 − 17x4 s.a 0 ≤ x1 ≤ 50 0 ≤ x2 ≤ 60 0 ≤ x3 ≤ 85 0 ≤ x4 ≤ 70 0 ≤ x5 ≤ 40 0 ≤ x6 ≤ 24 − x1 + 0.9x4 ≤ 0 x1 − 1.15x4 ≤ 0 2x1 + 2x2 + x3 + x4 − x5 − x6 ≤ 160 2x1 + 4x2 + x3 + 2x4 + x5 ≤ 200 3x1 + 6x2 + x3 + 5x4 + x6 ≤ 80 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 180 / 218 Optimização com restrições com o R O problema linear – Forma matricial (−10, −15, −22, −17, 0, 0)x 50 0 60 0 85 0 s.a ≤ x ≤ 70 0 40 0 24 0 −1 0 0 0.9 0 0 1 0 0 −1.15 0 0 2 2 1 1 −1 −1 x ≤ 2 4 1 2 1 0 3 6 1 5 0 1 min x∈R6 A. Ismael F. Vaz (UMinho) Optimização 0 0 160 200 80 Bioinformática 09/10 181 / 218 Optimização com restrições com o R R solveLP Load do pacote Não esquecer de fazer load do pacote linprog > > > + + + + + > cvec <- c(-10, -15, -22, -17, 0, 0) bvec <- c(50, 60, 85, 70, 40, 24, 0, 0, 160, 200, 80) Amat <- rbind(diag(length(cvec)), c(-1, 0, 0, 0.9, 0, 0), c(1, 0, 0, -1.15, 0, 0), c(2, 2, 1, 1, -1, -1), c(2, 4, 1, 2, 1, 0), c(3, 6, 1, 5, 0, 1)) solveLP( cvec, bvec, Amat, maximum=FALSE, maxiter=1000) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 182 / 218 Optimização com restrições com o R R solveLP - Output Results of Linear Programming / Linear Optimization Objective function (Minimum): [1] -1760 Iterations in phase 1: 0 Iterations in phase 2: 1 Basic Variables opt 3 80 # Variável != zero S 1 50 # Variáveis de folga S 2 60 S 3 5 S 4 70 S 5 40 S 6 24 S 7 0 S 8 0 S 9 80 S 10 120 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 183 / 218 Optimização com restrições com o R R solveLP - Output Constraints max actual diff dual price dual.reg 1 50 0 50 0 50 2 60 0 60 0 60 3 85 80 5 0 5 4 70 0 70 0 70 5 40 0 40 0 40 6 24 0 24 0 24 7 0 0 0 0 NA 8 0 0 0 0 NA 9 160 80 80 0 80 10 200 80 120 0 120 11 80 80 0 -22 80 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 184 / 218 Optimização com restrições com o R R solveLP - Output All Variables (including slack variables) opt c min c max c marg. marg.reg. 1 0 -10 -66.0000 Inf 56 26.6667 2 0 -15 -132.0000 Inf 117 13.3333 3 80 -22 -Inf -3.400 NA NA 4 0 -17 -110.0000 Inf 93 16.0000 5 0 0 0.0000 Inf 0 40.0000 6 0 0 -22.0000 Inf 22 24.0000 S 1 50 0 -Inf 56.000 0 50.0000 S 2 60 0 -Inf 117.000 0 60.0000 S 3 5 0 -18.6000 NA 0 5.0000 S 4 70 0 -Inf 93.000 0 70.0000 S 5 40 0 -Inf Inf 0 40.0000 S 6 24 0 -Inf 22.000 0 24.0000 S 7 0 0 -56.0000 103.333 0 NA S 8 0 0 -80.8696 56.000 0 NA S 9 80 0 -11.0000 NA 0 80.0000 S 10 120 0 -22.0000 NA 0 120.0000 S 11 0 0 NA NA 22 80.0000 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 185 / 218 Optimização com restrições com o R Interpretação geométrica de um problema Suponhamos que um agricultor tem um pedaço de terra de área Akm2 , para ser semeado com trigo ou cevada ou uma combinação de ambas. O fazendeiro tem uma quantidade limitada de fertilizante F permitido e de insecticida P permitido que podem ser usados. Cada um deles sendo necessários em quantidades diferentes por unidade de área para o trigo (F1 , P1 ) e para a cevada (F2 , P2 ). Seja S1 o preço de venda do trigo, e S2 o da cevada. Se chamarmos à área plantada com trigo e cevada de x1 e x2 , respectivamente, então o número óptimo de quilómetros quadrados de plantação com trigo vs cevada pode ser formulado como o seguinte problema de programação linear: max S1 x1 + S2 x2 (lucro) x1 + x2 ≤ A (limite da área total) s.a F1 x1 + F2 x2 ≤ F (limite do fertilizante) P1 x1 + P2 x2 ≤ P (limite do insecticida) x1 , x2 ≥ 0 (área não negativa) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 186 / 218 Optimização com restrições com o R Interpretação geométrica de um problema S1 = 2, S2 = 1.5, A = 10, F = 9, P = 45, (F1 , P1 ) = (0.5, 6), (F2 , P2 ) = (1.7, 1) > cvec=c(-2, -1.5) > Amat=rbind(c(1,1), c(0.5, 1.7), c(6, 1)) > bvec=c(10, 9, 45) > solveLP( cvec, bvec, Amat, maximum=FALSE, maxiter=1000) Results of Linear Programming / Linear Optimization Objective function (Minimum): [1] -18.5 Iterations in phase 1: 0 Iterations in phase 2: 2 Basic Variables opt 1 7.0 2 3.0 S 2 0.4 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 187 / 218 Optimização com restrições com o R Interpretação geométrica de um problema Constraints max actual diff dual price dual.reg 1 10 10.0 0.0 -1.4 2.50000 2 9 8.6 0.4 0.0 0.40000 3 45 45.0 0.0 -0.1 1.66667 All Variables (including slack variables) opt c min c max c marg. marg.reg. 1 7.0 -2.0 -9.00000 -1.500000 NA NA 2 3.0 -1.5 -2.00000 -0.333333 NA NA S 1 0.0 0.0 NA NA 1.4 2.50000 S 2 0.4 0.0 -0.72165 0.416667 0.0 0.40000 S 3 0.0 0.0 NA NA 0.1 1.66667 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 188 / 218 Optimização com restrições com o R Interpretação geométrica de um problema > f <- function(x) { sum(c(-2,-1.5)*x) } > constrOptim(c(0,0), f, NULL, ui=-Amat, ci=-bvec) $par [1] 6.999975 3.000025 $value [1] -18.49999 $counts function gradient 169 NA $convergence [1] 0 $message NULL $outer.iterations [1] 5 $barrier.value [1] -0.006323227 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 189 / 218 Optimização com restrições com o R Interpretação geométrica de um problema > g <- function(x) { c(-2,-1.5) } > constrOptim(c(0,0), f, g, ui=-Amat, ci=-bvec) $par [1] 6.99999 3.00001 $value [1] -18.49999 $counts function gradient 18 1 $convergence [1] 0 $message NULL $outer.iterations [1] 10 $barrier.value [1] -0.006323294 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 190 / 218 Optimização com restrições com o R Interpretação geométrica de um problema > > > > > > > > x1 <- seq(0,10,0.1) x2 <- seq(0,10,0.1) z <- outer(x1,x2,f <- function(x1,x2) -x1-1.5*x2) contour(x1,x2,z,20,method=’edge’) lines(c(0,10),c(10,0),col=’red’,lwd=2) lines(c(0,10),c(5.29,2.35),col=’red’,lwd=2) lines(c(0,10),c(45,-15),col=’red’,lwd=2) text(3,2,"Região admissível",cex=2,font=2,col=’blue’) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 191 / 218 Optimização com restrições com o R 10 Interpretação geométrica de um problema -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -14 8 -13 -12 -11 6 -10 -9 4 x2 -8 -6 2 -5 -3 Região admissível -2 -1 0 -4 0 2 -7 4 6 8 10 x1 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 192 / 218 Optimização com restrições com o R Exemplo de programação quadrática Problema quadrático min −x1 x3 − x2 x4 x∈[0,5]3 s.a 0 ≤ x1 + x2 − 2.5 ≤ 5.0 0 ≤ x1 + x3 − 2.5 ≤ 5.0 0 ≤ x1 + x4 − 2.5 ≤ 5.0 0 ≤ x2 + x3 − 2.0 ≤ 5.0 0 ≤ x2 + x4 − 2.0 ≤ 5.0 0 ≤ x3 + x4 − 1.5 ≤ 5.0 x1 + x2 + x3 + x4 − 5.0 ≥ 0 com x0 = (0, 0, 0)T . A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 193 / 218 Optimização com restrições com o R Exemplo de programação quadrática - AMPL (curiosidade) var x{1..4} >= 0.0, <= 5.0, := 0.0; minimize f: (-x[1]*x[3]-x[2]*x[4]); subject to cons1: 0 <= x[1]+x[2] -2.5 <= 5.0; subject to cons2: 0 <= x[1]+x[3] -2.5 <= 5.0; subject to cons3: 0 <= x[1]+x[4] -2.5 <= 5.0; subject to cons4: 0 <= x[2]+x[3] -2.0 <= 5.0; subject to cons5: 0 <= x[2]+x[4] -2.0 <= 5.0; subject to cons6: 0 <= x[3]+x[4] -1.5 <= 5.0; subject to cons7: x[1]+x[2]+x[3]+x[4]-5.0 >= 0; A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 194 / 218 Optimização com restrições com o R Exemplo em R > > + > > > > > f <- function(x) { -x[1]*x[3]-x[2]*x[4]} A <- rbind(c(1, 1, 0, 0), c(1, 0, 1, 0), c(1, 0, 0, 1), c(0, 1, 1, 0), c(0, 1, 0, 1), c(0, 0, 1, 1)) bl <- c(2.5, 2.5, 2.5, 2.0, 2.0, 1.5) bu <- c(7.5, 7.5, 7.5, 7.0, 7.0, 6.5) Amat <- rbind(A, -A, c(1, 1, 1, 1)) bvec <- c(bl, -bu, 5) constrOptim(c(2.5, 0.1, 2, 2.5), f, NULL, Amat, bvec) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 195 / 218 Optimização com restrições com o R Exemplo em R $par [1] 4.195106 3.304894 3.195810 3.304190 $value [1] -24.32676 $counts function gradient 219 NA $convergence [1] 0 $message NULL $outer.iterations [1] 14 $barrier.value [1] -0.005053065 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 196 / 218 Optimização com restrições com o R Exemplo em R com derivadas > g <- function(x) { c(-x[3], -x[4], -x[1], -x[2]) } > constrOptim(c(2.5, 0.1, 2, 2.5), f, g, Amat, bvec, + method=’BFGS’) $par [1] 4.012254 3.487746 3.487742 3.012258 $value [1] -24.49970 $counts function gradient 19 1 $convergence [1] 0 $message NULL $outer.iterations [1] 17 $barrier.value [1] -0.0050707 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 197 / 218 Optimização com restrições com o R Exemplo não linear com restrições Caixa Pretende-se construir uma caixa cujo comprimento da base é 3 vezes a largura da base. O material usado para construir o topo e base da caixa custa 10e/m2 e o material usado para construir as paredes laterais custa 6e/m2 . Se a caixa tiver um volume de 50m3 determine as dimensões da caixa que minimiza o custo total de construção da caixa. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 198 / 218 Optimização com restrições com o R Formulação Função objectivo Pretende-se minimizar o custo da caixa, i.e.: Custo da tampa e fundo: 10 × 2 × (3 × w × w) = 60w2 ; custo lateral: 6 × (2 × h × 3 × w + 2 × h × w) = 48hw; Custo total: 60w2 + 48hw; Restrição Volume da caixa igual a 50, i.e., 3w2 h = 50. Todas as medidas devem ser positivas, i.e., w > 0, h > 0. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 199 / 218 Optimização com restrições com o R Formulação Formulação matemática do problema Usando w → x1 , h → x2 , min 60x21 + 48x1 x2 s.a 3x21 x2 − 50 = 0 x1 , x2 ≥ 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 200 / 218 Optimização com restrições com o R O pacote Rdonlp2 e Rsolnp2 Localização do pacote Os pacotes podem ser obtidos de http://r-forge.r-project.org/R/?group_id=156. Consistem num ficheiro zip (para Windows e Mac). Instalação do pacote Usar o menu Packages -> Install package(s) from local zip files... Usar o pacote Usar o menu Packages -> Load package... A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 201 / 218 Optimização com restrições com o R Rdonlp2 A versão actual tem problemas de compatibilidade com o R2.10 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 202 / 218 Optimização com restrições com o R Resolução - Sem derivadas > > > > > > > > init <- c(3,1.85) lb <- c(0,0) ub <- c(Inf, Inf) f <- function(x) {60*x[1]^2+48*x[1]*x[2]} con <- list(c1 = function(x) {3*x[1]^2*x[2]}) clb <- 50 cub <- 50 donlp2(init, f, ub, lb, NULL, 0, 0, con, cub, clb) 1 fx= 8.064000e+02 upsi= 5.0e-02 b2n= 1.7e+02 umi= 0.0e+00 ... 22 fx= 6.375956e+02 upsi= 2.0e-06 b2n= 2.2e-01 umi= 0.0e+00 n= 2 nlin= 0 nonlin= 1 epsx= 1.000e-05 sigsm= 1.490e-08 startvalue 3.0000000e+00 1.8500000e+00 eps= 2.22e-16 tol= 2.23e-308 del0= 1.00e+00 delm= 1.00e-06 tau ... taubnd= 1.00e+00 epsfcn= 1.00e-16 difftype=3 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 203 / 218 Optimização com restrições com o R Resolução termination reason: KT-conditions satisfied, no further correction computed evaluations of f 32 evaluations of grad f 23 evaluations of constraints 62 evaluations of grads of constraints 23 final scaling of objective 9.638171e-02 norm of grad(f) 4.606398e+02 lagrangian violation 3.457676e-03 feasibility violation 3.512710e-10 dual feasibility violation 0.000000e+00 optimizer runtime sec’s 1.200000e-02 optimal value of f = optimal solution x = 1.88209881291260e+00 A. Ismael F. Vaz (UMinho) 6.37595141635430e+02 4.70504637147189e+00 Optimização Bioinformática 09/10 204 / 218 Optimização com restrições com o R Resolução multipliers are relativ to scf=1 nr. constraint multiplier norm(grad) or 1 1 1.8820988e+00 0.0000000e+00 2 1.0000000e+20 0.0000000e+00 3 4.7050464e+00 0.0000000e+00 4 1.0000000e+20 0.0000000e+00 5 -3.5127101e-10 8.5012686e+00 5.4184486e+01 6 3.5127101e-10 0.0000000e+00 evaluations of restrictions and their gradients ( 62, 23) last estimate of cond.nr. of active gradients 1.000e+00 last estimate of cond.nr. of approx. A. Ismael F. Vaz (UMinho) Optimização hessian 1.505e+01 Bioinformática 09/10 205 / 218 Optimização com restrições com o R Resolução - Com derivadas init <- c(3,1.85) lb <- c(0,0) ub <- c(Inf, Inf) f <- function(x) {60*x[1]^2+48*x[1]*x[2]} fgr <- function(x) {c(120*x[1]+48*x[2], 48*x[1])} attr(f, "gr") <- fgr con <- function(x) {3*x[1]^2*x[2]} congr <- function(x){c(6*x[1]*x[2],3*x[1]^2)} attr(con, "gr") <- congr clb <- 50 cub <- 50 cntl <- donlp2.control(del0=0.2, tau0=1.0, tau=0.1, taubnd=5e-6 donlp2(init, f, ub, lb, NULL, 0, 0, list(con), cub, clb,control A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 206 / 218 Optimização com restrições com o R Algumas notas Notas DONLP2 is a sequential quadratic programming method incorporating the exact l1- merit function and a special BFGS quasi-Newton approximation to the Hessian. Se o problema anterior tiver como aproximação inicial (0, 0)T o algoritmo não converge. Cada algoritmo deve ser escolhido de de acordo com o problema a ser resolvido. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 207 / 218 Optimização com restrições com o R solnp2 - Resolução - Sem derivadas > init <- c(1,1) > lb <- c(0,0) > ub <- c(Inf, Inf) > f <- function(x) {60*x[1]^2+48*x[1]*x[2]} > con <- function(x) {3*x[1]^2*x[2]} > solnp(init, f, NULL, con, c(50), LB=lb, UB=ub) Iter: 1 fn: 5202.2375 Pars: 9.22612 0.21442 Iter: 2 fn: 3974.6386 Pars: 8.03927 0.25097 Iter: 3 fn: 3363.3620 Pars: 7.36810 0.29978 Iter: 4 fn: 2554.2094 Pars: 6.37118 0.38812 Iter: 5 fn: 1317.6021 Pars: 4.43467 0.64653 Iter: 6 fn: 840.9256 Pars: 3.30216 1.17769 Iter: 7 fn: 576.7865 Pars: 2.33834 2.21593 Iter: 8 fn: 603.7913 Pars: 2.04109 3.61150 Iter: 9 fn: 622.3064 Pars: 1.86265 4.63207 Iter: 10 fn: 637.7800 Pars: 1.88243 4.70545 Iter: 11 fn: 637.5952 Pars: 1.88207 4.70518 Iter: 12 fn: 637.5951 Pars: 1.88207 4.70518 solnp--> Completed in 12 iterations A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 208 / 218 Optimização com restrições com o R Resolução - cont. $pars [1] 1.882072 4.705179 $convergence [1] 0 $values [1] 108.0000 5202.2375 3974.6386 3363.3620 2554.2094 1317.602 [8] 576.7865 603.7913 622.3064 637.7800 637.5952 637.595 $lagrange [,1] [1,] 8.501269 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 209 / 218 Optimização com restrições com o R Resolução - cont. $hessian [,1] [,2] [1,] 63.14883 -12.191559 [2,] -12.19156 7.478598 $ineqx0 NULL $nfuneval [1] 309 $outer.iter [1] 12 $elapsed Time difference of 0.1570001 secs A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 210 / 218 Optimização com restrições com o R Algumas notas Notas Nonlinear optimization using augmented lagrange method. Se o problema anterior tiver como aproximação inicial (3, 1.85)T o algoritmo não converge!! Não faz o tratamento das restrições lineares de forma isolada. A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 211 / 218 Optimização com restrições com o R Interpretação geométrica do problema 7 6.5 Restrição de igualdade 6 5.5 Solução óptima 5 4.5 4 3.5 3 1 A. Ismael F. Vaz (UMinho) 1.5 2 2.5 3 Optimização 3.5 4 4.5 5 Bioinformática 09/10 212 / 218 Optimização com restrições com o R E as dimensões da caixa? Caixa A base da caixa tem de dimensão 1.8821 × 5.6462. A altura da caixa é 4.7052. O seu custo é 637.5951e. O volume é 1.8821 × 5.6462 × 4.7052 = 50.0000 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 213 / 218 Optimização com restrições com o R Resolução do problema com apenas restrições lineares O problema max 2x1 + 1.5x2 s.a x1 + x2 ≤ 10 0.5x1 + 1.7x2 ≤ 9 6x1 + x2 ≤ 45 x1 , x2 ≥ 0 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 214 / 218 Optimização com restrições com o R Resolução do problema com apenas restrições lineares > > > > > > > > > > + init <- c(0,0) lb <- c(0,0) f <- function(x) {2*x[1]+1.5*x[2]} fgr <- function(x) {c(2, 1.5)} attr(f, "gr") <- fgr A <- rbind(c(1, 1), c(0.5, 1.7), c(6, 1)) ulb <- c(10, 9, 45) llb <- c(-Inf, -Inf, -Inf) cntl <- donlp2.control(fnscale=-1) donlp2(par=init, fn=f, par.lower=lb, A=A, lin.upper=ulb, lin.lower=llb,control=cntl) A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 215 / 218 Optimização com restrições com o R Resolução do problema com apenas restrições lineares 1 fx= -0.000000e+00 upsi= 0.0e+00 b2n= 0.0e+00 umi= ... 6 fx= -1.878866e+01 upsi= 2.1e-01 b2n= 2.5e-01 umi= n= 2 nlin= 3 nonlin= 0 epsx= 1.000e-05 sigsm= 1.490e-08 startvalue 0.0000000e+00 0.0000000e+00 ... termination reason: KT-conditions satisfied, no further correction computed evaluations of f 9 evaluations of grad f 7 evaluations of constraints 42 evaluations of grads of constraints 0 final scaling of objective 1.000000e+00 norm of grad(f) 2.500000e+00 lagrangian violation 4.959246e-16 feasibility violation 0.000000e+00 dual feasibility violation 0.000000e+00 optimizer runtime sec’s -8.000000e-03 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 0.0e+00 0.0e+00 216 / 218 Optimização com restrições com o R Resolução do problema com apenas restrições lineares optimal value of f = -1.85000000000000e+01 optimal solution x = 7.00000000000000e+00 3.00000000000000e+00 multipliers are relativ to scf=1 nr. constraint multiplier norm(grad) or 1 1 7.0000000e+00 0.0000000e+00 2 1.0000000e+20 0.0000000e+00 3 3.0000000e+00 0.0000000e+00 4 1.0000000e+20 0.0000000e+00 5 1.0000000e+20 0.0000000e+00 1.4142136e+00 6 0.0000000e+00 1.4000000e+00 7 1.0000000e+20 0.0000000e+00 1.7720045e+00 8 4.0000000e-01 0.0000000e+00 9 1.0000000e+20 0.0000000e+00 6.0827625e+00 10 0.0000000e+00 1.0000000e-01 evaluations of restrictions and their gradients ( 14, 0) ( 14, 0) ( 14, 0) last estimate of cond.nr. of active gradients 7.400e+00 last estimate of cond.nr. of approx. hessian 1.000e+00 A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 217 / 218 Fim Fim FIM A. Ismael F. Vaz (UMinho) Optimização Bioinformática 09/10 218 / 218