Optimization Z3时间限制优化

Optimization Z3时间限制优化,optimization,z3,smt,Optimization,Z3,Smt,我已经看到Z3支持通过例如assert soft进行优化。据我所知,如果给予足够的时间,Z3将报告给定SMT公式的最佳解决方案 然而,我感兴趣的是,是否有可能在有限的时间内运行Z3,并让它报告它能找到的最佳解决方案(这并不一定意味着它是最佳解决方案) 如果我在SMT公式上运行Z3并限制时间(通过参数-T),如果没有以最佳方式解决它,它只会报告“超时”。我读到默认的wmax解算器使用一个简单的过程来限制权重,我很好奇是否可以从上限而不是下限来限制权重 问候,, Emir超时选项-T导致进程终止,因

我已经看到Z3支持通过例如assert soft进行优化。据我所知,如果给予足够的时间,Z3将报告给定SMT公式的最佳解决方案

然而,我感兴趣的是,是否有可能在有限的时间内运行Z3,并让它报告它能找到的最佳解决方案(这并不一定意味着它是最佳解决方案)

如果我在SMT公式上运行Z3并限制时间(通过参数-T),如果没有以最佳方式解决它,它只会报告“超时”。我读到默认的wmax解算器使用一个简单的过程来限制权重,我很好奇是否可以从上限而不是下限来限制权重

问候,,
Emir

超时选项-T导致进程终止,因此它不会返回任何中间值。如果使用-t选项(软超时),则进程不会终止。相反,Z3将在检查取消的某个点停止搜索。然后它给出了迄今为止最好的答案。它对应于设置取消状态。我希望这对您有用。

谢谢您的回复-t选项的工作时间似乎比指定的长,例如,我指定的-t:60,表示60毫秒,但它在我手动终止它之前运行了五分钟。但即使手动终止,它也会打印解决方案,这太棒了!还有一个小问题:我读到可以指定不同的优化引擎。但是,当我写入“(设置选项:opt.wmaxsat_engine hsmax)”时,我从Z3“模块'opt'处的未知参数'wmaxsat_engine'中得到一个错误。我使用了“opt.maxsat_engine”,但解决方案似乎忽略了所有约束。目前是否实施了其他引擎?我上传了文件。提前谢谢你!如果有长时间运行的步骤不检查取消,则可以忽略软超时。我们依靠repros来确定丢失的取消检查出现在哪里。没有wmaxsat_发动机选项。您考虑的选项是maxsat_引擎。有两个主要引擎:wmax和maxres。其他(已实现的)引擎虽然应该可以访问,但性能较差。感谢您的快速回复和帮助!