2016-12-24 38 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標準中。