假设我想计算 {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
这让我计算解决方案而不是找到它们?
最佳答案
没有迷你锌 让你这样做的声明。
然而,许多 FlatZinc 求解器 - 例如Gecode - 设置统计参数(通常为“-s”)时显示解决方案的数量。 MiniZinc/FlatZinc 标准中没有具体显示此统计数据的方式。
关于minizinc - 使用 minizinc 计算溶液总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41310308/