Optimización sin restricciones

Anuncio
Optimización sin restricciones
Optimización sin restricciones
min J ( x )
Prof. Cesar de Prada
Dpt. Ingeniería de Sistemas
y Automática
UVA
[email protected]
x
x ∈ Rn
Los métodos sin restricciones son importantes
porque:
Hay problemas que se pueden formular sin
restricciones
Permiten introducir muchos conceptos y
explorar ideas que se usarán en problemas
NLP
Muchos problemas de optimización utilizan
en alguna fase algoritmos sin restricciones
Algunos problemas NLP pueden
reformularse como problemas sin
restricciones
Indice
Condiciones de extremo
Problemas monovariables
–
–
–
Métodos tipo Newton
Métodos de reducción de intervalos
Métodos de aproximación por polinomios
Existen muchos
métodos. En el curso
solo veremos algunos
de los mas
significativos
–
–
min J ( x )
x
x ∈ Rn
Condición
necesaria
Problemas multivariables
–
Condiciones de extremo
Algoritmos basados en gradientes
Algoritmos tipo Newton
Algoritmos basados solo en valores de la función
∂J ( x )
=0
∂x x *
Software
Condiciones de extremo
J( x ) = J( x * ) +
∂J
∂x
=0
∂J
∂x
'
∂ 2 J(x )
1
( x − x * ) + ....
( x − x * ) + ( x − x * )'
2
*
∂
x
2
x
x*
min J ( x )
x
x ∈ Rn
x* cumpliendo esta ecuación se denomina punto estacionario
∂ 2 J( x )
1
(x − x* )
( x − x * )'
∂x 2 x *
2
El hessiano H, o matriz de derivadas
segundas determina el carácter del posible
óptimo
H=
∂ 2J ( x )
∂x 2 x*
Condiciones de extremo
x*
J( x ) − J( x * ) ≈
En problemas sin restricciones
es posible encontrar
condiciones analíticas de óptimo
Aproximación de
2º orden
Si H(x*) es PD o PSD, J(x) presenta un mínimo en x*
Si H(x*) es ND o NSD, J(x) presenta un máximo en x*
Si H(x*) es indefinida no hay extremo, J(x) presenta un punto de silla en x*
∂J ( x )
=0
∂x x*
La solución analítica de la
condición de extremo, para
funciones complejas, suele
ser una ecuación no lineal
difícil de resolver, por lo que
suele ser preferible formular
métodos numéricos directos
para resolver el problema
Optimización monovariable
Método de Newton (Newton-Raphson)
Son problemas importantes porque:
min J ( x )
Se usan como un paso intermedio en otros
algoritmos
x
x∈R
Muchos problemas son monovariables
La solución analítica es J’(x)=0
min J ( x )
x
¿cómo resolver esta ecuación?
x∈R
Aplicando el método de Newton. Para la
solución de f(z) = 0:
z k +1 = z k −
Existen varios métodos basados en enfoques diferentes:
a) Imponer las condiciones analíticas
Que conduce a:
f (z k )
f ' (z k )
b) Minimizar un intervalo de incertidumbre
c) Aproximar la función por un polinomio
x k +1 = x k −
d) otros
J' (x k )
J' ' (x k )
Se parte de un valor inicial x0 y se
generan aproximaciones x1, x2, ....
hasta que se cumpla un criterio de
finalización
Supondremos que las funciones J(x) son unimodales y solo
presentan un mínimo local
Interpretación geométrica
J '(x k ) = (x k +1 − x k )J ''(x k )
J’(x)
x k +1 = x k −
Objetivo
x
xk
Criterios de finalización
J '(x k )
J ''(x k )
J' (x k )
J' ' (x k )
Criterios de finalización:
| J’(xk) | < ε
J’(x)
| xk+1 - xk | < ε
J’(x)
xk+1
| J(xk+1) – J(xk)| < ε
k>N
x
Cada iteración corresponde
a una aproximación lineal
x
xk
xk
xk+1xk+2
xk+1xk+2
La principal dificultad y empleo de tiempo está en el cálculo de las
derivadas
Derivadas
Convergencia
• Si las derivadas no son calculables
analíticamente, pueden aproximarse por:
J(x k + σ) − J(x k − σ)
J '(x k ) =
2σ
J ''(x k ) =
J(x k + σ) − 2J(x k ) + J(x k − σ)
σ2
Por tanto:
x k +1 = x k −
x k +1 = x k −
J ( x k + σ ) − J ( x k − σ)
σ2
J ( x k + σ) − 2 J ( x k ) + J ( x k − σ) 2 σ
x k +1 = x k −
J' (x k )
J' ' (x k )
x*
x5
x
σ >0
pequeño
x0
x1
x3
x4
x2
Diremos que la solución converge a un valor x* cuando la
secuencia de valores xk generados por el algoritmo verifican
x k +1 − x * ≤ c x k − x *
0 < c <1
A partir de un k. De modo que los puntos xk están cada
vez mas próximos a x*
Ejemplo J(x) = x2 + 4 cos(x)
Método de Newton
J’(x)
6
J' (x k )
x k +1 = x k −
J' ' (x k )
Minimizar J(x)
5
J’(x*) =
4
xk
Ventajas:
J(x)
x
= 2x* - 4sen(x*) = 0
3
xk+1
Necesita resolverse
por métodos
numéricos
2
1
Converge localmente en forma cuadrática
0
Inconvenientes:
-4
-3
-2
Hay que calcular o estimar primeras y segundas derivadas
-1
0
1
2
x
x*
x*
Si J’’(x) →0 converge lentamente
3
4
x* = ± 1.895.. , 0
2 mínimos (locales, globales)
y un máximo
Si x0 esta muy alejado de x* puede no converger, o converger a otro valor
Minimizar J(x) = x2 + 4 cos(x)
Minimizar J(x)
usando Newton
6
5
4
J’(x) = 2x-4sen(x)
4
3
J’’(x) = 2 – 4cos(x)
2
2
1
1
-1
x k +1 = x k −
1
2
x
x*
3
4
x k +1
J' (x k )
J' ' (x k )
x − 2sen(x k )
= xk − k
1 − 2 cos(x k )
x0 = 3
Ejemplo J(x) = x2 + 4 cos(x)
-2
-1
3 − 2sen(3)
=
1 − 2 cos(3)
= 2.088
4
2.088 − 2sen(2.088)
x 2 = 2.088 −
1 − 2 cos(2.088)
= 1.91
x 3 = ......
x1 = 3 −
0
0
x k − 2sen(x k )
1 − 2 cos(x k )
x0 = 3
3
0
-2
x k +1 = x k −
5
J(x)
J(x)
6
Minimizar J(x) = x2 + 4 cos(x)
0
x k +1 = x k −
1
2
x
x*
J' (x k )
J' ' (x k )
3
Métodos de Reducción de Intervalos
3,5
3
6
2,5
2
5
1,5
x0 = 3
1
0,5
0
J(x)
4
3
0
1
2
1
-1
4
5
6
7
x0 = 1
20
0
-2
3
k
2
Generar una sucesión de
intervalos [x1 , x2], [x3, x4],.... de
dentro de cada uno de los
cuales esta el óptimo y longitud
cada vez menor hasta llegar a
la precisión requerida
x1
10
0
1
2
x
x*
3
J(x)
4
2 pasos:
0
0
5
10
15
-10
Converge a diferentes velocidades y
puntos en función del punto inicial
k
Excel
20
25
30
1. Encontrar un intervalo inicial que contenga a
x*
2. Reducir la longitud inicial hasta la precisión
requerida
x3
x4 x
2
x*
1 (Semi)Intervalo inicial
1 Intervalo inicial
Si J(x1) < J(x2) → x* < x2
Si J(x1) > J(x2) → x* > x1
Si J(x1) = J(x2) → x* ∈[ x1, x2]
x1 = x 0 + δ
x* x
1
J(x)
x2
x 2 = x 0 + 2δ
J(x)
x0 x1 .... xk
x 3 = x 0 + 22 δ
x k = x0 + 2
x*
x2
x1
2 Reducción del intervalo
El intervalo inicial es [xk-1 , xk+1]
δ Es positivo o negativo según el semiintervalo
2 Reducción del intervalo, ε-minimax
J(x)
J(x)
Si en el paso k el intervalo en el
que se encuentra el óptimo es
J(xk-1) > J(xk) ≤ J(xk+1)
δ
Compromiso precisión
/ nº de iteraciones
x2
x*
k −1
Criterio: minimizar la longitud del
mayor de los intervalos posibles
[αk , βk], se puede reducir su
longitud Lk = βk - αk evaluando la
función J(x) en dos puntos γ1 < γ2
internos al intervalo
Min max { γ2 - αk, βk - γ1, γ2 - γ1}
Si γ2 = γ1 + ε
ε
γ1 γ2
αk
J ( γ1 ) > J ( γ 2 ) ⇒ [α k +1 , β k +1 ] = [ γ1 , β k ]
J ( γ1 ) < J ( γ 2 ) ⇒ [αk +1 , β k +1 ] = [αk , γ 2 ]
αk
βk
γ1 γ2
Min max{γ1 + ε - αk, βk - γ1}
βk
βk - γ1
γ1 + ε - αk = βk - γ1
¿Como elegir los dos
puntos internos?
β k + αk ε
−
2
2
β + αk ε
γ2 = k
+
2
2
γ1 =
J ( γ1 ) = J ( γ 2 ) ⇒ [α k +1 , β k +1 ] = [ γ1 , γ 2 ]
Simétricos
respecto al
centro del
intervalo
J(x)
βk
αk - ε
6
γ1
γ2 β
k
γ2 - αk = βk - γ1
β + αk ε
γ1 = k
−
2
2
βk + αk ε
γ2 =
+
2
2
β + αk ε
L k +1 = γ 2 − αk = k
+ − αk =
2
2
β k − αk ε L k + ε
=
+ =
2
2
2
J(x)
ε = 0.02
3,16
3,339
3
2
Puntos intermedios
iniciales: 1 + (3-1)/2 ± ε/2
3,331
1
1,99, 2.01
0
-2
En N pasos:
-1
0
1
x
4
L + ( 2 − 1)ε L0
LN = 0
≈ N
2N
2
Intervalo inicial [1,3]
4
ε debe escogerse tan pequeño como se
pueda para reducir la longitud del intervalo
N
γ1
Minimizar J(x)
5,04
5
alfa, beta
αk
γ1 + ε - αk
Ejemplo J(x) = x2 + 4 cos(x)
2 Reducción del intervalo, ε-minimax
ε
xk+1
Hasta que:
....
x1
J(x)
Conocido un semi-intervalo
inicial p.e. [x0, ∞) donde esta x*,
para localizar un intervalo inicial
se puede generar una
secuencia de valores:
J(x)
Se toman dos puntos x1 < x2
3
2
3
1
2,01
1,495
2,01
4
Excel
2
1
0
1
2
3
4
k
5
6
7
Sección dorada
Método de la Sección dorada
ρLk
J(x)
ε
αk
γ1 γ2
ε
βk
αk
γ1 γ2
βk
γ
αk+1
βk+1
J(x)
γk
P(x) = a + bx +
βk
cx2
P(αk) = a + b αk + c αk 2 = J(αk)
P(γk) = a + b γk + c γk 2 = J(γk)
P(βk) = a + b βk + c βk 2 = J(βk)
Si se conoce el valor de J(x) en tres
puntos del intervalo [αk , βk] se
puede calcular un polinomio P(x) de
segundo orden que pase por dichos
puntos y que se puede considerar
una aproximación de J(x) en el
intervalo.
J(x)
µ
αk
γk
αk
γk
µ
γk
µ
βk
αk
γ1
γ1 − α k = ρ(β k − α k ) = ρ L k = β k − γ 2
βk
γ 2 − γ1 = (1 − 2ρ)L k
γ 2 − α k = (1 − ρ)L k
γ1 − α k = δ 2 − α k +1 = (1 − ρ)L k +1 =
γ2
= (1 − ρ)( γ 2 − α k )
βk
ρL k = (1 − ρ) 2 L k
ρ 2 − 3ρ + 1 = 0
3 ± 5 no es < 0.5
=
2
 0.382
