Está en la página 1de 32

Optimización para ingenieros

Programación no lineal sin


restricciones
Métodos Quasi-Newton
1er semestre de 2010
2/33

Programación no lineal sin restricciones


Problema de programación no lineal
Recordemos nuestro objetivo en un
problema de PNL sin restricciones
Minimizar f (x)
sujeto a x∈R n

donde f es una función real (Rn -> R)

Programación no lineal sin restricciones


2do
1er semestre de 2010
2008
3/33

Métodos Quasi-Newton
Ideas Generales
• Los métodos vistos hasta el momento
(descenso más rápido y gradiente conjugado)
tienen orden de convergencia lineal
• El método de Newton, el cual utiliza información
de la matriz Hessiana de f(x), tiene orden de
convergencia cuadrático. Sin embargo, calcular
esta matriz es un procedimiento costoso y no
siempre factible
• Los métodos Quasi-Newton se basan en utilizar
aproximaciones sucesivas de la matriz Hessiana
para acelerar el proceso de convergencia
Programación no lineal sin restricciones
1er semestre de 2010
4/33

Definiciones Básicas
Gradiente y Matriz Hessiana
• Gradiente: vector formado por las derivadas parciales de una función. El
gradiente evaluado en un punto dado apunta en al dirección de mayor
ascenso de la función
 ∂f x( x ) 
 ∂f (1x ) 
∇f (x ) =  x 2 
 ... 
 ∂f ( x ) 
 xn 
• Matriz Hessiana: matriz simétrica formada por las derivadas parciales del
gradiente de una función. La matriz Hessiana da información de la
curvatura de una función
 ∂ f (2x ) ∂2 f (x) ∂2 f (x) 
2

∂x1∂x2
... ∂x1∂xn
 2∂x1 
 ∂∂x1f∂(xx2) ∂2 f (x)
... ∂∂x2f∂(xxn) 
2

F ( x) =  ∂x22

 2... ... ... ... 
 ∂∂xf∂(xx ) ∂ f (x)
... ∂ ∂fx(2x ) 
2 2

 1 n ∂x2∂xn n  d T F ( x * )d > 0

Programación no lineal sin restricciones


1er semestre de 2010
5/33

Definiciones básicas
Matriz definida positiva
• Matriz definida positiva
– Una matriz es definida positiva si para todo d, se
cumple dTAd > 0
– Una matriz es definida positiva si todos sus valores
propios son mayores a 0

Programación no lineal sin restricciones


1er semestre de 2010
6/33

Definiciones básicas
Orden de convergencia

Sea k k =0 una secuencia de números reales
{r }
convergiendo al límite r*. Si la secuencia es de
orden de convergencia p , donde p es un número
no negativo, se cumple que asintóticamente
* p
rk +1 − r = β rk − r
*

Programación no lineal sin restricciones


1er semestre de 2010
7/33

Definiciones básicas
• Vectores ortogonales
Dos vectores a y b son ortogonales si aTb = 0

Programación no lineal sin restricciones


1er semestre de 2010
8/33

Definiciones Básicas
Series de Taylor
Representación de una función como una
suma infinita de términos calculados a partir
de los valores de derivadas de orden
superior en un punto
∞ (n)
f ( x) = ∑
f (a)
(x − a )n

n =0 n!

Programación no lineal sin restricciones


1er semestre de 2010
9/33

Método de Newton
• Para una función no lineal f(x) con matriz hessiana F(x) la
aproximación de Taylor de segundo orden es
f (x) = f (x k ) + ∇f (x k )T (x − x k ) + 12 (x − x k )T F (x k )(x − xk )
• El mínimo de esta aproximación está dado por
x min = x k − [F (x k )] ∇f (x k )
−1

• Por lo tanto, podemos hallar aproximaciones sucesivas de segundo


orden al mínimo real haciendo

x k +1 = x k − α [F (x k )] ∇f (x k )
−1
Método de Newton

• El parámetro α se calcula por búsqueda lineal

Programación no lineal sin restricciones


1er semestre de 2010
10/33

Método de Newton
Precauciones
• Observe que el método de Newton puede ser visto como
perteneciente a la familia general de algoritmos
x k +1 = x k − α k M k ∇f ( x k )

• Para valores de αk pequeños podemos decir


f (x k +1 ) = x k − α k ∇f (x k )T M k ∇f (x k ) + O (α 2 )

a medida que αk 0, el segundo término domina al


