Z3 优化中的最大努力(最大|最小)最小化

Best-effort (max|min)imisation in Z3 optimisations

我对 Z3 给我一个模型很感兴趣,同时如果它试图将 objective 函数作为启发式考虑在内,我会很高兴,但我不想支付找到实际 (max|min)imum 的性能损失。

这在 Z3 中可行吗?

这在 Z3 中已经可以通过软超时实现,请参阅此答案:

实现你想要的方法是使用增量求解:

  • 声明所有硬性约束。 (即需要满足的)
  • 做一个check-sat并得到模型
  • 声明所有 "optimization" 约束。
  • 使用 soft-time 输出,如下所述:

在最后一步,您可以调整您想要等待的时间,即您愿意支付的罚金。

相关说明:您可能还想玩 soft-constraints,求解器可以选择 "satisfy",否则会受到惩罚。也许这更适合您的用例。请参阅此处了解如何执行此操作:https://rise4fun.com/Z3/tutorialcontent/optimization#h23