优化方法上机大作业Word文档下载推荐.docx

上传人:b****2 文档编号:5082893 上传时间:2023-05-04 格式:DOCX 页数:24 大小:25.40KB
下载 相关 举报
优化方法上机大作业Word文档下载推荐.docx_第1页
第1页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第2页
第2页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第3页
第3页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第4页
第4页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第5页
第5页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第6页
第6页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第7页
第7页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第8页
第8页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第9页
第9页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第10页
第10页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第11页
第11页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第12页
第12页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第13页
第13页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第14页
第14页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第15页
第15页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第16页
第16页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第17页
第17页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第18页
第18页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第19页
第19页 / 共24页
优化方法上机大作业Word文档下载推荐.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

优化方法上机大作业Word文档下载推荐.docx

《优化方法上机大作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《优化方法上机大作业Word文档下载推荐.docx(24页珍藏版)》请在冰点文库上搜索。

优化方法上机大作业Word文档下载推荐.docx

x1=

-0.0000

1.0000d=

1.1102e-016fl=

2

习题2

取初始点X°

=(0,0,0,0)7,利)+]共純梯度法求解下而无约束优化问题:

minf(x)=好一2xiX2—2%孑+x孑+爲一x2x3一2xi+3x2-x3?

其中步长廊的逸取可利用习題1或精确一维捜索+

注:

通过此习题验证共梔梯度法求解门元二次禹数极小点至多需要门次迭代,

functionf=fun(x)

%UNTITLED3Summaryofthisfunctiongoeshere

%Detailedexplanationgoeshere

f=x(1F2-2*x

(1)*x

(2)+2*x

(2)A2+x(3F2+X⑷A2-x

(2)*x(3)+2*x

(1)+3*x

(2)-x(3);

End

functiong=fun(x)

%UNTITLED4Summaryofthisfunctiongoeshere

g=[2-200;

-24-10;

0-120;

0002]*x+[2;

3;

-1;

0];

O;

O];

%初始值

eps=1.0e-4;

%精度

gO=gfun(xO);

sO=-gO;

n=O;

symsd1;

whilenorm(gO)>

eps

if*3

g=gfun(x0+d1*s0);

d=double(solve(s0'

*g));

x1=x0+d*s0;

g1=gfun(x1);

ifnorm(g1)<

n=n+1;

x0=x1;

break

sO=-g1+(norm(g1F2/norm(g0F2)*s0;

x0=x1;

gO=g1;

elseifn=3

n=0;

xO

n

fun(xO)

xO=

-4

-3

-1

ans=

-8

习题3

取初始点0=(0,1)1考虑下的无约束优化问题:

minf(x)=Xi+2迓+expfx^+於),

-Jt中步长®

的选取可利用习题1鼓精确一维捜索.搜索方向为-佔心),

°

取Hk=I2

取皿=[V2"

xk)]T

»

取总为BFGS公扎

通过此习题休会上述三种算法的收效速度.

functionf=fun3_1(x)

%FUN3Summaryofthisfunctiongoeshere

f=x

(1)+2*x

(2)A2+exp(x

(1)A2+x

(2)A2);

functiong=gfun3_1(x)

%GFUN3_1Summaryofthisfunctiongoeshere

