【发布时间】:2021-03-30 16:08:45
【问题描述】:
我有一个在 Pyomo 中构建的基本电力系统模型,并且运行良好。我现在希望让它更复杂一点,添加一些额外的变量,例如单个发电机的启动成本。
我在下面粘贴了一些我添加的代码 - 如果需要,我可以提供更多上下文代码,但只有添加这些行会触发此错误。 Pyomo 返回的错误显示在此查询标题中的引号中。我故意留下一些不合时宜的注释,在那里我简化了代码以试图找出问题所在。无济于事:我仍然收到如下所示的注释错误:
model.StartFuelCost = Param(model.GeneratorName, model.Resource, default=0)
model.GeneratorCommitted = Var(model.GeneratorName, model.Hour, domain=Boolean, initialize=0)
model.GeneratorStart = Var(model.GeneratorName, model.Hour, domain=Boolean, initialize=0)
model.StartFuelCostByGenerator = Var(model.GeneratorName, model.Resource, model.Hour, domain=NonNegativeReals, initialize=0.0)
model.StartFuelCostTotal = Var(model.Resource, model. Hour, domain.NonNegativeReals, initialize=0.0)
...
def GeneratorCommitted_rule(model,g,h):
# if model.Generation[g,h] > 0:
return model.GeneratorCommitted[g,h] == 1
# else:
# return model.GeneratorCommitted[g,h] == 0
model.SupplyDemand_Calc2 = Constraint(model.GeneratorName, model.Hour, rule=GeneratorCommitted_rule)
# ISSUE: Either need to remove conditionality or pass info from the last time step
def GeneratorStart_rule(model,g,h):
# if model.Hour > 1:
# return max(0, model.GeneratorCommitted[g,h] - model.GeneratorCommitted[g,h-1]) == model.GeneratorStart[g,h]
# else:
return model.GeneratorCommitted[g,h] == model.GeneratorStart[g,h]
model.SupplyDemand_Calc3 = Constraint(model.GeneratorName, model.Hour, rule=GeneratorStart_rule)
def StartFuelCostByGenerator_rule(model,g,r,h):
return model.StartFuelCost[g,r] * model.ResourcePrice[r] * model.GeneratorStart[g,h] == model.StartFuelCostByGenerator[g,r,h]
model.Costing_Calc5 = Constraint(model.GeneratorName, model.Resource, model.Hour, rule=StartFuelCostByGenerator_rule)
def StartFuelCostTotal_rule(model,r,h):
return sum(model.StartFuelCostByGenerator[g,r,h] for g in model.GeneratorName) == model.StartFuelCostTotal[r,h]
model.Costing_Calc6 = Constraint(model.Resource, model.Hour, rule=StartFuelCostTotal_rule)
【问题讨论】:
标签: pyomo