Está en la página 1de 16

METODOS DE GRADIENTE

PARA LA RESOLUCION DE
PROBLEMAS NO-LINEALES
DE OPTIMIZACION

ESCUELA POLITÉCNICA NACIONAL


FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA
OPTIMIZACION

ANGELES CORREA, SYLVIA LAINES, FABRICIO ANAGUANO.


MÉTODO DE GRADIENTE O DE CAUCHY

Sea 𝑓: ℝ𝑛 → ℝ diferenciable. La derivada direccional de de 𝑓 en la dirección de 𝑑є ℝ𝑛 está dada por:

𝐷𝑓(𝑥; 𝑑) = 𝛻𝑓(𝑥)𝑡 𝑑

Para obtener la dirección de máximo descenso de la función 𝑓 en un punto 𝑥є ℝ𝑛 tal que 𝛻𝑓(𝑥) ≠ 0,
se debe resolver el problema

min 𝛻𝑓(𝑥)𝑡 𝑑
𝑑є ℝ𝑛

‖𝑑‖2 = 1

La solución de este problema es:

𝛻𝑓(𝑥)
𝑑=−
‖𝛻𝑓(𝑥)‖

Y por lo tanto la dirección de máximo descenso de la función 𝑓 es:

𝑑 = −𝛻𝑓(𝑥)
Observaciones:

1) En cada etapa 𝛼𝑘 , llamado el paso del método en la etapa (k + 1)-ésima, debe verificar:

𝛻𝑓(𝑥 𝑘 + 𝛼𝑑𝑘 ) ∙ 𝑑 𝑘 = 0

Que en general será una ecuación difícil de resolver exactamente en α. Por esta razón se utilizan pasos
αk que serán aproximaciones del paso exacto, determinados por algún método de elección de paso,
como se verá más adelante.

Ejemplo:

Min 𝑧 = 𝑋12 + 2𝑋22 + 4𝑋1 − 4𝑋2

1.- Punto inicial tal que 𝑋 = 𝑋 𝐾 y contador 𝐾 = 0

Entonces 𝑋 0 = (1,1) 𝑦 𝐾 = 0

2.- Dirección del descenso 𝑑𝐾 = −𝛻𝑓(𝑋 𝐾 )

𝑑1 = −𝛻𝑓(𝑋1 )

𝑑′ 𝑑′ 𝑑′
𝛻𝑓(𝑥) = ( 𝑓(𝑥), 𝑓(𝑥), … … . . 𝑓(𝑥))
𝑑𝑥1 𝑑𝑥2 𝑑𝑥𝑛

𝑓(𝑥) = 𝑋12 + 2𝑋22 + 4𝑋1 − 4𝑋2

𝑑′
𝑓(𝑥) = 2𝑥1 + 4
𝑑𝑥1
𝑑′
𝑓(𝑥) = 4𝑥2 − 4
𝑑𝑥2

𝛻𝑓(𝑥) = (2𝑥1 + 4,4𝑥2 − 4)

𝛻𝑓(𝑥) = (2(𝑥1 + 2), 4(𝑥2 − 1))

Recordando que:

𝑋 0 = (1,1)

𝛻𝑓(1,1) = (2((1) + 2), 4((1) − 1))

𝛻𝑓(1,1) = (6,0)

−𝛻𝑓(1,1) = (−6,0)

Se debe iterar hasta que

‖∇𝑓(𝑥 𝑘 )‖ = 0

Evaluamos:

‖∇𝑓(𝑥 0 )‖ = √(6)2 + 02 = 6

6≥0

Por lo que se debe seguir iterando

3.- Búsqueda lineal para seleccionar un paso ∝𝑘

Se debe garantizar que:

𝑔𝑘 (∝𝑘 ) = 𝑓(𝑥 𝑘 +∝𝑘 𝑑𝑘 ) < 𝑓(𝑥 𝑘 )

∝𝑘 ≥ 0

Entonces:

𝑔0 (∝0 ) = 𝑓(𝑥 0 +∝0 𝑑0 ) < 𝑓(𝑥 0 )

∝0 ≥ 0

Como:
𝑋 0 = (1,1) y 𝑑0 = (−6,0)

𝑔0 (∝0 ) = 𝑓((1,1) +∝0 (−6,0)) < 𝑓(1,1)

Entonces:

𝑔0 (∝0 ) = 𝑓((1,1) +∝0 (−6,0)) = 𝑓(1 − 6 ∝0 , 1)

Recordando que:

