matlab代码链接

大规模优化问题matlab代码-LBFGS/FR/PRP/BB.zip-专业指导文档类资源-CSDN文库https://download.csdn.net/download/benchuspx/73414465大规模优化问题的变量数量n很大(几千几万),普通拟牛顿类方法每步都需要用大n^2量级的hessen矩阵,因此需要很大的内存并且极大降低了计算速度。因此衍生出了一些解决大规模优化问题的方法:

1、L-BFGS方法

全称limited-memory BFGS法,是在拟牛顿方法BFGS法(一种对称秩2方法)的基础上,改用前m步的梯度和变量位置来计算拟hessen矩阵的方法。由于前m步的梯度和变量都只是向量而非矩阵,因此L-BFGS方法不需要存储前一步的hessen矩阵,极大减小了内存,因此得名。计算速度上会比BFGS快很多,但效果并没有差太多。m取5、10、15等,效果也都差不多。

和BFGS方法分为求Bk(Quasi Gk)和Hk(Quasi inv(Gk)一样,L-BFGS也分求Bk类型的和Hk类型的。本文代码给出的是Hk类型的。

L-BFGS方法可能是目前最常用的大规模优化问题求解方法。

2、共轭梯度方法

为了求第k步迭代方向dk,共轭梯度方法和拟牛顿方法走的是两条路线。拟牛顿法是用dk=-inv(Gk)*gk,关键是求inv(Gk)(第k步hessen矩阵的逆)。但是共轭梯度法绕开了求hessen矩阵,直接根据前一步的迭代方向d(k-1)和梯度g(k-1)来求第k步的迭代方向dk,并要求每步的迭代方向dk在G意义下是正交的(di‘*G*dj=0),这就是共轭的含义。根据目标函数类型,有两种共轭梯度方法公式:

dk=-gk+beta(k-1)*d(k-1)

(1)FR方法

针对目标函数是正定二次函数,此时gk'*g(k-1)=0

beta(k-1)=gk'*gk/(g(k-1)'*g(k-1))

(2)PRP方法

针对一般目标函数。

beta(k-1)=gk'*(g(k)-g(k-1))/(g(k-1)'g(k-1))

还有PRP+方法,就是在PRP方法基础上限制每一步beta是正的,避免前后两次迭代方向相反。

共轭梯度法算起来也很快,但是优化效果感觉不如L-BFGS,针对某些一般的非线性目标函数都无法收敛。

3、BB方法

Barzilai-Borwein法。该法目前理论尚不成熟,但是效果很好,因此引起了很多注意和研究。

BB方法重拾一度被冷落的最速下降法(SD法),dk=-alpha(k)*gk。在SD方法的基础上,不再用精确先搜索求步长alpha(k),而是将alpha(k)看成alpha(k)*I单位阵,这样相当于拟牛顿方法把拟hessen矩阵逆Hk视作alpha(k)*I。然后借鉴拟牛顿法的拟牛顿公式s(k-1)=Hk*y(k-1),此时Hk=alpha(k)*I显然无法满足s(k-1)=Hk*y(k-1),那么就求一个优化问题使得

由此求出来alpha(k)步长。迭代方向dk仍然是SD法中的-gk。

具体alpha(k)公式不写了,针对一般优化问题有改进的GBB方法。

代码

大规模优化问题matlab代码-LBFGS/FR/PRP/BB.zip-专业指导文档类资源-CSDN文库https://download.csdn.net/download/benchuspx/73414465

编程心得
1)在最优化方法matlab代码(一) 牛顿类方法_benchuspx的博客-CSDN博客中,我使用了代数符号 x 来定义目标函数,并使用 subs 来求解函数值,这样运行效率和运行速度都很慢。本次函数的定义和求值已经全部改用数值计算,运行速度大幅提升。
2)本程序加入了自动生成优化过程图、自动加图题和自动存图功能。优化的结果图会自动保存在 figure 文件夹对应目录下

