python用fmin, fmin_powell, fmin_cg, fmin_bfgs求解无约束极小值点
来源:互联网 发布:私人做网络小贷平台 编辑:程序博客网 时间:2024/06/03 04:29
背景:
作求解无约束极小值点范例。
代码:
import scipy.optimize as optimport numpy as npdef test_fmin(fminfunc,x0,a): """ x0为优化算法的初始值,各种优化算法必须 a为目标函数的参数 """ def targetfunc(x): """ fminfunc将求使得函数targetfunc值最小的x,这里的目标函数选的是各种优化算法中常用的一个函数 """ return 100*(x[0]**2-x[1])**2+(x[0]-a)**2 print("=========================") print('求解函数名称:',fminfunc.__name__) print() # 优化算法求解 h0 = fminfunc(targetfunc,x0) print() #输出求解出的极小值点 print("极小值点:",h0) print()#初始值点x0 = np.array([12.,32.])a = 9test_fmin(opt.fmin,x0,a)test_fmin(opt.fmin_powell,x0,a)test_fmin(opt.fmin_cg,x0,a)test_fmin(opt.fmin_bfgs,x0,a)
结果:
=========================
求解函数名称: fmin
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 113
Function evaluations: 216
极小值点: [ 8.99999737 80.9999528 ]
=========================
求解函数名称: fmin_powell
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 37
Function evaluations: 1072
极小值点: [ 9. 81.]
=========================
求解函数名称: fmin_cg
Warning: Desired error not necessarily achieved due to precision loss.
Current function value: 114.368222
Iterations: 16
Function evaluations: 243
Gradient evaluations: 59
极小值点: [-1.55212512 2.5828991 ]
=========================
求解函数名称: fmin_bfgs
Warning: Desired error not necessarily achieved due to precision loss.
Current function value: 0.000000
Iterations: 58
Function evaluations: 608
Gradient evaluations: 149
极小值点: [ 8.99980808 80.99654173]
求解函数名称: fmin
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 113
Function evaluations: 216
极小值点: [ 8.99999737 80.9999528 ]
=========================
求解函数名称: fmin_powell
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 37
Function evaluations: 1072
极小值点: [ 9. 81.]
=========================
求解函数名称: fmin_cg
Warning: Desired error not necessarily achieved due to precision loss.
Current function value: 114.368222
Iterations: 16
Function evaluations: 243
Gradient evaluations: 59
极小值点: [-1.55212512 2.5828991 ]
=========================
求解函数名称: fmin_bfgs
Warning: Desired error not necessarily achieved due to precision loss.
Current function value: 0.000000
Iterations: 58
Function evaluations: 608
Gradient evaluations: 149
极小值点: [ 8.99980808 80.99654173]
分析:
- 可以看出各优化算法得到的最小值点不尽相同,而fmin_cg函数并不能求出最小值点。这里并不是说明这种优化算法不好,各种求最小值的算法都有一定的适用范围,可能对这个问题fmin_cg函数不是很好。
- 参与过公司开发优化的项目,目标函数带参数的问题一直不是很好处理,用全局变量又耗时间,后来直接写了一个类解决了,如果在python中该不会有这个问题。
阅读全文
1 0
- python用fmin, fmin_powell, fmin_cg, fmin_bfgs求解无约束极小值点
- 利用割线法求解一元函数极小值
- Newton迭代法求函数极小值点 Matlab程序
- 机器学习第二课:无约束优化问题(局部极小值的几种解法)(梯度下降法与拟牛顿法)
- MATLAB中利用最速下降法求解多元函数的局部极小值
- python取数作为临时极大值(极小值)
- matlab 有约束与无约束优化求解 optimization
- 极大极小值算法
- 【CQOI2012】局部极小值
- 编程技巧总结-用位运算表示极大极小值
- 用python求解组合问题
- 用Python求解方程(组)
- 求极大和极小值
- 区域极小值—lhMorpRMin
- H极小值—lhMorpHMin
- 扩展极小值—lhMorpEMin
- 找到极大值和极小值
- 极小值极大值算法-井字棋
- 链地址法
- redis 集群安装与使用
- 关于shape
- Redis系列-6.集合(Set)结构
- PAT 甲级 1033. To Fill or Not to Fill (25)
- python用fmin, fmin_powell, fmin_cg, fmin_bfgs求解无约束极小值点
- 整数划分(二)
- 二叉树系列一:二叉树的遍历
- 1074. 宇宙无敌加法器(20)
- listview check
- 从零基础认识连接池
- 欢迎使用CSDN-markdown编辑器
- 图形学(6)多边形的区域填充
- 结合redis设计与实现的redis源码学习-3-链表