我正在为电池存储系统的套利建立一个优化模型,但是能量平衡(电池的充电状态)约束不是,限制充电,我是pyomo的新手,所以我非常感谢您对设置能量平衡约束的帮助。谢谢!你知道吗
我试过设置能量平衡模型,这样当电池充电时型号.poscharge[i] model.e[i]的值增加了,你不能洗碗型号:负电荷[i] 除非在以前的迭代中,通过型号.poscharge[i] ,我也尝试将其设置为参数,但似乎不起作用。你知道吗
dataset_test = pd.read_csv('TIMEinput_RFR5000 results.csv') # Reading the dataset of prices
DAM_price = dataset_test.iloc[0:24, 2].values # Creating the price Vector
model = ConcreteModel()
model.IDX = RangeSet(24)
model.IDX.pprint()
eff = 0.90
# Variables
model.negcharge = Var(model.IDX, bounds = (0.00, 10.00))
model.poscharge = Var(model.IDX, bounds = (0.00, 10.00))
model.e = Var(model.IDX, bounds = (0.00, 40.00))
# Objective
model.obj = Objective(expr = sum( -(DAM_price[i-1] * (model.negcharge[i] - model.poscharge[i])) for i in model.IDX))
# Constraints
model.cap1 = Constraint(expr = sum(model.negcharge[i] for i in model.IDX) <= 40)
model.cap2 = Constraint(expr = sum(model.poscharge[i] for i in model.IDX) <= 40)
def ebalance_rule(model, i):
if i == 1:
return e[i] == 0
else:
return e[i] == e[i-1] + eff*model.poscharge[i] - model.negcharge[i]/eff
model.ebalance = Constraint(model.IDX)
# Solving the model
opt = SolverFactory('glpk')
results = opt.solve(model)
results.write()
model.obj.value()
for x in range(1,25):
print(model.negcharge[x].value)
for x in range(1,25):
print(model.poscharge[x].value)
for x in range(1,25):
print(model.e[x].value)
我期望的是电池的充电状态值,但是我只得到以下结果:
for x in range(1,25):
print(model.e[x].value)
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
None
目前没有回答
相关问题 更多 >
编程相关推荐