最优化方法matlab代码(二) 大规模优化问题相关推荐

  1. 最优化方法matlab代码(一) 牛顿类方法

    代码:最优化方法牛顿方法matlab代码-从零开始-专业指导文档类资源-CSDN文库https://download.csdn.net/download/benchuspx/58807913目录 1. ...

  2. ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比)

    ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...

  3. Matlab代码 多时间尺度优化调度 MATLAB程序含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度

    Matlab代码 多时间尺度优化调度 MATLAB程序,论文复现<含冰蓄冷空调的冷热电联供型微网多时间尺度优化调度> 是一篇多时间尺度的优化运行程序 有需要的可以先知网阅读一下文章 ID: ...

  4. SSA麻雀算法优化BP神经网络(SSA-BPNN)回归预测MATLAB代码(有优化前后的对比

    SSA麻雀算法优化BP神经网络(SSA-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...

  5. 数学建模常用方法 | matlab代码 | 二十三种数学建模方法 |2022赛前突击 |模型代码 |比赛比用、简单高效| 分享

    为是赛前突击,所以就不过多的介绍理论知识了,直接上案例,matlab代码 更加详细例题解析: 公众h:露露IT 目录 1.类比法 2.二分法 3.量纲分析法 4.图论法 5.差分法 6.变分法 7.数 ...

  6. 优化算法 | 基于粒子群优化算法的Bp神经网络预测21~22赛季NBA总冠军(附MATLAB代码)

    文章目录 前言 一.数据准备 二.基于PSO的Bp神经网络预测 1.粒子表达方式 2.目标函数 3.粒子速度和位置的更新 三.MATLAB代码 四.预测结果 五.代码获取方式 总结 近期你可能错过了的 ...

  7. PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码

    PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据,也可以加载本地数据.mat,使用换自 ...

  8. 多目标优化算法matlab代码大合集

    [NSGA2]基于NSGA2算法求解多目标优化问题Matlab源码2 [水母搜索优化器算法]基于水母搜索优化器算法求解多目标优化问题(JellyfishSearchOptimizer,JSO)[粒子群 ...

  9. 大连理工优化方法matlab,大连理工大学庞丽萍最优化方法matlab程序.doc

    大连理工大学庞丽萍最优化方法matlab程序.doc 班级优化1班授课老师庞丽萍姓名学号第二章12(1)用修正单纯形法求解下列LP问题CLEARA121100123010215001M,NSIZEAB ...

最新文章

  1. 一篇来自前端同学对后端接口的吐槽:痛!
  2. MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
  3. 【POJ - 1364】King(差分约束判无解)
  4. 1982:【19CSPJ普及组】数字游戏
  5. Android笔记-对称与非对称加密及DH密钥交换
  6. php 随机数 名称,php – 从标题更改为随机数
  7. .net 中应用 ValidationAttribute
  8. Nginx upstream性能优化
  9. vue企业门户网站模板_门户网站建设费用需要多少钱?
  10. 势差、高度、结构、做工、逆熵
  11. 全国高校安徽考区计算机,关于做好2021年上半年全国高校(安徽考区)计算机水平考试报名工作的通知...
  12. Restlet实战(一)Restlet入门资料及概念
  13. VS2015安装教程
  14. 深度学习与自然语言处理 | 斯坦福CS224n · 课程带学与全套笔记解读(NLP通关指南·完结)
  15. Python基础概要(一天快速入门)
  16. HTML静态网页作业——基于html+css+javascript+jquery+bootstarp响应式成都家乡介绍网页...
  17. 科学数学工程工具MATLAB软件2023a中文版下载安装,MATLAB特色
  18. 桥接路由器总是掉线_tp路由器桥接老掉线怎么办
  19. 【WPF】CAD工程图纸转WPF可直接使用的xaml代码技巧
  20. Windows自动恢复报错:无法加载操作系统,原因是关键系统驱动程序丢失或包含错误

热门文章

  1. Android的简单介绍
  2. 机械革命蛟龙7、机械革命蛟龙7E和机械革命蛟龙7X的区别
  3. 树莓派中文支持(中文显示和中文输入法)
  4. 韩国权:企业移动信息化面临两大需求
  5. AssetManager中的路径参数不能包含assets/
  6. 黑马前端 世纪佳缘 隐藏内容
  7. Yuppie 雅皮士
  8. 图像Haar小波变换
  9. python bytes decode_Python3 bytes.decode()方法
  10. linux防火墙查看方法有,linux防火墙状态查看的方法实例