使用minizinc计算解决方案的总数

时间:2016-12-24 04:24:02

标签: minizinc

假设我想计算{1,2,... 100}的80个元素子集的数量,使得它们的总和为3690。

我有以下型号:

array[1..100] of var 0..1: b;

constraint (sum (i in 1..100) (i*b[i])) == 3690;
constraint (sum (i in 1..100) (b[i])) == 80;

solve satisfy;

要计算解决方案的总数,我运行

$ ./minizinc --all-solutions ~/Documents/code/xmas.mzn > sol.out
$ wc -l sol.out

基本上,我打印出所有解决方案并计算它们。是否有一个更简单的minizinc语句而不是solve satisfy,它可以让我计算解决方案而不是找到它们?

1 个答案:

答案 0 :(得分:2)

没有 MiniZinc 声明可以让您这样做。

然而,许多 FlatZinc解算器 - 例如Gecode - 显示设置统计参数(通常为" -s")时的解决方案数量。究竟如何显示这些统计数据不符合MiniZinc / FlatZinc标准。