【问题标题】:similar to .get() attribute for IndexedParam or IndexedVar类似于 IndexedParam 或 IndexedVar 的 .get() 属性
【发布时间】:2017-03-06 14:45:38
【问题描述】:

我需要检查变量的索引是否存在,同时调用约束初始化,如果不存在,我想将变量的值设置为 0。在 python 字典中,你可以这样做:dict.get ('not-a-key',0). Pyomo 对象有类似的东西吗?

【问题讨论】:

    标签: python-2.7 pyomo


    【解决方案1】:

    我们没有添加此方法,因为人们可能希望使用它来返回一个新变量(该变量不属于容器,因为get 方法不会修改字典)。也许像setdefault 方法这样的东西在这里会更有意义,但这也不是目前内置在建模界面中的东西。

    您可能可以使用的一个功能是,如果在初始声明之后将该索引添加到变量的索引集中,Pyomo 将在特定索引处隐式构造一个新变量对象。示例:

    model = ConcreteModel()
    model.x_index = Set(initialize=[1])
    model.x = Var(model.x_index)
    model.x[1]   # OK
    model.x[2]   # KeyError
    model.x_index.add(2)
    model.x[2]   # OK (implicitly creates this object on the fly)    
    

    【讨论】:

    • 非常感谢。我实际上通过创建一个包含变量值的字典然后在我的函数中使用它来解决了这个问题。
    猜你喜欢
    • 2010-09-26
    • 2013-09-13
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2016-05-10
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多