BFGS算法及其matlab实现
目录
一.前沿
二.基本思想
三.秩2校正公式
四.算法步骤
五.matlab程序实现
一.前沿
上一篇文章介绍了基于秩1的拟牛顿算法,紧接上文,这次我们介绍关于秩2的拟牛顿算法,即BFGS算法。为啥叫BFGS算法,是因为这个鬼算法是由Broyden、Fletcher、Goldforb和Shanno这四个大佬发明的,BFGS校正算法是目前最流行,也是最有效的拟牛顿校正。
二.基本思想
拟牛顿法的基本思想是把牛顿法中用到的Hess阵用一个Hk矩阵来代替。那么Hk是什么呢?Hk的三个特点如下:
(1)Hk近似等于牛顿法中的Hess阵,这样可以保证拟牛顿发所产生的方向与牛顿反向近似,从而保证了拟牛顿法的收敛速度。
(2)Hk是正定的
(3)Hk的更新规则有两种,即用秩1或秩2的矩阵矫正。上篇文章介绍的是秩1算法,所以这篇文章介绍秩2算法。(秩1秩2法其实就是两个更新Hk的不同公式,应该是记住就行了吧,反正推导我也看不懂)。
三.秩2校正公式
在做matlab仿真时,H0通常用一个单位矩阵来代替。经过一次迭代后,Hk的秩2矫正公式如下(手写吧,打公式太痛苦了):
四.算法步骤
步0:确定终止误差e=(0~1),设初始点x0,=(0~1),=(0,0.5),初始对称正定阵H0=I(单位阵),令k=0
步1:计算gk=f(xk).若||gk||<=e,停算,输出xk作为最优解。否则,转步2
步2:解线性方程组 Hk*dk= -gk,解出dk(即得出搜索方向)
步3:用Armjio搜索技术求步长k=^mk,m的值从0开始,
若f(xk+ ^m*dk)<=f(xk)+*^m*gk'dk
则 mk=m,步长k=^mk,若不满足上式,则m=m+1,直到满足上述不等式为止
步4:令Xk+1=xk+ k*dk
步5:由校正公式确定Hk+1,即上图所示。令k=k+1,转步1
五.matlab程序实现
BFGS封装函数:
function [x,val,k]=bfgs(fun,gfun,x0,varargin)
k=0;
maxk=500;
rho=0.55;
sigma=0.4;
e=1e-5;%精度
n=length(x0);
Hk=eye(n);
while(k<maxk)gk=feval(gfun,x0,varargin{:});if(norm(gk)<e),break;enddk=-Hk\gk;%在后面会更新Hkm=0;mk=0;while(m<20)s=feval(fun,x0+rho^m*dk,varargin{:});a=feval(fun,x0)+sigma*rho^m*gk'*dk;if(s<a)mk=m;break;endm=m+1;endx=x0+dk*rho^mk;sk=x-x0;yk=feval(gfun,x,varargin{:})-gk;if(yk'*sk>0)Hk=Hk-(Hk*sk*sk'*Hk)/(sk'*Hk*sk)+(yk*yk')/(yk'*yk);endx0=x;k=k+1;
end
val=feval(fun,x0,varargin{:});
end
其中fun,gfun,main函数在上篇文章都有。
BFGS算法及其matlab实现相关推荐
- dfp matlab,MATLAB拟牛顿法之DFP与BFGS算法
DFP算法原理 由于博主使用WPS编辑的文本,公式无法赋值粘贴,这里以截图的方法给出了推导过程.博主会上传该DOC文档. BFGS算法原理 matlab代码(DFP) syms x1 x2 f=@(x ...
- dfp 算法matlab,MATLAB拟牛顿法之DFP与BFGS算法
DFP算法原理 由于博主使用WPS编辑的文本,公式无法赋值粘贴,这里以截图的方法给出了推导过程.博主会上传该DOC文档. BFGS算法原理 matlab代码(DFP) syms x1 x2 f=@(x ...
- matlab中bfgs的用法,MATLAB拟牛顿法之DFP与BFGS算法
DFP算法原理 由于博主使用WPS编辑的文本,公式无法赋值粘贴,这里以截图的方法给出了推导过程.博主会上传该DOC文档. 牛顿法 阻尼牛顿法 BFGS算法原理 matlab代码(DFP) syms x ...
- bfgs算法matlab程序,bfgs算法matlab代码
(对 Large -scale 问题) 对应文件 \\toolbox\\matlab\\funfun\\fminbnd.m \\toolbox\\optim\\sfminbx.m \\toolbox\ ...
- bfgs算法 matlab,BFGS算法的最优化问题及在MATLAB中的实现
BFGS算法的最优化问题及在MATLAB中的实现 对拟牛顿方法中的BFGS算法进行阐述,基于matlab软件对非线性无约束优化问题进行了仿真研究,结果表明利用matlab软件解答非线性无约束优化问题获 ...
- bfgs算法matlab程序,BFGS优化算法及应用实例.docx
PAGE 目 录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc282785128" 1.引言 PAGEREF _Toc282 ...
- DFP算法及其matlab实现
目录 一.前沿 二.矫正公式 三.算法步骤 四.matlab程序实现 1.DFP算法封装函数 2.目标函数 3.目标函数梯度 4.主函数 5.运行结果与分析 一.前沿 DFP算法是由Davidon ...
- fcm算法的MATLAB实现,FCM算法的matlab程序(初步)
FCM算法的matlab程序 1.采用iris数据库 iris_data.txt 5.1 3.5 1.4 0.2 4.9 3 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0 ...
- 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章
资料来源: <智能优化算法以及matlab实现>包子阳 余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...
最新文章
- 重新挂载linux分区添加硬盘
- cocos2dx JS 游戏切到后台再进入游戏的处理
- WIX配置(二)-创建快捷方式
- The import java.util cannot be resolved
- 数据中心节能专题—他山之石可以攻玉
- linux route命令删除多余路由
- python newspaper_第74天:Python newspaper 框架
- MySQL 下载与安装
- 第四章信息系统安全基础考试要点及真题分布
- html下拉框设置默认值_html 里select 下拉列表中设置默认值怎么写
- python锁机制_Python并发编程之谈谈线程中的“锁机制”(三)
- CSS选取子标签元素:nth-child、first-child、last-child
- hashcat的使用方法
- cron每小时执行一次_crontab每小时运行一次
- IO流学习(Java)(一)
- 录屏时如何录制麦克风声音?-QVE屏幕录制
- 1. HTML5+CSS3
- Spring Cloud架构教程 (二)Hystrix监控数据聚合
- BACKUP DATABASE
- Android的CTS测试