Z3是否支持优化问题

Z3是否支持优化问题,z3,Z3,我在去年八月的一篇文章中看到Z3不支持优化。 不过,它也表示,开发商正计划增加此类支持 我在消息来源中找不到任何迹象表明发生了这种情况 有谁能告诉我,我的假设没有支持是正确的,还是添加了支持,但我不知怎么错过了 谢谢, Omer目前不支持优化。这在待办事项清单上,但尚未实施。以下幻灯片介绍了Z3中使用的方法: 用于无穷小计算的库已经实现,可在不稳定(正在进行的工作)分支中获得,并联机访问 如果您的优化有一个整数值的目标函数,一种相当有效的方法是对最优值进行二进制搜索。假设您正在求解约束集

我在去年八月的一篇文章中看到Z3不支持优化。 不过,它也表示,开发商正计划增加此类支持

我在消息来源中找不到任何迹象表明发生了这种情况

有谁能告诉我,我的假设没有支持是正确的,还是添加了支持,但我不知怎么错过了

谢谢,
Omer目前不支持优化。这在待办事项清单上,但尚未实施。以下幻灯片介绍了Z3中使用的方法:


用于无穷小计算的库已经实现,可在
不稳定
(正在进行的工作)分支中获得,并联机访问

如果您的优化有一个整数值的目标函数,一种相当有效的方法是对最优值进行二进制搜索。假设您正在求解约束集
C(x,y,z)
,最大化目标函数
f(x,y,z)

  • 找到任意解
    (x0,y0,z0)
    C(x,y,z)
  • 计算
    f0=f(x0,y0,z0)
    。这将是您的第一个下限
  • 只要你不知道目标值的上限,试着解决约束
    C(x,y,z)∧ f(x,y,z)>2*L
    ,其中
    L
    是您的最佳下限(最初,
    f0
    ,然后是您发现更好的值)
  • 一旦有了上限和下限,应用二进制搜索:solve
    C(x,y,z)∧ 2*f(x,y,z)>(U-L)
    。如果公式是可满足的,则可以使用该模型计算新的下限。如果它是不可满足的,
    (U-L)/2
    是一个新的上限
  • 第三步。如果您的问题不允许最大值,则不会终止,因此如果您不确定它是否允许,则可能需要将其绑定

    当然,您应该使用
    push
    pop
    逐步解决一系列问题。此外,您还需要能够为中间步骤提取模型,并对其进行评估

    我们在我们的工作中使用了这种方法,并取得了合理的成功