1 − ρ = 0.618
Lk+1 = 0.618 Lk
ρ=
L N ≈ 0.618 N L 0
Métodos de aproximación por
polinomios (2º orden)
P(x) = a + bx + cx2
Sistema de ecuaciones lineales en
a, b, c que pueden calcularse:
P(αk) = a + b αk + c αk 2 = J(αk)
P(γk) = a + b γk + c γk 2 = J(γk)
P(βk) = a + b βk + c βk 2 = J(βk)
J(x)
c=
b=
J (β k ) − J ( γ k )
+
J (αk ) − J ( γ k )
(βk − αk )(βk − γ k ) (βk − αk )(γ k − αk )
J ( γ k ) − J (αk )
− c( γ k + α k )
γ k − αk
Mínimo de P(x) = a + bx + cx2
αk
γk
µ
βk
µ = - b / (2c) , calcular J(µ) y
reducir el intervalo
Optimización multivariable
min J ( x )
µ= - b / (2c) , calcular J(µ) y reducir el
intervalo
x ∈Rn
Cualquiera de los dos intervalos que
pueden resultar de la reducción,
contiene un punto interior y puede
usarse para una nueva iteración
γ2
βk+1
Mínimo de P(x) = a + bx + cx2
Son posibles otros métodos, p.e. de
interpolación cúbica usando 4 puntos
βk
αk+1
El método usa el mínimo analítico
del polinomio para estimar un nuevo
punto (próximo al óptimo) y reducir
la longitud del intervalo de
incertidumbre, pero calculando un
solo valor nuevo de J(x) en cada
iteración
Métodos de aproximación por
polinomios
γ1
δ1 δ2
Puede plantearse el mismo
problema imponiendo la
condición de que uno de los
puntos sirva para la siguiente
iteración. El algoritmo de la
sección dorada está basado en
esta idea
Metodos de aproximación por
polinomios (2º orden)
αk
αk
El método del ε – minimax
evalua la función J en dos
puntos internos que no reutiliza
en la siguiente iteración
x
Ejemplo
J ( x 1 , x 2 ) = x 12 + x 22 − x 1 x 2 + 2
 2 − 1 x 1 
