| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 最优化方法牛顿方法matlab代码-从零开始 -> 正文阅读 |
|
[数据结构与算法]最优化方法牛顿方法matlab代码-从零开始 |
?代码:各种最优化牛顿方法matlab程序.rar-算法与数据结构文档类资源-CSDN文库https://download.csdn.net/download/benchuspx/52145455 目录 针对优化问题,常见的优化方法及其特点如下: 1、最速下降法SD迭代点处目标函数泰勒展开用一次函数近似,迭代方向dk=-gk,步长alpha由(非)精确线搜索得到,x(k+1)=x(k)+alpha*dk),优化速度慢,迭代次数多,实际应用中几乎不使用了。 2、Newton方法和修正的Newton方法基本牛顿方法迭代点处目标函数泰勒展开用二次函数近似,dk=-inv(Gk)*gk,步长alpha=1。优化速度快。但是Hessen矩阵Gk不一定是正定和非奇异(可逆)的,而且可能出现迭代方向dk和梯度gk接近正交的情况导致目标函数f下降量极少。基本牛顿方法只有当初始点x0充分接近极小点x*时,才可能收敛,而且每一步都要计算hessan矩阵的值,每一步都要解一个线性方程组Gk*dk=-dk,计算量为o(n3)。 阻尼牛顿法在基本牛顿法dk=-inv(Gk)*gk的基础上,步长alpha由(非)精确线搜索得到。就是在迭代方向dk上找到alpha使得下一个迭代点处的目标函数值f(xk+alpha*dk)最小。常见的非精确线搜索准则有Armijo准则,Goldstein准则(含Armijo),Wolfe准则(含Armijo),强Wolfe准则(含Armijo)。该方法由于加入了线搜索,即使迭代点离极小点x*稍远,也能收敛。但是仍然没有解决基本牛顿法的Gk可能不正定、奇异的问题。 为了解决牛顿法中迭代点xk处hessan矩阵Gk可能不正定、奇异的情况,产生了各种修正的Newton方法来修正Gk。比较常用的有混合Newton方法、LM方法(Gk+v*I)和采用Cholesky(乔利斯基)分解的稳定Newon方法(该法是修正Newton方法中效果最好的,但是一般教科书没有讲)。 混合牛顿方法在阻尼牛顿方法的基础上,加上如下判断: 如果Gk奇异,那么inv(Gk)不存在,那么这一步改用SD最速下降法,dk=-gk。 如果Gk非奇异但不正定,那么inv(Gk)也不正定,即gk'*inv(Gk)*gk<=0。由牛顿公式dk=-inv(Gk)*gk,则有gk'*dk>=0,即迭代点处的方向导数大于0,说明dk不是下降方向而是上升方向。此时另dk=-dk=inv(Gk)*gk即可。 可见,如果Gk一直奇异,那么此时混合牛顿法就是SD方法了,下降速度会很慢。而且它也继承了牛顿法的缺点,即每一步都要算Hessan矩阵中的二阶偏导值,计算量大。 3、拟牛顿方法QN为了解决牛顿方法里每一步都需要求hessan矩阵里所有二阶导,而且hessan矩阵可能奇异、不正定的情况,干脆找一个正定对称矩阵B(k)来近似G(k),或者H(k)来近似inv(Gk)。B或者H的初始矩阵可以任意选取或者就选G(0),inv(G(0))。然后每步迭代的时候根据x(k+1)-x(k)和g(k+1)-g(k)来修正B(k)或H(k)。根据B和H的修正构造方式,可以分为对称秩1(SR1)方法和对称秩2方法,SR1和自身对偶,DFP和BFGS都是对称秩2方法且互相对偶。它们都是拟牛顿方法。 QN方法的好处是不用计算二阶导了,而是仅用一阶导就可以近似出G(k), 缺点是每一步都得存储上一步的B(k)或者H(k)。对于维数n很大的大规模优化问题,B和H的存储量是n^2量级,太大了。因此QN方法只能用于中小规模问题。 4、共轭梯度方法共轭梯度方法和牛顿法的思路不一样。迭代方向选择为共轭梯度方向:dk=-gk+beta(k-1)*d(k-1)。对于目标函数是正定二次函数的问题,beta(k-1)=gk'*gk/(g(k-1)'*g(k-1)),称为FR线性共轭梯度方法。目标函数如果是一般线性函数,beta(k-1)=gk'*(g(k)-g(k-1))/(g(k-1)'g(k-1)),称为PRP非线性共轭梯度方法。 共轭梯度方法的优点是只用到了上一步的梯度和迭代方向向量,没有用到n^2量级的矩阵,因此存储量小,可以解决大规模优化问题。但是在中小规模问题上肯定效果不如QN法。 代码:各种最优化牛顿方法matlab程序.rar-算法与数据结构文档类资源-CSDN文库https://download.csdn.net/download/benchuspx/52145455 详尽的线搜索程序,阻尼牛顿、混合牛顿、SR1、BFGS、DFP优化方法,以及三个非线性最小二乘目标函数,输出优化结果和过程图。配有详尽的注释,说明文档和参考文献。 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:56:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |