资源描述:
《运筹学实验报告(F-R共轭梯度法、Wolfe简约梯度法)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、运筹学课程实验报告姓名:********学号:********班级:********日期:2012/12/17一、实验目的:1、掌握求解无约束最优化问题的F-R共轭梯度法,以及约束最优化问题Wolfe简约梯度法。2、学会用MATLAB编程求解问题,并对以上方法的计算过程和结果进行分析。二、实验原理与步骤:1、F-R共轭梯度法基本步骤是在点处选取搜索方向,使其与前一次的搜索方向关于共轭,即然后从点出发,沿方向求得的极小值点,即如此下去,得到序列{}。不难求得的解为注意到的选取不唯一,我们可取由共轭的定
2、义可得:共轭梯度法的计算过程如下:第一步:取初始向量,计算第步:计算2、Wolfe简约梯度法Wolfe基本计算步骤:第一步:取初始可行点x0∈Xl,给定终止误差ε>0,令k:=0;第二步:设IBk是xk的m个最大分量的下标集,对矩阵A进行相应分解A=(Bk,Nk);第三步:计算∇fxk=∇Bfxk∇Nfxk,然后计算简约梯度rNk=-(Bk-1Nk)T∇Bfxk+∇Nfxk;第四步:构造可行下降方向pk.若
3、
4、pk
5、
6、≤ε,停止迭代,输出xk。否则进行第五步。第五步:进行有效一维搜索,求解minfx
7、k+tpk,得到最优解tk.令xk+1=xk+tkpk,k:=k+1,转入第二步。三、实验内容:1、(运筹学P153页第20题)用F-R法求解min(1-x1)2+2(x2-x12)2选取初始点x0=(0,0)T,ε=10-6.2、(运筹学P154页第25题)用Wolfe法求解以下问题:minfx1,x2=2x12+2x22-2x1x2-4x1-6x2s.t.x1+x2≤2x1+5x2≤5x1≥0,x2≥0选取初始可行点x0=(0,0)T,ε=10-6.四、问题求解:问题1求解:(F-R法)程序代码
8、如下:(1)主函数symsx1x2r;f=(1-x1)^2+2*(x2-x1^2)^2;x=[x1,x2];df=jacobian(f,x);df=df.';error=0.000001;x0=[0,0]';g1=subs(df,x,x0);k=0;while(norm(g1)>error)ifk==0d=-g1;elsebta=g1'*g1/(g0'*g0);d=-g1+bta*d0;endy=subs(f,x,x0+r*d);result=jintuifa(y,r);result2=golden
9、(y,r,result);step=result2;x0=x0+step*d;g0=g1;g1=subs(df,x,x0);d0=d;k=k+1;end;kx0(2)子函数进退法确定一维搜索区间:functionresult=jintuifa(y,r)t0=0;step=0.0125;t1=t0+step;ft0=subs(y,{r},{t0});ft1=subs(y,{r},{t1});if(ft1<=ft0)step=2*step;t2=t1+step;ft2=subs(y,{r},{t2});
10、while(ft1>ft2)t1=t2;step=2*step;t2=t1+step;ft1=subs(y,{r},{t1});ft2=subs(y,{r},{t2});endelsestep=step/2;t2=t1;t1=t2-step;ft1=subs(y,{r},{t1});while(ft1>ft0)step=step/2;t2=t1;t1=t2-step;ft1=subs(y,{r},{t1});endendresult=[t2];黄金分割法进行一维搜索:functionresult=g
11、olden(y,r,m)a=0;b=m;e=1e-5;a1=a+0.382*(b-a);f1=subs(y,{r},{a1});a2=a+0.618*(b-a);f2=subs(y,{r},{a2});whileabs(b-a)>=eiff112、5*(a+b);result=[answer];运行结果如下:由上图知极值点为x*=1,1T,极小值=1.7345×10-15≈0(x*对应的理论极小值)。问题2求解:(Wolfe法)程序代码如下:error=10^-6;x0=[0,0];symsx1x2f=2*x1^2+2*x2^2-2*x1*x2-4*x1-6*x2;AB=[1,1,1,0;1,5,0,1];B=[1,0;0,1];N=[1,1;1,5];[a,b]=size(x0);initial_gradie