Está en la página 1de 6

Pontificia Universidad Católica de Chile

Departamento de Ingenierı́a Industrial y de Sistemas


ICS2121 - Métodos de Optimización - 2022- 1
Profesor: Jorge Vera
Ayudantes: - Jorge Fuenzalida (jorge.fuenzalida@uc.cl)
- Matı́as De Geyter Messina (mdegeyter@uc.cl)

Ayudantı́a 2
BFGS
24 de marzo de 2022

Resumen
Algoritmo BFGS:
1. Sea x0 ∈ Rn , k = 0, H 0 ∈ Rnxn , ϵ > 0.
2. Sea dk = −H k ∇f (xk )
3. Si ||∇f (xk )|| ≤ ϵ, entonces STOP.
4. Calcular λk por medio de linesearch que satisfaga Wolfe-Armijo.
1
5. Sean xk+1 = xk + λk dk , sk = xk+1 − xk , yk = ∇f (xk+1 ) − ∇f (xk ), y ρk = ykT sk

6. Calcular H k+1 = (I − ρk yk sTk )H k (I − ρk sk ykT ) + ρk sk sTk , k ← k + 1, go to 2.


Método simple de primer orden:
1. Sea x0 ∈ Rn , k = 0, d0 = −∇f (x0 ), ϵ > 0.
2. Sea dk = −∇f (xk )
3. Si ||∇f (xk )|| ≤ ϵ, entonces STOP.
4. Sea xk+1 = xk + L1 dk , k ← k + 1, go to 2.
Condición Wolfe-Armijo:
Sea h(λ) = f (xk + λdk )
1. Armijo: h(λ) ≤ h(0) + c1 λh′ (0)
2. Wolfe: h′ (λ) ≥ c2 h′ (0)
Pregunta 1
1.a
Considere la sucesión de valores dada por

1
ai = ( )i
2
¿Qué velocidad de convergencia presenta? (lineal, cuadrática, exponencial, etc.)

Solución

a∗ = lı́m ai = (1/2)i → 0
i→∞

1 1 1 1
ai+1 = ( )i+1 = ( )i · ( ) = · ai
2 2 2 2

1 1 1
|ai+1 − 0| = | · ai | = |ai − 0| = |ai − a∗ |
2 2 2
De esto se sigue que:
|ai − a∗ | ≤ β|ai+1 − a∗ |
Con β = 21 .

1 1
|ai+1 | = ai+1 = ai ≤ |ai |
2 2
La secuencia presenta convergencia lineal.

1.b
El método de BFGS converge super-linealmente, es más lento que la convergencia de Newton,
aunque más rápida que la del gradiente, explique esto.

Solución
Es porque se está haciendo un aproximación al Hessiano, lo que hace que no se use la dirección
exacta de Newton. Aún ası́ se rescata convergencia más rápida que el Método del Gradiente.

2
1.3
   
1 T T 3 −1 2
Sea f (x) = 2
x Ax
+ b x + c con A = ,b= y c = 7. Realice una iteración de
  1 1 2
1
BFGS con x0 = y H0 = I.
1

Solución
Primero, calculamos el gradiente de la función:
    
3 −1 x1 2
∇f (x) = Ax + b = +
1 1 x2 2
A continuación, aplicamos los pasos del algoritmo BFGS:

Iteración 0:
 3 −1 1 2  −4
1. Sea d0 = −H0 ∇f (x0 ) = −∇f (x0 ) = − + =
1 1 1 2 −4
     
∗ 1 −4 1 − 4λ
2. x = x0 + λd0 = +λ =
1 −4 1 − 4λ


3. Resolvemos
  mı́nλ f (x ) para encontrar el paso óptimo por medio de linesearch. Sea
x
x∗ = 1
x2
    

  3 −1 x1   x1
f (x ) = 1/2 x1 x2 + 2 2 +7
1 1 x2 x2
 
  3x1 − x2
= 1/2 x1 x2 + 2x1 + 2x2 + 7
x1 + x2
= 1/2(3x21 − x1 x2 + x1 x2 + x22 ) + 2x1 + 2x2 + 7
= 1/2(3x21 + x22 ) + 2x1 + 2x2 + 7
= 2(1 − 4λ)2 + 4(1 − 4λ) + 7
= 2(1 − 8λ + 16λ2 ) + 4 − 16λ + 7
= 2 − 16λ + 32λ2 + 4 − 16λ + 7
= 32λ2 − 32λ + 13

Buscamos el λ∗ mediante:
df (x∗ )
= 0 → 64λ − 32 = 0 → λ∗ = 0,5

