我正在尝试使用scipy的optimizer.minimize函数,但我无法弄清楚如何精确地将参数传递给目标函数。我有以下代码,根据我的理解应该可以正常工作,但它在参数数量上给我错误。
result = minimize(compute_cost, x0, args=(parameter), method='COBYLA',constraints=cons, options={'maxiter':10000,'rhobeg':20})
这是目标函数的函数签名: def compute_cost(x,parameter)
parameter
是一个包含51个键值对的字典。
这导致了以下错误:
capi_return is NULL
调用回调函数cb_calcfc_in__cobyla__user__routines 失败。
Traceback (most recent call last):
File "C:\..\resource_optimizer.py", line 138,in <module>
result = minimize(compute_cost,x0,args=(parameter),method='COBYLA',constraints=cons,options={'maxiter':10000,'rhobeg':20})
File "C:\Python27\lib\site-packages\scipy\optimize\_minimize.py",line 432,in minimize
return _minimize_cobyla(fun,x0,args,constraints,**options)
File "C:\Python27\lib\site-packages\scipy\optimize\cobyla.py",line 246,in _minimize_cobyla
dinfo=info)
File "C:\Python27\lib\site-packages\scipy\optimize\cobyla.py",line 238,in calcfc
f = fun(x,*args)
TypeError:compute_cost()需要2个参数,但给了52个参数
有人能帮我解决这个问题吗?