scipy.optimize.minimize_scalar¶
- scipy.optimize.minimize_scalar(fun, bracket=None, bounds=None, args=(), method='brent', tol=None, options=None)[源代码]¶
一元标量函数的最小化。
- 参数
- fun可调用
目标函数。标量函数,必须返回标量。
- bracket序列,可选
对于“布伦特”和“黄金”方法,
bracket
定义包含间隔,可以包含三个项目(a, b, c)
所以a < b < c
和fun(b) < fun(a), fun(c)
或两个项目a
和c
它们被假定为下坡括号搜索的开始间隔(请参见bracket
);这并不总是意味着所获得的解将满足a <= x <= c
。- bounds序列,可选
对于方法“Bound”, bounds 是必需的,并且必须有两项与优化界限相对应。
- args元组,可选
传递给目标函数的额外参数。
- method字符串或可调用,可选
求解器的类型。应为以下之一:
“布伦特” (see here)
“弹跳” (see here)
“黄金” (see here)
自定义-可调用对象(在版本0.14.0中添加),见下文
- tol浮动,可选
对终止的容忍度。有关详细控制,请使用解算器特定的选项。
- optionsDICT,可选
求解器选项词典。
- 最大值集成
要执行的最大迭代次数。
- 显示布尔尔
设置为True可打印收敛消息。
看见
show_options
用于解算器特定的选项。
- 退货
- resOptimizeResult
优化结果表示为
OptimizeResult
对象。重要属性包括:x
解决方案阵列,success
指示优化器是否成功退出的布尔标志message
它描述了终止的原因。看见OptimizeResult
有关其他属性的说明,请参见。
参见
minimize
标量多元函数极小化算法的接口
show_options
求解程序接受的其他选项
注意事项
本节介绍可通过‘method’参数选择的可用求解器。默认方法为 布伦特原油 。
方法 Brent 使用布伦特的算法找到局部最小值。该算法在可能的情况下使用逆抛物线插值,以加快黄金分割法的收敛速度。
方法 Golden 使用黄金分割搜索技术。它采用模拟二分法来减小括号间隔。通常,最好使用 布伦特原油 方法。
方法 Bounded 可以执行有界最小化。它使用Brent方法在区间x1<xopt<x2中找到局部最小值。
自定义最小化程序
传递自定义最小化方法可能很有用,例如,在使用某些库前端来最小化_scalar时。您可以简单地将可调用对象作为
method
参数。该可调用对象称为
method(fun, args, **kwargs, **options)
哪里kwargs
对应于传递给minimize
(例如bracket
, tol 等),但 options dict,它的内容也作为 method 每对参数。该方法应返回一个OptimizeResult
对象。提供的 method Callable必须能够接受(并可能忽略)任意参数;
minimize
可以在将来的版本中扩展,然后这些参数将传递给该方法。您可以在scipy.Optimize教程中找到一个示例。0.11.0 新版功能.
示例
考虑最小化以下函数的问题。
>>> def f(x): ... return (x - 2) * x * (x + 2)**2
使用 布伦特原油 方法,我们找到局部最小值为:
>>> from scipy.optimize import minimize_scalar >>> res = minimize_scalar(f) >>> res.x 1.28077640403
使用 有界的 方法时,我们会找到一个具有指定界限的局部最小值,如下所示:
>>> res = minimize_scalar(f, bounds=(-3, -1), method='bounded') >>> res.x -2.0000002026