tercero. Por lo tanto, si uno desea garantizar que f
decrezca para valores pequeños de αk, se debe tener
que ∇f (x k )T M k ∇f (x k ) > 0 . La manera más fácil de
asegurar esto es que Mk sea definida positiva
Programación no lineal sin restricciones
1er semestre de 2010
11/33

Método de Newton
Precauciones
x k +1 = x k − α [F( x k )] ∇f ( x k )T
−1

• Por lo tanto, en el método de Newton, la matriz Hessiana debe ser definida


positiva para que la dirección seleccionada sea una dirección de
descenso. Esto se cumple en puntos cercanos al mínimo, más no existe
garantía que esto se cumpla en puntos lejanos

• Existen algunas soluciones a este problema, por ejemplo el método de


Levenberg-Marquardt definido por

x k +1 = x k − α [εI + F (x k )] ∇f (x k )T
−1

siendo ε un escalar. El proceso se inicia con un determinado valor de ε y si


la matriz εI + F(xk) no es definida positiva se aumenta ε por un factor β y se
intenta de nuevo. Esto se repite hasta que se cumpla la condición deseada

Programación no lineal sin restricciones


1er semestre de 2010
12/33

Método de Newton
Ejemplos
Para funciones cuadráticas la aproximación es exacta y el
método converge en un solo paso
T
1 T 2 0 3
f (x) = x   x−  x+4
2 0 8 5

Punto Inicial [2.4 0.5]


Mínimo [1.5 0.625]
Número de Iteraciones 1
Direcciones [-0.9 0.125]

Programación no lineal sin restricciones


1er semestre de 2010
13/33

Método de Newton
Ejemplos
f ( x, y ) = ( x 3 − 8 x 2 ) cos( x) + 3( y 3 − 8 y 2 ) cos( y )

x2 = [7.5 7.5]

x1 = [7 6] Método # iter

DMR1 16

NWT1 11
xopt = [6.09 6.09]
DMR2 16
El método de Newton tiende a converger más tol = 1x10-6
rápido que el de descenso por gradiente, sin NWT2 -
embargo falla si la matriz Hessiana no es
definida positiva LM2 14

Programación no lineal sin restricciones


1er semestre de 2010
14/33

Método de Newton Modificado


• Un algoritmo intermedio entre el método de descenso
más rápido y el método de Newton es
x k +1 = x k − αS k ∇f (x k )T
siendo Sk una matriz simétrica de tamaño n x n. Si Sk = I
tenemos el método de descenso más rápido, mientras
que si Sk = F(xk)-1 tenemos el método de Newton

• Para garantizar obtener un proceso de descenso la


matriz Sk debe ser definida positiva

• Idealmente, para obtener convergencia rápida, Sk debe


ser cercana a F(xk)-1
Programación no lineal sin restricciones
1er semestre de 2010
15/33

Métodos Quasi-Newton
• Calcular la matriz Hessiana de una función y su
inversa puede ser un procedimiento muy
costoso e impráctico
• Una solución a este problema es utilizar
aproximaciones a la inversa de la matriz
Hessiana en lugar de la inversa real. Esta es
la idea subyacente de los métodos Quasi-
Newton
• Las aproximaciones se construyen a partir de
información del gradiente durante un proceso de
descenso
Programación no lineal sin restricciones
1er semestre de 2010
16/33

Métodos Quasi-Newton
Construcción de la inversa de la matriz Hessiana
• Sea f(x) en Rn una función con segundas derivadas parciales
continuas. Para dos puntos xk+1 y xk, con g i = ∇f ( x i ) y matriz
Hessiana constante F se cumple
q k ≡g k +1 −g k , p k ≡ x k +1 − x k
q k = Fp k (1)
• Esto implica que F puede ser determinada de manera única a
partir de n direcciones linealmente independientes y sus
respectivos valores del gradiente

• Si llamamos P a la matriz cuyas columnas son los vectores pk y Q la


matriz cuyas columnas son los vectores qk, a partir de (1), se
cumple
F = QP −1

Programación no lineal sin restricciones


1er semestre de 2010
17/33

Ejemplo ilustrativo
Descripción y puntos iniciales
f (x) = 2.5 x 2 + 2.5 y 2 + 2.5 z 2 + 2.5w2 + 2 xy + 2wz − x − 2 y − 3 z − 4w

f (x) = 12 x T Fx − bx
Método
∇f (x) = g (x) = Fx − b •Descenso más rápido

5 2 0 0 1 
2 5 0 0  2
F= , b= 
0 0 5 2   3
   
