用最速下降法求解无约束非线性规划问题.doc

上传人:夏** 文档编号:546274213 上传时间:2022-10-19 格式:DOC 页数:9 大小:174.01KB
返回 下载 相关 举报
用最速下降法求解无约束非线性规划问题.doc_第1页
第1页 / 共9页
用最速下降法求解无约束非线性规划问题.doc_第2页
第2页 / 共9页
用最速下降法求解无约束非线性规划问题.doc_第3页
第3页 / 共9页
用最速下降法求解无约束非线性规划问题.doc_第4页
第4页 / 共9页
用最速下降法求解无约束非线性规划问题.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《用最速下降法求解无约束非线性规划问题.doc》由会员分享,可在线阅读,更多相关《用最速下降法求解无约束非线性规划问题.doc(9页珍藏版)》请在金锄头文库上搜索。

1、运筹学实习报告姓 名: xxxxxxxxxx 学 号: xxxxxxxxxxx 专业班级: xxxxxxxxxxxx 2 0 1 3年 7 月 0 4 日题目:用最速下降法求解无约束非线性规划问题摘要: 无约束最优化问题的求解方法分为解析法和直接法两大类。解析法需要计算函数的梯度,其中最速下降法就属于解析法中的一种。对于一个无约束非线性规划利用最速下降法求解,首先需要确定其优化方向,此优化方向应该选择为f在当前点处的负梯度方向,利用一维搜索法找出沿此方向上的最小值及其对应点,此后将该点作为新的出发点重复上述过程,直到达到允许的误差为止。本文通过理论的计算方法,进一步分析,最后用c+编程实现求出

2、允许误差内的最优解。此编程可用于计算符合下列形式的函数求最优解过程: f(x)=a0x1*x1+a1x2*x2+a2x1*x2+a3x1+a4x2+a5其中:ai (i=0,1,2,3,4,5) 为函数的系数。 本文以“ 李占利 主编,中国矿业大学出版社出版”的最优化理论与方法 第五章 “无约束最优化方法,5.1 最速下降法 ”例51为实例,首先利用上述迭代的方法,计算出各迭代点的函数值,梯度及其模。然后应用c+语言编程,得到在精度范围内的精确最优解。 C+编程计算的最优解为 : 。 即转化为分数结果为: 。 满足精度要求的模为:。关键词:无约束非线性规划 解析法 最速下降法 梯度 模 最优解

3、一、 算法思想 无约束最优化方法中的最速下降法首先需要确定其优化方向,此优化方向应该选择为f在当前点处的负梯度方向,利用一维搜索法找出沿此方向上的最小值及其对应点,此后将该点作为新的出发点重复上述过程,直到达到允许的误差为止。主要依据解无约束非线性规划问题的最速下降法计算步骤进行设计算法。 具体步骤如下: 第1步 选取初始点,给定终止误差 0,令k=0; 第2步 计算,若,停止迭代,输出,否则进行第3步; 第3步 取; 第4步 进行一维搜索,求,使得,令,k=k+1。转第2步。由以上计算步骤可知,最速下降法迭代终止时,求得的是目标函数驻点的一个近似点。 依据以上步骤就可以用C+编程实现最速下降

4、法求解最优解的算法。二、 算法流程图停取,k:=0计算是否求令k:=k+1三、 程序代码#include#includedouble lamda(double x2,double p2,double a2)double lam1,lam2;lam1=(pow(a0,3)*x0*x0+pow(a1,3)*x1*x1);lam2=-(pow(a0*x0,2)+pow(a1*x1,2);double s;s=-lam2/(2*lam1);return s;void main() coutendl; cout 最速下降法求解最优解程序运行结果 endl; coutendl;coutendl;doubl

5、e lamd,x3,a6;double p2,g2,e,y,m,n; int i=0;cout请输入精度ee; cout请输入初始点x0,x1的值:nm;cinn;x0=m; x1=n;cout函数通式为f(x)=a0x1*x1+a1x2*x2+a2x1*x2+a3x1+a4x2+a5endl;cout请依次输入函数的系数:a0、a1、a2、a3、a4、a5:endl;for(i=0;iai; p0=(2*a0*x0+a2*x1+a3); p1=(2*a1*x1+a2*x0+a4); g0=-p0; g1=-p1;i=0; coute&i=200) lamd=lamda(x,g,a); x0=

6、x0+lamd*g0; x1=x1+lamd*g1; p0=2*a0*x0; p1=2*a1*x1; g0=-p0; g1=-p1; i+; cout*endl; cout第i次迭代结果:endl; coutp的模为:sqrt(g0*g0+g1*g1)endl; coutx的值x0 x1endl; cout*endl; coutendl;y=(a0*x0*x0+a1*x0*x1+a2*x0*x1+a3*x0+a4*x1+a5); cout此时满足精度要求的p的模为:sqrt(g0*g0+g1*g1)endl; coutendl; cout满足精度的最优近似结果x1,x2分别为:endl; co

7、utx1=x0endl; coutx2=x1endl; coutendl; cout满足进度要求所得的最优值为:endl; coutminf(x)=yendl;四、 例子与结果例子为“ 李占利 主编,中国矿业大学出版社出版”的最优化理论与方法 第五章 “无约束最优化方法,5.1 最速下降法 ”例51。用最速下降法求解,初始迭代点,精度为。则体现在程序中很明显有:a0=2,a1=1,a2=a3=a4=a5=0;e=0.1;x0=x1=1;则程序运行结果为:即在允许的精度范围内,初始迭代点,精度为。得到在精度范围内的精确最优解为: ,即 。 满足精度要求的模为:。五、 结论与总结 最速下降法为最优

8、化万千方法中的一种,要想更好地利用最优化方法解决我们身边的问题,光靠这一种方法远远不够。因此我必须要好好掌握其他的各种方法。还有通过这次实习让我深深认识到,并不是所有的问题都能够手工完成的,我们平常接触的例题,都非常基础,那完全可以手工计算得到答案,但如果问题比较复杂时,我们是没有办法用手工完成的。所以我们必须借助计算机来解决那些复杂的问题。因此这就要求我们必须要熟练掌握编程技巧,要能够把实际的复杂问题通过编写程序来解决它。还有此次用最速下降法求解最优解的程序,我编的还不够完美,还有很多不足之处,只能用于研究二元函数的最优解问题,不能进行其他的更深入的研究,所以还有很多改进的地方,以后我还要继

9、续努力。 对于编程一定要多练、多动手操作,通过这次实习让我深深地认识到,光靠理论知识是不行的,理论知道再多,如果不动手实践的话照样编不出程序,只有在实践中,在编写程序的过程中我们才能发现自己的不足,才能知道问题出在哪儿。所以无论学习什么编程语言,我今后一定要多动手,今后无论学习什么我都要勤动手,多动手,多写,多练。六、 参考文献1龚尚福,贾澎涛. C/C+语言程序设计 M.徐州:中国矿业大学出版社,2006.12.2李占利,张卫国. 最优化理论与方法 M.徐州:中国矿业大学出版社,2012.8.3范玉妹,徐尔.数学规划及其应用 M.北京:冶金工业出版社,2009.9.4孙文瑜,徐成贤,朱德通. 最优化方法 M.北京:高等教育出版社,2004.8.1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号