minimize(method=’Powell’)#
- scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
使用改进的Powell算法最小化一个或多个变量的标量函数。
- 参数:
- fun可调用
要最小化的目标函数
fun(x, *args) -> float
其中
x
是一个形状为 (n,) 的一维数组,而args
是一个元组,包含完全指定函数所需的固定参数。- x0ndarray,形状 (n,)
初始猜测。大小为 (n,) 的实数元素数组,其中
n
是独立变量的数量。- args元组,可选
传递给目标函数及其导数的额外参数(fun、jac 和 hess 函数)。
- method字符串或可调用对象,可选
本文档专门针对
method='powell'
,但也有其他选项可用。请参阅scipy.optimize.minimize
的文档。- bounds序列或
Bounds
,可选 决策变量的边界。有两种方法可以指定边界
Bounds
类的一个实例。x 中每个元素的
(min, max)
对序列。使用 None 表示没有边界。
如果未提供边界,则将使用无界线搜索。如果提供了边界且初始猜测在边界内,则整个最小化过程中的每次函数评估都将在边界内。如果提供了边界,初始猜测在边界之外,并且 direc 是满秩的(或保持默认),那么第一次迭代期间的一些函数评估可能会超出边界,但第一次迭代之后的所有函数评估都将在边界内。如果 direc 不是满秩的,则某些参数可能未被优化,并且不能保证解决方案在边界内。
- options字典,可选
求解器选项的字典。所有方法都接受以下通用选项
- maxiter整数
要执行的最大迭代次数。根据所用方法,每次迭代可能会使用多次函数评估。
- disp布尔值
设置为 True 以打印收敛消息。
请参阅下面
method='powell'
的特定方法选项。- callback可调用,可选
每次迭代后调用。签名为
callback(xk)
其中
xk
是当前的参数向量。
- 返回:
- resOptimizeResult
优化结果表示为一个
OptimizeResult
对象。重要属性包括:x
(解数组)、success
(一个布尔标志,指示优化器是否成功退出)和message
(描述终止原因)。有关其他属性的描述,请参阅OptimizeResult
。
另请参阅
有关其余参数的文档,请参阅
scipy.optimize.minimize
- 选项:
- ——-
- disp布尔值
设置为 True 以打印收敛消息。
- xtol浮点数
解 xopt 的相对误差,可接受的收敛值。
- ftol浮点数
fun(xopt)
的相对误差,可接受的收敛值。- maxiter, maxfev整数
允许的最大迭代次数和函数评估次数。如果 maxiter 和 maxfev 均未设置,则默认为
N*1000
,其中N
是变量的数量。如果 maxiter 和 maxfev 都已设置,则最小化将在先达到者处停止。- direcndarray
Powell 方法的初始方向向量集。
- return_all布尔值,可选
设置为 True 以返回每次迭代的最佳解决方案列表。