3

  
∗ 1−2 −1
Por lo tanto, x1 = x0 + λ d0 = =
1−2 −1

4. H 1 = (I − ρ0 y0 sT0 )H0 (I − ρ0 s0 y0T ) + ρ0 s0 sT0 donde:


     
−1 1 −2
s 0 = x1 − x 0 = − =
−1 1 −2
     
0 4 −4
y0 = ∇f (x1 ) − ∇f (x0 ) = − =
0 4 −4
1 1 1
ρ0 = = =
y0T s0

  −2 16
−4 −4
−2
Por lo tanto,
 1 0  
1 −4 

  1 0
  
1 −2  
 
1 −2 
1

H = − −2 −2 I − −4 −4 + −2 −2
0 1 16 −4 0 1 16 −2 16 −2
 1 0 
1 8 8
 
1 0
 
1 8 8
 
1 4 4

= − I − +
0 1 16 8 8 0 1 16 8 8 16 4 4
 1 0 1/2 1/2   1 0 1/2 1/2  1/4 1/4
= − I − +
0 1 1/2 1/2 0 1 1/2 1/2 1/4 1/4
    
1/2 −1/2 1/2 −1/2 1/4 1/4
= +
−1/2 1/2 −1/2 1/2 1/4 1/4
   
1/2 −1/2 1/4 1/4
= +
−1/2 1/2 1/4 1/4
 
0,75 −0,25
=
−0,25 0,75

Pregunta 2
n
X
mı́n xj · log xj
j=1

s.t. δ ≤ xj ≤ 1, j = 1, ..., m

Donde 0 < δ < 1, Escriba los pasos necesarios que deben ejecutarse para usar un Método
de Primer Orden basado en gradientes para resolver este problema (la función objetivo es
convexa). Sea explı́cito en como estimarı́a objetos como constantes de Lipschitz. También
debe explicar muy bien como abordarı́a etapas especı́ficas del algoritmo.

4
Solución
Esto es aplicar el Método de Gradiente, con paso L1 , pero proyectando sobre el conjunto
definido por las restricciones. Más especı́ficamente, la iteración es:
1
xk+1 = P royS (xk − ∇f (xk ))
L

Donde S es el conjunto definido por las restricciones, para el gradiente tenemos:

δf
= log xi + 1
δxi

Se estima la constante de Lipschitz de ∇f (x) a través de las segundas derivadas, el Hessiano


de f es una matriz diagonal cuyas componentes son:

δ2f 1
2
=
δxi xi

Acá lo razonable es estimar la constante de Lipschitz sobre la región factible, y eso significa
que el mayor valor que podrı́an tomar es igual a 1δ , luego: L = 1δ .
El problema de proyección es fácil de resolver, pues la región factible es un “hipercubo”.
Dado u, proyS (u) se puede determinar de la siguiente forma:
1. Para todo j se evalúa si δ ≤ ui ≤ 1, ∀i ̸= j
2. Si lo anterior se cumple para algún j, entonces la proyección es sobre la “cara”(del
hipercubo) definida por δ ≤ uk = 1, δ ≤ ui ≤ 1, i ̸= j.
3. Si lo anterior se cumple para algún j, entonces la proyección es un vértice del hipercubo
que queda identificado según cuáles coordenadas son las que no cumplen δ ≤ ui ≤
1, pudiendo también caer en una arista del hipercubo si alguna de las coordenadas
solamente están dentro de los rangos.
Todo el proceso anterior se puede hacer en un tiempo de orden O(n), lo que es muy eficiente.

5
Pregunta 3
Considere el problema:

1 T
mı́nn x Ax − bT x
x∈R 2
nxn
Donde A ∈ R es simétrica y definida positiva. Cuando el Método del Gradiente está en la
iteración k y tiene una solución actual xk , se puede demostrar que el paso óptimo que debe
hacerse (el resultado del ”linesearch“) es:

(Ax − b)T (Axk − b)


λk =
(Axk − b)T A(Axk − b)

Estime cuánto es el costo total por iteración en “flops” para el Método del Gradiente,
tomando en consideración todas las cosas que se deberán calcular, esto lo debe expresar
en la forma O(·) en función de la dimensión n.

Solución
Para estimar cuánto es el costo total por iteración, en ”flops”, para el Método del Gradiente
se tiene que calcular el costo de las distintas operaciones que usa el método del gradiente.

O (n2 ) : u = (Ax − b)T


O(n) : uT u
O (n2 ) : uT Au 
O (n) : ∇f xk 
O(n) : ∇f xk
O(n) : xk+1 = xk + λk dk

Sumando las complejidades, llegamos a que el método tiene un costo de O (n2 ) flops.

También podría gustarte