情况:我正在使用 scipy 来解决优化问题。由于需要许多约束,系数位于 pandas.dataframe 对象中。我正在尝试使用循环输入所有这些约束。问题是在下一个周期,参数已经改变,所以实际上只剩下了约束。
为了更清楚地表达问题,我举个例子(在这个例子中,只给出了几个参数。但在实际情况下,可能有50多个参数)。Step1:我使用的代码如下:约束是w1 + w2 * 2 >= 0; w1 * 3 + w2 * 5 >= 0
cons = []
d = {
'type': 'ineq',
'fun': ''}
a = np.array([1,2])
d['fun'] = lambda w: a.dot(w)
cons.append(d.copy())
a = np.array([3,5])
d['fun'] = lambda w: a.dot(w)
cons.append(d.copy())
cons
Step2:使用如下所示的代码测试cons:只使用w作为[1, 1],我预计cons中存储的fun会输出3和8,但实际上是8和8。
w = np.array([1,1])
for each in cons:
fun = each['fun']
print(fun(w))
任何人都可以就如何解决这个问题提供一些帮助吗?或者只是出了点问题。