5

假设我想计算 {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让我计算解决方案而不是找到它们?

4

1 回答 1

5

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

但是,许多FlatZinc 求解器- 例如 Gecode - 在设置统计参数(通常为“-s”)时显示解的数量。MiniZinc/FlatZinc 标准中没有显示这些统计数据的确切方式。

于 2016-12-24T07:23:35.013 回答