还剩4页未读,继续阅读
文本内容:
一、试驳
1、把、-/r/^、、--运筹,姓名:、…—一,土口4********2L[K口学号:*T**T**T**T**T**T**T*班级:^.J^,T、,T、,T、束最优化问题Wolfe简日期.2022/12/
172、学会用MATLAB编住本畔it迦,开澳么_l刀法的计算过程和结果进行分析
二、试验原理与步骤
1、F-R共粗梯度法基本步骤是在点X,处选取搜寻方向d”),使其与前一次的搜寻方向”g)关于4共粗,即然后从点X®动身,沿方向力幻求得/(X)的微小值点x-d即如此下去,得到序列{X®}不难求得的解为留意到““)的选取不唯一,我们可取由共辗的定义<d叫A(i)>=可得:共加梯度法的计算过程如下第一步取初始向量X2计算第左+1步计算
2、Wolfe简约梯度法Wolfe基本计算步骤第一步取初始可行点xeX,给定终止误差£>0令k:=0;其次步设用是xk的m个最大重量的下标集,对矩阵A进行相应分解A=BkNk;第三步计算砒0=;;图,然后计算简约梯度埼=一双1/厂代+7成甘;第四步构造可行下降方向pS若||pk||WE,停止迭代,输出X1%否则进行第五步第五步进行有效一维搜寻,求解minfxk+tpk得到最优解tk.令xk+l=xk+tkpkk:=k+l转入其次步
三、试验内容
1、运筹学P153页第20题用F-R法求解minl-Xi2+2x2-x^2选取初始点x=00T£=10-
6.
2、运筹学P154页第25题用Wolfe法求解以下问题{minfx1;x2=2x/+2x22—2x1x2—4xt—6x2s.t.x1-选取初始可行点x0=00T£=10-
6.
四、问题求解问题1求解F-R法程序代码如下1主函数symsxlx2r;f=1-xlA2+2*x2-xlA2A2;x=[xlx2;df=jacobianfx;df=df.f;error=
0.000001;x0=
[00];gl=subsdfxxO;k=0;whilenormglerrorifk==0d=-gi;elsebta=gl*gl/gO**g0;d=-gl+bta*dO;endy=subsfxx0+r*d;result=jintuifayr;result2=goldenyrresult;step=result2;x0=x0+step*d;gO=gl;gl=subsdfxxO;dO=d;k=k+l;end;kxO2子函数进退法确定一维搜寻区间functionresult=jintuifayrt0=0;step=
0.0125;tl=tO+step;ftO=subsy{r}{tO};ftl=subsy{r}{tl};ifftl=ftOstep=2*step;t2=tl+step;ft2=subsy{r}{t2};whileftlft2tl=t2;step=2*step;t2=tl+step;ftl=subsy{r}{tl};ft2=subsy{r}{t2};endelsestep=step/2;t2=tl;tl=t2-step;ftl=subsy{r}{tl};whileftlftOstep=step/2;t2=tl;tl=t2-step;ftl=subsy{r}{tl};endendresult=[t2];黄金分割法进行一维搜寻functionresult=goldenyrma=0;b=m;e=le-5;al=a+
0.382*b-a;fl=subsy{r}{al};a2=a+
0.618*b-a;f2=subsy{r}z{a2};whileabsb-a=eifflf2b=a2;a2=al;f2=f1;al=a+
0.382*b-a;fl=subsy{r}{al};elsea=al;al=a2;fl=f2;a2=a+
0.618*b-a;f2=subsy{r}{a2};endend;answer=
0.5*a+b;result=[answer];运行结果如下由上图知极值点为x*=llT微小值=
1.7345x10T5工0X*对应的理论微小值问题2求解Wolfe法程序代码如下error=10A-6;x0=
[00];symsxlx2f=2*xl/^2+2*x2/v2-2*xl*x2-4*xl-6*x2;AB=[1Z1Z1O;1501];B=[lz0;0l];N=[lzl;lz5];[ab]=sizexO;initial_gradient=gradient_myfxOb;norm=0;norm0=0;symst;A=[];rN=[initial_gradient1initial_gradient2]pN=-rN;pB=-[pNl+pN2-pNl-5*pN2];search_direction=[pNpB]fori=l:4norm0=norm0+search_directioniA2endtmax=5/34;x00=[002-5];x=xOO+t*search_direction;xx=[x1x2];f_step=subsffindsymfxx;F=difff_stept;solveFztx_l=x00+tmax*search_directionnorm=norm0;k=l;HSZ=[];whilenormerrork3x_ll=[x_llzx_l2]gradient=gradient_myfzx_llbrN=-[
1.25*gradient
10.25*gradient2]pN=[rNl*x_l3zrN2*x_l4]pB=-[
1.25*pNlz
0.25*pN2];new_direction=[pBpN];norm=0;TT=[];tmax=l;fori=l:4norm=norm+new_directioni人2endforj=l:4ifnew_directionj0Tj=new_directionjelseTj=O;endifTj0TT=abs[TTx_lj/Tj]endendn=sizeTT;foruk=l:niftmaxTTuktmax=TTukn=n+l;endendx=x_l+t*new_direction;xx=[xlx2];f_step=subsffindsymfxx;F=difff_stept;solveFt;tO=tmax;x_2=x_l+
0.18*new_directionA=[A;x_2];normO=norm;search_direction=new_directionx_l=x_2;xx2=x_2lx_2l];Y=subsffindsymfxx2;HSZ=[HSZ;Y]k=k+l;endkx_2norm程序运行结果如下初始点0025earch_direction=46-1034tmax=
0.147假如不交还B矩阵与A矩阵则运行结果如下x_l=
0.
62510.
87080.
50770.0246searchdirection=
3.
44.4-8-
25.6很明显X4已经无法再取有效值,,故须交还B与Ax_l=
0.
58820.
88240.52940search_direction=
1.82220-
2.2578-
0.44tmax=
0.231x_2=
1.
09620.
88240.12300由以上结果显示x*=
1.
09620.8824尸而理论计算值为x*=一第:L
1290.7742T有肯定的计算误差
五、试验体会通过这次运筹学课内试验,我对无约束优化问题及约束优化问题的思想和部分算法的求解过程有了进一步了解与把握这次试验使我对用进退法确定一维搜寻区间,如何进行一维搜寻,对求解无约束优化问题的F-R共规梯度法和约束最优化问题的Wolfe简约梯度法的基本思想和算法有了更深理解,对课内的所学学问进一步消化在本次试验过程中,发觉真正用Matlab求解实际问题的力量还很欠缺,对Matlab的娴熟程度还不够!求解过程消失了很多错误,通过网上查找资料和采用图书馆图书资源得到解决;但是仍有部分问题还没太明白盼望自己以后加强用Matlab解决实际问题的力量,合理将运筹学所学理论学问应用到实际生活中!。
个人认证
优秀文档
获得点赞 0