minizinc下多输出
Multiple output under minizinc
尝试学习 minizinc,但在通过示例后,我是否可以确认如果我想要获得多个输出或者有更多 "natural to 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 的 post,它似乎说省略输出语句将产生所有输出 (Easy way to print full solution (all decision variables) in minizinc)。这是行不通的。只输出一个
在配置下,有一个选项可以更改默认值,即在满意后打印第一个解决方案。将其更改为用户定义的行为:打印所有解决方案...顺便说一句,您也可以有输出语句。
首先,默认是打印一个解的所有变量及其值,而不是所有解。
使用选项-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
----------
==========
尝试学习 minizinc,但在通过示例后,我是否可以确认如果我想要获得多个输出或者有更多 "natural to 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 的 post,它似乎说省略输出语句将产生所有输出 (Easy way to print full solution (all decision variables) in minizinc)。这是行不通的。只输出一个
在配置下,有一个选项可以更改默认值,即在满意后打印第一个解决方案。将其更改为用户定义的行为:打印所有解决方案...顺便说一句,您也可以有输出语句。
首先,默认是打印一个解的所有变量及其值,而不是所有解。
使用选项-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
----------
==========