最优化学习笔记(十四)——共轭梯度法
2016-12-18 21:32
295 查看
共轭梯度法不需要预先给定Q共轭方向,而是随着迭代的进行不断产生Q共轭方向。在每次的迭代中,利用上一个搜索方向和目标函数在当前迭代点的梯度向量 之间的线性组合构造一个新的方向,使其与前边已经产生的搜索方向组成Q共轭方向。对于一个n维二次型函数,沿着Q共轭方向进行搜索,经过n次迭代,即可得到极小点。
考虑二次型函数:
f(x)=12xTQx−xTb,x∈Rn
其中, Q=QT>0。初始点x(0),搜索方向采用最速下降法的方向,即函数f在x(0)处梯度的负方向,即:
d(0)=−g(0)
产生下一个迭代点:
x(1)=x(0)+α0d(0)
其中,步长为:
α0=argminα≥0f(x(0)+α0d(0))=−g(0)Td(0)d(0)TQd(0)
再展开下一次迭代,搜索方向d(0)和d(1)应该是关于Q共轭的。推广开来,在k+1词迭代中:
d(k+1)=−g(k+1)+βkd(k),k=0,1,2…
按照如下方式选择βk, 可以使得d(k+1)和d(0),d(1),…,d(k)组成Q共轭方向:
βk=g(k+1)TQd(k)d(k)TQd(k)
共轭梯度法的算法步骤可以归纳如下:
令 k=0,选择初始值:x(0)
计算g(0)=∇f(x(0)),如果g(0)=0,停止。否则:d(0)=−g(0).
计算αk=−g(k)Td(k)d(k)TQd(k)
计算 x(k+1)=x(k)+αkd(k)
计算g(k+1)=∇f(x(k+1)),如果g(k+1)=0,停止。
计算βk=g(k+1)TQd(k)d(k)TQd(k)
计算d(k+1)=−g(k+1)+βkd(k)
令k=k+1,回到第3步。
考虑二次型函数:
f(x)=12xTQx−xTb,x∈Rn
其中, Q=QT>0。初始点x(0),搜索方向采用最速下降法的方向,即函数f在x(0)处梯度的负方向,即:
d(0)=−g(0)
产生下一个迭代点:
x(1)=x(0)+α0d(0)
其中,步长为:
α0=argminα≥0f(x(0)+α0d(0))=−g(0)Td(0)d(0)TQd(0)
再展开下一次迭代,搜索方向d(0)和d(1)应该是关于Q共轭的。推广开来,在k+1词迭代中:
d(k+1)=−g(k+1)+βkd(k),k=0,1,2…
按照如下方式选择βk, 可以使得d(k+1)和d(0),d(1),…,d(k)组成Q共轭方向:
βk=g(k+1)TQd(k)d(k)TQd(k)
共轭梯度法的算法步骤可以归纳如下:
令 k=0,选择初始值:x(0)
计算g(0)=∇f(x(0)),如果g(0)=0,停止。否则:d(0)=−g(0).
计算αk=−g(k)Td(k)d(k)TQd(k)
计算 x(k+1)=x(k)+αkd(k)
计算g(k+1)=∇f(x(k+1)),如果g(k+1)=0,停止。
计算βk=g(k+1)TQd(k)d(k)TQd(k)
计算d(k+1)=−g(k+1)+βkd(k)
令k=k+1,回到第3步。
相关文章推荐
- 最优化学习笔记(四)共轭梯度法
- 设计模式学习笔记(十四)——创建型模式总结
- Linux实践工程师学习笔记十四
- 微软企业库4.1学习笔记(十四)缓存模块2 使用缓存模块进行开发
- NET 应用架构指导 V2 学习笔记(十四) 数据访问层指导
- QT学习笔记之十四 StringMatch
- 新概念第二册学习笔记十四(79--84)
- MCSE 2003学习笔记 十四 群集-应用程序服务器
- 编解码学习笔记(十四):容器(下篇)
- 设计模式学习笔记(十四)——创建型模式总结
- 设计模式学习笔记十四:适配器模式、桥接模式与外观模式
- MySQL学习笔记(十四)―― MySQL的命令集(4)
- MonoRail学习笔记十四:分页功能的使用
- JavaScript 学习笔记(十四) 正则表达式
- oracle9i学习笔记之十四 使用集合运算
- ASP.NET学习笔记十四之Application
- 设计模式学习笔记(十四)—Command模式
- 微软企业库4.1学习笔记(十四)缓存模块2 使用缓存模块进行开发
- 软件工程视频学习笔记(十四)