【问题标题】:Pyomo error: "name 'domain' is not defined"Pyomo 错误:“未定义名称‘域’”
【发布时间】: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


    【解决方案1】:

    这是你的问题:

    model.StartFuelCostTotal = Var(model.Resource, model. Hour, domain.NonNegativeReals, initialize=0.0)
    

    你有“。” (点)符号与域,所以它试图弄清楚你称之为域的东西是什么......你想把它改成=

    将来,如果您发布带有错误跟踪的实际代码,说明哪一行包含错误,那么获得帮助会更容易(而且您更有可能)。

    【讨论】:

    • 谢谢 - 我以为我已经阅读并重新阅读了代码的这些部分,但清楚地阅读了我自己的错误。
    猜你喜欢
    • 2022-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 2019-09-09
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多