我正在尝试使用Pyomo解决电池问题。我试图告诉模型,电池只能在一年中的特定时间放电。我已经实现了这一点,在我的初始 Dataframe 中创建了一个名为“Discharge”的布尔列,然后将其导入到我的Pyomo模型数据中。
如果我只是让求解器优化一年中的每一个小时,一切都工作得很好。然而,当尝试实现此规则时,我收到的解决方案与没有规则时完全相同,并且我可以在结果数据中看到“可放电”数据被忽略。这让我相信问题只在于我如何编写规则。
规则实施如下:
model.p_BAT_discharge = pyo.Var(model.t, within=pyo.NonNegativeReals)
# whether or not the battery can discharge as per market rules
model.dischargeable = pyo.Param(model.t,
within = pyo.Boolean,
initialize=dict(df_model['Dischargeable'])
)
def discharge_time_rule(model, t):
if model.dischargeable[t] == False:
return model.p_BAT_discharge[t] == 0
else:
return pyo.Constraint.Skip
model.discharge_time_constraint = pyo.Constraint(model.t,rule=discharge_time_rule)
我也试过类似的东西:
def discharge_time_rule(model, t):
if pyo.Value(model.dischargeable[t] == False) == True:
return model.p_BAT_discharge[t] == 0
else:
return pyo.Constraint.Skip
model.discharge_time_constraint = pyo.Constraint(model.t,rule=discharge_time_rule)
谢谢你!
1条答案
按热度按时间yzuktlbb1#
你怀念那糟糕的缩进吗?