在Minizinc中,是否可以对域名进行抽样?假设我的域有很多解决方案,运行--all-solutions最初将返回非常相似的解决方案。
1)有没有办法对域进行抽样?也许是BFS?目的是进行后续解决方案分析。
2)是否有任何方法可以估算CP中的搜索域大小?
我的域名是员工热议问题
此致 ħ
答案 0 :(得分:3)
在MiniZinc中无法选择BFS,但有search annotations。使用搜索注释,您可以选择变量应分支的顺序。您还可以选择要分支的值。不幸的是,MiniZinc不支持随机变量搜索。
在你的情况下,我会在一个带有随机值的dom_w_deg上进行分支,但是任何其他变量选择都可以工作,尝试它们。
solve::seq_search([int_search(some_array, dom_w_deg, indomain_random,complete)]) satisfy;
请注意,并非所有解算器都支持使用搜索注释。
其他替代方法是添加删除类似结果的约束。
您始终可以计算解决方案中可以拥有的排列数,变量数乘以其域。这不会考虑任何约束,真正的搜索空间可以小得多。
另一种可视化搜索的方法是使用gist或其他程序来可视化搜索。
gist http://www.imada.sdu.dk/~marco/Teaching/AY2010-2011/DM826/gist2.png
您可以展开和撤消搜索树的某些部分,并查看已分支的变量。