2012-10-08 123 views
1

我有一个minizinc模型,我想找到所有的解决方案(我用gecode)然后打印统计,这是很容易:MiniZinc,Gecode去除溶液分离

mzn-gecode -as foo.mzn 

但这种模式会产生数以千计的解决方案和隔板打印每个溶液:

---------- 

---------- 

---------- 

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

我需要删除这些分离器和仅打印统计数据。有没有办法?

== ==更新

我能够通过改变Gecode源

gecode/flatzinc/flatzinc.cpp 

解决这个地方我删除

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

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

回答

1

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

E.g.

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

谢谢您的回答,但我只想要打印的统计数据。我已经将输出注释掉,即使输出[];空的分隔符被打印。 有这么多的解决方案,需要很长时间才能打印出来。但是我只能通过更改Gecode源代码来解决它(删除分隔符打印)。我会更新我的问题。 – finlir

+0

一年前Gecode/fz有一个选项--print-last(或类似的东西),它只打印最后一个解决方案。这有时非常方便,但后来由于某种原因被删除(可能符合MiniZinc挑战标志)。 – hakank

+0

'-a'打印找到的所有解决方案,因此破折号(空解输出)重复。 – orange

1
--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 <s>覆盖标准分隔