1
J ( x 1 , x 2 ) = ( x 1 , x 2 )' 
  + 2
2
− 1 2  x 2 
xk = valor del vector x en el paso k
Algoritmos de búsqueda del óptimo
x k +1 = x k + ∆x k =
sk
xk
xk+1
= x k + σks k
Criterios de terminación
1 El gradiente es suficientemente
pequeño
sk
xk+1
xk
2 La solución no avanza
significativamente
x k +1 − x k
≤ ε2
ε0 + x k
Métodos iterativos:
Partiendo de un valor inicial
x0 , se busca un nuevo punto
en una cierta dirección de
búsqueda sk que de un mejor
valor de J
Se continua iterando hasta
estar suficientemente cerca
del óptimo
Curvas de nivel de J(x)
Propiedades del algoritmo
3 La función de costo no mejora
significativamente
xk
La longitud del paso es cada vez
menor
J ( x k +1 ) − J ( x k )
≤ ε3
ε 0 + J( x k )
ε fija la tolerancia o precisión
ε0 > 0 evita divisiones por cero
4 El número de iteraciones excede
un máximo N
Propiedades del algoritmo
Estabilidad / Convergencia
sk
xk+1
∂J ( x k )
≤ ε1
∂x
Velocidad de convergencia al
óptimo de orden p
sk
xk+1
xk
c velocidad de convergencia
x k +1 − x *
Convergencia al optimo
x k − x*
p
≤c
k grande
0 < c <1
Velocidad de convergencia superlineal
Convergencia local / global
lim
El algoritmo es un sistema dinámico
discreto
Optimización multivariable
k →∞
x
-g(x)
Variedad de enfoques:
–
–
–
x k − x*
p
=0
Métodos basados en el gradiente
min J ( x )
x ∈Rn
x k +1 − x *
Algoritmos basados en el gradiente
Algoritmos tipo Newton
Algoritmos basados en valores de la función
El vector gradiente de
J(x) en un punto x indica
la dirección en la que la
función experimenta el
máximo crecimiento a
partir de ese punto.
El gradiente negativo
indica la dirección de
máxima disminución
g(x) ' =
Curvas de nivel de J(x)
∂J
∂x
Algoritmo del descenso mas
pronunciado (Steepest descent)
Algoritmo del descenso mas
pronunciado con funciones cuadráticas
∂J(x k )
'=
∂x
= x k − σk g(x k )
x k +1 = x k − σk
xk+1
J ( x ) = a + b' x +
σk
Curvas de nivel de J(x)
Tienen especial interés porque una función cualquiera continuamente
diferenciable, puede aproximarse por una función cuadrática en las
proximidades del óptimo:
∂J
J(x) = J(x ) +
∂x
∂ 2 J(x)
1
(x − x ) + (x − x * ) '
(x − x * ) + ....
2
∂x 2 x*
x*
*
1
J(x) = a + b ' x + x 'Cx
2
C=
¿Converge al óptimo cuando k→∞ ?
Velocidad de convergencia
Algoritmo del descenso mas
pronunciado con funciones cuadráticas
Funciones cuadráticas
*
∂ 2 J(x)
∂x 2 x*
La región x’Cx ≤ 1
es convexa si C es
PSD
También son las funciones mas sencillas de modo que, si un método no va
bien con una de ellas, probablemente no ira bien con otra función mas
compleja
Algoritmo del descenso mas
pronunciado con funciones cuadráticas
1
J(x k − σk g(x k )) = J(x k ) − σk g(x k ) + σ2k g(x k )' Cg(x k )
2
∂J(x k − σk g(x k ))
=0
min J(x k − σk g(x k )) ⇒
σk
∂σk
σ*
1
x ' Cx g ( x ) = b + Cx
2
J ( x k − σ k g ( x k )) = a + b ' ( x k − σ k g ( x k )) +
J(x ) = a + b' x +
1
+ ( x k − σ k g ( x k ))' C ( x k − σ k g ( x k )) =
2
1
b'
= J ( x k ) − 2 σ k g ( x k ) + [ − x k ' σ k Cg ( x k ) − σ k g ( x k )' Cx k +
2
2

1  ( b + Cx k )' σ k g ( x k ) −
1
+ σ 2k g ( x k )' Cg ( x k )] = J ( x k ) − 
=
2  − σ k g ( x k )' ( b + Cx k ) + σ 2k g ( x k )' Cg ( x k ) 
2
1
2
= J ( x k ) − σ k g ( x k ) + σ 2k g ( x k )' Cg ( x k )
2
Ejemplo
x2
2
0,9
0,8
0,7
0,6
0,5
0,4
0,3
0,2
0,1
0
J ( x1 , x 2 ) = x12 + x 22 − x1x 2 + 2
0
0,1
0,2
k
2
g(x k )' Cg(x k )
x k +1 = x k −
0,5
2,5
g( x k )
2
2
g(x k )' Cg(x k )
g( x k )
J(x)
σ =
2
0,4
3
*
k
g(x k )
0,3
x1
− g(x k ) + σ g(x k )' Cg(x k ) = 0
*
k
Las funciones cuadráticas son
adecuadas para evaluar el
algoritmo: muchas funciones
pueden aproximarse
adecuadamente por ellas
cerca del óptimo y tienen
solución conocida
 x k +1 = x k − σ k g ( x k )
min J ( x − σ g ( x ))
k
k
k
 σ k
parar si g(x k ) ≤ ε
Avanzar todo lo que sea
posible en la dirección de
máximo descenso. En cada
paso se hace una optimización
escalar sobre σk
C, simétrica positiva definida
g ( x) = b + Cx
min J(x k − σk g(x k ))
xk
1
x' Cx
2
1,5
1
0,5
0
0
2
4
k
6
8
2 x − x 2 
 2 − 1
g( x) =  1
C=


− 1 2 
2 x 2 − x1 
0.8
x0 =  
x k +1 = x k − σ k g( x k )
0.3
Excel
Función de Rosenbrock (banana)
J ( x ) = 100( x 2 − x12 ) 2 + (1 − x1 ) 2
Algoritmo del descenso mas
pronunciado con funciones cuadráticas
¿Convergencia? Se alcanza el óptimo exactamente cuando g(x)=0
Con funciones cuadráticas, si no se alcanza el óptimo en la primera
iteración, no se alcanza nunca
xk+1 = xk − σkg(xk )
g(x) = b + Cx
g(xk+1) = b + Cxk+1 = b + Cxk − Cσkg(xk ) =
= g(xk ) − σkCg(xk )
Supongamos que g(x0)≠ 0,
vector propio de C.
Algoritmo del descenso mas
pronunciado con funciones cuadráticas
g ( x k +1 ) = g ( x k ) − σ*k Cg ( x k )
Si g(x0) es vector propio de C:
g ( x1 ) = g ( x 0 ) − σ Cg ( x 0 ) = g ( x 0 ) − σ λg ( x 0 ) =
*
k
= g( x 0 ) −
Algoritmo del descenso mas
pronunciado con funciones cuadráticas
En general si g(x0) no es vector propio de C:
Cg ( x 0 ) = αg ( x 0 ) + z
Cg ( x 0 ) = λg ( x 0 )
*
k
g( x 0 )
Puede ocurrir que g(x0) sea o no sea
z ≠ 0 α ≠ 0 z ⊥ g( x 0 )
g ( x 1 ) = g( x 0 ) − σ Cg ( x 0 ) = g ( x 0 ) − σ1* (αg ( x 0 ) + z) =
*
k
2
2
g ( x 0 )' λg ( x 0 )
λg ( x 0 ) = 0
Y el optimo se alcanza en una iteración
= g( x 0 ) −
g( x 0 )
( αg ( x 0 ) + z ) =
g ( x 0 )' (αg ( x 0 ) + z)
= g( x 0 ) −
1
z
(αg ( x 0 ) + z ) = − ≠ 0
α
α
Y el optimo no se alcanza en la siguiente
iteración
Algoritmo del descenso mas
pronunciado con funciones cuadráticas
y además g(x1) no es vector propio de C:
En efecto, si se cumpliera:
z
z
Cg ( x 1 ) = λg ( x 1 ) ⇒ C(− ) = λ(− ) ⇒ Cz = λz ⇒ z' C = λz'
α
α
z' Cg ( x 0 ) = λz' g ( x 0 ) = 0 (*)
pero
z' Cg ( x 0 ) = z' (αg( x 0 ) + z) = z ≠ 0
2
Lo que es contradictorio con la expresión (*),
quedando probado por inducción.
En general el algoritmo del descenso mas pronunciado no
alcanzará el óptimo exactamente cuando k→∞
Algoritmos tipo Newton
Se diseña para una función cuadrática y se aplica a una función
cualquiera
Supongamos que J(x) es cuadrática. ¿Cómo escogeríamos ∆x para
alcanzar el óptimo en un paso?
1
J ( x ) = a + b' x + x ' Cx
2
x k +1 = x k + ∆x k
g ( x ) = b + Cx H = C
C es el hessiano o matriz
de segundas derivadas de J
g ( x k + ∆x k ) = b + C( x k + ∆x k ) = g ( x k ) + C∆x k
g ( x k + ∆x k ) = 0 ⇒ g ( x k ) + C∆x k = 0
∆x k = −C −1g ( x k )
x k +1 = x k − C −1g ( x k )
Algoritmo de Newton-Raphson
Por analogía, para una función cualquiera J(x) diferenciable
dos veces, podemos usar el algoritmo:
−1
 ∂ J(x k ) 
−1
s k = −
 g( x k ) = −H( x k ) g( x k )
2
 ∂x 
Método de segundo
orden
min J ( x k − σ k H( x k ) −1 g ( x k ))
2
σk
x k +1 = x k + σ k s k
sk dirección de
busqueda en el paso k
A medida que la función se acerque al óptimo se asemejará mas a
una cuadrática y el algoritmo convergerá rápidamente al óptimo
Ejemplo
J ( x1 , x 2 ) = x12 + x 22 − x1x 2 + 2
2 x − x 2 
 2 − 1
g ( x) =  1
C=


− 1 2 
2 x 2 − x1 
0.8
x0 =  
0.3
Al ser cuadrática:
x k +1 = x k − Cg ( x k )
−1
0.8  2 − 1  1.3  0.8 0.8 0
x1 =   − 
 
 =  −  =  
0.3 − 1 2  − 0.2 0.3 0.3 0
0 
g (x1 ) =  
0 
Excel
s k = −H( x k ) −1 g ( x k )
min J ( x k − σ k H( x k ) −1 g ( x k ))
Ventajas / Inconvenientes del método
de Newton-Raphson
Convergencia
Ventajas:
En una aproximación de primer orden:
Normalmente requiere menos iteraciones
σk
x k +1 = x k + σ k s k
Si el hessiano no es PD
no hay garantía de que
J(x) vaya disminuyendo
en cada iteración
∂J(x k )
∆x k =
∂x
= J(x k ) + g(x k ) ' σk s k =
J(x k +1 ) ≈ J(x k ) +
Inconvenientes:
Requiere conocer el gradiente y el hessiano
Requiere invertir el hessiano
No hay garantía de que el hessiano sea PD y el algoritmo converja
El gradiente y el hessiano pueden
aproximarse por diferencias finitas
 ∂ J( x k ) 
 s k = −g ( x k )

2
 ∂x 
−1
 ∂ 2 J(x k ) 
= J(x k ) − σk g(x k ) ' 
 g(x k )
2
 ∂x 
Solo si J(x) es convexa
hay garantía de que H es
PD
-g(xk)
2
La inversión del hessiano puede
cambiarse por la resolución de un
sistema de ecuaciones lineales en sk:
Algoritmo de Marquardt-Levenberg
Modifica el Hessiano para asegurar que sea PD en cada paso
x k +1 = x k + σ k s k
−1
 ∂ 2 J( x k )

sk = −
+ β k I g ( x k )
βk ≥ 0
2
 ∂x


 ∂ 2 J(x k )
escoger β k para que 
+ β k I sea PD
2

 ∂x
−1

 ∂ 2 J(x k )
min J ( x k − σ k 
+ β k I g ( x k ))
2
σk

 ∂x
Comprobación: sk es una dirección de descenso si:
− g ( x k )' s k > 0
Algoritmo de Marquardt-Levenberg
escoger x 0 , β0

 ∂ 2 J(x k )
+ β k I  s k = −g ( x k )

2

 ∂x
si − g( x k )' s k ≤ 0 ⇒ β k = 2β k recalcular s k
resolver en s k
−1

 ∂ 2 J( x k )
min J ( x k − σ k 
+ β k I g ( x k ))
2
σk

 ∂x
x k +1 = x k + σ k s k
sk
Minimización respecto a σk
Métodos quasi-Newton
Tratan de evitar el cálculo de la inversa del hessiano, sustituyéndolo
por una matriz Ĥk positiva definida que se actualiza en cada paso y
debe aproximarse a H(xk)-1
Pueden aplicarse los métodos de optimización monovariable
A veces se prefiere usar un procedimiento mas simple con la condición
de que J(x´k) decrezca.
El menor valor de σk es 0 y el método
de Newton puro es con σk =1
Puede evaluarse J para σk 0 y 1, si
no decrece:
Puede hacerse una interpolación
cuadrática conocidos J(xk+sk)
J(xk) y g(xk)’sk y calcular su
mínimo como estimación de σk
J(xk+sk)
1
σˆ k =
Si la función J(x) fuera cuadrática,
despues de n pasos, se debe
verificar que Hn = C-1 pues verifican
las mismas ecuaciones.
Por tanto, un algoritmo basado en Ĥ
alcanzaría el mínimo en n pasos
Se La idea se aplica por extensión a una J(x) cualquiera
Algoritmo DFP (Davidon, Fletcher,
Powell)
En particular para:
~
β = H k ∆g ( x k )
~
∆x k α'
H ∆g( x k )β'
− k
Tk =
β' ∆g( x k )
α' ∆g( x k )
~
~
H ∆g ( x k )(H k ∆g ( x k ))'
∆x k ∆x k '
− k
Tk =
~
∆x k ' ∆g ( x k )
∆g ( x k )' H k ∆g( x k )
α = ∆x k
σk
−g(x k ) 's k
2[J(x k + s k ) − J(x k ) − g(x k )s k ]
Si se encuentra una relación Hk+1 = Hk + Tk que verifique
∆xk = Hk+1∆g(xk) durante n pasos, y la función es
cuadrática, entonces Hn = C-1
k = 0,1,2,...n − 1
Dirección de búsqueda
Tk matriz de corrección
Si J(x) fuese cuadrática, para cualquier ∆xk se verifica:
J(xk) - σkg(xk)’sk
Métodos quasi-Newton
∆x k = C −1∆g( x k )
~
∆x k = H k +1∆g( x k )
~
s k = −H k g( x k )
~
~
H k +1 = H k + Tk
J(xk+σksk)
Si queremos que
Hk+1 se aproxime a
C-1 :
∆g( x k ) = g ( x k +1 ) − g ( x k ) = C∆x k
~
∆x k = C −1∆g ( x k ) ⇒ ∆x k = H k +1∆g ( x k )
~
(H k + Tk )∆g ( x k ) = ∆x k
Métodos quasi-Newton
Hay muchas expresiones para Tk que pueden cumplir la relación
~
(H k + Tk )∆g( x k ) = ∆x k p.e. : ∀α, β ∈ R n , ≠ 0
~
H ∆g ( x k )β'
∆x k α'
Tk =
− k
β' ∆g ( x k )
α' ∆g ( x k )
∆x k α'
~
~
(H k + Tk )∆g( x k ) = H k ∆g ( x k ) +
∆g ( x k ) −
α' ∆g ( x k )
~
H k ∆g ( x k )β'
~
~
∆g ( x k ) = H k ∆g ( x k ) + ∆x k − H k ∆g ( x k ) = ∆x k
−
β' ∆g ( x k )
Algoritmo DFP (Davidon, Fletcher,
Powell)
~
H 0 PD, simetrica
~
min J ( x k − σ k H k g ( x k ))
escoger x 0
σk
~
x k +1 = x k − σ k H k g( x k )
∆x k = x k +1 − x k
∆g ( x k ) = g ( x k +1 ) − g ( x k )
~
~
H ∆g ( x k )(H k ∆g ( x k ))'
∆x k ∆x k '
~
~
− k
H k +1 = H k +
~
∆x k ' ∆g ( x k )
∆g ( x k )' H k ∆g( x k )
Algoritmo BFGS (Broyden, Fletcher,
Goldfarb, Shanno) 1970
Algoritmo BFGS (Broyden, Fletcher,
Goldfarb, Shanno) 1970
C ∆x k = ∆g ( x k )
~
escoger x 0 , H 0
~
s k = −H k g( x k )
Estima recursivamente el Hessiano
en lugar de su inversa
B k +1∆x k = ∆g ( x k )
~
∆x k = H k +1∆g ( x k )
∆x y ∆g juegan papeles simetricos
al caso DFP
intercambi ar ∆x k con ∆g ( x k ) en la formula de Tk
B k +1 = B k +
~
H k +1 = B k−1+1
∆g ( x k ) ∆g ( x k )' B k ∆x k ∆x k ' B k
−
∆x k ' ∆g ( x k )
∆x k ' B k ∆x k
Bk siempre es
PD si J(x) es
convexa
puede estimarse mediante
(A + zv' ) -1 = A −1 −
−1
−1
A zv' A
1 + v' A −1z
Si Bk es PD y ∆xk’∆g(xk) > 0
entonces Bk+1 es PD, si no se
cumple no se actualiza Bk
Métodos multivariables basados solo
en valores de J(x) (Direct search)
Los métodos basados en el gradiente son eficaces con
funciones “suaves” y pueden funcionar adecuadamente con
muchas variables
No obstante, en muchos casos prácticos, la evaluación
analítica del gradiente puede ser complicada o imposible en
algunos puntos debido a discontinuidades, fuertes no
linealidades, etc.
En algunos casos, una solución es utilizar estimaciones del
gradiente basadas en cocientes de incrementos
Otra posibilidad es utilizar algoritmos que no estén basados en
el cálculo del gradiente, p.e.:
– Método del simplex
– Método de las direcciones conjugadas de Powell
PD, simétrica
En general es mas eficiente que DFP
min J ( x k + σ k s k )
σk
x k +1 = x k + σ k s k
∆x k = x k +1 − x k
∆g( x k ) = g( x k +1 ) − g( x k )
 ∆x k ∆g( x k )'  ~  ∆x k ∆g( x k )' 
∆x k ∆x k '
~
H k +1 = I −
 H k I −
+
 ∆x k ' ∆g ( x k )   ∆x k ' ∆g ( x k )  ∆x k ' ∆g( x k )
Método de la búsqueda Simplex
Los métodos de búsqueda directa basados en patrones evalúan la
función a minimizar J(x) en una serie de puntos mas o menos
regularmente y se usan estos valores para evolucionar hacia un nuevo
patrón de puntos mas cercano al óptimo
La figura geométrica mas sencilla en un espacio de n dimensiones se
denomina un Simplex y tiene n+1 vértices, así por ejemplo en R2 es un
triangulo, en R3 un tetraedro, etc.
El método de la búsqueda Simplex usa puntos situados en los n+1
vértices de esta figura geométrica para generar otro simplex más
próximo al óptimo y continua iterando hasta alcanzarlo con la precisión
deseada.
No tiene nada que ver, excepto el nombre, con el método Simplex de
LP
Método de la búsqueda Simplex
1 Se evalua la función en
los n+1 vértices del simplex
2 Se escoge el peor vértice
y se proyecta una cierta
distancia a traves del
centroide de los otros
vértices
3 Se forma así un nuevo
simplex con el vértice
proyectado y el resto de los
vértices
vértice
centroide
4 Si se mejora se sigue
iterando hasta la tolerancia
requerida
Método de la búsqueda Simplex
A medida que se progresa en las iteraciones es posible que o se alcanza
el óptimo o se generen ciclos entre dos o mas simplex. Para evitar
estas situaciones cíclicas se pueden aplicar tres reglas:
1 Si el vértice peor se generó en la anterior iteración entonces escoger
el vértice con el siguiente valor mayor
2 Si un vértice no cambia durante mas de M iteraciones, reducir el
tamaño del simplex por algun factor tomando como base el punto con
menor valor. Sugerencia: M = int (1.65n + 0.05n2)
3 La búsqueda se termina cuando el simplex es suficientemente
pequeño o la desviación estándar de los valores de J(x) en los
vértices es suficientemente pequeña
Jm valor inferior del
simplex
Generación de puntos
Método de Nelder - Mead
Partiendo del punto base x(0) y un factor de escala α las coordenadas
de los otros vertices x(i) , i= 1,...,n de un simplex regular inicial pueden
calcularse mediante:
x (j i )
x
( j)
new
= 2x c − x
( j)
old
Método de Nelder- Mead
Ventajas:
–
–
–
Cálculos sencillos con evaluaciones de la función
únicamente y poco almacenamiento
Pocos parámetros ajustables
Robusto frente a errores y ruidos en la evaluación de la
función al utilizar el peor valor
Inconvenientes:
–
–
Se necesita un escalado de las variables
Es lento al no utilizar información de iteraciones pasadas ni
estructural
Direcciones C conjugadas
Si una matriz S diagonaliza a C, de modo
que S’CS = D diagonal, entonces en las
coordenadas z = S-1x :
z
x
JM < J(xr) < J(xold)
θ = 0.5
Jm < J(xr)< JM
JM < J(xr) ≥ J(xold)
θ = - 0.5
J(xr)< Jm
θ=2
θ=1
1 n
x c = ∑ x (i)
n i =0
x
( j)
new
=x
( j)
old
+ (1 + θ)( x c − x )
( j)
old
−1 ≤ θ < 1
i≠ j
i≠ j
xold
xr
Si x(j) es el vértice que debe reflejarse, el centroide de los otros puntos xc y el
nuevo punto reflejado se encuentra en:
1 n
x c = ∑ x (i)
n i =0
En lugar de mantener un simplex regular, expande o contrae el simplex
en la dirección de avance de acuerdo a una serie de reglas
Reflexión
normal
 ( 0 )  n + 1 + n − 1
 x j + 
α si j = i
n 2


=
 x (j 0 ) +  n + 1 − 1 α
si j ≠ i
 n 2 



JM segundo valor
superior del
simplex
1
x' Cx =
2
1
1
= a + b' Sz + z ' S ' CSz = a + b' Sz + z ' Dz
2
2
J ( x ) = a + b' x +
Como no hay términos cruzados en z , la minimización de J(Sz) puede
resolverse como n problemas de minimización respecto a cada componente zj
de z
z 
 3 0   z1 
2
2
J ( x ) = J (Sz ) = 3 + [2 1]  1  + [z1 z 2 ] 
   = 3 + 2 z1 + z 2 + 3z1 + 2 z 2 =
0 2   z 2 
 z2 
= (3 + 2 z1 + 3z12 ) + (z 2 + 2 z 22 ) = J1 ( z1 ) + J 2 ( z 2 )
Método de las direcciones conjugadas
de Powell
Al igual que otros métodos, se diseña pensando en una
función cuadrática y se aplica a una función cualquiera
1
J ( x ) = a + b' x + x ' Cx
2
Trata de encontrar el mínimo de J(x) sin usar los valores del
gradiente o el hessiano
La idea básica es buscar el mínimo a lo largo de unas
direcciones tales que en cada una la función solo dependa
de una componente del vector x facilitando así la búsqueda
Estas direcciones se denominan C conjugadas
Direcciones C conjugadas
 z1 
z 
x = Sz = [s1 M s 2 M ... s n M] 2  = z1s1 + z2s 2 + ... + z n s n
M
z 
 n
Minimizar respecto a cada componente zj de z equivale a minimizar a lo
largo de cada una de las n direcciones sj a las que se denominan
direcciones C conjugadas
x2
Los nuevos ejes coinciden
z2
con las direcciones
z1
principales de la función
s2
Así en n iteraciones
s1
llegaríamos al óptimo de
una función cuadrática
x1
Direcciones C conjugadas
La condición S’CS = D diagonal equivale a:
Propiedad de los subespacios
paralelos
Dada una función J(x) cuadrática y una dirección d, ∀ x1 ≠ x2 ∈Rn se
verifica que si v1 es la solución de
 s1 ' 
a 11 0 ... 0 
s ' 
0 a
... 0 
2
22

 C[s1 | s 2 | ... | s n ] = 
0 ... 0 
M
0
s '
 0 ... 0 a 
 n

nn 
min J ( x1 + σd )
σ
min J ( x 2 + σd )
y si v2 es la solución de
σ
Entonces la dirección v2 – v1 es C-conjugada a d
s i ' Cs j = 0 i ≠ j
x1 d
Definición: dada C (n x n) simétrica, las direcciones s1, s2, ...sr r ≤ n
son C-conjugadas si son linealmente independientes y verifican
x2
s i ' Cs j = 0 i ≠ j
Propiedad de los subespacios
paralelos
Demostración
g( x ) = b + Cx
J ( x ) = a + b' x + 1 x ' Cx
2
J ( w ) = J ( x + σd )
en el óptimo :
∂J ∂J ∂w
= (b'+ w' C )d = 0
=
∂σ ∂w ∂σ
(b'+ v 2 ' C )d = 0
(v '− v ' )Cd = 0
(b'+ v1 ' C)d = 0  2 1
2.
3.
4.
5.
6.
7.
Escoger x0 y n direcciones linealmente independientes, p.e. si = ei
Formar el conjunto de n+1 direcciones de búsqueda sn, s1, s2, s3,
...,sn
Minimizar J(x) a lo largo de las n+1 direcciones de búsqueda
sucesivamente. Sea vj el optimo en la iteración j
Calcular una nueva dirección de búsqueda como sn+1= vn+1 – v1
que será conjugada a sn (y a las anteriores que se hayan
generado)
Usar como nuevo conjunto de n+1 direcciones de búsqueda
sn+1, s2, s3, ...,sn ,sn+1 donde s1 se ha eliminado y se ha introducido
sn+1= vn+1 – v1
Comprobar las condiciones de optimo y de indep. lineal de las n si
diferentes
Volver a 3
v2
Para generar dos direcciones conjugadas se han usado 2 puntos
de partida y dos minimizaciones en una dirección d. Puede
obtenerse el mismo resultado con un punto de partida y mas
minimizaciones:
En la figura, minimizando sucesivamente a lo
largo de las direcciones de los n ejes de x, la
minimización en la iteración n+1 es paralela a
la 1, con lo cual el vector xn+1 – x1 es Cconjugado al del primer eje. Minimizando en
esa dirección y aplicando el procedimiento
sucesivamente puede hacerse la minimización
a lo largo de n direcciones C-conjugadas y,
por tanto, llegar al óptimo.
Puede extenderse a n direcciones: Si partiendo de x1 y x2 se obtienen v1
y v2 a través de m < n búsquedas a lo largo de las m direcciones
conjugadas s1, s2,...,sm entonces v2 – v1 es C-conjugado con todas las
direcciones s1, s2,...,sm
1.
v2-v1
d
Método de las direcciones conjugadas
de Powell
Luego la dirección v2 – v1 es C conjugada a d
Método de las direcciones conjugadas
de Powell
v1
x2
x0
x3
x1
Método de las direcciones conjugadas
de Powell
Si la función es cuadrática, después de n
bucles, las n+1 búsquedas se hacen sobre
direcciones conjugadas y se alcanzará el
optimo
• Si no lo es, se puede probar que converge
de forma superlineal a un óptimo
• Es un método eficiente y fiable
Ajuste de datos por mínimos
cuadrados
y
Ajuste de datos
Encontrar la recta que mejor se
ajusta a un conjunto de N parejas
de datos (xi, yi). Puede plantearse
como un problema de optimización:
Buscar los parámetros de la recta
(m , b) que minimiza la suma de los
cuadrados de las desviaciones
entre los datos y el valor de la recta
y = mx+b
(xi, yi)
x
La idea se puede extender al ajuste del
conjunto de las N parejas de datos (xi , yi)
por una función cualquiera y= f(x,p) que
contiene un conjunto de parámetros a
estimar p
y
y = f(x,p)
(xi, yi)
N
min ∑ ( y i − f ( x i , p)) 2
x
p
N
min ∑ ( y i − (mx i + b)) 2
m,b
i =1
∂ ∑ ( y i − (mx i + b))
i =1
∂m
Tiene solución analítica
El problema se plantea como la minimización de la suma de los
cuadrados de los residuos yi – f(xi,p) respecto a los parametros p
de la función
N
N
2
=0
∂ ∑ ( y i − (mx i + b))
i =1
∂b
2
=0
Ecuación de Redlich-Kwong
Relación empírica entre la
P=
Presión P
Temperatura T
Volumen molar v
Resolución de ecuaciones
RT
a
−
v − b v( v + b) T
En muchos problemas aparece la necesidad de resolver ecuaciones
del tipo
f(x) = 0
O sistemas de ecuaciones del tipo:
a y b son coeficientes que deben
ajustarse a datos experimentales
volumen molar X1
Ejemplo, datos de CO2
Excel
Temperatura X2
Presión
Y
500
273
33
500
323
43
600
373
45
700
273
26
600
323
37
700
373
39
400
272
38
400
373
63,6
Newton
Secante
Bisección
Pero también pueden resolverse como problemas de optimización
Método de Newton
Newton-Raphson
f (x) = 0
F( x ) = 0
∂f
( x i +1 − x i ) + ... = 0
f ( x i +1 ) = f ( x i ) +
∂x x i
F( x i+1 ) = F( x i ) +
f (x i )
f ' (x i )
f ( x , y) = 0

g( x , y) = 0
Existen métodos para resolverlas tales como:
de un gas real
x i +1 = x i −
i =1
f(x)
∂F
( x i+1 − x i ) + ... = 0
∂x x i
−1
 ∂F 
x i+1 = x i − 
 F( x i )
 ∂x x i 
x
xk+1
xk
Exige estimar e invertir el Jacobiano en
cada iteración
Método de la secante
xi +1 =
Problema de valores iniciales
F(x)
xi −1 f ( xi ) − xi f ( xi )
F(x)=0
f ( xi ) − f ( xi −1 )
f(x)
f(x)
f(xi)
f(xi)
x
f(xi-1)
xi-1
x
xi+1
xi-1
xi+1
xi
x
xi
f(xi-1)
Resolución por optimización
El problema puede formularse
como:
min ε12 + ε 22
x,y
 f ( x , y ) = ε1

g( x , y) = ε 2
f ( x , y) = 0

g( x , y) = 0
El mínimo de ε12 + ε22 , si existe,
esta en (0,0), con lo que x e y
verifican el sistema de
ecuaciones
Resolución numérica de problemas de
optimización
Una vez que se ha formulado un problema de optimización,
suele ser conveniente ponerlo en forma tal que se facilite su
resolución numérica y se aumente la eficiencia de la búsqueda
de esa solución.
Entre las modificaciones posibles están:
El escalado de las variables independientes
Las transformaciones para evitar cálculos fuera de rango
log(x), x½, …
Las transformaciones para evitar no diferenciabilidades
Las transformaciones para mejorar la convexidad del problema
Además es importante un ajuste adecuado de las precisiones, tolerancias,
nº de pasos, etc. del algoritmo de optimización
Escalado
Convexificación
El escalado se refiere a los valores relativos de las variables del
problema, los cuales no deberían ser muy diferentes para evitar
problemas numéricos ocasionados por sensibilidades distintas en
distintas direcciones.
Ejemplo: x1 toma valores en torno a 100 y x2 en torno a 0.1
J ( x1 ,x 2 ) = 10 x1 + 5 x 2 − x1 x 2
J( x1 , x 2 ) = x1x 2
x 1 = e v1
Función no convexa en x
x 2 = e v2
x1x 2 = e e
v1
v2
=e
min J ( x 1 , x 2 ) = min J ( v1 , v 2 )
x1 , x 2
v1 , v 2
Pueden ser reformulado en términos de las variables u1, u2 escaladas
 x  x 
x 
 x 
J (u 1 , u 2 ) = 1000 1  + 0.5 2  − 10 1  2  = 1000u 1 + 0.5u 2 − 10u 1u 2
 100  0.1 
 0.1 
 100 
x1
x2
Ahora u1 y u2 toman valores en torno a 1
u1 =
u2 =
100
0 .1
Cambio de variable
v1 + v 2
Problema de rango!
Función convexa en v
Descargar