Pyomo 创建可变时间索引
Pyomo creating a variable time index
我正试图在我的 pyomo 模型中引入这个约束
[1
我定义了一个随时间索引的集合,我想优化下面相应的能量变量
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
),但我在创建变量索引集后搜索失败..
如有任何帮助或评论,我将不胜感激!
这样的东西行得通吗?
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)
本质上,Sum_rule(model, v, t)
中的 t
确保为 model.grid_times
中的每个 t
调用约束。和中的 t2
也是 model.grid_times
的一部分,但它只会取小于调用约束的 t
的值。
我不确定我的约束是否与您的符号完全匹配,因为您没有提供所需的所有信息(例如关于 E^dem
变量的下标 v
,但它基本上可以你想要的总和。
我正试图在我的 pyomo 模型中引入这个约束
[
我定义了一个随时间索引的集合,我想优化下面相应的能量变量
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
),但我在创建变量索引集后搜索失败..
如有任何帮助或评论,我将不胜感激!
这样的东西行得通吗?
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)
本质上,Sum_rule(model, v, t)
中的 t
确保为 model.grid_times
中的每个 t
调用约束。和中的 t2
也是 model.grid_times
的一部分,但它只会取小于调用约束的 t
的值。
我不确定我的约束是否与您的符号完全匹配,因为您没有提供所需的所有信息(例如关于 E^dem
变量的下标 v
,但它基本上可以你想要的总和。