Gu´ıa para el Ejemplo 1 de otimización con restricciones de igualdad

Anuncio
Guı́a para el Ejemplo 1 de otimización con restricciones de
igualdad
Programación Matemática
Licenciatura en Ciencias y Técnicas Estadı́sticas
Trabajaremos resolviendo el siguiente problema de optimización no lineal con restricciones de
igualdad.
2x1
+ log(x2 )
mı́n 2−x
1
2
s.a.: x1 + x22 = 1
El hessiano es:
L(x, λ) =
2x1
+ log(x2 ) + λ(x21 + x22 − 1)
2 − x1
Calcula su gradiente y su hesiano:
• Gradiente del lagrangiano
∇L(x, λ) =
...
...
• Hesiano del lagrangiano
2
...
...
H = ∇ L(x, λ) =
...
...
La restricción es c(x) = x21 + x22 = 1. El gradiente de la restricción vale:
A = ∇c(x) = (
La función objetivo es f (x) =
2x1
2−x1
...
,
... )
+ log(x2 ). Calcula su gradiente:
g = ∇f (x) =
...
...
Ahora vamos a realizar una función que, dado un punto x y un valor λ, nos calcule f, c, g, H
y A. La llamaremos ej igualdad1 y la guardaremos en un fichero ej igualdad1.m .
1.
Método de Newton. α = 1
Ahora vamos a aplicar el método de Newton para un problema con restricciones de igualdad.
Para simplificar, tomaremos como longitud de paso el valor α = 1.
1
1.1.
PASO 0
Inicializamos los valores de x0 y λ0 :
x0 =
1
1
λ0 = −1
%PASO 0:
x = [1 1]’;
lambda = -1;
1.2.
PASO 1. Iteración 0
La solución actual, ¿es una buena solución? Tenemos que ver si son casi cero:
c(x0 )
∇f (x0 ) + ∇c(x0 )> λ0
Usamos la función que creamos antes:
%PASO 1:
[f,c,g,A,H] = ej_igualdad1(x,lambda);
norm(c)
norm(g+A’*lambda)
Solución:
f = 2, c = 1, g = (4, 1)> , A = (22)
6 0
H=
quadkck = 1, kg + A0 ∗ lambdak = 2,2361
0 −3
NOTA: Fijaos que ∇L(x, λ) = ∇f (x) + ∇c(x)> λ = g + A> λ = (2, −1)>
1.3.
PASO 2. Iteración 0
Resolver el sistema de ecuaciones:
d
∇L(x, λ)
H A>
=−
∆λ
c
A 0
Es decir,




6 0 2
2
d
 0 −3 2 
= −  −1 
∆λ
2 2 0
1
Para resolverlo, usamos el comando ’\’. Guardamos el resultado en la variable de Matlab sol.
Las primeras componentes de sol corresponden a el vector de dirección d, mientras que las
últimas corresponden al vector incremento de λ (en este caso de dimensión uno) ∆λ.
%PASO 2:
sol = [H A’; A zeros(size(A,1),size(A,1))]
d=[sol(1); sol(2)]
delta=sol(3)
2
\ ( - [g+A’*lambda; c] )}
Las soluciones son:
d=
1.4.
−0,5
0,0
,
∆λ = 0,5
PASO 3. Iteración 0
En este caso, por simplicidad, tomaremos α = 1. En la sección siguiente vemos un ejemplo de
cómo calcular un α adecuado.
%PASO 3:
%longitud de paso
alpha=1
1.5.
PASO 4. Iteración 0
Una vez tenemos las direcciones de mejora para x y para λ, es decir tenemos d y ∆λ, calculamos
el nuevo punto x1 = x0 + αd, y volvemos al paso 1.
%PASO 4:
%nuevo punto
x=x+alpha*d
lambda=lambda+alpha*delta
Solución:
x0 =
1.6.
0,5
1
λ0 = −0,5
PASO 1. Iteración 1
Repetimos:
%PASO 1:
[f,c,g,A,H] = ej_igualdad1(x,lambda);
norm(c)
norm(g+A’*lambda)
Solución:
f = 0,6667, c = 0,2500, g = (1,7778, 1,0000)> , A = (12)
1,3704 0
H=
quadkck = 0,25, kg + A0 ∗ lambdak = 1,2778
0
−2
1.7.
PASO 2. Iteración 1
Ahora resolvemos el sistema:




1,3704 0 1
1,2778
d


