簡體   English   中英

如何修復@Error:方程定義GEKKO

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM