Pesquisa linear

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa
Illustração de um método de descida (as linhas a azul correspondem a curvas de nível, e as setas a vermelho correspondem as iterações, que descem em direção ao ponto de mínimo)

pesquisa linear é um método numérico usado em otimização, também entendido como método de descida em problemas de minimização. Para encontrar um mínimo (local) de uma função usa-se um esquema iterativo, onde em cada passo se toma uma direção de descida, e dessa forma se garante que o valor seguinte é sempre inferior ao anterior, procurando atingir o mínimo.

Em problemas de maximização, basta trocar o sinal da função, já que um mínimo de F será um máximo de -F, e vice-versa.

Descrição

O objetivo é encontrar o ponto de mínimo de uma função de várias variáveis

F:n

ou seja um ponto z tal que

F(𝐳)<F(𝐱),𝐱𝐳

sendo ponto de mínimo local se a condição se verificar para 𝐱V𝐳 (uma vizinhança de z).

Começando com um vetor inicial 𝐱0  visando alcançar um ponto de mínimo de F, consideramos a sucessão definida por 𝐱0,𝐱1,𝐱2, onde[1]

𝐱n+1=𝐱n+ωn𝐝n(1).

Esta é a forma geral de um método de descida para a função F, desde que a escolha da direção 𝐝n implique

F(𝐱n+1)<F(𝐱n)(2)

para um certo passo ωn>0.


Neste caso, a direção 𝐝n chama-se direção de descida.

Condição de descida

Para funções diferenciáveis, usamos a expansão em série de Taylor de primeira ordem

F(𝐱n+1)=F(𝐱n)+(𝐱n+1𝐱n)F(𝐱n)+o(||𝐱n+1𝐱n||)(3)


e substituindo por (1) obtemos (desprezando o termo infinitesimal):

F(𝐱n+1)F(𝐱n)ωn𝐝nF(𝐱n)(4).


Portanto, para termos uma direção de descida que verifique (2), através da expressão (4) basta considerar a condição de descida:

𝐝nF(𝐱n)<0(5)

já que ωn é assumido ser positivo.

Método do gradiente

No caso do método do gradiente a condição de descida verifica-se tomando

𝐝n=F(𝐱n)

porque

(F(𝐱n))F(𝐱n)=||F(𝐱n)||2<0(6)


notando ainda que F(𝐱n)=𝟎 só se 𝐱n for um ponto crítico, o que acontece quando atingimos o ponto de mínimo.

Pesquisa exata e inexata

Um dos problemas habituais nos métodos de pesquisa linear é determinar o passo ωn a ser considerado na iteração:

𝐱n+1=𝐱n+ωn𝐝n,

quando a direção de descida 𝐝n está determinada (por exemplo, pelo método do gradiente).

Há duas abordagens possíveis:

  • Pesquisa exata - onde ωn será o valor otimal numa otimização unidimensional.
  • Pesquisa inexata - onde ωn será apenas um valor aproximado.

Isto tem que ser feito a cada passo, pelo que a pesquisa exata pode ser incomportável em tempo computacional, sendo preferível usar uma pesquisa inexata.

Pesquisa exata

No caso da pesquisa exata, procura-se o ponto de mínimo de uma nova função

g(ω)=f(𝐱n+ω𝐝n)

notando que 𝐱n,𝐝n estão fixos e apenas ω>0 está a variar.

Se for possível encontrar esse ponto de mínimo, então obtemos:

ωn=arg minω>0g(ω)

por exemplo, calculando os zeros da derivada da função g.

Pesquisa inexata

Sendo moroso ou impraticável minimizar g considera-se um valor aproximado, dado por exemplo pelo critério de Wolfe, que é um dos critérios mais usados na pesquisa inexata.

Algoritmo

Um algoritmo em pseudo-código pode definir-se assim:

  • Define-se o vector inicial 𝐱0
  • Ciclo em n
    • calcula-se a direção de descida 𝐝n
    • define-se a função g(ω)=f(𝐱n+ω𝐝n)
    • determina-se ωn = arg minω>0g(ω)
      • (por pesquisa exata ou inexata)
    • define-se 𝐱n+1=𝐱n+ωn𝐝n
  • Até que ||f(𝐱n+1)||<ϵ
    • (onde ϵ, pequeno, define o critério de paragem)

Predefinição:Referências

  1. David G. Luenberger, Yinyu Ye: Linear and Nonlinear Programming. International Series in Operations Research & Management Science. Volume 116. Springer (2008) [Basic Descent Methods, pág 215]