BFGS是一个简单,高效,精确的优化算法,在曲线拟合等最优化领域有非常重要的用途。其原理在这里有详细的介绍:

http://blog.csdn.net/itplus/article/details/21897443

基于这个原理的介绍,我编写了一个C++ BFGS 曲线拟合的代码:

http://download.csdn.net/download/u013701860/10150187

https://github.com/luchangli03/BFGS-Optimization-for-curve-fitting

简单易用,和matlab结果非常相近。

main函数参考如下:

  1. #include <iostream>
  2. using namespace std;
  3. #include "CurveFitting.h"
  4. int main()
  5. {
  6. #define DatLen 15
  7. // ParaNum, ItNum, ItNum_bs;
  8. BFGSOptimizer< 2, 4, 11> ExpCurveFit(ExpFit_PreFitting, ExpFit_TargerF);
  9. float ix[DatLen];
  10. float iy[DatLen] = { 0.561983237858735, 0.274092050681491, 0.0936873888873212, 0.0357818099726275, 0.0158309111945142, 0.00702655416654909, 0.00437395942094421, 0.00214465107091458, 0.00146739283799419, 0.000649039139882044, 0.000705477325958744, 0.000649039139882044, 0.000225752744306798, 0.000310410023421847, 0.000169314558230098 };
  11. int cnt;
  12. for (cnt = 0; cnt < DatLen; cnt++)
  13. {
  14. ix[cnt] = cnt;
  15. }
  16. ExpCurveFit.BFGSOptimize(ix, iy, DatLen);
  17. ExpCurveFit.PrintfFitPara("final");
  18. BFGSOptimizer< 4, 8, 11> GausCurveFit(GausFit11_PreFitting, GausFit11_TargerF);
  19. float ix1[DatLen];
  20. float iy1[DatLen] = { 1.03787663582584, 1.83038049957306, 2.97498249283382, 4.45630428499173, 6.15194791898853, 7.82704538241868, 9.17762784414991, 9.91768757606545, 9.87728971930251, 9.06593396336589, 7.66892868588658, 5.97866523316379, 4.29557358210739, 2.84436599826735, 1.73579000492169 };
  21. for (cnt = 0; cnt < DatLen; cnt++)
  22. {
  23. ix1[cnt] = cnt;
  24. }
  25. GausCurveFit.BFGSOptimize(ix1, iy1, DatLen);
  26. GausCurveFit.PrintfFitPara("final");
  27. return 0;
  28. }

转载自:https://blog.csdn.net/u013701860/article/details/78745889

BFGS C++优化算法曲线拟合实现相关推荐

  1. 优化算法——拟牛顿法之BFGS算法

    一.BFGS算法简介 BFGS算法是使用较多的一种拟牛顿方法,是由Broyden,Fletcher,Goldfarb,Shanno四个人分别提出的,故称为BFGS校正. 同DFP校正的推导公式一样,D ...

  2. python实例 优化目标函数_Scipy优化算法--scipy.optimize.fmin_tnc()/minimize()

    scipy中的optimize子包中提供了常用的最优化算法函数实现,我们可以直接调用这些函数完成我们的优化问题. scipy.optimize包提供了几种常用的优化算法. 该模块包含以下几个方面 使用 ...

  3. 高级优化算法scipy.optimize

    scipy中的optimize子包中提供了常用的最优化算法函数实现,我们可以直接调用这些函数完成我们的优化问题. scipy.optimize包提供了几种常用的优化算法. 该模块包含以下几个方面 使用 ...

  4. MATLAB 求函数极值的内置函数一览表(实则优化算法函数汇总)

    MATLAB 求函数极值的内置函数一览表 收集了几乎所有的 MATLAB 内置的优化函数,可收藏,需要时查阅. 文章目录 MATLAB 求函数极值的内置函数一览表 简介 概览 求函数极值(或最大值最小 ...

  5. 机器学习中的优化算法!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:李祖贤,Datawhale高校群成员,深圳大学 在机器学习中,有很 ...

  6. Python主要智能优化算法库汇总

    最近几年简单浏览和对比了一些智能算法的库.现将各种库的主要信息.相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择. 文章目录 1.DEAP 2.mealpy 3.scikit-opt ( ...

  7. MATLAB优化算法(一)

    1.线性规划 [x,fval]=linprog(c,A,b,Aeq,Beq,VLB,VUB) 用于解决 min(z)=cX%%求满足条件的X与已定系数c乘积之和的最小值 s.t.  AX<=b  ...

  8. 机器学习、深度学习中常用的优化算法详解——梯度下降法、牛顿法、共轭梯度法

    一.梯度下降法 1.总述: 在机器学习中,基于基本的梯度下降法发展了三种梯度下降方法,分别为随机梯度下降法,批量梯度下降法以及小批量梯度下降法. (1)批量梯度下降法(Batch Gradient D ...

  9. Python优化算法02——遗传算法

    参考文档链接:scikit-opt 本章继续Python的优化算法系列. 优化算法,尤其是启发式的仿生智能算法在最近很火,它适用于解决管理学,运筹学,统计学里面的一些优化问题.比如线性规划,整数规划, ...

最新文章

  1. RADAR和LIDAR区别分析
  2. python 把int类型转bytes以及把bytes 转int 类型(使用方法to_bytes ,from_byte, struct)
  3. 零基础是学java还是python-零基础自学编程,学Java难还是Python难?
  4. ImportError: Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.
  5. vccode运行调试python_VSCODE安装以及使用Python运行调试代码的简单记录
  6. C指针原理(13)-C指针基础
  7. 开源的DevOps开发工具箱
  8. Java的LockSupport.park()实现分析
  9. layer之弹层组件文档 layui.layer(v.1.9.0之后)
  10. leetcode之回溯backtracing专题1
  11. 互联网晚报 | 1月25日 星期二 | 知乎首次举办上星晚会;微信视频号上线首个付费直播间;淘宝天猫“春节不打烊”活动正式上线...
  12. Oracle 11.2.0.3 [INS-41112] Specified network interface doesnt maintain connectivity across cluster
  13. 3DS_MAX渲染笔记
  14. load data infile mysql_mysql Load Data InFile 的用法举例
  15. e.target与e.e.srcElement
  16. 智力问答选择题_智力问答题
  17. 游戏开发完整学习路线,都在这里了
  18. Feescale K60开发笔记3: Tftpd32的使用
  19. [STL源码剖析]空间置配器allocator
  20. MT2625 NB IoT_RF资料分享

热门文章

  1. InnoDB架构,一幅图秒懂!
  2. 容器编排技术 -- Kubernetes kubectl create service externalname 命令详解
  3. Hystrix面试 - 深入 Hystrix 执行时内部原理
  4. Homebrew命令详解
  5. 静态路由(实验讲解+配置)
  6. 概率统计23——假设检验理论(2)
  7. 【Python】字符串的格式化
  8. inode索引节点---初识
  9. 灯塔谈话记录错误_如何保留灯塔报告的历史记录
  10. alexa技能个数_如何改善Alexa技能的对话流程