目录

一.前沿

二.基本思想

三.秩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实现相关推荐

  1. dfp matlab,MATLAB拟牛顿法之DFP与BFGS算法

    DFP算法原理 由于博主使用WPS编辑的文本,公式无法赋值粘贴,这里以截图的方法给出了推导过程.博主会上传该DOC文档. BFGS算法原理 matlab代码(DFP) syms x1 x2 f=@(x ...

  2. dfp 算法matlab,MATLAB拟牛顿法之DFP与BFGS算法

    DFP算法原理 由于博主使用WPS编辑的文本,公式无法赋值粘贴,这里以截图的方法给出了推导过程.博主会上传该DOC文档. BFGS算法原理 matlab代码(DFP) syms x1 x2 f=@(x ...

  3. matlab中bfgs的用法,MATLAB拟牛顿法之DFP与BFGS算法

    DFP算法原理 由于博主使用WPS编辑的文本,公式无法赋值粘贴,这里以截图的方法给出了推导过程.博主会上传该DOC文档. 牛顿法 阻尼牛顿法 BFGS算法原理 matlab代码(DFP) syms x ...

  4. bfgs算法matlab程序,bfgs算法matlab代码

    (对 Large -scale 问题) 对应文件 \\toolbox\\matlab\\funfun\\fminbnd.m \\toolbox\\optim\\sfminbx.m \\toolbox\ ...

  5. bfgs算法 matlab,BFGS算法的最优化问题及在MATLAB中的实现

    BFGS算法的最优化问题及在MATLAB中的实现 对拟牛顿方法中的BFGS算法进行阐述,基于matlab软件对非线性无约束优化问题进行了仿真研究,结果表明利用matlab软件解答非线性无约束优化问题获 ...

  6. bfgs算法matlab程序,BFGS优化算法及应用实例.docx

    PAGE 目 录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc282785128" 1.引言 PAGEREF _Toc282 ...

  7. DFP算法及其matlab实现

    目录 一.前沿 二.矫正公式 三.算法步骤 四.matlab程序实现 1.DFP算法封装函数 2.目标函数 3.目标函数梯度 4.主函数 5.运行结果与分析 ​ 一.前沿 DFP算法是由Davidon ...

  8. 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 ...

  9. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章

    资料来源: <智能优化算法以及matlab实现>包子阳  余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...

最新文章

  1. 重新挂载linux分区添加硬盘
  2. cocos2dx JS 游戏切到后台再进入游戏的处理
  3. WIX配置(二)-创建快捷方式
  4. The import java.util cannot be resolved
  5. 数据中心节能专题—他山之石可以攻玉
  6. linux route命令删除多余路由
  7. python newspaper_第74天:Python newspaper 框架
  8. MySQL 下载与安装
  9. 第四章信息系统安全基础考试要点及真题分布
  10. html下拉框设置默认值_html 里select 下拉列表中设置默认值怎么写
  11. python锁机制_Python并发编程之谈谈线程中的“锁机制”(三)
  12. CSS选取子标签元素:nth-child、first-child、last-child
  13. hashcat的使用方法
  14. cron每小时执行一次_crontab每小时运行一次
  15. IO流学习(Java)(一)
  16. 录屏时如何录制麦克风声音?-QVE屏幕录制
  17. 1. HTML5+CSS3
  18. Spring Cloud架构教程 (二)Hystrix监控数据聚合
  19. BACKUP DATABASE
  20. Android的CTS测试

热门文章

  1. @Inject与InjectionToken的使用
  2. 基于js+echarts实现数据可视化大屏展示
  3. 普及环保知识应用—蜂窝分子筛
  4. 手术后的剖腹产疤痕增生可以消除吗
  5. 如何从硬盘来下载有声读物到您的iPod
  6. 结巴(jieba)分词 java 实现
  7. 蜜汁头文件slow slow read
  8. 秋天是鲜红色的shooow
  9. ArcGIS Pro工具一部分解释
  10. 【Java】升级版学生管理系统项目