𝑓(𝑥) = 𝑋12 + 2𝑋22 + 4𝑋1 − 4𝑋2

Entonces:

𝑓(𝑥) = (1 − 6 ∝0 )12 + 2(1)22 + 4(1 − 6 ∝0 )1 − 4(1)

Simplificando

𝑔0 (∝0 ) = 36 ∝0 2 − 36 ∝0 + 3

Derivando:

𝑔0 ′(∝0 ) = 72 ∝0 − 36

Si

∝0 ≥ 0

72 ∝0 − 36 = 0

1
∝0 =
2

4.- Calcular

𝑋 𝐾+1 = 𝑋 𝐾 +∝𝑘 𝑑𝑘

1 1
𝑔0 ( ) = 𝑓 ((1,1) + (−6,0)) = 𝑓(−2,1)
2 2

Entonces:

𝑋1 = (−2,1) 𝑦 𝐾 = 1

Volvemos al paso 1

𝑋 0 = (−2,1)
𝛻𝑓(−2,1) = (2((−2) + 2), 4((1) − 1))

𝛻𝑓(−2,1) = (0,0)

−𝛻𝑓(−2,1) = (0,0)

Se debe iterar hasta que

‖∇𝑓(𝑥 𝑘 )‖ = 0

Evaluamos:

‖∇𝑓(𝑥 0 )‖ = √(0)2 + 02 = 0

Entonces el punto (-2,1)

Es el óptimo y mínimo global del problema


MÉTODO DEL GRADIENTE CONJUGADO

El método del gradiente conjugado es el método iterativo más utilizado para resolver
grandes sistemas lineales de ecuaciones. El método del gradiente conjugado es efectivo
para sistemas de la forma:

𝐴𝑥̅ = 𝑏̅

En donde:

𝑥̅ : vector desconocido
𝑏̅: vector conocido
𝐴: matriz cuadrada simétrica y definida positiva

Función cuadrática

Se denomina función cuadrática a toda función escalar definida sobre un espacio vectorial de
dimensión n de la forma:

1 𝑡
𝑓(𝑥̅ ) = 𝑥̅ 𝐴𝑥̅ − 𝑏̅ 𝑡 𝑥̅ + 𝑐
2
En donde:

A: matriz cuadrada

𝑥̅ 𝑦 𝑏̅: vectores

c: constante escalar.

Se demostrará posteriormente que, si A es una matriz simétrica definida positiva, f alcanza un mínimo
en la solución de 𝐴𝑥̅ = 𝑏̅.

Se ilustrarán algunos de los conceptos que vayan surgiendo con el siguiente ejemplo:

3 −2 4 𝑥1
𝐴=( ), 𝑏̅ = ( ) , 𝑐 = 0, 𝑥̅ = (𝑥 )
−2 4 8 2

La representación geométrica del sistema 𝐴𝑥̅ = 𝑏̅ se muestra en la siguiente figura. En general la


solución 𝑥̅ se encuentra en el punto de intersección de n hiperplanos, cada uno de ellos de dimensión
n-1.
Representación geométrica de un sistema lineal de dos ecuaciones

Para este problema, la solución es 𝑥̅ = (4,4)𝑡 . La correspondiente forma cuadrática es:

1 𝑡
𝑓(𝑥̅ ) = 𝑥̅ 𝐴𝑥̅ − 𝑏̅ 𝑡 𝑥̅ + 𝑐
2
1 𝑥 𝑥
𝑓(𝑥1 , 𝑥2 ) = (𝑥1 𝑥2 ) [ 3 −2] ( 1 ) − (4 8) ( 1 ) + 𝑐
2 −2 4 𝑥2 𝑥2

1
𝑓(𝑥1 , 𝑥2 ) = (𝑥1 𝑥2 ) ( 3𝑥1 − 2𝑥2 ) − (4𝑥1 + 8𝑥2 )
2 −2𝑥1 + 4𝑥2

1 1
𝑓(𝑥1 , 𝑥2 ) = 𝑥1 (3𝑥1 − 2𝑥2 ) + 𝑥2 (−2𝑥1 + 4𝑥2 ) − (4𝑥1 + 8𝑥2 )
2 2
3 2
𝑓(𝑥1 , 𝑥2 ) = 𝑥 − 𝑥1 𝑥2 − 𝑥1 𝑥2 + 2𝑥2 2 − 4𝑥1 − 8𝑥2
2 1
𝟑
𝒇(𝒙𝟏 , 𝒙𝟐 ) = 𝟐 (𝒙𝟏 )𝟐 + 𝟐(𝒙𝟐 )𝟐 − 𝟐𝒙𝟏 𝒙𝟐 − 𝟒𝒙𝟏 − 𝟖𝒙𝟐 (a)

