使用 MAXSMT 进行增量学习

Incremental Learning using MAXSMT

我们可以在 z3 中以增量方式使用 MaxSMT 求解器(优化)的先前解决方案吗?另外,有没有办法在优化器上打印出软断言?

答案是 YES 如果你问的是 技术上 可能 运行 或者 z3OptiMathSAT 递增 与 MaxSMT 问题。 (使用API).

所有具有相同 id 的软从句-​​-在执行 check-sat-- 的那一刻被认为是相同的一部分MaxSMT 目标。本质上,OMT 求解器懒惰地评估 MaxSMT 目标的相关软条款集。这适用于 z3OptiMathSAT

An optimal solution found at an early stage may be far away from the optimal solution of later stages of the iterative process.

在处理 MaxSMT 问题时,OMT 求解器重用的能力 增量 调用中学习的子句可能取决于正在使用的优化算法。

我看到两种可能的情况:

  • 一个正在使用 基于内核的 MaxSMT 引擎。在这种情况下,探索复杂程度不断增加的问题的公式可能有助于识别原始问题的 tractable 子集。但是,请注意,涉及在先前迭代中学习的软约束的引理在后期阶段可能没有用(实际上,OMT 求解器将丢弃所有这些子句并在必要时重新计算它们).

  • 一个正在使用 基于卫星的 MaxSMT 引擎。在这种情况下,除了将搜索重点放在 (?可能相关?) 软条款的特定组上之外,我不清楚将问题分成更小的块的好处。 OMT 求解器可以立即获得所有软约束以及硬超时,并且在警报触发时它仍然能够产生部分最优解。 (涉及成本函数的 T-Lemmas 在增量调用中不会有用,因为成本函数发生变化。在最好的情况下,OMT 求解器会丢弃它们。在最坏的情况下,这些 T-Lemmas 会保留在环境并在不改变解决方案的情况下使搜索混乱。

    我承认很难预测 OMT 求解器的性能,因为这两种方法都会引入开销。一方面,我们有 增量 调用的开销以及优化过程从头开始多次重新启动的事实。另一方面,我们有在更大的软条款集上执行 BCP 的开销。我猜天平有利于 增量 方法来处理足够大的软条款集。 [这将是一个有趣的研究课题,我很想读一篇关于它的论文!]