Pyomo创建一个可变的时间指数

问题描述 投票:0回答:1

我试图在我的pyomo模型中加入这个约束条件[。enter image description here1

我定义了一个随时间变化的索引集,我想优化下面相应的能量变量。

model.grid_time = Set(initialize=range(0, 23)))
model.charging_energy = Var(model.grid_time, initialize=0)

我的约束定义如下。

model.limits = ConstraintList()
for t in model.grid_time:
    model.limits.add(sum(model.charging_energy[t] for t in model.grid >= energy_demand.at[t,"total_energy_demand"])

这些代码线的问题是,我对整个索引集model.grid_time进行了求和,而不是只求到t。for t in model.grid),但我搜索不成功后,如何创建一个变量索引集... ...

我将感谢任何帮助或评论!

python variables optimization indexing pyomo
1个回答
0
投票

这样的东西能用吗?

def Sum_rule(model, v, t):
    return sum(model.Ech[t2] for t2 in model.grid_time if t2 <= t) <= model.Edem[v,t]

model.Sum_constraint = Constraint(model.grid_time, model.V, rule=Sum_rule)

基本上,发生的情况是 tSum_rule(model, v, t) 确保约束条件对每个 tmodel.grid_times. 该 t2 属于 model.grid_times但它只取小于该值的 t 调用的约束条件。

我不确定我的约束是否与您的符号完全一致,因为您没有提供所有需要的信息(例如,关于下标------)。vE^dem 变量,但它基本上会按照你的要求来处理总和。

© www.soinside.com 2019 - 2024. All rights reserved.