I am currently using Python. However, I am struggling with one error. This is the tool I have made so far.
from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO()
m.options.SOLVER = 1
m.options.IMODE = 3
Num_ESS = 1
Num_EV = 1
TOU = [76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,164.0,251.2,251.2,164.0,251.2,251.2,251.2,251.2,164.0,164.0,164.0,164.0,164.0,164.0,164.0,76.3]
t = len(TOU)
#setting
load = [510,530,516,510,515,544,646,686,741,734,748,760,754,700,686,720,714,761,727,714,618,584,578,544]
c = m.Array(m.Var, (t,Num_EV))
EV_s = m.Array(m.Var, (t,Num_EV))
for tt in range(t,Num_EV):
c[tt,0].lower = 0; EV_s[tt,0].lower = 20
c[tt,0].upper = 7; EV_s[tt,0].upper = 80
g = m.Array(m.Var, (t,Num_ESS))
ESS_s = m.Array(m.Var, (t,Num_ESS))
ESS_c = m.Array(m.Var, (t,Num_ESS))
ESS_d = m.Array(m.Var, (t,Num_ESS))
for tt in range(t,Num_ESS):
ESS_s[tt,0].lower = 0; ESS_c[tt,0].lower = 0; ESS_d[tt,0].lower = 0
ESS_s[tt,0].upper = 300; ESS_c[tt,0].upper = 50; ESS_d[tt,0].upper = 50
#constraints
ESS_s[0,0] = 300
eq_ESS = np.zeros((t,1))
eq_ESS = list(eq_ESS)
for tt in range(1, t):
for e in range(1,Num_ESS):
eq_ESS[tt] = ESS_s[tt-1,0] + (ESS_c[tt,0]*0.98 - ESS_d[tt,0]/0.95) == eq_ESS[tt,0]
m.Equation(eq_ESS)
eq_total = np.zeros((t,1))
eq_total = list(eq_total)
for tt in range(1, t):
for e in range(1,Num_ESS):
eq_total[tt] = (g[tt,0] + ESS_d[tt,0]) >= (load[tt] + ESS_c[tt,0])
m.Equation(eq_total)
#Object Function
F = np.zeros((t*Num_ESS))
F = F.tolist()
for tt in range(1,t):
for v in range(1,Num_ESS):
F = m.Obj((load[tt]-g[tt])*TOU[tt])
m.solve(disp=True)
from gekko import GEKKO
import numpy as np
import matplotlib.pyplot as plt
m = GEKKO()
m.options.SOLVER = 1
m.options.IMODE = 3
Num_ESS = 1
Num_EV = 1
TOU = [76.3,76.3,76.3,76.3,76.3,76.3,76.3,76.3,164.0,251.2,251.2,164.0,251.2,251.2,251.2,251.2,164.0,164.0,164.0,164.0,164.0,164.0,164.0,76.3]
t = len(TOU)
#setting
load = [510,530,516,510,515,544,646,686,741,734,748,760,754,700,686,720,714,761,727,714,618,584,578,544]
c = m.Array(m.Var, (t,Num_EV))
EV_s = m.Array(m.Var, (t,Num_EV))
for tt in range(t,Num_EV):
c[tt,0].lower = 0; EV_s[tt,0].lower = 20
c[tt,0].upper = 7; EV_s[tt,0].upper = 80
g = m.Array(m.Var, (t,Num_ESS))
ESS_s = m.Array(m.Var, (t,Num_ESS))
ESS_c = m.Array(m.Var, (t,Num_ESS))
ESS_d = m.Array(m.Var, (t,Num_ESS))
for tt in range(t,Num_ESS):
ESS_s[tt,0].lower = 0; ESS_c[tt,0].lower = 0; ESS_d[tt,0].lower = 0
ESS_s[tt,0].upper = 300; ESS_c[tt,0].upper = 50; ESS_d[tt,0].upper = 50
#constraints
ESS_s[0,0] = 300
eq_ESS = np.zeros((t,1))
eq_ESS = list(eq_ESS)
for tt in range(1, t):
for e in range(1,Num_ESS):
eq_ESS[tt] = ESS_s[tt-1,0] + (ESS_c[tt,0]*0.98 - ESS_d[tt,0]/0.95) == eq_ESS[tt,0]
m.Equation(eq_ESS)
eq_total = np.zeros((t,1))
eq_total = list(eq_total)
for tt in range(1, t):
for e in range(1,Num_ESS):
eq_total[tt] = (g[tt,0] + ESS_d[tt,0]) >= (load[tt] + ESS_c[tt,0])
m.Equation(eq_total)
#Object Function
F = np.zeros((t*Num_ESS))
F = F.tolist()
for tt in range(1,t):
for v in range(1,Num_ESS):
F = m.Obj((load[tt]-g[tt])*TOU[tt])
m.solve(disp=True)
The error codes for this program are:
apm 211.220.231.231_gk_model3 <br><pre> ----------------------------------------------------------------
APMonitor, Version 1.0.1
APMonitor Optimization Suite
----------------------------------------------------------------
Warning: there is insufficient data in CSV file 211.220.231.231_gk_model3.csv
@error: Equation Definition
Equation without an equality (=) or inequality (>,<)
[0.]
STOPPING...
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
Cell In[16], line 66
63 for v in range(1,Num_ESS):
64 F = m.Obj((load[tt]-g[tt])*TOU[tt])
---> 66 m.solve(disp=True)
File c:\Users\6408-01\AppData\Local\Programs\Python\Python310\lib\site-packages\gekko\gekko.py:2185, in GEKKO.solve(self, disp, debug, GUI, **kwargs)
2183 #print APM error message and die
2184 if (debug >= 1) and ('@error' in response):
-> 2185 raise Exception(response)
2187 #load results
2188 def byte2str(byte):
Exception: @error: Equation Definition
Equation without an equality (=) or inequality (>,<)
[0.]
STOPPING...
I want to know this problem. Below is a description of constraints and objective functions.
Object Function - min(SIGMA(TOU∈tt) * F) = min((load[tt]-g[tt,v]) * TOU[tt]) = min((time of load - time of ESS) * time of TOU)
constraints_1 - eq_ES = ESS_S[tt-1,0] + (ESS_c * 0.98 - ESS_d/0.90) = initial of ESS SOC + (ESS_charging * 0.98 - ESS_discharging/0.90)
constraints_2 - eq_total = (c[tt,0] + ESS_d[tt,0]) >= (load[tt] + ESS_c[tt,0]) = (time of Num_EV + time of ESS discharging) >= (time of load + time of ESS charging)