0 0 2 5  4

0   − 1
0  − 2
x0 =   ∇f (x 0 ) = Fx 0 − b =  
0   − 3
   
0  − 4

Programación no lineal sin restricciones


1er semestre de 2010
18/33

Ejemplo ilustrativo
Primera iteración
0.1456
0   − 1 0.2913
0  − 2 p 0 = x1 − x 0 =  
x0 =   ∇f (x 0 ) = Fx 0 − b =   0.4369
0   − 3  
    0.5825
0  − 4
1.3107 
1.7476 
q 0 = g1 − g 0 =  
0.1456  0.3107  3.3495
0.2913 − 0.2524  
3 .7864 
x1 =   ∇f (x1 ) = Fx1 − b =  
0.4369 − 0.3495
    1.3107 
0.5825 − 0.2136 1.7476 
Fp 0 =  
3.3495
 
3.7864
Programación no lineal sin restricciones
1er semestre de 2010
19/33

Ejemplo ilustrativo
Segunda iteración
− 0.0992
 0.0806 
0.1456  0.3107 
0.2913 − 0.2524 p1 = x 2 − x1 =  
 − 0.1115
x1 =   ∇f (x1 ) = Fx1 − b =    
0.4369 − 0.3495  0.0682 
   
 0.5825  − 0 .2136
− 0.3346
 0.2045 
0.0465 − 0.0240 q1 = g 2 − g1 =  
0.3718 − 0.0479 − 0.4214
 
x2 =   ∇f (x ) = Fx − b =    0.1177 
 0.3253 2 2
− 0.0719
   
0.6507 − 0.0958 1.3107 − 0.3346
1.7476 0.2045 
F[p 0 p1 ] =   = [q q1 ]
3.3495 − 0.4214 0

 
3.7864 0.1177 
Programación no lineal sin restricciones
1er semestre de 2010
20/33

Ejemplo ilustrativo
Tercera iteración
0.0035
0.0465  − 0.0240 0.0070
0.3718  − 0.0479 p2 = x3 − x 2 =  
x2 =   ∇f (x ) = Fx − b =   0.0105
0.3253 2 2
 − 0.0719  
    0.0140
0.6507  − 0.0958
0.0314
0.0500  0.0074  0.0419
0.3788 − 0.0060 q 2 = g3 − g 2 =  
 0.0803
x3 =   ∇f (x ) = Fx − b =  
 
0.3358 3 3
− 0.0084  0 .0907 
   
 0 .6647   − 0.0051
1.3107 − 0.3346 0.0314
1.7476 0.2045 0.0419
F[p 0 p1 p2 ] =  = [q 0 q1 q 2 ]
3.3495 − 0.4214 0.0803
 
3.7864 0.1177 0.0907
Programación no lineal sin restricciones
1er semestre de 2010
21/33

Ejemplo ilustrativo
Cuarta iteración
0.0500  0.0074  − 0.0024
0.3788 − 0.0060  0.0019 
x3 =   ∇f (x ) = Fx − b =   p3 = x 4 − x 3 =  
0.3358 3 3
− 0.0084 − 0.0027
     
0.6647  − 0.0051  0.0016 

0.0476  − 0.0006 − 0.0080


0.3807  − 0.0011  0.0049 
x4 =   ∇f (x 3 ) = Fx 3 − b =   q3 = g4 − g3 =  
 0.3331 − 0.0017  − 0.0101
     
 0.6663  − 0.0023  0.0028 

1.3107 − 0.3346 0.0314 − 0.0080


1.7476 0.2045 0.0419 0.0049 
F[p 0 p1 p 2 p 3 ] = FP =  =Q F = QP −1
3.3495 − 0.4214 0.0803 − 0.0101
 
3.7864 0.1177 0.0907 0.0028 

Programación no lineal sin restricciones


1er semestre de 2010
22/33

Métodos Quasi-Newton
Condición Quasi-Newton
• Es natural intentar construir aproximaciones sucesivas
Hk de F-1 de forma tal que en cada iteración estas sean
consistentes con q k = Fp k para todas las direcciones
utilizadas. Es decir
H k +1q k = p k , 0 ≤ i ≤ k Condición Quasi-Newton

• Al hacer esto, después de n pasos linealmente


independientes, tenemos que Hn = F-1 , si la matriz
Hessiana es constante, o Hn ~= F(xk)-1 en caso contrario

• Para k < n existen infinitas soluciones a este problema


