我与 Z3 和 Yices 合作了不到一年的时间来解决一些研究问题。使用这些求解器时,我总是需要评估性能,尤其是两件事:建模/检查所需的时间和空间(内存)(可满足性)。在 Z3 的情况下,我没有找到直接找到它们的线索。我尝试使用“statistics”(使用 Z3 NET API 提供的函数“DisplayStatistics”),发现输出如下所示(例如):
编号。冲突:122
编号。决定:2245
编号。传播:27884(二进制:21129)
编号。重启:1
编号。最终检查:1
编号。分钟。点亮:52
编号。添加等式:3766
编号。mk 布尔变量:2782
编号。德尔布尔变量:658
编号。mk 节点:1723
编号。删除节点:78
编号。MK 条款:3622
编号。删除条款:1517
编号。mk bin 条款:3067
编号。MK 点亮:18935
编号。ta 冲突:28
编号。添加行:5091
编号。枢轴:328
编号。断言更低:2597
编号。断言上:3416
编号。断言diseq:1353
编号。绑定道具:787
编号。固定当量:697
编号。偏移量:866
编号。伪 nl.: 34
编号。等式。适配器:820
我不知道如何解释这些值以了解使用的内存/时间。有一些方法可以找到运行时间(使用秒表等计时器类)。但是,在空间要求的情况下,我没有找到任何方法。如果我可以获得建模所需的布尔变量(低级,SAT 求解器)的数量,那么对我来说效果很好。
如果有人能告诉我解决方案,那就太好了。