我正在尝试实现一个弧流问题,其中数组中有一组弧。每个弧都是由起始/终止节点组成的自定义数据结构。我想添加一个约束,其中仅包含来自特定节点 (1) 的弧,例如:
@constraint(m, sum(x[a] for a in arcs; a.from==1) == 1)
这不起作用。处理这个问题的最佳方法是什么?有没有一种方法可以做到这一点,而无需首先预先计算每个节点的所有传出弧?如果是这样,有没有办法添加额外的条件? 提前致谢
伯纳多
最佳答案
我猜您正在寻找的语法是
@constraint(m, sum(x[a] for a in arcs if a.from==1) == 1)
这遵循 generator expressions 的标准 Julia 语法。 .
但是,该表达式与普通 Julia 中的表达式一样低效,因为它循环遍历所有弧。如果此循环成为瓶颈,您将需要以另一种方式重新构造表达式,例如,通过预先计算每个节点的传出弧。
关于loops - 循环 JuMP 约束中的变量子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64448184/