ya que hay más grados de libertad que restricciones
Programación no lineal sin restricciones
1er semestre de 2010
23/33

Métodos Quasi-Newton
Aproximación de rango uno
• Una solución sencilla es actualizar iterativamente añadiendo una
matriz simétrica de (a lo sumo) rango uno que satisfaga la
condición Quasi-Newton. Una forma de conseguir esto es hacer

H k +1 = H k +
(p k − H k q k )(pk − H k q k )
T
Matriz simétrica de (a lo
q k (p k − H k qk )
T
sumo) rango uno

siendo q k ≡g k +1 −g k y p k ≡ x k +1 −x k

• Este proceso se inicia a partir de una matriz simétrica H0 cualquiera

• Este algoritmo no garantiza que la aproximación a la inversa de la


matriz Hessiana sea positiva definida. Además puede presentar
dificultades numéricas

Programación no lineal sin restricciones


1er semestre de 2010
24/33

Ejemplo ilustrativo
Descripción y puntos iniciales
f (x) = 2.5 x 2 + 5 y 2 + 1.5 z 2 + w2 + 2 xy + 2wz − x − 2 y − 3 z − 4w Métodos
•Descenso más rápido
f (x) = 12 x T Fx − bx •Actualización del Hessiano
∇f (x) = g (x) = Fx − b de rango uno

5 2 0 0  1   0.2174 − 0.0435 0 0
2 10 0 0 2  0 
−1  − 0.0435 0.1087 0
F= , b =  , F =
0 0 3 2 3  0 0 1 − 1
     
0 0 2 2 4  0 0 − 1 1.5

10  69  1 0 0 0
10 118 0 1 0 0
x0 =   g0 =   H0 =  F −1 − H 0 = 1.9133
10  47  0 0 1 0
     
10  36  0 0 0 1

Programación no lineal sin restricciones


1er semestre de 2010
25/33

Ejemplo ilustrativo
Primera iteración
10  69   − 7.2359 
10 118 − 12.3744
x0 =   g0 =   p 0 = x1 − x 0  
10  47   − 4.9288 
     
10  36   − 3 .7752 

 − 60.9281 
− 138.2156
 2.7641   8.0719  q 0 = g1 − g 0 = 
− 2.3744 − 20.2156  − 22.3368 
x1 =   g1 =    
 5.0712   24.6632   − 17.4080 
   
 6.2248   18.5920   0.8646 − 0.3174 − 0.0439 − 0.0344
− 0.3174 0.2562 − 0.1029 − 0.0806
H1 = 
− 0.0439 − 0.1029 0.9858 − 0.0111
 
− 0.0344 − 0.0806 − 0.0111 0.9913 
F −1 − H 1 = 1.6869
Programación no lineal sin restricciones
1er semestre de 2010
26/33

Ejemplo ilustrativo
Segunda iteración
 2.7641   8.0719   − 1.4210 
− 2.3744 − 20.2156  3.5589 
x1 =   g1 =   p 1 = x 2 − x1  
 5.0712   24.6632  − 4.3419
     
 6. 2248   18.5920   − 3.2731
 0.0126 
 32.7471 
1.3431  8.0845  q1 = g 2 − g1 =  
1.1845  12.5315 − 19.5719
x2 =   g2 =    
 0.7293  5.0913  − 15.2300
     0.7959 − 0.2443 − 0.2084 − 0.1634
2.9517  3.3620 
 − 0.2443 0.1784 0. 0722 0. 0568 
H2 =  
− 0.2084 0.0722 0.5918 − 0.3203
 
− 0.1634 0.0568 − 0.3203 0.7486 
F −1 − H 2 = 1.4941
Programación no lineal sin restricciones
1er semestre de 2010
27/33

Ejemplo ilustrativo
Tercera iteración
 − 0.8493
1.3431  8.0845   − 1.3165 
1.1845  12.5315 p2 = x3 − x 2 =  
x2 =   g2 =   − 0.5349
 0.7293  5.0913   
    − 0.3532
2.9517  3.3620 
 − 6.8797 
− 14.8638
 0.4938   1.2048  q 2 = g3 − g 2 =  
− 0.1320 − 2.3323  − 2.3110 
 
x3 =   g3 =    − 1.7762 
 0.1944  − 2.7803
   
 2.5985   1.5858   0.2140 − 0.0423 0.0415 − 0.0509
 − 0.0423 0.1083 − 0.0145 0.0178 
