采样搜索域

时间:2016-02-12 14:03:31

标签: minizinc constraint-satisfaction

在Minizinc中,是否可以对域名进行抽样?假设我的域有很多解决方案,运行--all-solutions最初将返回非常相似的解决方案。

1)有没有办法对域进行抽样?也许是BFS?目的是进行后续解决方案分析。

2)是否有任何方法可以估算CP中的搜索域大小?

我的域名是员工热议问题

此致 ħ

1 个答案:

答案 0 :(得分:3)

  1. 在MiniZinc中无法选择BFS,但有search annotations。使用搜索注释,您可以选择变量应分支的顺序。您还可以选择要分支的值。不幸的是,MiniZinc不支持随机变量搜索。

    在你的情况下,我会在一个带有随机值的dom_w_deg上进行分支,但是任何其他变量选择都可以工作,尝试它们。

    solve::seq_search([int_search(some_array, dom_w_deg, indomain_random,complete)]) satisfy;
    

    请注意,并非所有解算器都支持使用搜索注释。

    其他替代方法是添加删除类似结果的约束。

  2. 您始终可以计算解决方案中可以拥有的排列数,变量数乘以其域。这不会考虑任何约束,真正的搜索空间可以小得多。

  3. 另一种可视化搜索的方法是使用gist或其他程序来可视化搜索。

    gist http://www.imada.sdu.dk/~marco/Teaching/AY2010-2011/DM826/gist2.png

    您可以展开和撤消搜索树的某些部分,并查看已分支的变量。