如何在约束中返回两个变量(scipy.minimize)?

时间:2017-09-27 14:06:06

标签: python scipy constraints

目前我正在研究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]

这样,约束只需要返回一个值就可以了:)

0 个答案:

没有答案