0
−2 2 
0
= −
∆λ
1
2 0
0,25
Repetimos:
3
%PASO 2:
sol = [H A’; A zeros(size(A,1),size(A,1))]
d=[sol(1); sol(2)]
delta=sol(3)
Solución:
d=
1.8.
−,3245
0,5372
\ ( - [g+A’*lambda; c] )}
λ0 = 0,5372
PASO 3. Iteración 1
α=1
1.9.
PASO 4. Iteración 1
Repetimos:
%PASO 4:
%nuevo punto
x=x+alpha*d
lambda=lambda+alpha*delta
Solución:
x0 =
−0,8245
1,5372
λ0 = 0,0372
...............................
2.
EJERCICIO 1
Continúa y haz una iteración completa más. ¿Cuánto vale la función objetivo en ese
punto? ¿Por qué crees que ocurre? ¿Cómo lo solucionarı́as?
3.
Método de Newton. Cálculo de α
Aquı́ vamos a ver más detenidamente cómo calcular una longitud de paso adecuada cuando
estamos optimizando un problema con restricciones de igualdad.
Para un problema sin restricciones, la idea era comparar el valor de la función objetivo en el
punto actual, con el valor en el nuevo punto.
Ahora no sólo la función objetivo es importante, también lo son las restricciones. ¿Cómo podemos
medir el cumplimiento de las restricciones? Una buena medida es kc(x)k. (Recuerda que si
tenemos varias restricciones, c(x) es un vector.) Idealmente, queremos que en el nuevo punto,
tanto f como kc(x)k sean más pequeñas. A veces no es posible hacerlas decrecer a la vez, ası́ que
se busca un compromiso entre ambas. A la función que valora el compromiso entre la mejora de
f (x) y de kc(x)k se le llama función de mérito. Ejemplos:
mE (x) = f (x) + ρkc(x)k
mA (x) = f (x) + c(x)> λ + 12 ρkc(x)k2
4
Nosotros usaremos la primera, y tomaremos ρ = 0,1.
Queremos que el valor de la función de mérito mE (x) en el nuevo punto xi + αd sea menor que
en el punto anterior. Ası́ tenemos que comparar mE (xi + αdi ) y mE (xi ). Para ser más exigentes,
a mE (xi ) le añadimos una cantidad proporcional a α y al producto escalar entre la dirección di
y el gradiente de la función de mérito ∇mE (xi ). Tenemos que comprobar si:
mE (xi + αdi ) < mE (xi ) + σα∇mE (xi )> di
Como ∇mE (xi ) = ∇f (xi ) + ρ kc(x1 i )k ∇c(xi )> c(xi ), tenemos que comparar:
mE (xi + αdi ) < mE (xi ) + σα(∇f (xi ) + ρ
1
∇c(xi )> c(xi ))> di
kc(xi )k
En el ejemplo anterior. En la iteración 0, tenemos la solución d = (−0,5, 0,0)> y ∆λ = 0,5.
Estamos en el punto xi = (1, 1)> y el nuevo punto es x1 = (0,5, 1)> con λ1 = −0,5. Fijaremos
el valor de ρ = 0,1 y el valor de σ = 0,1.
PASO 3.0 Inicializamos α = 1.
PASO 3.2 Comparamos a y b,
• a = mE (x1 ) = f (x1 ) + ρkc(x1 )| = 0,6667 + 0,1 × 0,25 = 0,6917
• b = mE (x0 ) + ∇mE (xi )t opd0
• Como mE (x0 ) = 2,1 y ∇mE (x0 ) = (4,2, 1,2)> ,
−0,5
= 1,89
• b = 2,1 + 0,1 ∗ 1 ∗ (4,2, 1,2)
0
%PASO 3:
%longitud de paso
alpha=1 rho=10
% funcion de penalizacion
% m(x)=f(x) + 0.1 norm( c(x) )
[f,c,g,A,H] = ej_igualdad3(x+alpha*d,lambda+alpha*delta)
a = f + rho * norm(c)
[f,c,g,A,H] = ej_igualdad3(x,lambda)
%derivada de m es g + rho * 1/norm(c) * A’ * c
dm = g + rho * 1/norm(c) * A’ * c
m = f + rho * norm(c)
b = m + 0.1 * alpha * dm’*d
%
alpha=alpha/2
4.
EJERCICIO 2
Repite los pasos de la Sección 1 introduciendo el cálculo de la longitud de paso. Empieza
en el punto x0 = (0,51)> . ¿Ocurre algo raro? ¿Por qué crees que pasa esto?
5
Descargar