最速下降法VS基本牛顿法程序.doc
8页运筹与优化实验报告1日期:2016年口月17日班级14级信计2班 姓名 郭蕾 学号 1401214023实验名称求解无约束优化问题计算的问题:Generalized Rosebrock function 的最优化问题0 (1)二维求 min f (x)=100(x12-%22)+(%1- I)2. 该问题的精确解为x*=(14)r,f(x*)=0.(2)多维求解 min/(%)=二1 心+1 -血2)2 + (1-Xj)2该问题的精确解为 x*=(l,l...... l)r,f(x*)=0.使用的算法:01、 最速卜降法2、 基本牛顿法3、 阻尼牛顿法4、 广义Rosenbrock函数的计算(以基本牛顿法为例)源程序:0、二维函数根据例题计算过程中所要用到的需要提前计算的具体函数(1) 原f(x)函数function 仁f(x)f=100* (x (1 厂 2-X (2)厂 2+(X ⑴ T 厂2;(2) f(x)的梯度函数 function g二ggf(x)g= [400*x (1) ^3-400*x (1)*x (2) +2*x (1)-2, (-200) * (x (1 厂2-x (2))]';(3) Armijo非精确搜索确定newxfunct ion [newx, fnewx]=armi jo (xk, dk)bita二0.5;sigma=0. 2;m=0;while (f(xk+bita'm*dk)>f(xk)+sigma*bita'm*ggf(xk)1*dk)&&(m<=20) m=m+1;endmk=m;alpha二bita^mk;newx二xk+b i ta'mk+dk;fnewx=f (newx);(4) f(x)的 Hesse 矩阵function G二G(x)G=[1200*x (1 厂2-400*x (2) +2. -400*x (1); -400*x (1),200];h最速下降法函数文件funct i on [x. y, k]二mygrad (xk)eps=10z' (-5);k=0;g=ggf (xk);dk二-g;wh i I e norm(g) >eps[nev/x, fnev/x]=armi jo (xk, dk); g二ggf (newx);xk=newx;dk二-g;k=k+1;endx二newx;y=fnewx;2、基本牛顿法函数文件funct i on [x. y, k]=j i benn i udunfa (xk)eps=10" (-6);k=0;wh i Ie norm (ggf (xk))>epsGk=G (xk);dk=-G (xk) \ggf (xk);xk二xk+dk;k=k+1;endx 二 xk;yh (xk);3、 阻尼牛顿法函数文件funct i on [x, y, k] =zun i n i udunfa (xO) eps=10" (-6);k=0;gk二ggf (xO);while norm (ggf (xO))>epsGk=G (xO);dk=-G (xO) \ggf (xO);[xO. fnewx] =armi jo(xO. dk); k=k+1;endx=xO;y=f (xO);4、 广义Rosenbrock函数的计算(以基本牛顿法为例)(1) 广义f(x)函数function f=genf(x)f二 0;n=length(x);c=100;fori=l:n-1f二 f+c* (x (i 厂2-x (i+1)厂 2+(x (i) T 厂2;end(2) 广义f(x)函数的梯度函数function g=geng(x) n=length(x);c=100:g=zeros(n, 1);g (l)=4*c*x(1)*(x(1)^2-x(2))+2*(x(1)-1);g(n)=-2*c*(x(n-l)^2-x(n));fori=2:n-lg(i)=-2*c*(x(i-l) ”2-x(i))+4*c*x(i)*(x(i)“2-x(i+l))+2*(x(i)T); end(3) 广义f(x)函数的Hesse矩阵函数function G=genGG(x)n=length(x);c=100;Gl=zeros (n, 1);Gl(l)二 4*c*(3*x(l 厂 2-x(2))+2;G1 (n)=2*c;fori=2:n-lG1(i)=2*c+4*c*(3*x(i厂2 -x (i+l))+2;endG2=zeros (n-1,1);fori=l:n-1G2(i)二-4*c*x(i);endGG2=zeros(n, n);GG3二GG2;GG2(1: n-1, 2:n)=diag (G2);GG3(2:n, 1:n-l)=diag (G2);G=diag(Gl)+GG2+GG3;(4)广义f(x)函数的基本牛顿法函数 function [x, y, k]=genjibenniudunfa(xk) eps二10八(-6);k=0;% gk=geng(xk);while norm(geng(xk))>epsGk=genGG(xk);dk=-genGG(xk)\geng(xk);xk二xk+dk;k=k+l;endx 二 xk;y=genf(xk);计算结果(1)二维f(x)的各种计算方法的计较初始点迭代次 数(* 速下降法)迭代次 数(基 本牛顿 法)迭代次 数(阻 尼牛顿 法)目标函数 (最速最速 下降法)目标函数(基本牛顿法〉目标函数(阻尼牛顿 法)| (0,0卩29112141.2207e-01001.8052e-022(X0)r2879119. 8399e-01100| (2> l)r8135159. 9630e-0111・ 8242e-0289.5039e-023(2, 0)r27435151.0527e-0107. 8886e-0311.1496e-0221 a-Dr2336111. 1797e-0100■(0,-l)r24075151.0056e-0108. 1386e-0241・ 0346e-02330645201.0321e-0103. 4626e-0233.4593e-016(-1.5,-l)r30165231.1315e-0103.0950e-0257. 0615e-022(-1.2,-l)r30145218. 3467e-0115. 3506e-0242. 2381e-017(10,-10/24375471. 1769e-0101.9721e-0297. 2883e-016通过表格的比较.发现最速下降法的迭代速度最慢.基本牛顿法的迭代速度最快2)以广义f(x)的计算结果当n=10:(其中Armijo准则中的参数取值:bita=0.4;sigma=0.4;)初始点迭代次数 (基本 牛顿 法)迭代次数 (最速下降法)目标函数 (最速下降法)目标函数 (基本牛顿法)<-1.2r 1 -1.11) 14369969.S680436114632S4e-013S.4469626S1390387e-016(0, o...o)11570318.43S62SS813S0841e-021(1, oa,o...1,0)12768199.S86093741912205e-0134.474320446800426 e-03 0(— 1/1/ —1... 1,-1)3269489.666063842858310e-0132.407548160196S79e-019(a-io, -i 12469849.615 664064424106e-0131.2892760928379SSe-014当n=100:(其中Armijo准则中的参数取值:bita=0. 4;sigma=0. 35;)初始点迭代次数(基本 牛顿法)初始点(最速下 降法)目标函数 (最速 下降法)目标函数 (基本 牛顿法)(-1.2, 1> ・...-1.2,1) T150135729.077022871103141e-0133・0204eJ8(
遇到的问题,体会总结:1、 在编写最速下降法时,忘记更新xk;2、 在机房的时候,编写的梯度函数命名为gf程序没有问题可以运行,但是会都寝室用自己的电 脑时,每次运行都会报错"Undefined function or method ' norm' for i nput arguments of type,gfl”经过不断的实验排除,发现mat lab自带有函数GF,可能会命名重复不合适, 所以把gf全部改为ggf,运行成功3、 geng和genG命名重复,于是把genG命名修改为genGG,但是在其他函数。





