我在 pyomo.environ 包下工作。我尝试添加类似http://imgur.com/a/pWJ79的约束。i 和 j 是节点的索引。
node_set 包含 N0 到 N5,总共六个节点。Arc_set 是一个存储节点之间链接的集合,例如,[N1,N2],它不包含任何自循环弧,例如,[N1,N1]。F 集包含 [F1, F2, F3]
所以,我做了这样的事情:
def c1_rule(m, j):
return sum(m.X[e[0], j, f] for e in m.arc_set if e[1] != 'N0' for f in m.f_set) == 1
m.c1_cons = pe.Constraint(m.node_set, rule= c1_rule)
但是,我意识到这会在我的 j 等于 i 时触发错误,这里是 e[0],因为 mX[i, j, k] 的索引没有 [N1, N1, F1] 之类的东西. 我有一个想法是将自循环弧添加到弧集中。有没有其他方法可以避免这个错误?