minizinc下的多输出

时间:2016-03-26 02:26:41

标签: minizinc

尝试学习minizinc但是在经过实例之后,我可以确认一下,如果我想获得多个输出,或者有更多自然的minizinc"我真的必须编写一些过程语言。获得它的方式。

例如,假设我希望所有不同的数字加起来为3,答案应为0 + 3 1 + 2 2 + 1 3 + 0 ...

我的mininzinc在这里:

% how to generate more than one result meeting the constraints

int: n=3;

var 0..9: a;
var 0..9: b;

include "alldifferent.mzn";
constraint all_different([a, b]);
constraint a + b = n;

solve satisfy;

output [
"a + b = n \t\n",
 show(a), " + ",
 show(b), " = ",
 show(n)];

只产生3 + 0。如何获得其他答案?感谢您提前获得任何建议。

我查看了minizinc 1.6的帖子,似乎说输出语句会产生所有输出(Easy way to print full solution (all decision variables) in minizinc)。这是行不通的。只输出一个。

2 个答案:

答案 0 :(得分:2)

首先,默认是打印解决方案的所有变量及其值,而不是所有解决方案。

使用选项-a获取所有解决方案。 mzn-gecode --help查看所有选项。在你的情况mzn-gecode -a test.mzn中给出:

a + b = n   
3 + 0 = 3
----------
a + b = n   
0 + 3 = 3
----------
a + b = n   
2 + 1 = 3
----------
a + b = n   
1 + 2 = 3
----------
==========

答案 1 :(得分:0)

在配置下,可以选择更改默认值,以便在满意后打印第一个解决方案。将其更改为用户定义的行为:打印所有解决方案...您也可以输出语句btw。