我想了解提供给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}
,但我也会发现类似的意外关键字错误。
感谢您的帮助。
答案 0 :(得分:0)
来自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 =无,回调=无,选项=无)
minimize()
需要两个位置参数:fun
和x0
此外,它没有xtol
或ftol
关键字参数,但有一个tol
关键字arg(Tolerance for termination)。
xtol
,ftol
,maxfev
特定于所使用的方法。特别是Nelder-Mead方法的特定,并且不适用于您正在使用的方法(SLSQP)。
特定于方法的选项可以通过options
词典提供。
因此,您应该致电:
res = minimize(func,x0,args = para_init,method ='SLSQP',constraints = cons,bounds = ...,jac = ...,options = {...})
答案 1 :(得分:0)
minimize
有两个必需的参数:最小化的函数和初始猜测。你没有提供后者。见this。考虑直接致电scipy.optimize.fmin_slsqp
。 documentation更清楚,因为参数语义不依赖于优化方法。换句话说,minimize
通过将前者的参数分配给后者来调用其他函数(例如fmin_slsqp
),这使得minimize
难以简明扼要地全面记录。