【问题标题】:MiniZinc, Gecode remove solution separatorsMiniZinc、Gecode 去除溶液分离器
【发布时间】:2012-10-08 11:08:52
【问题描述】:

我有一个 minizinc 模型,我想找到所有解决方案(我使用 gecode)然后打印统计信息,这很容易:

mzn-gecode -as foo.mzn

但此模型会生成数千个解决方案,并为每个解决方案打印一个分隔符:

----------

----------

----------

----------
==========

我需要删除这些分隔符,只打印统计信息。有什么办法吗?

==更新==

我可以通过更改 Gecode 源来解决这个问题

gecode/flatzinc/flatzinc.cpp

我删除的地方

out << "----------" << std::endl;

也许有更好的解决方案,但这对我很有用。

【问题讨论】:

    标签: constraint-programming minizinc


    【解决方案1】:

    显示这些分隔符是因为您没有任何变量的输出语句。

    例如

    output [
      show(x) ++ "\n" ++ show(y)
    ];
    

    【讨论】:

    • 感谢您的回答,但我只想打印统计信息。我已经注释掉了我的输出,即使是 output []; empty 打印分隔符。有这么多的解决方案,需要很长时间才能全部打印出来。但是,我只能通过更改 Gecode 源(删除分隔符打印)来解决它。我会更新我的问题。
    • 几年前 Gecode/fz 有一个选项 --print-last (或类似的东西),它只打印最后一个解决方案。有时这很方便,但后来由于某种原因被删除(可能符合 MiniZinc Challenge 标志)。
    • -a 打印找到的所有解决方案,因此破折号行(空解决方案输出)会重复。
    【解决方案2】:
    --soln-sep <s>, --soln-separator <s>, --solution-separator <s>
            Specify the string used to separate solutions.
            The default is to use the FlatZinc solution separator,
            "----------".
    

    添加--soln-sep &lt;s&gt; 会覆盖标准分隔符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2020-03-05
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2017-12-24
      • 2015-09-23
      相关资源
      最近更新 更多