解决优化问题的一种方法是使用 SMT 求解器来询问是否存在(坏)解决方案,然后逐步添加更严格的成本约束,直到命题不再可满足。例如,该方法在以下内容中进行了讨论:http://www.lsi.upc.edu/~oliveras/espai/papers/sat06.pdf and http://isi.uni-bremen.de/agra/doc/konf/08_isvlsi_optprob.pdf.
是这种做法吗高效的, 尽管?即,当尝试使用附加约束进行求解时,求解器是否会重复使用先前解决方案中的信息?
求解器可以重用在尝试解决先前查询时学到的引理。只要记住,无论何时执行 Z3pop
所有引理(自相应的push
)被遗忘。因此,要实现这一目标,您必须避免push
and pop
如果需要撤回断言,请使用命令并使用“假设”。在下面的问题中,我描述了如何在Z3中使用“假设”:Z3 中的软/硬约束
就效率而言,这种方法并不是对于每个问题域都是最有效的方法。另一方面,它可以在大多数 SMT 求解器之上实现。此外,伪布尔求解器(0-1 整数问题的求解器)成功地使用类似的方法来求解优化问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)