在MiniZinc中可以使用搜索注释的影响,在官方网站上解释如下:
注释影响
在搜索过程中选择目前影响最大的变量
这在实践中意味着什么?影响最大的是什么?这是如何计算的?
答案 0 :(得分:3)
要了解基于impact
的变量选择,您必须了解first_fail
。在约束编程中,我们通常希望首先解决最难的子问题,如果找不到解决方案则快速失败。 first_fail
的问题在于它没有考虑变量所涉及的约束的数量,更多的是表明对变量的决定更难"或者变量选择对搜索树其他部分的影响。
作为旁注,dom_w_deg
可以被视为first_fail
和impact
之间的妥协,其中约束被考虑在内,但过去的决定不是。< / em>的
impact
变量选择应该是对first_fail
的改进,不仅要考虑域名大小,还要考虑其所涉及的约束以及影响的数量&#34 34;历史选择了。具有最高影响的变量是预期最难分配正确值的变量,并考虑所有这些信息。
正如您所见,MiniZinc没有提供变量选择必须如何制定的确切规范。求解器实现者可以选择适合求解器的启发式算法。请注意,很难提供精确的启发式指南,因为它很大程度上取决于求解器如何跟踪其变量和约束。
关于可能实施基于影响的启发式方法的想法,我建议阅读论文&#34;关于基于影响的启发式效率&#34;作者:Marco Correia和Pedro Barahona。您还可以检查特定的MiniZinc / FlatZinc求解器,以实现启发式算法。