上机作业
- 格式:docx
- 大小:22.09 KB
- 文档页数:3
运筹学上机作业二
1100015886 李丹§1. 数值结果
调用Matlab优化工具箱fminunc进行方法选择,通过控制options中的参数LargeScale控制中型优化算法,再通过参数HessUpdate控制:BFGS、DFP和最速下降方法(SD),所以以下对这三种方法进行比较。
使用三个检验函数Watson(n=9)、Extend Rosenbrock(n=20)和Extended Powell Singular(n=20)来检验无约束最优化方法。
检验程序分别为watsoncheck.m、ExtendedRosenbrock.m、extendpowellsingular.m。
实验结果:
Exitflag:
1 Magnitude of gradient small enough
0 Too many function evaluations or iterations.
Successful case x*:
§2. 结果分析
根据上述数值结果可以发现:
1.最速下降方法(SD)在三个函数下都已经达到函数评价或迭代的最大次数。
(Fminunc设定对watson函数options.MaxFunEvals=900,对Extended Rosenbrock、Extended Powell Singular的options.MaxFunEvals=2000)。
原因是steepdesc方法在最初迭代时下降速度很快但接近极小点后,收敛速度变慢。
所以即使达到函数设定的最大迭代次数也没能达到收敛终止条件。
所以改进办法可以只在最初几次迭代时使用最速下降方法。
2.拟牛顿方法中DFP对于三个函数也都达到了函数评价或迭代的最大次数。
对
于ExtendRosenbrock和Extended Powell Singular检验函数,DFP方法的hessen 矩阵不正定,无法保证迭代下降方向。
所以会无法在迭代最大次数限制中达到最优。
3.拟牛顿方法中的BFGS在三种检验函数中都是正定的,保证迭代的持续性。
说
明尽管BFGS和DFP方法是一致的,但BFGS矫正公式的自我矫正特性比较好,相对于其他两个方法而言更接近最优。
但是会出现局部最优解的情况。
4.因为不太会编程序,所以在本实验中并未对阻尼Newton、修正Newton法和
拟牛顿法中的SR1方法进行比较,以下对这几种方法进行理论分析。
a)因为基本牛顿方法是以指向近似二次函数极小点的方向为搜索方向,选
取步长为1。
对于初始点离最优解不远的条件下,是二次收敛的,但当
初始点离最优解太远时,牛顿法并不一定是收敛的方法。
阻尼Newton
方法是在基本牛顿方法的基础上,用一维线搜索确定步长,具有全局收
敛性,当迭代点接近于最优解时,具有收敛速度快的优点,可以考虑将
阻尼牛顿法和最速下降法结合使用。
但是如果目标函数的Hesse矩阵出
现奇异,迭代就无法进行了。
b)修正牛顿方法是对对阻尼牛顿法中可能出现的Hessian矩阵非正定情况
的改善,如果在迭代过程中遇到了非正定无法迭代的情况,应该考虑使
用修正牛顿方法。
c)拟牛顿方法中的SR1结构比较简单,对于正定二次凸函数,收敛性质较
好,但是不能保证H的正定性,比较适用于信赖域算法。
综上,这几种方法中,以拟牛顿方法的BFGS最为有效,这也可以解释在fminunc中默认算法是BFGS。