Gecode branch()函数的z3替代方案?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gecode branch()函数的z3替代方案?相关的知识,希望对你有一定的参考价值。

在像Gecode这样的约束求解器中,我们可以借助分支函数来控制搜索空间的探索,例如,在Gecode中,我们可以使用分支函数来控制搜索空间的探索。branch(home , x , INT_VAL_MIN ) 这将从变量x在其域中的最小可能值开始探索搜索空间,并试图找到解决方案。 (有许多这样的选择。)

对于z3,我们有这样的灵活性内置吗?有可能的替代方案吗?

答案

SMT求解器通常不允许给出这类 "提示",它们更多的是作为黑盒。

尽管如此,每个求解器都会使用大量的内部启发式方法,而且z3本身也有一些设置,你可以通过这些设置来给它提示。如果你运行:

z3 -pd

它会显示所有你能提供的选项 有超过600个!不幸的是,这些选项并没有被很好地记录下来,它们如何影响解算器是相当神秘的。唯一可靠的方法是研究源代码,看看它们是怎么做的,这对胆小的人来说并不可靠。但无论如何,都不会像你举的gecode的分支功能那样明显。

不过,对于SMT-solvers来说,还有其他的技巧可以用来加快求解速度,不幸的是,这些东西通常都是非常具体的问题。如果你贴出具体的实例,可能会得到更好的建议。

以上是关于Gecode branch()函数的z3替代方案?的主要内容,如果未能解决你的问题,请参考以下文章

gecode中的idx recorder分析

gecode中自定义brancher

gecode中的meritbase

(Z3Py) 检查方程的所有解

gecode 中的metainfo

gecode dom分析