MiniZinc中搜索注释的影响是什么?

时间:2018-04-04 09:32:49

标签: annotations minizinc branching-strategy

在MiniZinc中可以使用搜索注释的影响,在官方网站上解释如下:

  

注释影响

     

在搜索过程中选择目前影响最大的变量

这在实践中意味着什么?影响最大的是什么?这是如何计算的?

1 个答案:

答案 0 :(得分:3)

要了解基于impact的变量选择,您必须了解first_fail。在约束编程中,我们通常希望首先解决最难的子问题,如果找不到解决方案则快速失败。 first_fail的问题在于它没有考虑变量所涉及的约束的数量,更多的是表明对变量的决定更难"或者变量选择对​​搜索树其他部分的影响。

作为旁注,dom_w_deg可以被视为first_failimpact之间的妥协,其中约束被考虑在内,但过去的决定不是。< / em>的

impact变量选择应该是对first_fail的改进,不仅要考虑域名大小,还要考虑其所涉及的约束以及影响的数量&#34 34;历史选择了。具有最高影响的变量是预期最难分配正确值的变量,并考虑所有这些信息。

正如您所见,MiniZinc没有提供变量选择必须如何制定的确切规范。求解器实现者可以选择适合求解器的启发式算法。请注意,很难提供精确的启发式指南,因为它很大程度上取决于求解器如何跟踪其变量和约束。

关于可能实施基于影响的启发式方法的想法,我建议阅读论文&#34;关于基于影响的启发式效率&#34;作者:Marco Correia和Pedro Barahona。您还可以检查特定的MiniZinc / FlatZinc求解器,以实现启发式算法。