[英]Exception: @error: Equation Definition Equation without an equality (=) or inequality (>,<) in gekko optimization
[英]How to fix @Error: Equation Definition 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,len(Sadd),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,len(Sadd),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,len(Sadd),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,len(Sadd),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,0,0,0,0,5.82,31.7
11/25/2020 6:15,0,0,0,0,5.84,31.7
11/25/2020 6:30,0,55,0,0,7,31.7
11/25/2020 6:45,1,0,0,0,7.16,31.7
11/25/2020 7:00,1,0,0,0,8.41,31.7
11/25/2020 7:15,1,0,0,0,10.95,31.7
11/25/2020 7:30,1,0,0,1,11.79,31.7
11/25/2020 7:45,1,0,0,2.75,14.77,31.7
11/25/2020 8:00,1,0,0,4.35,12.24,31.7
11/25/2020 8:15,1,0,0,5.975,17.58,31.7
11/25/2020 8:30,1,0,0,7.65,16.79,31.7
11/25/2020 8:45,0,0,0,8.625,19.04,31.7
11/25/2020 9:00,0,0,0,8.8,20.66,31.7
11/25/2020 9:15,0,0,0,9.575,18.57,11
11/25/2020 9:30,0,0,0,10.5,19.66,11
11/25/2020 9:45,0,0,0,10.625,19.76,11
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.