单纯形法解决无约束优化问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分数: ___________
任课教师签字:___________
课程作业
学年学期:2017——2018学年第二学期
课程名称:优化理论
作业名称:作业三
学生姓名:
学号:
提交时间:
一、问题重述
形如的min (x),x R n f ∈问题称为无约束优化问题,常用下降算法来解决这类问题。下降算法的关键在于步长和搜索方向的选取。步长的求取可以借助前面作业中提到的一维搜索等方法求取,而搜索方向算法可以分为两大类,解析法和直接法。
解析法借助了目标函数的导数进行搜索,这类算法搜索速度快、效率高,但是对目标函数的要求更为严格。常用的方法有最速下降法、Newton 法、共轭梯度法、拟Newton 法等。
直接法不使用导数,也不需要得到目标函数的明确解析式,只需要能够得到某些函数上的点即可。因此直接法的适用范围更广,但相应的收敛速度会较慢,计算量也会随着问题维数的增加而迅速增大。常用的方法有单纯形法、Powell 方向加速法以及Powell 改进算法。
本作业以直接法的Powell 法为例,解决具体的无约束优化问题,并对将Powell 方向加速法和Powell 改进算法解决结果进行对比。
二、算法原理
对于n 维正定二次函数(x)0.5T T f x Gx b x c =++,设011,,...(k n)k p p p -<关于G 共轭,0x 与1x 为任意不同点。分别从0x 与1x 出发,依次沿011,,...k p p p -作一维搜索。如果最后找到两个互不相同的极小点x a 与x b ,则x b a x -与011,,...k p p p -关于G 共轭。
Powell 方向加速法正是基于这一原理,每次迭代过程作n+1次一维搜索。第一次沿给定的n 个线性无关的方向011,,...n p p p -依次作一维搜索,之后沿由这一阶段的起点到第n 次搜索所得到的点的方向P 再做一次一维搜索,并把这次所得点作为下一阶段的起点,下一阶段的n 个搜索方向为011,,...,n p p p p -。以此直到找到最优解。
此算法是在迭代中逐次生成共轭方向,而共轭方向又是较好的搜索方向,所以称之为方向加速法。但是,此算法产生的n 个向量可能线性或近似线性相关,这时张不成n 维空间,可能得不到真正的极小点。因此,Powell 原始算法存在一定的缺陷。
Powell 改进算法虽然不再具有二次终止性,但克服了搜索方向的线性相关的不利情形,是解决无约束优化问题较有效的直接法之一。
本次作业一维搜索的过程是利用函数求导,求得最小值。经过试验发现,α是允许为负数的。否则最终寻优得到的极值点与实际结果存在很大的偏差,
而且寻优的效率特别低下。
三、算法流程
Powell算法流程图:
图1 Powell算法流程图
Powell改进算法流程图:
图2 Powell 改进算法流程图
四、实验验证
1、设目标函数421122(x)x (1x )f x x =++++,收敛精度为0.001,初始点(-2,2)。
利用Matlab 自带的函数求二元函数极值点函数fminsearch ,求得极值点为(-0.630,-1.500),最小值为-1.722。以此为标准,检验Powell 方向加速法和Powell 改进算法的寻优结果。
Powell 方向加速法经过2次迭代,求得极值点(-0.630,-1.500),对应的最小值-1.722;Powell 改进方向加速法经过2次迭代,求得极值点(-0.630,-1.500),对应的最小值1.722。
2、设目标函数42112212(x)x (1x )f x x x x =+++++,收敛精度为0.001,初始点(-2,2)。
利用Matlab 自带的函数求二元函数极值点函数fminsearch ,求得极值点为(0.5827,-1.7913),最小值为-1.5109。以此为标准,检验Powell 方向加速法和Powell 改进算法的寻优结果。
Powell 方向加速法经过4次迭代,求得极值点(0.5827,-1.7912),对应的最小值-1.5109;Powell 改进方向加速法经过2次迭代,求得极值点(-0.630,-1.500),对应的最小值 1.722。两种方法对应的寻优过程如下图所示。
x 1x
2Pwoell 方向加速法寻优过程
x 12Pwoell 改进法寻优过程
图3 Powell直接与改进法寻优过程
四、算法程序
1、Powell方向加速关键部分算法: