Pyomo无法使用索引集索引组件

时间:2018-04-20 23:36:37

标签: python indexing pyomo

我有一个Pyomo模型,它有一组稀疏值,但是当我尝试根据这个稀疏集索引二进制变量时,我得到了错误Cannot index a component with an indexed set。举一个简单的例子:

model = ConcreteModel()

model.S = Set([1, 4, 6])
model.V = Var(model.S, within=Binary)

1 个答案:

答案 0 :(得分:1)

该行

model.S = Set([1, 4, 6])

创建一个索引集:这是一组3个集合,每个集合都是空的(Pyomo将位置参数视为索引集 - 就像您对Var([1,3,5], within-Binary)的评论一样)。由于通过一组集合来索引某些内容是没有意义的,因此会得到例外情况" Cannot index a component with an indexed set"。

在您的情况下,您似乎想要一个具有三个值的S。正确的语法是:

model.S = Set(initialize=[1, 4, 6])
model.V = Var(model.S, within=Binary)