微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何修复@Error:方程定义GEKKO

如何解决如何修复@Error:方程定义GEKKO

我正在研究成本最小化问题。我尝试了很多次,但仍然出现此错误

Exception:  @error: Equation DeFinition
 Equation without an equality (=) or inequality (>,<)
 1((((5.84-v34)+((6)*(int_v2))))*(31.7))
 STOPPING...

这是我的代码

import pandas as pd
import numpy as np
from gekko import GEKKO
m = GEKKO() # Initialize gekko
Sadd=pd.read_csv("Sadd.csv")
X2= m.Array(m.Var,len(Sadd),value=0,lb=-1,ub=1,integer=True)
SOC2= m.Array(m.Var,value=100,lb=0,ub=100)
m.Equation(SOC2[0]==100)
for i in range(1,3):
     m.Equation(SOC2[i]-SOC2[i-1] == 5*X2[i-1])
for i in range(3,11): 
        m.Equation(X2[i]==0)
        m.Equation(SOC2[i]==0)
for i in range(12,16):
    m.Equation(SOC2[i]-SOC2[i-1] == 5*X2[i-1])
m.Equation(SOC2[11]==SOC2[2]-55)
TOU=Sadd['TOU']
PV=m.Array(m.Var,value=5)
for i in range(0,len(Sadd)):
    m.Equation(PV[i]>= 0)
    m.Equation(PV[i]<= Sadd['PV'].iloc[i])
    m.Equation(Sadd['Load'].iloc[i]-PV[i]+6*X2[i]>=0)
m.Obj((Sadd['Load']-PV+6*X2)*TOU) 
m.options.soLVER=1
m.solve()

我该如何解决?谢谢

这是我的 Sadd.csv,以防您想查看。非常感谢。

    Date/Time       C2  SC2 SOC2PV  Load    TOU
0   11/25/2020 6:00 0   0   0   0   5.82    31.7
1   11/25/2020 6:15 0   0   0   0   5.84    31.7
2   11/25/2020 6:30 0   55  0   0   7       31.7
3   11/25/2020 6:45 1   0   0   0   7.16    31.7
4   11/25/2020 7:00 1   0   0   0   8.41    31.7
5   11/25/2020 7:15 1   0   0   0   10.95   31.7
6   11/25/2020 7:30 1   0   0   1   11.79   31.7
7   11/25/2020 7:45 1   0   0   2.75    14.77   31.7
8   11/25/2020 8:00 1   0   0   4.35    12.24   31.7
9   11/25/2020 8:15 1   0   0   5.975   17.58   31.7
10  11/25/2020 8:30 1   0   0   7.65    16.79   31.7
11  11/25/2020 8:45 0   0   0   8.625   19.04   31.7
12  11/25/2020 9:00 0   0   0   8.8     20.66   31.7
13  11/25/2020 9:15 0   0   0   9.575   18.57   11
14  11/25/2020 9:30 0   0   0   10.5    19.66   11
15  11/25/2020 9:45 0   0   0   10.625  19.76   11

解决方法

尝试索引目标中的值。

for i in range(len(Sadd)):
    m.Minimize((Sadd['Load'].iloc[i]-PV[i]+6*X2[i])*TOU[i]) 

多个目标函数相加,形成一个最终的组合目标。

import pandas as pd
import numpy as np
from gekko import GEKKO
m = GEKKO(remote=False) # Initialize gekko
Sadd=pd.read_csv("Sadd.csv")
X2= m.Array(m.Var,len(Sadd),value=0,lb=-1,ub=1,integer=True)
SOC2= m.Array(m.Var,value=100,lb=0,ub=100)
m.Equation(SOC2[0]==100)
for i in range(1,3):
     m.Equation(SOC2[i]-SOC2[i-1] == 5*X2[i-1])
for i in range(3,11): 
        m.Equation(X2[i]==0)
        m.Equation(SOC2[i]==0)
for i in range(12,16):
    m.Equation(SOC2[i]-SOC2[i-1] == 5*X2[i-1])
m.Equation(SOC2[11]==SOC2[2]-55)
TOU=Sadd['TOU'].values
PV=m.Array(m.Var,value=5)
for i in range(0,len(Sadd)):
    m.Equation(PV[i]>= 0)
    m.Equation(PV[i]<= Sadd['PV'].iloc[i])
    m.Equation(Sadd['Load'].iloc[i]-PV[i]+6*X2[i]>=0)
for i in range(len(Sadd)):
    m.Minimize((Sadd['Load'].iloc[i]-PV[i]+6*X2[i])*TOU[i]) 
m.options.SOLVER=1
m.solve()

现在给出了一个成功的解决方案:

 ----------------------------------------------
 Steady State Optimization with APOPT Solver
 ----------------------------------------------
Iter:     1 I:  0 Tm:     -0.00 NLPi:    2 Dpth:    0 Lvs:    3 Obj:  2.93E+03 Gap:       NaN
Iter:     2 I: -1 Tm:     -0.00 NLPi:    1 Dpth:    1 Lvs:    2 Obj:  2.93E+03 Gap:       NaN
Iter:     3 I:  0 Tm:     -0.00 NLPi:    2 Dpth:    1 Lvs:    3 Obj:  3.12E+03 Gap:       NaN
Iter:     4 I: -1 Tm:     -0.00 NLPi:    2 Dpth:    1 Lvs:    2 Obj:  2.93E+03 Gap:       NaN
--Integer Solution:   3.30E+03 Lowest Leaf:   3.12E+03 Gap:   5.77E-02
Iter:     5 I:  0 Tm:     -0.00 NLPi:    2 Dpth:    2 Lvs:    1 Obj:  3.30E+03 Gap:  5.77E-02
Iter:     6 I: -1 Tm:      0.02 NLPi:    2 Dpth:    2 Lvs:    0 Obj:  3.12E+03 Gap:  5.77E-02
 No additional trial points,returning the best integer solution
 Successful solution
 
 ---------------------------------------------------
 Solver         :  APOPT (v1.0)
 Solution time  :  0.031299999999999994 sec
 Objective      :  3300.72
 Successful solution
 ---------------------------------------------------

这是我从 DataFrame 转换的 CSV 文件,以防其他人想要运行脚本并需要数据。

Date/Time,C2,SC2,SOC2,PV,Load,TOU
11/25/2020 6:00,5.82,31.7
11/25/2020 6:15,5.84,31.7
11/25/2020 6:30,55,7,31.7
11/25/2020 6:45,1,7.16,31.7
11/25/2020 7:00,8.41,31.7
11/25/2020 7:15,10.95,31.7
11/25/2020 7:30,11.79,31.7
11/25/2020 7:45,2.75,14.77,31.7
11/25/2020 8:00,4.35,12.24,31.7
11/25/2020 8:15,5.975,17.58,31.7
11/25/2020 8:30,7.65,16.79,31.7
11/25/2020 8:45,8.625,19.04,31.7
11/25/2020 9:00,8.8,20.66,31.7
11/25/2020 9:15,9.575,18.57,11
11/25/2020 9:30,10.5,19.66,11
11/25/2020 9:45,10.625,19.76,11

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。