目前我正在研究python中的优化问题。因此,我使用的是scipy.minimize。我的优化问题的目标是最大化利润。利润来自水。所以用于某个目标的水,不能用于别的东西。在我目前的模型中,水可以用于水力发电的农业。当然,不可能使用比现有水更多的水。因此,其中一个限制被称为可持续性约束。但是我在向约束添加两个变量时遇到了一些问题。有没有人可以帮助我。
我目前的代码如下:
def constraint1(ETa, Qhydro)
for j in range(0,Numbas):
for i in range(0,Nummon):
if (i-(j*Nummon))==0:
ETa[i+(j*Nummon)+11]-((1-R[j])*S0[j])+S[i+(j*Nummon)]-P[i+(j*Nummon)+11]-Rdown[i+(j*Nummon)]+Qhydro[i+(j*Nummon)]
else:
ETa[i+(j*Nummon)-1]-((1-R[j])*S[i+(j*Nummon)-1])+S[i+(j*Nummon)]-P[i+(j*Nummon)-1]-Rdown[i+(j*Nummon)]+Qhydro[i+(j*Nummon)]
return ETa, Qhydro
con1=({'type':'eq','fun':constraint1})
这会产生以下错误:TypeError:constraint1()只给出2个参数1。怎么解决这个问题?
我按照以下方式解决了问题。
def constraint1(x)
S=x[0:36]
Qhydro=x[36:48]
这样,约束只需要返回一个值就可以了:)