Z3优化最大和最小功能的原理是什么?

时间:2019-01-29 19:41:12

标签: z3 smt

我正在写信询问Z3 Optimize函数背后的理论/算法,尤其是其maximumminimum函数。对我来说这似乎很神奇。是某种程度上的二进制搜索吗?如何在这里有效地找出最大值/最小值?

我试图搜索相关功能(例如execute_min_max功能)的源代码,但是如果不深入了解那里的术语,对我来说并没有太大意义。 lex在这里代表什么?似乎解决方案以某种方式保留在堆栈中。

任何建议都将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

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

1。 Nikolaj Bjorner和Anh-Dung Phan。 νZ-对Z3的最大满意度。在Proc国际软件符号计算研讨会中科学,加纳玛特,突尼斯,2014年12月。《计算机易事录》(EPiC)。 [PDF]

2。 Nikolaj Bjorner,Anh-Dung Phan和Lars Fleckenstein。 Z3-优化的SMT求解器。 TACAS,LNCS的第9035卷。斯普林格(Springer),2015年-而且,如果这些还不够的话,任何其他与“优化模理论”主题相关的出版物。 [Springer] [[PDF]


z3优化模理论(OMT)求解器具有各种优化过程。其中一些技术比其他技术更有效,但只能处理某些类别的目标函数(即伪布尔/ MaxSMT目标)。对于不能简化为 Pseudo-Boolean / MaxSMT Linear Arithmetic 成本函数,大多数OMT求解程序都采用了最优化搜索的基本方法在 linear- binary-search 中。有关这两种方法的比较,请参见

  • Roberto Sebastiani和Silvia Tomasi 通过LA(Q)成本函数优化SMT。在IJCAR中,LNAI的第7364卷,第484–498页。施普林格,2012年7月。[PDF]

  • Roberto Sebastiani和Silvia Tomasi 具有线性理性成本的优化模理论。 ACM Transactions on Computational Logics,16(2),2015年3月。[PDF]

我不确定如何回答问题“如何有效在此处找出最大/最小值..?” ,因为第一个应该定义什么效率是指在这种情况下。从前两个出版物中可以看出, binary-search 并不总是最佳选择,因为优化中的搜索步骤并不具有相同的“ cost”

词典编辑优化的定义可以在整个互联网上找到,这是我最近使用的定义:

  

定义4.6.4。 (词汇​​表OMT [BP14,BPF15,ST15b,ST15c]。)假设<φ,O>是一个多目标OMT问题,其中φ是基本SMT公式,O = { obj_1 , ..., obj_N }N个目标函数的排序列表。我们称词典上的OMT问题为问题,该问题是找到满足M并使每个φ最小¹的模型obj_i的问题。

     

¹:实际上不需要将目标全部最小化,这只是为了易于定义

AFAIK z3中实现的词典优化过程在任何公开可得的论文中均未得到详尽描述。但是,lex的一种简单方法是运行N单目标(增量)优化,每次固定在上一轮获得的最优值。


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