如何在Zimpl中定义边缘割集?

时间:2018-02-12 18:46:28

标签: linear-programming scip

  • 考虑有向图G=(V, A),其中V = V_1 \cup V_2是顶点集,A是有向弧集。
  • \alpha(W, W') = {(u,v) | u \in W \land v \in W'}。这是从WW'的一组弧。
  • 对于每个弧(u,v) \in A,都有一个关联变量x_{(u,v)}
  • 现在,我想创建一个约束:\forall S \subset V: \sum_{(u,v) \in \alpha(V_1, V_2)} x_{(u,v)} \geq 2.

我的问题是如何在Zimpl中定义\alpha函数?从其文档(http://zimpl.zib.de/download/zimpl.pdf)开始,函数的参数只能是数字或字符串。

2 个答案:

答案 0 :(得分:1)

您可以将alpha定义为A与(W x W')的交点。 ZIMPL中提供了所有这些设置操作。

答案 1 :(得分:0)

我已经找到了解决方案,感谢Leon的提示:

set PV[] := powerset(V);
set KV   := indexset(PV);
# print out all arcs in \alpha
do forall <k> in KV with card(PV[k]) > 0 do
    print (A inter ((V - PV[k]) * PV[k]));