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
我对 Z3 给我一个模型很感兴趣,同时如果它试图将 objective 函数作为启发式考虑在内,我会很高兴,但我不想支付找到实际 (max|min)imum 的性能损失。
这在 Z3 中可行吗?
这在 Z3 中已经可以通过软超时实现,请参阅此答案:
实现你想要的方法是使用增量求解:
- 声明所有硬性约束。 (即需要满足的)
- 做一个
check-sat
并得到模型 - 声明所有 "optimization" 约束。
- 使用 soft-time 输出,如下所述:
在最后一步,您可以调整您想要等待的时间,即您愿意支付的罚金。
相关说明:您可能还想玩 soft-constraints,求解器可以选择 "satisfy",否则会受到惩罚。也许这更适合您的用例。请参阅此处了解如何执行此操作:https://rise4fun.com/Z3/tutorialcontent/optimization#h23