【发布时间】:2018-06-05 02:11:00
【问题描述】:
我正在尝试使用 scipy 运行最小化,而 nelder mead 不受约束。
我的目标函数是:
def obj (self, x):
return self.fitn(x[:4], x[4],x[5],x[6])
def fitn(self, a, b,c,d):
'some utility function using a,b,c,d'
p = scipy.optimize.minimize(self.obj,np.array(a),args=(b,c,d),
method='nelder-mead')
其中,
a =[0.25,0.25,0.25,0.25]
b = scalar value
c = 4 x 4 matrix
d = 1 x 4 matrix
我正面临这条消息:
obj() takes 2 positional arguments but 5 were given
【问题讨论】:
-
函数是
self.obj。它传递了self实例(第一个参数)、优化变量(第二个参数)和args的内容(第三到第五个参数)。例如,使用def obj(self, a, *args)并将*args传递给fitn作为self.fitn(a, *args)。
标签: python optimization scipy