Optimization Z3优化中的最大努力(最大|最小)最小化
我对Z3给我一个模型感兴趣,同时,如果它试图将目标函数作为一种启发式考虑,我会很高兴,但我不想为找到实际(最大|最小)imum而付出性能代价Optimization Z3优化中的最大努力(最大|最小)最小化,optimization,z3,smt,Optimization,Z3,Smt,我对Z3给我一个模型感兴趣,同时,如果它试图将目标函数作为一种启发式考虑,我会很高兴,但我不想为找到实际(最大|最小)imum而付出性能代价 这在Z3中是可能的吗?这在Z3中已经是可能的,具有软超时,请参见以下答案: 实现目标的方法是使用增量求解: 坚持你所有的硬约束。(即需要满足的要求) 执行检查sat并获取模型 断言所有“优化”约束 使用软超时,如下所述: 在最后一步中,您可以调整您希望等待的时间,即您愿意支付的罚金 相关说明:您可能还希望使用软约束,解算器可以选择性地“满足”软约束,如
这在Z3中是可能的吗?这在Z3中已经是可能的,具有软超时,请参见以下答案: 实现目标的方法是使用增量求解:
- 坚持你所有的硬约束。(即需要满足的要求)
- 执行
并获取模型检查sat
- 断言所有“优化”约束
- 使用软超时,如下所述:
相关说明:您可能还希望使用软约束,解算器可以选择性地“满足”软约束,如果不满足软约束,将受到惩罚。也许这更适合您的用例。请参见此处的操作方法:Uuh,我站在正确的位置!我也会试试这个功能,谢谢。如何使用smtlib语法设置软超时?我不明白你为什么只提到assert-soft,它不符合标准目标吗?@PatrickTrentin完全正确;我认为它也应该与常规约束一起工作。请参阅我编辑的答案。