Py学习  »  Python

我想知道python gekko优化解决方案

Chris • 1 年前 • 1012 次点击  

我目前正在使用Python。 然而,我正在为一个错误而挣扎。 这是我迄今为止制作的工具。

from gekko import GEKKO
import numpy as np         

m = GEKKO(remote=False)     
m.options.SOLVER = 1        


hour = 24                  
Num_EV = 1                  

p_i =m.Array(m.Var,(hour,Num_EV)) 

TOU = [64.9,64.9,64.9,64.9,64.9,64.9,64.9,64.9,152.6,239.8, 
       239.8,152.6,239.8,239.8,239.8,239.8,152.6,152.6, 
       152.6,152.6,152.6,152.6,152.6,64.9]
n=len(TOU)
inp = m.Array(m.Var, (n), value=0.0, lb=0.0, ub=7.0, integer=True)

# EV min/Max setting
for tt in range(0,hour):
    p_i[tt,0].lower = 30
    p_i[tt,0].upper = 70

# EV Charger min/Max setting
Num_EV_C = 1
p_j = m.Array(m.Var, (hour, Num_EV_C))

for tt in range(0,hour):
    p_j[tt,0].lower = 0
    p_j[tt,0].upper = 7

# s.t : EV SOC
p_i[0,0] = 30              # inital EV SOC

eq_EV_SOC = np.zeros((hour,1))   
eq_EV_SOC = list(eq_EV_SOC)          

for tt in range(0,hour):     
    for i in range(0,Num_EV):
        eq_EV_SOC[tt] = p_i[tt-1,i] + p_i[tt,i] == p_i[tt,0]

m.Equation(eq_EV_SOC)

# s.t : EV charging rate
p_j[0,0] = 0

eq_EV_C = np.zeros((hour,1))  
eq_EV_C = list(eq_EV_C)          

for tt in range(0,hour):     
    for i in range(0,Num_EV_C):
        eq_EV_C[tt] = p_j[tt,0] >= p_j[tt,i]

m.Equation(eq_EV_C)

# Object Function : sum[i=n]*sum[t=T]()

F = np.zeros((hour*Num_EV)) 
F = F.tolist()              

for tt in range(0,hour):
    for i in range(0,Num_EV):
        F[i+tt*Num_EV] = p_i[tt,i] * p_j[tt,i]

F_Obj = m.sum(F)

m.Minimize(F_Obj)
m.solve(disp=True)
Exception: @error: Equation Definition
Equation without an equality (=) or inequality (>,<) true STOPPING...

我想知道这个问题。 以下是约束条件和目标函数的说明。

s.t是约束。第一个约束条件是EV SOC范围。EV SOC最小值为30,最大值为70。EV SOC形式为(初始SOC+时间乘以EV SOC)。第二个限制是电动汽车充电范围。电动汽车充电范围从0到7。 最后,目标函数是最小化tou和充电率的乘积。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/161223
 
1012 次点击  
文章 [ 1 ]  |  最新文章 1 年前