Aparece representada en la siguiente figura.


Gráfica de la forma cuadrática (a)

La siguiente gráfica muestra las curvas de nivel de f:

Curvas de nivel de la forma cuadrática (a), a cada elipse le corresponde un valor constante de f
Debido a que la matriz A es definida positiva, la superficie definida por f en ℛ 2 tiene la forma de un
paraboloide.

El hecho de que en ℛ 2 f sea un paraboloide permite interpretar geométricamente el que A sea una
matriz definida positiva: la función f alcanza un mínimo absoluto y a partir del punto en el que alcanza
dicho mínimo la función crece en todas las direcciones. Si A no es definida positiva, se pueden dar
los siguientes casos:

 A puede ser definida negativa, en este caso la función f sería un paraboloide abierto hacia
abajo, alcanzaría un máximo absoluto y a partir del punto en el que se alcanzase el máximo la
función decrecería en todas las direcciones.
 A puede ser una matriz singular en cuyo caso la solución de (1), de existir, no sería única:
existirían infinitos puntos críticos formando una recta o un plano dependiendo del rango de A.
 En los casos en los que A no es definida ni singular, sería una matriz indefinida. En estos casos
el punto x¤ sería un “punto silla" y tanto el método del gradiente como el método del gradiente
conjugado fallarían.
Dada la siguiente gráfica:

Se puede decir:

a) Forma cuadrática con matriz definida positiva


b) Con matriz definida negativa
c) Con matriz singular (y positiva), en este caso una línea atraviesa el fondo del valle (no hay un
único mínimo)
d) Con una matriz indefinida; como en este caso el punto crítico es un punto de silla, los métodos
de descenso no funcionarían correctamente. En dimensión superior a dos, las matrices
singulares también pueden tener puntos de silla.
El gradiente de una función de n variables se define como:

𝜕
𝑓(𝑥̅ )
𝜕𝑥1
𝜕
)
𝑓 ´ (𝑥̅ ) = ∇𝑓(𝑥̅ ) = 𝜕𝑥2 𝑓(𝑥̅

𝜕
𝑓(𝑥̅ )
(𝜕𝑥𝑛 )

El gradiente es un campo vectorial que tiene la importante propiedad de que, en un punto dado, 𝑥̅ , el
vector de campo correspondiente apunta en la dirección del máximo crecimiento de f. Derivando
parcialmente 𝑓(𝑥̅ )
1 1
∇𝑓(𝑥̅ ) = 𝐴̅𝑡 𝑥̅ + 𝐴𝑥̅ − 𝑏̅
2 2

Si A es simétrica, la ecuación se simplifica a:

∇𝑓(𝑥̅ ) = 𝐴𝑥̅ − 𝑏̅

Si igualamos el gradiente a cero, la solución del sistema será 𝐴𝑥̅ = 𝑏̅, donde 𝑥̅ que ahora será 𝑥̅ ∗ , es
un punto crítico de 𝑓(𝑥̅ ). Si la matriz A, además de ser simétrica se define positiva, entonces la
solución del sistema 𝐴𝑥̅ = 𝑏̅ es un mínimo de f.

Por tanto todo lo anterior implica que la solución de 𝐴𝑥̅ = 𝑏̅ se puede calcular buscando 𝑥̅ ∗ que
minimice 𝑓(𝑥̅ ).

Determinación de la dirección de descenso

Supóngase que se utiliza el método del gradiente para resolver un sistema de dos ecuaciones con dos
incógnitas: 𝐴𝑥̅ = 𝑏̅ (𝐴 ∈ 𝑀2 (ℛ)), simétrica y definida positiva). La representación geométrica de las
dos primeras iteraciones del método del gradiente aparece en la figura siguiente.
Nos podríamos plantear modificar el método del gradiente eligiendo una dirección de descenso
distinta al gradiente en la segunda iteración: la dirección que une x1 con la solución exacta 𝑥̅ ∗ . En este
caso tendríamos un método que obtiene la solución exacta en dos iteraciones. El problema es cómo
determinar esta nueva dirección sin conocer la solución exacta del sistema.

Para resolver el problema llamaremos 𝑑̅∗1 al vector que une 𝑥̅ 1 con 𝑥̅ ∗ :

