当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy optimize.fmin_powell用法及代码示例


本文简要介绍 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 布尔型,可选

如果为真,则返回 foptxidireciterfuncallswarnflag

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 之间的差值。

更换最大增量方向的技术条件为:

  1. 从该迭代中沿着最大增加的方向无法获得进一步的增益。

  2. 最大增加的方向占了内部循环迭代中函数值减少的足够大的一部分。

参考

鲍威尔 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)

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.optimize.fmin_powell。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。