Z3 Optimize 最大和最小功能背后的理论是什么?

lll*_*lll 6 smt z3

我写信是为了询问 Z3 Optimize 功能背后的理论/算法,特别是它的maximumminimum功能。这对我来说似乎很神奇。它是某种二分搜索吗?它如何有效地计算出这里的最大/最小值..?

我试图搜索相关函数(例如,函数execute_min_max)的源代码,但是如果没有深入理解那里的术语,它对我来说没有太大意义......基本上lex这里代表什么?似乎解决方案以某种方式保存在堆栈内。

任何建议或建议将非常感激。谢谢。

Pat*_*tin 6

请参阅有关该主题的出版物,例如

\n\n

1. Nikolaj Bjorner 和 Anh-Dung Phan。 \xce\xbdZ - 对 Z3 的最大满意度。Proc 软件科学符号计算国际研讨会,Gammart,突尼斯,2014 年 12 月。EasyChair 计算论文集 (EPiC)。[PDF]

\n\n

2. Nikolaj Bjorner、Anh-Dung Phan 和 Lars Fleckenstein。 Z3 - 优化 SMT 求解器。在过程中。TACAS,LNCS 第 9035 卷。Springer,2015——如果这些还不够,还可以阅读与优化模理论主题相关的任何其他出版物。[施普林格] [[PDF]

\n\n
\n\n

优化z3模理论 (OMT) 求解器具有各种优化过程。其中一些技术比其他技术更有效,但只能处理某些类别的目标函数(即伪布尔/MaxSMT 目标)。对于无法简化为Pseudo-Boolean/MaxSMT的线性算术成本函数,大多数 OMT 求解器采用的优化搜索的基本方法是在线性搜索或二分搜索中运行。有关两种方法之间的比较,请参阅

\n\n
    \n
  • Roberto Sebastiani 和 Silvia Tomasi 使用 LA(Q) 成本函数优化 SMT。在 IJCAR,LNAI 第 7364 卷,第 484\xe2\x80\x93498 页。施普林格,2012 年 7 月。[PDF]

  • \n
  • 罗伯托·塞巴斯蒂亚尼和西尔维娅·托马西具有线性有理成本的优化模理论。ACM 计算逻辑学报,16(2),2015 年 3 月。[PDF]

  • \n
\n\n

我不知道如何回答这个问题“如何有效地计算出这里的最大/最小值......?” ,因为第一个应该定义效率在这种情况下意味着什么。正如您从前两篇出版物中所读到的那样,二分搜索并不总是最佳选择,因为优化中的搜索步骤并不具有完全相同的“成本”

\n\n

词典优化的定义在互联网上很容易找到,这是我最近使用的:

\n\n
\n

定义 4.6.4。(字典顺序 OMT [BP14、BPF15、ST15b、ST15c])。<\xcf\x86,O>是一个多目标 OMT 问题,其中\xcf\x86是基本 SMT 公式,O = { obj_1 , ..., obj_N }是目标函数的排序列表N。我们称之为词典 OMT 问题M,即找到满足\xcf\x86并使每个obj_i最小值\xc2\xb9 按优先级降序排列的模型的问题。

\n\n

\xc2\xb9:在实践中目标不需要全部最小化,这只是为了便于定义

\n
\n\n

AFAIK中实现的词典优化过程z3在任何公开的论文中都没有得到广泛的描述。然而,一个简单的方法lex是运行N单目标(增量)优化,每次都固定上一轮获得的最佳值。

\n\n
\n\n

如果这还不足以回答您的问题,请查看与优化模理论主题相关的任何其他出版物。

\n

  • 很好的答案!特别感谢您提供的额外参考。 (2认同)