𝑑̅∗1 = 𝑥̅ ∗ − 𝑥̅ 1 = 𝑥̅ ∗ − 𝑥̅ 0 − 𝜌0 𝑑̅ 0

En donde se ha denominado 𝑑̅ 0 a la primera dirección de descenso, 𝑑̅ 0 = 𝑟̅ 0

Proposición: Los vectores 𝑑̅0 𝑦 𝑑̅∗1 son conjugados respecto a la matriz A, es decir se cumple que:

(𝑑̅ 0 )𝑡 𝐴𝑑̅∗1 = 0

Por otro lado 𝑑̅∗1 se puede expresar como combinación lineal de 𝑟̅ 1 𝑦 𝑑̅ 0, de la siguiente forma:

𝑑̅∗1 = 𝛽1 𝑟̅ 1 + 𝛽2 𝑑̅0

No es preciso obtener el vector 𝑑̅∗1 , basta con determinar cuál es su dirección, para ello se realiza lo
siguiente:

1 1 𝛽2
𝑑̅1 = 𝑑̅∗ = 𝑟̅ 1 + 𝑑̅ 0 = 𝑟̅ 1 + 𝛼0 𝑑̅ 0
𝛽1 𝛽1

En donde 𝛼0 se puede obtener fácilmente a partir de la proposición anterior:


𝑡
(𝑑̅ 0 )𝑡 𝐴𝑑̅∗1 = (𝑑̅ 0 ) 𝐴(𝑟̅ 1 + 𝛼0 𝑑̅ 0 ) = 0
𝑡
(𝑑̅ 0 ) 𝐴𝑟̅ 1
𝛼0 = − 𝑡
(𝑑̅ 0 ) 𝐴𝑑̅ 0

Por lo tanto se tiene expresada la dirección que pasa por 𝑥̅ 1 y 𝑥̅ ∗ en función de datos que se han
calculado en la primera iteración. Por tanto, se puede diseñar un nuevo método para resolver un
sistema de dos ecuaciones y dos incógnitas (el método del gradiente conjugado):

Esquema iterativo:

𝑑̅ 0 = 𝑟̅ 0 = 𝑏̅ − 𝐴𝑥̅ 0
𝑡
(𝑑̅0 ) . 𝑑̅ 0
𝜌0 = 𝑡
(𝑑̅ 0 ) 𝐴𝑑̅ 0

𝑥̅ 1 = 𝑥̅ 0 + 𝜌0 𝑑̅ 0

𝑟̅ 1 = 𝑏̅ − 𝐴𝑥̅ 1
𝑡
(𝑑̅ 0 ) 𝐴𝑟̅ 1
𝛼0 = − 𝑡
(𝑑̅ 0 ) 𝐴𝑑̅ 0

𝑑̅1 = 𝑟̅ 1 + 𝛼0 𝑟̅ 0

𝑟̅ 1 . 𝑑̅1
𝜌1 = 𝑡
(𝑑̅1 ) 𝐴𝑑̅1

̅𝟐 = 𝒙
𝒙 ̅𝟏
̅𝟏 + 𝝆𝟏 𝒅 𝑺𝑶𝑳𝑼𝑪𝑰Ó𝑵 𝑬𝑿𝑨𝑪𝑻𝑨

A continuación, vamos a generalizar el método anterior a dimensión n. En este caso la dirección de


descenso en la iteración i sería una combinación lineal del residuo en la iteración i y de la dirección
de descenso en la iteración i-1:

𝑑̅ 𝑖 = 𝑟̅ 𝑖 + 𝛼𝑖−1 𝑑̅ 𝑖−1

Con
𝑡
(𝑑̅ 𝑖−1 ) 𝐴𝑟̅ 𝑖
𝛼𝑖−1 = − 𝑡
(𝑑̅𝑖 −1 ) 𝐴𝑑̅ 𝑖−1

Por lo tanto, el esquema iterativo para resolver un sistema de n ecuaciones con n incógnitas (𝐴𝑥̅ = 𝑏̅)
mediante el método del gradiente conjugado:
𝑑̅ 0 = 𝑟̅ 0 = 𝑏̅ − 𝐴𝑥̅ 0

𝑟̅ 0 . 𝑑̅ 0
𝜌0 = 𝑡
(𝑑̅ 0 ) 𝐴𝑑̅ 0

𝑥̅ 1 = 𝑥̅ 0 + 𝜌0 𝑑̅ 0

