本文简要介绍 python 语言中 scipy.optimize.fmin_powell
的用法。
用法:
scipy.optimize.fmin_powell(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None, direc=None)#
使用改进的 Powell 方法最小化函数。
此方法仅使用函数值,而不使用导数。
- func: 可调用 f(x,*args)
要最小化的目标函数。
- x0: ndarray
初步猜测。
- args: 元组,可选
传递给 func 的额外参数。
- xtol: 浮点数,可选
Line-search 容错。
- ftol: 浮点数,可选
func(xopt)
中的相对误差可用于收敛。- maxiter: 整数,可选
要执行的最大迭代次数。
- maxfun: 整数,可选
要进行的函数评估的最大数量。
- full_output: 布尔型,可选
如果为真,则返回
fopt
、xi
、direc
、iter
、funcalls
和warnflag
。- disp: 布尔型,可选
如果为 True,则打印收敛消息。
- retall: 布尔型,可选
如果为 True,则在每次迭代时返回解决方案列表。
- callback: 可调用的,可选的
一个可选的用户提供的函数,在每次迭代后调用。称为
callback(xk)
,其中xk
是当前参数向量。- direc: ndarray,可选
初始拟合步骤和参数顺序设置为 (N, N) 数组,其中 N 是拟合参数的数量x0。默认步长为 1.0 同时拟合所有参数 (
np.eye((N, N))
)。为了防止在一个步骤中初始考虑值或更改初始步长,在第 M 块中的第 J 个位置设置为 0 或所需的步长,其中 J 是x0M 是所需的评估步骤,按索引顺序评估步骤。随着最小化的进行,步长和顺序将自由变化。
- xopt: ndarray
最小化的参数函数.
- fopt: 数字
函数的最小值:
fopt = func(xopt)
。- direc: ndarray
当前方向设置。
- iter: int
迭代次数。
- funcalls: int
进行的函数调用次数。
- warnflag: int
- 整数警告标志:
1:函数评估的最大数量。 2:最大迭代次数。 3:遇到NaN结果。 4:结果超出规定范围。
- allvecs: 列表
每次迭代的解决方案列表。
参数 ::
返回 ::
注意:
使用 Powell 方法的修改来找到 N 个变量的函数的最小值。 Powell 方法是一种共轭方向方法。
该算法有两个循环。外循环仅迭代内循环。内部循环在方向集中的每个当前方向上最小化。在内部循环结束时,如果满足某些条件,则放弃给出最大下降的方向,并替换为当前估计的 x 与从 inner-loop 开始时估计的 x 之间的差值。
更换最大增量方向的技术条件为:
从该迭代中沿着最大增加的方向无法获得进一步的增益。
最大增加的方向占了内部循环迭代中函数值减少的足够大的一部分。
参考:
鲍威尔 M.J.D. (1964) 一种在不计算导数的情况下找到多个变量的函数最小值的有效方法,Computer Journal,7 (2):155-162。
Press W.、Teukolsky S.A.、Vetterling W.T. 和 Flannery B.P.:数字食谱(任何版本),剑桥大学出版社
例子:
>>> def f(x): ... return x**2
>>> from scipy import optimize
>>> minimum = optimize.fmin_powell(f, -1) Optimization terminated successfully. Current function value: 0.000000 Iterations: 2 Function evaluations: 16 >>> minimum array(0.0)
相关用法
- Python SciPy optimize.fmin_cobyla用法及代码示例
- Python SciPy optimize.fmin_bfgs用法及代码示例
- Python SciPy optimize.fmin_slsqp用法及代码示例
- Python SciPy optimize.fmin_tnc用法及代码示例
- Python SciPy optimize.fmin_cg用法及代码示例
- Python SciPy optimize.fmin用法及代码示例
- Python SciPy optimize.fminbound用法及代码示例
- Python SciPy optimize.fsolve用法及代码示例
- Python SciPy optimize.fixed_point用法及代码示例
- Python SciPy optimize.rosen_der用法及代码示例
- Python SciPy optimize.line_search用法及代码示例
- Python SciPy optimize.rosen用法及代码示例
- Python SciPy optimize.shgo用法及代码示例
- Python SciPy optimize.minimize_scalar用法及代码示例
- Python SciPy optimize.root用法及代码示例
- Python SciPy optimize.NonlinearConstraint用法及代码示例
- Python SciPy optimize.KrylovJacobian用法及代码示例
- Python SciPy optimize.toms748用法及代码示例
- Python SciPy optimize.linprog_verbose_callback用法及代码示例
- Python SciPy optimize.bracket用法及代码示例
- Python SciPy optimize.milp用法及代码示例
- Python SciPy optimize.diagbroyden用法及代码示例
- Python SciPy optimize.bisect用法及代码示例
- Python SciPy optimize.isotonic_regression用法及代码示例
- Python SciPy optimize.golden用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.fmin_powell。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。