【问题标题】:How to define edge cutsets in Zimpl?如何在 Zimpl 中定义边割集?
【发布时间】:2018-02-12 18:46:28
【问题描述】:
  • 考虑一个有向图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)来看,函数的参数只能是数字或字符串。

【问题讨论】:

    标签: linear-programming scip


    【解决方案1】:

    您可以将 alpha 定义为 A 与 (W x W') 的交集。所有这些集合操作都在 ZIMPL 中可用。

    【讨论】:

      【解决方案2】:

      感谢 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]));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-05
        • 2011-11-07
        • 2020-04-19
        • 1970-01-01
        • 2021-08-27
        • 2019-04-20
        相关资源
        最近更新 更多