𝑟̅ 1 = 𝑏̅ − 𝐴𝑥̅ 1
𝑡
(𝑑̅ 0 ) 𝐴𝑟̅ 1
𝛼0 = − 𝑡
(𝑑̅ 0 ) 𝐴𝑑̅ 0

𝑑̅1 = 𝑟̅ 1 + 𝛼0 𝑟̅ 0

𝑟̅ 𝑖 . 𝑑̅ 𝑖
𝜌𝑖 = 𝑡
(𝑑̅ 𝑖 ) 𝐴𝑑̅ 𝑖

𝑥̅ 𝑖+1 = 𝑥̅ 𝑖 + 𝜌𝑖 𝑑̅ 𝑖

𝑟̅ 𝑖+1 = 𝑏̅ − 𝐴𝑥̅ 𝑖+1


𝑡
(𝑑̅ 𝑖 ) 𝐴𝑟̅ 𝑖+1
𝛼𝑖 = − 𝑡
(𝑑̅ 𝑖 ) 𝐴𝑑̅ 𝑖

𝑑̅ 𝑖+1 = 𝑟̅ 𝑖+1 + 𝛼𝑖 𝑑̅ 𝑖
MÉTODO DEL GRADIENTE DE FLETCHER Y REEVES

Corresponde a la versión del método del gradiente conjugado en el caso de una función f general.

A continuación se proporciona un resumen de este método de gradiente conjugado para minimizar


una función diferenciable general.

Paso Inicial

Se escoge un escalar de terminación 𝜀 > 0 y un punto inicial 𝑥1 . Dejamos 𝑦1 = 𝑥1 , 𝑑1 = −∇𝑓(𝑦𝑗 ),


𝑘 = 𝑗 = 1, y nos dirigimos al paso principal.

Paso Principal

1. Si ‖∇𝑓(𝑦𝑗 )‖ ≤ 𝜀, se procede a PARAR. De lo contrario, dejamos 𝜆1 ser una solución optima


al problema de minimizar 𝑓(𝑦𝑗 + 𝜆𝑑𝑗 ) sujeto a 𝜆 ≥ 0, y dejamos 𝑦𝑗+1 = 𝑦𝑗 + 𝜆𝑗 𝑑𝑗 .

Si 𝑗 < 𝑛, vamos al paso 2, de lo contrario, nos dirigimos al paso 3.

2. Tenemos 𝑑𝑗+1 = −∇𝑓(𝑦𝑗+1 ) + 𝛼𝑗 𝑑𝑗 , donde


2
‖∇𝑓(𝑦𝑗+1 )‖
𝛼𝑗 = 2
‖∇𝑓(𝑦𝑗 )‖

Reemplazamos 𝑗 por 𝑗 + 1, y vamos al paso 1.

3. Tenemos 𝑦1 = 𝑥𝑘+1 = 𝑦𝑛+1 , y también tenemos 𝑑1 = −∇𝑓(𝑦1 ). Al presentarse 𝑗 = 1,


reemplazamos 𝑘 por 𝑘 + 1, y nos dirigimos al paso 1.

Ejemplo:

Consideremos en siguiente problema,

Minimizar (𝑥1 − 2)4 + (𝑥1 − 2𝑥2 )2


Desarrollo

En casa iteración, 𝑑1 esta dado por −∇𝑓(𝑦1 ), y 𝑑2 esta dado por 𝑑2 = −∇𝑓(𝑦2 ) + 𝛼1 𝑑1, donde
‖∇𝑓(𝑦 )‖2
𝛼1 = ‖∇𝑓(𝑦2 )‖2 . Además, 𝑦𝑗+1 se obtiene por la optimización de 𝑑𝑗 , empezando desde 𝑦𝑗 . A la
1
iteración 4, el punto 𝑦2 = (2.185, 1.094)𝑡 , el cual está muy cerca del punto óptimo (2.00, 1.00), que
es buscado.

Como la norma del gradiente es igual a 0.02, que es suficientemente pequeña, nos detenemos aquí. La
tabla de resumen de las iteraciones del método Flecher – Reeves, se muestra en la siguiente tabla.

REFERENCIAS

 M. Bazaraa, H. D. Sherali and C. M. Shetty, Nonlinear Programming: Theory and Algorithms,


Second Edition, John Wiley and Sons, 1993.

 Dr. Gonzalo Hernández Oliva, Métodos Clásicos de Optimización para Problemas No-
Lineales sin Restricciones, UChile - Departamento de Ingeniería Matemática, 07 de Mayo
2006

También podría gustarte