| | | |

Matemática numérica III

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

3.1 Métodos de declive

Em revisão

Um método de declive consiste em uma iteração tal que, dada uma aproximação inicial 𝒙(0)∈ℝn, computa-se

𝒙(k+1)=𝒙(k)+α(k)⁢𝒅(k), (3.5)

com tamanho de passo α(k)>0, para k=0,1,2,…, até que um dado critério de parada seja satisfeito. As direções descendentes são tais que

𝒅(k)⋅∇f⁢(𝒙(k))<0,se ⁢∇f⁢(𝒙(k))≠0, (3.6)
𝒅(k)=0,noutro caso. (3.7)
Observação 3.1.1.(Condição de convergência)

Da série de Taylor111Brook Taylor, 1685 - 1731, matemático britânico. Fonte: Wikipédia: Brook Taylor., temos que

f⁢(𝒙(k)+α(k)⁢𝒅(k))−f⁢(𝒙(k))=α(k)⁢∇f⁢(𝒙(k))⋅𝒅(k)+ε, (3.8)

com ε→0 quando α(k)→0. Como consequência da continuidade de f, para α(k) suficientemente pequeno, o sinal do lado esquerdo é igual ao do lado direito da última equação. Logo, para tais α(k) e para uma direção descendente 𝒅(k)≠0, temos garantido que

f⁢(𝒙(k)+α(k)⁢𝒅(k))<f⁢(𝒙(k)). (3.9)

Notamos que um método de declive fica determinado pelas escolhas da direção de declive 𝒅(k) e do tamanho do passo α(k). Primeiramente, trataremos deste último item.

3.1.1 Pesquisa linear

Em revisão

O método de pesquisa linear consiste em escolher α(k) com base na resolução do seguinte problema de minimização

minα∈ℝ⁡ϕ⁢(α):=f⁢(𝒙(k)+α⁢𝒅(k)). (3.10)

Entretanto, a resolução exata deste problema muitas vezes não é factível. Aplicam-se, então, técnicas aproximadas para a resolução desse problema. Essas técnicas são chamadas de pesquisa linear não exata.

Condições de Wolfe

Uma abordagem popular de pesquisa linear não exata baseia-se nas condições de Wolfe [9]. Trata-se de duas condições que devem ser satisfeitas pela escolha de α(k).

A condição de Armijo estabelece que a escolha de α(k) deve ser tal que

f⁢(𝒙(k)+α(k)⁢𝒅(k))≤f⁢(𝒙(k))+σ⁢α(k)⁢∇f⁢(𝒙(k))⋅𝒅(k), (3.11)

para alguma constante σ∈(0,1/2). Ou seja, espera-se que a redução em f seja proporcional à derivada direcional de f com relação à direção 𝒅(k) no ponto 𝒙(k). Em aplicações computacionais, σ normalmente é escolhido no intervalo [10−5⁢,10−1].

A condição (3.11) não é suficiente para evitar escolhas muito pequenas de α(k). Para tanto, pode-se empregar a condição de curvatura, que requer que

∇f⁢(𝒙(k)+α(k)⁢𝒅(k))⋅𝒅(k)≥β⁢∇f⁢(𝒙(k))⋅𝒅(k), (3.12)

para β∈(σ⁢,1). Notemos que o lado esquerdo de (3.12) é igual a ϕ′⁢(α(k)). Ou seja, esta condição impõe que ϕ′⁢(α(k)) não seja muito negativa em comparação com ϕ′⁢(0). Normalmente, escolhe-se β∈[10−1⁢,9 10−1]. Juntas, (3.11) e (3.12) são conhecidas como condições de Wolfe222Philip Wolfe, 1927 - 2016, matemático estadunidense. Fonte: Wikipédia: Philip Wolfe..

3.1.2 Método do gradiente

Em revisão

O método do gradiente (ou método do máximo declive) é um método de declive tal que as direções descendentes são opostas ao gradiente de f, isto é,

𝒅(k)=−∇f⁢(𝒙(k)). (3.13)

É imediato verificar que as condições (3.6)-(3.7) são satisfeitas.

Exemplo 3.1.1.

Consideramos o problema de encontrar o mínimo da função de Rosenbrock333Howard Harry Rosenbrock, 1920 - 2010, engenheiro britânico. Fonte: Wikipedia: Howard Harry Rosenbrock.

