假设我想计算{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
,它可以让我计算解决方案而不是找到它们?
答案 0 :(得分:2)
没有 MiniZinc 声明可以让您这样做。
然而,许多 FlatZinc解算器 - 例如Gecode - 显示设置统计参数(通常为" -s")时的解决方案数量。究竟如何显示这些统计数据不符合MiniZinc / FlatZinc标准。