我有一个Pyomo模型,它有一组稀疏值,但是当我尝试根据这个稀疏集索引二进制变量时,我得到了错误Cannot index a component with an indexed set
。举一个简单的例子:
model = ConcreteModel()
model.S = Set([1, 4, 6])
model.V = Var(model.S, within=Binary)
答案 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)