minizinc - 使用 minizinc 计算溶液总数

标签 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这让我计算解决方案而不是找到它们?

最佳答案

没有迷你锌 让你这样做的声明。

然而,许多 FlatZinc 求解器 - 例如Gecode - 设置统计参数(通常为“-s”)时显示解决方案的数量。 MiniZinc/FlatZinc 标准中没有具体显示此统计数据的方式。

关于minizinc - 使用 minizinc 计算溶液总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41310308/

相关文章:

minizinc - minizinc 中的域和边界传播注释

optimization - 在 minizinc 中使用 forall() 谓词作为没有 'constraint' 的赋值语句

parsing - 解决 MiniZinc 中的字符串约束

regex - minizinc pentominoes 常规约束示例如何工作?

linear-programming - 如何在研究中展示 MiniZinc 的效率

minizinc - 半具体化谓词是否被视为标准的一部分?

minizinc - 有没有办法在 minizinc 中自定义 int_search ?

minizinc - 类似 MiniZinc 约束之间的差异

constraint-programming - 找到所有组合 - 正方形内的 N 个矩形

constraints - 检查数组中是否存在元素#minizinc