9.8 Minimização Unidimensional A minimização de funções dependentes de uma única variável é muito importante para uma grande parte dos métodos utilizados na otimização não-linear no n . Nestes métodos a otimização é realizada a partir de uma seqüência de direções de busca, ou seja, na direção de retas r ( ) no subespaço n . Como viu-se, uma reta é definida pela equação r ( ) x 0 v . A minimização da função f (x) para os pontos desta reta é uma minimização unidimensional, pois minimiza-se a função ( ) f ( x 0 v) , sendo x0 e v conhecidos. A condição necessária para determinar-se o mínimo de ( ) é ' ( ) 0 . Observe que a função ( ) é definida implicitamente em termos da função f de várias variáveis. Neste caso, deve-se utilizar a Regra da Cadeia para sua derivação. Se a função f for diferenciável, tem-se: d f r f r f r ' ( ) .... T f ( x) v d x1 x 2 x n Com a condição necessária, tem-se: T f ( x) v 0 Normalmente esta expressão resulta numa equação não-linear, e com apenas a condição necessária satisfeita, não garante-se que seja um ponto de mínimo, poderá ser um máximo ou um ponto de sela, assim, normalmente se prefere evitar fazer a minimização resolvendo esta equação e utiliza-se métodos numéricos para solução. 9.8.1 Método Numérico para Minimização Unidimensional Considere o problema de minimizar ( ) sujeito a b . Como não se conhece o ponto exato de mínimo, chama-se este intervalo de intervalo de incerteza. A idéia do método numérico a ser visto para minimização é reduzir, a cada iteração, o intervalo de incerteza até chegar-se um intervalo (bk a k ) , sendo definido como uma tolerância. Teorema Seja : 1 1 , convexa no intervalo [a, b] . Seja , [a, b] , tal que . Se ( ) ( ) , então ( z ) ( ) para todo z [a, ) .Se ( ) ( ) , então então ( z ) ( ) para todo z ( , b] . 1 A partir do teorema, se ( ) ( ) e sendo a função convexa, o novo intervalo de incerteza é dado por [ , b] . Por outro lado se ( ) ( ) o novo intervalo de incerteza é dado por [a, ] . As figuras abaixo sintetizam esta idéia. ( ) ( ) a b Novo intervalo f ( ) ( ) a Novo intervalo Método da Seção Áurea Os pontos intermediários são definidos por: 2 b k a k (1 )(bk a k ) k a k (bk a k ) 0,618 Como k 1 e k 1 são selecionados para uma nova iteração, faz-se k 1 coincidir com k , ou k 1 coincidir com k . Desta forma necessita-se atualizar apenas um valor da função a cada iteração de acordo com as equações acima. Tem-se portanto dois casos: Caso 1 - ( k ) ( k ) , então: a k 1 k e bk 1 bk Faça k 1 k Calcule k 1 a k 1 0,618 (bk 1 a k 1 ) Caso 2 - ( k ) ( k ) , então: a k 1 a k e bk 1 k Faça k 1 k Calcule k 1 a k 1 (1 0,618)(bk 1 a k 1 ) k ak k bk caso 1 a k 1 k 1 k 1 bk 1 caso 2 a k 1 k 1 k 1 bk 1 Algoritmo Defina uma tolerância para parada. Defina o intervalo de incerteza inicial [a1 , b1 ] e determine 1 a1 (1 0,618)(b1 a1 ) e 1 a1 0,618 (b1 a1 ) . 3 Calcule ( 1 ) e (1 ) , faça k 1 e vá ao passo 1. Passo 1 – Se bk a k , pare. A solução ótima está no intervalo dado [a k , bk ] . Em caso contrário, se ( k ) ( k ) , vá ao passo 2, se ( k ) ( k ) , vá ao passo 3. Passo 2 – Faça a k 1 k e bk 1 bk , k 1 k e k 1 a k 1 0,618 (bk 1 a k 1 ) . Determine ( k 1 ) e vá ao passo 4. Passo 3 – Faça a k 1 a k e bk 1 k , k 1 k e k 1 a k 1 (1 0,618)(bk 1 a k 1 ) . Determine ( k 1 ) e vá ao passo 4. Passo 4 – Faça k k 1 e vá ao passo 1. Exemplo 9.9: Minimizar utilizando o Método da Seção Áurea a função do exemplo 9.5 com tolerância 0,0001: f (t ) 12t 2 16t 8 no intervalo 0 t 1 a b f ( ) f ( ) 0.000000 0.382000 0.382000 0.527895 0.618000 0.618000 0.652449 0.652449 0.652449 0.660590 0.660590 0.663700 0.665606 0.665606 0.666344 0.666344 0.666344 0.666521 0.666625 0.666625 0.666625 1.000000 1.000000 0.763924 0.763924 0.763924 0.708181 0.708181 0.686891 0.673761 0.673761 0.668730 0.668730 0.668730 0.667536 0.667536 0.667081 0.666808 0.666808 0.666808 0.666738 0.666698 0.382000 0.618000 0.527895 0.618000 0.673761 0.652449 0.673761 0.665606 0.660590 0.665606 0.663700 0.665606 0.666808 0.666344 0.666808 0.666625 0.666521 0.666625 0.666698 0.666668 0.666653 0.618000 0.763924 0.618000 0.673761 0.708181 0.673761 0.686891 0.673761 0.665606 0.668730 0.665606 0.666808 0.667536 0.666808 0.667081 0.666808 0.666625 0.666698 0.666738 0.666698 0.666668 3.639088 2.695088 2.897758 2.695088 2.667271 2.669092 2.667271 2.666680 2.667110 2.666680 2.666772 2.666680 2.666667 2.666668 2.666667 2.666667 2.666667 2.666667 2.666667 2.666667 2.666667 2.695088 2.780175 2.695088 2.667271 2.687348 2.667271 2.671575 2.667271 2.666680 2.666718 2.666680 2.666667 2.666676 2.666667 2.666669 2.666667 2.666667 2.666667 2.666667 2.666667 2.666667 4 Exemplo 9.10: Minimizar utilizando o Método da Seção Áurea a função abaixo com tolerância 0,0001: f ( x) 12x 2 2x no intervalo 3 t 5 a -3.000000 -3.000000 -3.000000 -1.832608 -1.832608 -1.386753 -1.111392 -1.111392 -1.111392 -1.046297 -1.046297 -1.021436 -1.006115 -1.006115 -1.006115 -1.002473 -1.002473 -1.001081 -1.001081 -1.000550 -1.000237 -1.000237 -1.000108 -1.000108 -1.000059 b 5.000000 1.944000 0.056000 0.056000 -0.665448 -0.665448 -0.665448 -0.835799 -0.940987 -0.940987 -0.981215 -0.981215 -0.981215 -0.990727 -0.996580 -0.996580 -0.998831 -0.998831 -0.999691 -0.999691 -0.999691 -0.999899 -0.999899 -0.999979 -0.999979 f ( ) f ( ) 0.056000 -1.111392 -1.832608 -1.111392 -1.386753 -1.111392 -0.940987 -1.006115 -1.046297 -1.006115 -1.021436 -1.006115 -0.996580 -1.000237 -1.002473 -1.000237 -1.001081 -1.000237 -1.000550 -1.000237 -1.000019 -1.000108 -1.000019 -1.000059 -1.000019 1.944000 0.056000 -1.111392 -0.665448 -1.111392 -0.940987 -0.835799 -0.940987 -1.006115 -0.981215 -1.006115 -0.996580 -0.990727 -0.996580 -1.000237 -0.998831 -1.000237 -0.999691 -1.000237 -1.000019 -0.999899 -1.000019 -0.999979 -1.000019 -1.000009 0.115136 -0.987592 -0.306764 -0.987592 -0.850422 -0.987592 -0.996517 -0.999963 -0.997857 -0.999963 -0.999541 -0.999963 -0.999988 -1.000000 -0.999994 -1.000000 -0.999999 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 7.667136 0.115136 -0.987592 -0.888075 -0.987592 -0.996517 -0.973038 -0.996517 -0.999963 -0.999647 -0.999963 -0.999988 -0.999914 -0.999988 -1.000000 -0.999999 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 -1.000000 9.9 Modelo de Algoritmos com Buscas Unidimensionais Deseja-se resolver o problema: Minimizar f (x) Com x n Teorema Seja x k n , se f ( x k ) 0 , então x k não é um minimizador local de f em n . Portanto, existe na vizinhança de x k um z n tal que f ( z) f ( x k ) . Teorema Seja f : n 1 , com derivada contínua de primeira ordem, tal que f ( x k ) 0 e seja um d n , tal que T f ( x k ) d 0 . Então existe um 0 , tal que f ( x k d ) f ( x k ) para todo (0, ) e d é definido como a direção de descida de f k em x . 5 2 1.5 d2 1 0.5 f (x k ) f ( x k ) 0 -0.5 d1 -1 -1.5 -2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 O gradiente da função f no ponto x k é ortogonal a curva de nível que passa em x k . A direção do gradiente é a direção de maior crescimento da função f no ponto x k . Método de Direção de Descida 1) Escolher um d k n , tal que T f ( x k ) d k 0 ; tamanho do passo k . Deve-se observar que k 0 e f ( x k d k ) f ( x k ) . O valor de k é determinado através de uma minimização 2) Determinar o unidimensional da função f na direção de d k . 3) Fazer x k 1 x k k d k 4) O processo termina para 0 , tal que f ( x k ) . Método do Gradiente No método do Gradiente a direção de busca é a direção contrária ao Gradiente. A função f possui no ponto x k possui o maior decréscimo na direção contrária ao Gradiente. Tem-se, portanto, como direção de busca no item 1 do método de descida: d k f ( x k ) f ( x k ) Resultando na expressão de recorrência do item 3: 6 x k 1 x k k f ( x k ) f ( x k ) O valor de k é determinado pela minimização unidimensional da função f na direção de d k . Tem-se: k Minimizar f ( x k k d ) Para k 0 Exemplo 9.11: Minimizar f ( x1 , x2 ) 2x12 ( x2 1) 2 para x 0 (0,0) T f ( x) [4x1 ,2( x2 1)]T no ponto x 0 (0,0) T , tem-se: f ( x 0 ) (0,2)T Utilizando a norma Euclidiana (norma 2): f ( x 0 0 4 2 A direção de busca é dada por: d 0 f ( x 0 ) f ( x 0 ) (0,2) T (0,1) T 2 O novo ponto é dado pela expressão: 0 f ( x 0 ) 0 x1 x 0 (0, ) T 1 f ( x 0 ) 0 O valor de é determinado pela minimização da função f na direção de d 0 (0,1) T . f ( x 0 d 0 ) f [(0,0) T (0,1) T ] f (0, ) ( ) ( 1) 2 Como a expressão de ( ) é simples, para minimizar deriva-se e iguala-se a zero: 2( 1) 0 1 0 0 Portanto x1 1 (0,1) T 0 1 Teste de convergência: 0 f ( x1 ) OK 0 Assim, x 1 é candidato a solução. Deve-se verificar a condição necessária: 7 4 0 2 f ( x1 ) 0 2 Determinando os autovalores da matriz, tem-se: 0 4 det 0 2 6 8 0 1 4 2 2 2 0 0 A matriz Hessiana é definida positiva, portanto x 1 é ponto de mínimo local. Para 1 saber se é ponto de mínimo global, deve-se analisar a convexidade da função f. Como f é estritamente convexa o ponto x 1 é mínimo global. Método de Newton O Método de Newton utiliza aproximações quadráticas da função f(x) para o cálculo do mínimo. Seja a aproximação quadrática da função f(x), utilizando a Série de Taylor em torno de um ponto inicial x k : 1 q( x) f ( x k ) f ( x k )( x x k ) ( x x k ) T 2 f ( x k )( x x k ) 2 Desprezando a parte não-linear, a condição necessária para um ponto de mínimo de q(x) é dada para q( x) 0 , ou seja: f ( x k ) 2 f ( x k )( x x k ) 0 Assim, tem-se um processo iterativo: x k 1 x k [ 2 f ( x k )] 1 f ( x k ) Tem-se uma direção de busca: d k [ 2 f ( x k )] 1 f ( x k ) Observações a) Se a função é quadrática ( com [ 2 f ( x k )] 0 ), então o processo iterativo anterior encontra o mínimo em uma única iteração. b) O processo iterativo pode ser mudado de forma a eliminar a inversão de matriz: x k x k 1 x k [ 2 f ( x k )]x k f ( x k ) x k 1 x k x k c) O processo iterativo pode também ser mudado, de forma que se tenha uma minimização unidimensional na direção d k para um parâmetro . Este procedimento é semelhante ao realizado no Método do Gradiente, mas com a direção de busca dada por d k [ 2 f ( x k )] 1 f ( x k ) : 8 x k 1 x k k [ 2 f ( x k )] 1 f ( x k ) [ 2 f ( x k )] 1 f ( x k ) Exemplo 9.12: Minimizar f ( x) ( x1 3) 2 ( x2 2) 2 para um vetor inicial x 0 (0,0) T 2( x k 3) f ( x k ) 1k 2( x 2 1) 2 0 2 f (x k ) 0 2 6 f ( x 0 ) 2 0 2 0 x 0 0 2 0 f ( x1 ) 0 1 1 6 3 2 1 3 Como a matriz Hessiana é definida positiva para qualquer x k , x1 é um mínimo 1 global estrito de f(x). Exemplo 9.13: Minimizar f ( x) ( x1 3) 2 ( x2 1) 3 para um vetor inicial x 0 (0,2) T com tolerância 0,001. 2( x k 3) f ( x k ) k1 2 2( x 2 1) 0 2 2 f (x k ) 0 6( x 2 1) iteração 0 6 f ( x 0 ) 3 2 0 2 f ( x0 ) 0 6 9 2 0 0 6 2 f ( x 0 )x 0 f ( x 0 ) x 0 6 3 3 x 0 0,5 0 3 3 x 1 x 0 x 0 2 0,5 1,5 iteração 1 0 f ( x1 ) 0,75 2 0 2 f ( x1 ) 0 3 2 0 1 0 2 f ( x1 )x1 f ( x1 ) x 0 3 0,75 0 x1 0,25 3 0 3 x 2 x1 x1 1,5 0,25 1,25 iteração 2 0 f ( x 2 ) 0,1875 2 0 2 f (x 2 ) 0 1,5 2 0 2 0 2 f ( x 2 )x 2 f ( x 2 ) x 0 1,5 0,1875 0 x 2 0,125 3 0 3 x 3 x 2 x 2 1,25 0,125 1,125 iteração 3 0 f ( x 3 ) 0,0469 0 2 2 f (x3 ) 0 0,75 10 0 3 2 0 2 f ( x 3 )x 3 f ( x 3 ) x 0 0,75 0,0469 0 x 3 0,0625 3 0 3 x 4 x 3 x 3 1,125 0,0625 1,0625 iteração 4 0 f ( x 4 ) 0,0117 0 2 2 f (x 4 ) 0 0,375 0 4 2 0 2 f ( x 4 )x 4 f ( x 4 ) x 0 0,375 0,0117 0 x 4 0,0313 0 3 3 x 5 x 4 x 4 1,0625 0,0313 1,0313 iteração 5 0 f ( x 5 ) 0,0029 0 2 2 f (x5 ) 0 0,1875 0 5 2 0 2 f ( x 5 )x 5 f ( x 5 ) x 0 0,1875 0,0029 0 x 5 0,0156 3 0 3 x 6 x 5 x 5 1,0313 0,0156 1,0156 iteração 5 0 f ( x 6 ) convergiu para uma tolerância 0,001 0,00073 0 2 2 f (x6 ) 0 0,0938 A matriz Hessiana no ponto de mínimo é difinida positiva, portanto o ponto: 11 3 x6 é um ponto de mínimo local, pois a função não é convexa. 1,0156 Referências: Bazaraa, Mokhtar S. e Shetty, C. M., Nonlinear Programming Theory and Algorithms, John Wiley & Sons, 1979. Himmelblau, David M., Applied Nonlinear Programming, McGraw-Hill, Inc. , 1972 12