1、最优化课程设计-共轭梯度法算法分析与实现(设计程序) 题目 共轭梯度法算法分析与实现 班级 / 学号 14140101/2011041401011 学 生 姓 名 黄中武 指 导 教 师 王吉波 王微微 课 程 设 计 任 务 书 课 程 名 称 最优化方法课程设计 院(系) 理学院 专业 信息与计算科学 课程设计题目 共轭梯度法算法分析与实现 课程设计时间: 2014 年 6月 16日至 2014 年 6月 27日 课程设计的要求及内容: 要求 1. 学习态度要认真,要积极参与课程设计,锻炼独立思考能力; 2. 严格遵守上机时间安排; 3. 按照MATLAB编程训练的任务要求来编写程序; 4
2、. 根据任务书来完成课程设计论文; 5. 报告书写格式要求按照沈阳航空航天大学“课程设计报告撰写规范”; 6. 报告上交时间:课程设计结束时上交报告; 7. 严禁抄袭行为,一旦发现,课程设计成绩为不及格。 一、 运用共轭梯度法求解无约束最优化问题 要求:1)了解求解无约束最优化问题的共轭梯度法; 2)绘出程序流程图; 3)编写求解无约束最优化问题的共轭梯度法MATLAB程序; 4)利用编写文件求解某无约束最优化问题; 5)给出程序注释。 指导教师 年 月 日 负责教师 年 月 日 学生签字 年 月 日 沈阳航空航天大学 课 程 设 计 成 绩 评 定 单 课 程 名 称 最优化理论与算法课程设
3、计 院(系) 理学院 专业 信息与计算科学 课程设计题目 共轭梯度法算法分析与实现 学号 2011041401011 姓名 黄中武 指导教师评语: 课程设计成绩 指导教师签字 年 月 日 最优化方法课程设计 沈阳航空航天大学 课程设计用纸 目 录 目 录 一、正文 . 1 二、总结 . 8 参考文献 . 9 附 录 . 10 第 I 页 最优化方法课程设计 沈阳航空航天大学 课程设计用纸 正 文 一、正文 一 无约束最优化问题的共轭梯度法 共轭梯度法最初是由Hesteness和Stiefel于1952年为求解线形方程组而提出的。后来,人们把这种方法用于求解无约束最优化问题,使之成为一种重要的最
4、优化方法。 下面,重点介绍Fletcher-Reeves共轭梯度法,简称FR法。 共轭梯度法的基本思想是把共轭性与最速下降法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜索,求出目标函数的极小点。根据共轭梯度方向的基本性质,这种方法具有二次终止性。首先讨论对于二次函数的共轭梯度法,然后再把这种方法推广到极小化一般函数的情形。考虑问题 TTmi fx(),,0.5xAxbxcn其中A是对称正定矩阵,c是常数。 具体求解方法如下: (1)首先,任意给定一个初始点,计算出目变函数在这点的梯度,fx()xg若=0,则停止计算,否则,令 1(1)(1)dfxg,() 1(1)(2)(2)
5、,0沿方向搜索,得到点,计算在处的梯度,若g,则利用dxx2(1)(2)(2)和构造第二个搜索方向,再沿搜索。 ,gddd2()k()k()k()k一般地,若已知点和搜索方向,则从出发,沿进行xdxd搜索,得到 (1)()()kkk,xxd,,, k其中步长满足 ,k()()kk()()kkfxd(),,fxd(),,min k此时可求出的显式表达。令 ,k()()kk,()(),,fxd ,()求得极小点,令 (1)()kTk,,()()0,fxd 第 1 页 最优化方法课程设计 沈阳航空航天大学 课程设计用纸 正 文 根据二次函数的梯度表达式,即 (1)()kTk, ()0Axbd,, T
6、()()kkk Axdbd(+)0,,,kT()()kk (10.3.16) gAdd,,0,()kk由(10.3.16)式得到 Tk()gd()()kTkk (10.3.17) ,dAdk(1)k,计算在处的梯度,若,则停止计算;否则,用fx()g,0x,gk,1k,1()k(1)k,(1)k,()k和构造下一个搜索方向,并使和关于A共轭。按此设dddd想,令 (1)()kk,dgd,,, (10.3.18) kk,1()kT上式两端左乘,并令 dA()(1)()()()kTkkTkTk,dAddAgdAd,,,0 kk,1由此得到 ()kT()()kTk,dAg (10.3.19) dAd
7、,kk1(1)k,(1)k,再从出发,沿方向搜索 xd综上分析,在第一个搜索方向取负梯度的前提下,重复使用公式(10.3.14),(10.3.17),(10.3.18)和(10.3.19),就能伴随计算点的增加,构造出一组搜索方向。 第 2 页 最优化方法课程设计 沈阳航空航天大学 课程设计用纸 正 文 二 程序流程图 开始 输入初始点x0 精度e 继续迭代 满足精度要 N 求 Y 输出迭代结果 结束 图一 共轭梯度法程序流程图 三 共轭梯度法的MATLAB程序 function x,val,k=frcg(fun,gfun,x0) maxk=5000; rho=0.6;sigma=0.4; k
8、=0;epsilon=1e-7; n=length(x0); while (k=0) d=-g; end end if (norm(g)=0) d=-g; end end if (norm(g)=0) d=-g; end end if (norm(g)epsilon) break; end m=0; mk=0; while (m20) if (feval(fun,x0+rhom*d)feval(fun,x0)+sigma*rhom*g*d) 第 10 页 最优化方法课程设计 沈阳航空航天大学 课程设计用纸 附 录 mk=m; break; end m=m+1; end x0=x0+rhomk*d; val=feval(fun,x0); g0=g; d0=d; k=k+1; end x=x0; val=feval(fun,x); function f=fun(x) f=100*(x(1)2-x(2)2+(x(1)-1)2; function g=gfun(x) g=400*x(1)*(x(1)2-x(2)+2*(x(1)-1),-200*(x(1)2-x(2) 第 11 页