我正在尝试使用'nlsat'求解器实现快速解释算法。 由于算法需要多次解决原始约束集的子集,我决定在z3 c ++接口中使用push / pop函数。(check(假设)在nlsat求解器中不起作用)。 选择器变量用于暗示添加/删除约束。
但是在解决约束集时遇到了问题。 z3能够在不到1分钟的时间内告诉我整个约束集是不饱和的。但是在检查原始约束集的子集时,它不会给出超过1小时的结果。
整个约束集can be solved in less than 1 minute
原始约束集can't get a result for more than 1 hour
的子集性能有何显着变化?一般来说,是什么影响了nlsat求解器的性能?
任何建议都表示赞赏。
答案 0 :(得分:0)
nlsat解算器不会显示增量,因此当您创建多个查询时,它将从头开始。对于较短的公式,搜索空间可能会大得多。