储能优化pyomo约束

2024-10-03 09:15:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为电池存储系统的套利建立一个优化模型,但是能量平衡(电池的充电状态)约束不是,限制充电,我是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

Tags: innoneformodel电池valuerangeresults