MA37A Sesión #5 Optimización con restricciones: Gradiente...

23
MA37A Sesi´ on #5 Optimizaci´ on con restricciones: Gradiente Reducido Oscar Peredo 14 de Octubre del 2008

Transcript of MA37A Sesión #5 Optimización con restricciones: Gradiente...

MA37ASesion #5

Optimizacion con restricciones: GradienteReducido

Oscar Peredo

14 de Octubre del 2008

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Problema

Para f : Rn → R, A ∈ Rm×n y b ∈ Rm, nos interesa resolver

(P)

minx∈Rn f (x)

s.a Ax = bx ≥ 0

donde se asume una hipotesis de no-degeneracion: cualesquieram columnas de A son l.i. y los puntos extremos (esquinas) de laregion factible tienen al menos m componentes estrictamentepositivas.

Motivacion del metodo

En los metodos irrestrictos (Cauchy y Newton) contruıamos unadireccion de descenso dk que por definicion garantizaba

∇f (xk)Tdk < 0

En el caso con restricciones, se quiere contruir una direccion dedescenso factible, que satisface

∇f (xk)Tdk < 0

Adk = 0

(xk)j = 0⇒ (dk)j ≥ 0

Algoritmo

1: (INICIALIZACION) k ← 1. Escoger un punto x1 que satisface Ax1 = b, x1 ≥ 0.

2: while (iteracion principal) do

3: Sean:

Ik = ındices de las m mayores componentes de xk (1)

B = {aj : j ∈ Ik} (2)

N = {aj : j /∈ Ik} (3)

rT = ∇f (xk )T −∇B f (xk )T B−1A (4)

(dN )j =

{−rj rj ≤ 0−xj rj rj > 0

(5)

dB = −B−1NdN (6)

4: Construir dTk = (dT

B , dTN ) utilizando (6) y (5).

5: if dk = 0 then

6: PARAR7: else8: Resolver el siguiente problema de busqueda en semirecta:

(Pλk) : minλ∈[0,λmax] f (xk + λdk )

donde

λmax =

min1≤j≤n

{−(xk )j(dk )j

: (dk )j < 0

}dk � 0

∞ dk ≥ 0

9: Si λk es solucion de (Pλk), setear xk+1 = xk + λkdk y k ← k + 1

10: end if11: end while

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Problema Ejemplo

(P)

min 2x2

1 + 2x22 − 2x1x2 − 4x1 − 6x2

s.a x1 + x2 + x3 = 2x1 + 5x2 + x4 = 5

xi ≥ 0

Satisface hipotesis de no-degeneracion.

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Diseno de la implementacion

Encontrar un punto inicial factible: Solver ProgramacionLineal (Sesion 2 del Lab.)

Resolver (Pλk): Solver Busqueda en la Semirecta (Sesion 3

del Lab.)

Resto de los calculos: Calculo Matricial de Octave

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Solver de Programacion Lineal (Sesion 2)

Paso 1 del algoritmo:

s=-1;

c=[1,1,1,1]’;

a=[1,1,1,0;

1,5,0,1];

b=[2,5]’;

ctype="UU";

lb=[0,0,0,0]’;

ub=[];

vartype="CCCC";

param.msglev=0;

param.itlim=100;

[xmin,fmin,status,extra]=glpk(c,a,b,lb,ub,ctype,vartype,s,param);

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Solver de Busqueda en la Semirecta (Sesion 3)

Paso 8 del algoritmo:

lambda_optimo=dichotomous_line_search(xmin,d,lambda_max,1,ele,epsil);

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Calculo de Ik e I ck

i=1;

xmin_aux=xmin;

I_k=zeros(1,m);

if n-m>0

I_k_complemento=ones(1,n);

end

while(i<=m)

[val,index]=max(xmin_aux);

xmin_aux(index)=0;

I_k(i)=index;

if n-m>0

I_k_complemento(index)=0;

end

i=i+1;

end

if n-m>0

I_k_c=find(I_k_complemento);

end

Calculo de B y N

B=a(:,I_k);

if n-m>0

N=a(:,I_k_c);

end

Calculo de r

y=func_gradient(xmin,INDEX);

L=inv(B)*a;

r=y-y(I_k)*L;

Calculo de dT = (dTB , dT

N )

if n-m>0

d_n=zeros(1,length(I_k_c));

end

pp=1;

if n-m>0

for j=I_k_c

if r(j)<=0

d_n(pp)=-r(j);

else

d_n(pp)=-xmin(j)*r(j);

end

pp=pp+1;

end

end

if n-m>0

d_b=-inv(B)*N*(d_n’);

elseif n-m==0

d_b=-inv(B);

end

d=zeros(1,n);

d(I_k)=d_b;

if n-m>0

d(I_k_c)=d_n;

end

Calculo de λmax

lambda_max=lambda_max2(I_k,I_k_c,d_b,d_n,xmin);

#

function lambda_max = lambda_max2(I_k,I_k_c,d_b,d_n,xmin)

lambda_max=intmax;

t=0;

for i=1:length(d_b)

if d_b(i)<0

t=-xmin(I_k(i)) / d_b(i);

if t<=lambda_max

lambda_max=t;

end

end

end

if(length(d_n)>0)

for i=1:length(d_n)

if d_n(i)<0

t=-xmin(I_k_c(i)) / d_n(i);

if t<=lambda_max

lambda_max=t;

end

end

end

end

Esquema

1 Explicacion del Metodo del Gradiente Reducido

2 Problema Ejemplo

3 Implementacion en Octave

4 Utilizacion de solver Programacion Lineal

5 Utilizacion de solver Busqueda en la Semirecta

6 Calculos Matriciales en Octave

7 Ejecucion

Ejecucion

Ir a Octave...

FIN