资源描述:
《b10080311-魏静-运筹实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告(2012/2013学年第二学期)课程名称运筹与优化实验名称一、一维搜索算法——黄金分割法的应用二、无约束最优化的梯度方法——共轭梯度法的应用三、惩罚函数法实验时间2013.3.182013.5.20指导单位理学院指导教师范晓娜学生姓名魏静班级学号B10080311学院(系)理学院专业统计学运筹与优化实验一一、实验内容:一维搜索算法——黄金分割法的应用二、实验目的:练习应用黄金分割法求解方程的最优值和最优解的近似。三、实验题目:用0.618法求函数在[0,10]上的极小点,要求缩短后的区间长
2、度8%原区间长度。四、题目求解4.1黄金分割法(0.618法)的计算步骤(1)对区间[a,b]=[a1,b1]中取两点:并令(2)若,停止计算,输出结果;否则,计算并比较若,则若则(3)置返回(2)4.2黄金分割法(0.618法)的MATLAB实现(1)函数文件golddiv.mfunction[p,bestx,minfx]=golddiv(f_name,a,b,e)a(1)=a;b(1)=b;r(1)=a(1)+0.382*(b(1)-a(1));u(1)=a(1)+0.618*(b(1)-a(1
3、));k=1;m(1)=feval(f_name,r(1));n(1)=feval(f_name,u(1));while(abs(b(k)-a(k))>e)if(m(k)>n(k))a(k+1)=r(k);b(k+1)=b(k);r(k+1)=u(k);u(k+1)=a(k+1)+0.618*(b(k+1)-a(k+1));elsea(k+1)=a(k);b(k+1)=u(k);u(k+1)=r(k);r(k+1)=a(k+1)+0.382*(b(k+1)-a(k+1));endm(k+1)=fev
4、al(f_name,r(k+1));n(k+1)=feval(f_name,u(k+1));k=k+1;endp=[a',b',r',u',m',n'];bestx=(a(k)+b(k))/2;minfx=feval(f_name,bestx);step=k-1(2)CommandWindow输入>>f1=inline('x^2-6*x+2','x');>>[p,bestx,minfx]=golddiv(f1,0,10,0.8)(3)运行结果step=6p=Columns1through4010.0
5、0003.82006.180006.18002.36083.820003.82001.45922.36081.45923.82002.36082.91822.36083.82002.91823.26262.36083.26262.70532.91822.70533.26262.91823.0497Columns5through6-6.32763.1124-6.5914-6.3276-4.6261-6.5914-6.5914-6.9933-6.9933-6.9311-6.9131-6.9933-6.9
6、933-6.9975bestx=2.9839minfx=-6.99974.3结果分析迭代次数:6最有解:x=2.9839最优值:fx=-6.9997运筹与优化实验二一、实验内容:无约束最优化的梯度方法——共轭梯度法的应用二、实验目的:练习应用共轭梯度法求解方程的最优解,并且通过编程理解共轭梯度法的思想。三、实验题目:四、题目求解4.1共轭梯度法的计算步骤(1)选定初始点,给定允许误差;(2)计算,利用公式和计算出;(3)计算步长:;(4)假设已经得出和,则可由和计算第次近似解;(5)若,停止计算,即
7、为要求的近似解。4.2共轭梯度法的MATLAB实现4.2.1问题:(1)函数文件CG_1.mfunction[x,f1]=CG_1(x0,e)x=x0;symsxiyiaf=xi^2-xi*yi+yi^2+2*xi-4*yi;fx=diff(f,xi);fy=diff(f,yi);fx=subs(fx,{xi,yi},x0);fy=subs(fy,{xi,yi},x0);fi=[fx,fy];count=0;whiledouble(sqrt(fx^2+fy^2))>es=-fi;ifcount<=0
8、s=-fi;elses=s1;endx=x+a*s;f=subs(f,{xi,yi},x);f1=diff(f);f1=solve(f1);iff1~=0ai=double(f1);elsebreakxf=subs(f,{xi,yi},x)countendx=subs(x,a,ai);f=xi-xi^2+2*xi*yi+yi^2;fxi=diff(f,xi);fyi=diff(f,yi);fxi=subs(fxi,{xi,yi},x);fyi=subs(fyi,{xi