H3 =  
 0.0415 − 0.0145 0.4845 − 0.3687
 
 − 0 .0509 0. 0178 − 0. 3687 0 .7269 
F −1 − H 3 = 1.2924

Programación no lineal sin restricciones


1er semestre de 2010
28/33

Ejemplo ilustrativo
Cuarta iteración
 1.2048  − 0.2145
 0.4938   0.4152 
− 0.1320 − 2.3323
g3 =   p3 = x 4 − x 3 =  
x3 =  
− 2.7803 − 0.4949
 0.1944   
     − 0.2823
 2 .5985   1.5858 
− 0.2420
 3.7226 
 0.2793  0.9628 q3 = g4 − g3 =  
 0.2832  1.3903 − 2.0492
 
x4 =   g4 =    − 1.5543 
− 0.3005  0.7311
     0.2174 − 0.0435 − 0.0000 0.0000 
 2. 3162   0 .0315 − 0.0435 0.1087 − 0.0145 − 0.0000
H4 = 
− 0.0000 0.0000 1.0000 − 1.0000 
 
 0.0000 − 0.0000 − 1.0000 1.5000 

F −1 − H 4 = 2.5 × 10 −11
Programación no lineal sin restricciones
1er semestre de 2010
29/33

Métodos Quasi-Newton
Método de Davidon-Fletcher-Powell
• Este es el método más antiguo y uno de los más ingeniosos
(Davidon 1959 y Fletcher-Powell 1963)

• El algoritmo completo es el siguiente


d k = − H k ∇f ( x k )
x k +1 = x k + α k d k (Obtener α k por búsqueda lineal)
pk = α k dk
q k = ∇f (x k +1 ) − ∇f (x k )
T T Actualización de la inversa de la
p p H q q H
H k +1 = H k + k T k − k Tk k k matriz Hessiana añadiendo dos
p k qk qk H k q k matrices simétricas de rango uno

• Tiene la particularidad de que genera las direcciones del método del


gradiente conjugado cuando H0 = I. El método, además, mantiene la
positividad de la matriz Hessiana

Programación no lineal sin restricciones


1er semestre de 2010
30/33

Métodos Quasi-Newton
Método de Broyden-Fletcher-Goldfarb-Shanno
• Es posible actualizar la matriz Hessiana directamente (en
lugar de su inversa) utilizando la condición
q k = Fp k
⇒ q k = B k +1 p k , 0 ≤ i ≤ n
siendo Bk la k-ésima aproximación a la matriz Hessiana

• La similitud de esta ecuación con la condición Quasi-Newton


implica que cualquier fórmula para actualizar la inversa puede
ser transformada en una fórmula para actualizar la propia
matriz Hessiana con solo cambiar Hk por Bk e intercambiar pk
con qk
H k +1q k = p k , 0 ≤ i ≤ k Condición Quasi-Newton

Programación no lineal sin restricciones


1er semestre de 2010
31/33

Métodos Quasi-Newton
Método de Broyden-Fletcher-Goldfarb-Shanno
• Haciendo esta transformación para la fórmula de David-
Flecther-Powell tenemos
T T
q q B p p B
B k +1 = B k + k T k − k Tk k k
qk pk pk B k pk
• La inversa analítica de esta transformación es, conocida
como la actualización de Broyden-Fletcher-Goldfarb-Shanno
para H y está dada por
 qk T Hk qk  p k p k T p k q k T H k + H k q k pk T
H BFGS
k +1 = H k + 1 + T
 T −
p q T
 q k pk  k k q k pk

• Experimentos numéricos indican que su desempeño es


superior al de la fórmula de David-Fletcher-Powell

Programación no lineal sin restricciones


1er semestre de 2010
32/33

Método de Broyden-Fletcher-Goldfarb-Shanno
Ejemplo
f ( x, y ) = ( x 3 − 8 x 2 ) cos( x) + 3( y 3 − 8 y 2 ) cos( y )
Método # iter

DFP 7 xopt = [6.09 6.09]


BFGS 7 tol = 1x10-6
x2 = [7.5 7.5]
GC 11

• El método de DFP y el de BFGS siguen


casi la misma trayectoria (diferencias
x1 = [7 6] menores a 1x10-8)
• Note que las dos primeras direcciones
de ambos métodos coinciden con las
obtenidas con el método del gradiente
0.0105 0 
H BFGS = H DFP = F −1 (x opt ) =  conjugado
 0 0.0035

Programación no lineal sin restricciones


1er semestre de 2010

También podría gustarte