将可变长度的参数列表传递给scipy.optimize.minimize.最小化(理解论点)

2024-09-27 07:33:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想了解提供给scipy.optimize.minimize.最小化. 我把我的优化称为

res = minimize(func, para_init, method= 'SLSQP', constraints=cons) 

para_init看起来像,[x,y,np.array([a,b,c]),np.array([e,f])],cons是一个约束字典。func()接受para_init中列出的所有参数并给出一个标量对象。但我面临着以下问题:

1)错误:ValueError: setting an array element with a sequence

2)我想指定xtol = 0.001, ftol = 0.001, bounds = None, jac = None,如果我只是将这些行添加到minimize()中,它将被投诉为TypeError: minimize() got an unexpected keyword argument 'xtol'。另外,我希望有以下规范options = {'maxiter': 100,'disp': True},但我也有类似的意外关键字错误。在

谢谢你的帮助。在


Tags: noneaninit错误npresscipyarray
2条回答

minimize有两个必需的参数:最小化函数和初始猜测。你没有提供后者。见this。考虑直接调用scipy.optimize.fmin_slsqpdocumentation更清晰,因为参数语义不依赖于优化方法。换言之,minimize通过将前者的参数分配给后者来调用其他函数(例如fmin_slsqp),这使得{}很难简洁和全面地记录。在

来自http://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.optimize.minimize.html

scipy.optimize.minimize( fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None )

minimize()需要两个位置参数:fun和{}

此外,它没有xtolftol关键字参数,但有一个tol关键字参数(终止公差)。在

xtolftolmaxfev是特定于所用方法的。尤其是Nelder-Mead方法,而不适用于您使用的方法(SLSQP)。在

方法特定的选项可以通过optionsdict提供

因此,您应该致电:

res = minimize(func, x0, args=para_init, method= 'SLSQP', constraints=cons, bounds=..., jac=..., options={...})

相关问题 更多 >

    热门问题