g=[1+2*x

(1)*exp(x

(1)A2+x(2F2);

4*x

(2)+2*x

(2)*exp(x(1F2+x

⑵A2)];

(1)最速下降法

x0=[0;

1];

eps=1.0e-5;

%精度

g0=gfun3_1(x0);

whilenorm(g0)>

=eps

s0=-g0;

g=gfun3_1(x0+d1*s0);

d=double(solve(s0'

g1=gfun3_1(x1);

if(norm(gl)veps)n=n+1;

break;

elsex0=x1;

f0=fun3_1(x0)x0nf0=

0.7729x0=

-0.4194

0.0000

(2)牛顿法

functiong2=hesse(x)

%HESSESummaryofthisfunctiongoeshere

g2=[2*exp(x

(1)A2+x

(2)A2)+4*x

(1)A2*exp(x

(1)A2+x

(2)A2),4*x

(1)*x

(2)*exp(

x

(1)A2+x

(2)A2)

4*x

(1)*x

(2)*exp(x

(1)A2+x

(2)A2),4+2*exp(x

(1)A2+x

(2)A2)+4*x(2f2*exp(x(

1)A2+x

(2)A2)];

gO=gfun3_1(x0);

g20=hesse(x0);

whilenorm(g0)>

d=-g20\g0;

x仁x0+d;

g1=gfun3_1(x1);

if(norm(g1)<

eps)n=n+1;

g0=gfun3_1(x0);

end

endf0=fun3_1(x0)x0

f0=

0.0000n=

(3)BFGS

gO=gfun3_1(x0);

hO=eye

(2);

s0=-h0*g0;

if(norm(g1)<

eps)

break;

h0=h0-(h0*(g1-g0)*(g1-g0)'

*h0)/((g1-g0)'

*h0*(g1-g0))+...((x1-x0)*(x1-x0)'

)/((x1-x0)'

*(g1-g0))+...

((g1-g0)'

*h0*(g1-g0))*((x1-x0)*(x1-x0)'

);

f0=fun3_1(x0)

x0

nf0=

function[x,lamk,exitflag,output]=qpact(H,c,Ae,be,Ai,bi,x0

epsilon=1.0e-9;

err=1.0e-6;

k=0;

x=x0;

n=length(x);

kmax=1.0e3;

ne=length(be);

ni=length(bi);

lamk=zeros(ne+ni,1);

index=ones(ni,1);

for(i=1:

ni)

if(Ai(i,:

)*x>

bi(i)+epsilon),index(i)=0;

while(k<

=kmax)

Aee=[];

if(ne>

0),Aee=Ae;

for(j=1:

if(index(j)>

0),Aee=[Aee;

Ai(j,:

)];

gk=H*x+c;

[m1,n1]=size(Aee);

[dk,lamk]=qsubp(H,gk,Aee,zeros(m1,1));

if(norm(dk)<

=err)

y=0.0;

if(length(lamk)>

ne)

[y,jk]=min(lamk(ne+1:

length(lamk)));

if(y>

=0)

exitflag=0;

exitflag=1;

for(i=1:

if(index(i)&

(ne+sum(index(1:

i)))==jk)index(i)=0;

k=k+1;

alpha=1.0;

tm=1.0;

if((index(i)==0)&

(Ai(i,:

)*dk<

0))tm仁(bi(i)-Ai(i,:

)*x)/(Ai(i,:

)*dk);

if(tm1<

tm)

tm=tm1;

ti=i;

alpha=min(alpha,tm);

x=x+alpha*dk;

if(tm<

1),index(ti)=1;

endend

if(exitflag==0),break;

output.fval=0.5*x'

*H*x+c'

*x;

output.iter=k;

function[x,lambda]=qsubp(H,c,Ae,be)

ginvH=pinv(H);

[m,n]=size(Ae);

if(m>

0)

rb=Ae*ginvH*c+be;

lambda=pinv(Ae*ginvH*Ae'

)*rb;

x=ginvH*(Ae'

*lambda-c);

x=-ginvH*c;

lambda=zeros(m,1);

callqpact.m文件

functioncallqpactH=[20;

02];

c=[-2-5]'

;

Ae=[];

be=[];

Ai=[1-2;

-1-2;

-12;

10;

01];

bi=[-2-6-200]'

xO=[O0]'

[x,lambda,exitflag,output]=qpact(H,c,Ae,be,Ai,bi,xO)

运行结果:

callqpact

x=

1.4000

1.7000

lambda=

0.8000

exitflag=

output=

fval:

-6.4500

iter:

7

习题5

利用乘予法求解下面的约束优化问题:

min4xi—x孑一12

s,t.25——X2=0

10x1—xf+10x2—X2—34>

0

Xr,X2>

其中每次迭代需求解一个无约束极小化问题」可利用习题2或习

题3中的程序.

Function

[x,mu,lambda,output]=multphr(fun,hf,gf,dfun,dhf,dgf,x0)

function

psi=mpsi(x,fun,hf,gf,dfun,dhf,dgf,mu,lambda,sigma)

functionhe=h1(x)

he=-x

(1)A2-x

(2)A2+25.0;

functionf=f1(x)

f=4*x

(1)-x

(2)A2-12;

functiongi=g1(x)

gi=10*x

(1)-x

(1)A2+10*x

(2)-x

(2)八2-34;

functiondhe=dh1(x)

dhe=[-1*x

(1),-1*x

(2)]'

functiondgi=dg1(x)

dgi=[10-2*x

(1),10-2*x

(2)]'

functiong=df1(x)

g=[4,-2.0*x

(2)]'

function[x,val,k]=bfgs(fun,gfun,x0,varargin)maxk=500;

sigma=2.0;

eta=2.0;

theta=0.8;

ink=0;

epsilon=1e-5;

x=x0;

he=feval(hf,x);

gi=feval(gf,x);

n=length(x);

l=length(he);

m=length(gi);

mu=0.1*ones(l,1);

lambda=0.1*ones(m,1);

btak=10;

btaold=10;

while(btak>

epsilon&

k<

maxk)

[x,ival,ik]=bfgs('

mpsi'

'

dmpsi'

x0,fun,hf,gf,dfun,dhf,dgf,mu,lambda,sigma);

ink=ink+ik;

he=feval(hf,x);

btak=0.0;

l),btak=btak+he(i)A2;

fori=1:

m

temp=min(gi(i),lambda(i)/sigma);

btak=btak+tempA2;

btak=sqrt(btak);

ifbtak>

epsilon

if(k>

=2&

btak>

theta*btaold)sigma=eta*sigma;

l),mu(i)=mu(i)-sigma*he(i);

m)lambda(i)=max(0.0,lambda(i)-sigma*gi(i));

btaold=btak;

x0=x;

f=feval(fun,x);

output.fval=f;

output.iter=k;

output.inner_iter=ink;

output.bta=btak;

f=feval(fun,x);

l=length(he);

psi=f;

s1=0.0;

l)

psi=psi-he(i)*mu(i);

s仁s1+he(i)A2;

psi=psi+0.5*sigma*s1;

s2=0.0;

m)

s3=max(0.0,lambda(i)-sigma*gi(i));

s2=s2+s3A2-lambda(i)A2;

psi=psi+s2/(2.0*sigma);

maxk=500;

rho=0.55;

sigma1=0.4;

epsilon1=1e-5;

n=length(x0);

Bk=eye(n);

while(kvmaxk)

gk=feval(gfun,x0,varargin{:

});

if(norm(gk)<

epsilon1),break;

dk=-Bk\gk;

m=0;

mk=0;

while(m<

20)

newf=feval(fun,x0+rh°

Am*dk,varargin{:

oldf=feval(fun,x0,varargin{:

if(newf<

oldf+sigma1*rhoAm*gk'

*dk)

mk=m;

m=m+1;

x=x0+rhoAmk*dk;

sk=x-x0;

yk=feval(gfun,x,varargin{:

})-gk;

if(yk'

*sk>

Bk=Bk-(Bk*sk*sk'

*Bk)/(sk'

*Bk*sk)+(yk*yk'

)/(yk'

*sk);

endk=k+1;

x0=x;

val=feval(fun,x0,varargin{:

dpsi=dmpsi(x,fun,hf,gf,dfun,dhf,dgf,mu,lambda,sigma)dpsi=feval(dfun,x);

dhe=feval(dhf,x);

dgi=feval(dgf,x);

dpsi二dpsi+(sigma*he(i)-mu(i))*dhe(:

i);

m)dpsi=dpsi+(sigma*gi(i)-lambda(i))*dgi(:

>

xO=[1,1]'

[x,mu,lambda,output]=multphr('

f1'

h1'

g1'

df1'

dh1'

dg1'

x0)x=

1.0013

4.8987mu=

2.0312lambda=0.7545output=

-31.9923iter:

5

inner_iter:

58

bta:

4.3187e-07

习题6

利fl序列二次规划方法求解习题5中的约束优化问题:

min

s.t.

4xi—xf—12

25-好一烤=0

10xi—xf+10x2—x孑一34二0

Xi,X2>

function[x,mu,lam,val,k]=sqpm(x0,mu0,lam0)maxk=100;

n=length(x0);

l=length(mu0);

m=length(lam0);

rho=0.5;

eta=0.1;

B0=eye(n);

mu=mu0;

lam=lam0;

Bk=BO;

sigma=0.8;

epsilon1=1e-6;

epsilon2=1e-5;

[hk,gk]=cons(x);

dfk=df1(x);

[Ae,Ai]=dcons(x);

Ak=[Ae;

Ai];

k=0;

[dk,mu,lam]=qpsubp(dfk,Bk,Ae,hk,Ai,gk);

mp1=norm(hk,1)+norm(max(-gk,0),1);

if(norm(dk,1)<

epsilon1)&

(mp1<

epsilon2)break;

deta=0.05;

tau=max(norm(mu,inf),norm(lam,inf));

if(sigma*(tau+deta)<

1)sigma=sigma;

sigma=1.0/(tau+2*deta);

im=0;

while(im<

=20)

if(phi1(x+rhoAim*dk,sigma)-phi1(x,sigma)<

eta*rhoAim*dphi1(x,sigma,dk))mk=im;

im=im+1;

if(im==20),mk=10;

alpha=rhoAmk;

x1=x+alpha*dk;

[hk,gk]=cons(x1);

dfk=df1(x1);

[Ae,Ai]=dcons(x1);

lamu=pinv(Ak)'

*dfk;

if(l>

0&

m>

mu=lamu(1:

l);

lam=lamu(l+1:

l+m);

if(l==0),mu=[];

lam=lamu;

if(m==0),mu=lamu;

lam=[];

sk=alpha*dk;

yk=dlax(x1,mu,lam)-dlax(x,mu,lam);

if(sk'

*yk>

0.2*sk'

*Bk*sk)

theta=1;

theta=0.8*sk'

*Bk*sk/(sk'

*Bk*sk-sk'

*yk);

zk=theta*yk+(1-theta)*Bk*sk;

Bk=Bk+zk*zk'

/(sk'

*zk)-(Bk*sk)*(Bk*sk)'

*Bk*sk);

x=x1;

val=f1(x);

functionp=phi1(x,sigma)

f=f1(x);

[h,g]=cons(x);

gn=max(-g,0);

IO=length(h);

mO=length(g);

if(IO==O),p=f+1.0/sigma*norm(gn,1);

endif(m0==0),p=f+1.0/sigma*norm(h,1);

endif(l0>

m0>

p=f+1.0/sigma*(norm(h,1)+norm(gn,1));

functiondp=dphi1(x,sigma,d)df=df1(x);

[h,g]=cons(x);

l0=length(h);

m0=length(g);

if(l0==0),dp=df*

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2