f⁢(𝒙)=∑i=1n−1[100⁢(xi+1−xi2)2+(1−xi)2]. (3.14)

O valor mínimo dessa função é zero e ocorre no ponto 𝒙=𝟏. Essa função é comumente usada como caso-padrão para testar métodos de otimização.

Para o método do gradiente, precisamos das seguintes derivadas parciais:

∂f∂x1=−400⁢x1⁢(x2−x12)−2⁢(1−x1) (3.15)
∂f∂xj=200⁢(xj−xj−12)−400⁢xj⁢(xj+1−xj2)−2⁢(1−xj),j=2,…,n−1 (3.16)
∂f∂xn=200⁢(xn−xn−12) (3.17)
Código 14: Algoritmo do Gradiente
1import numpy as np
2import numpy.linalg as npla
3import scipy.optimize as spopt
4
5# função objetivo
6def fun(x):
7 '''
8 Função de Rosenbrock
9 '''
10 return sum(100.*(x[1:]-x[:-1]**2.)**2. + (1.-x[:-1])**2.)
11
12# gradiente da função objetivo
13def grad(x):
14 xm = x[1:-1]
15 xm_m1 = x[:-2]
16 xm_p1 = x[2:]
17 der = np.zeros_like(x)
18 der[1:-1] = 200*(xm-xm_m1**2) - 400*(xm_p1 - xm**2)*xm - 2*(1-xm)
19 der[0] = -400*x[0]*(x[1]-x[0]**2) - 2*(1-x[0])
20 der[-1] = 200*(x[-1]-x[-2]**2)
21
22 return der
23
24# dimensão do problema
25n = 2
26
27# número máximo de iterações
28maxiter = 100000
29# tolerância
30tol = 1e-10
31
32# aproximação inicial
33x = np.zeros(n)
34
35for k in range(maxiter):
36 # direção descendente
37 d = -grad(x)
38
39 # pesquisa linear
40 alpha = spopt.line_search(fun, grad, x, d,
41 c1=0.0001, c2=0.9)[0]
42
43 # atualização
44 x = x + alpha * d
45
46 nad = npla.norm(alpha * d)
47 nfun = abs(fun(x))
48
49 if ((k+1) % 10 == 0):
50 print(f"{k+1}: {alpha:1.2e} {nad:1.2e} {nfun:1.2e}")
51
52 if (nfun < tol):
53 break

Exercícios

Em revisão

E. 3.1.1.

Aplique o método do gradiente para computar o ponto mínimo da função de Rosenbrock444Howard Harry Rosenbrock, 1920 - 2010, engenheiro britânico. Fonte: Wikipedia: Howard Harry Rosenbrock.

f⁢(𝒙)=∑i=1n−1[100⁢(xi+1−xi2)2+(1−xi)2] (3.18)

com

  1. a)

    n=2.

  2. b)

    n=3.

  3. c)

    n=4.

  4. d)

    n=5.

  5. e)

    n=10.


f⁢(𝟏)=0

E. 3.1.2.

Aplique o método do gradiente para computar o ponto mínimo da função de Beale [2]

f⁢(x,y)=(1.5−x+x⁢y)2+(2.25−x+x⁢y2)2
+(2.625−x+x⁢y3)2. (3.19)

para 𝒙∈[−4.5,4.5]2.


f⁢(3,0.5)=0

E. 3.1.3.

Aplique o método do gradiente para computar o ponto mínimo da função de Goldstein-Price [6]

f(x,y)=[1+(x+y+1)2(19−14x
+3x2−14y+6xy+3y2)]
×[30+(2x−3y)2(18−32x
+12x2+48y−36xy+27y2)] (3.20)

f⁢(0,−1)=3

E. 3.1.4.

Aplique o método do gradiente para computar o ponto mínimo da função de Booth

f⁢(x,y)=(x+2⁢y−7)2+(2⁢x+y−5)2 (3.21)

para 𝒙∈[−10,10]2.


f⁢(1,3)=0

E. 3.1.5.

Aplique o método do gradiente para computar o ponto mínimo da função de Rastrigin

f⁢(x)=10⁢n+∑i=1n[xi2−10⁢cos⁡(2⁢π⁢xi)], (3.22)

para 𝒙∈[−5.12,5.12]n, com

  1. a)

    n=2.

  2. b)

    n=3.

  3. c)

    n=4.

  4. d)

    n=5.

  5. e)

    n=10.


f⁢(𝟎)=0


Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |