2016-12-24 99 views
1

比方说,我想算的80元亚群的数量{1,2,... 100},使得它们的总和是3690计数解决方案总数minizinc

我有以下型号:

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

没有MiniZinc声明,让你这样做。

但是,许多FlatZinc解算器 - 如Gecode - 显示统计参数(通常为“-s”)设置时的解决方案数量。具体如何显示此统计信息不在MiniZinc/FlatZinc标准中。