1 - Labspot

Propaganda
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
Download