optimization - SAT和线性规划有什么区别

标签 optimization linear-programming sat

我有一个受线性约束的优化问题。
如何知道哪种方法更适合建模和解决问题。
我通常会询问将问题作为可满足性问题(SAT 或 SMT)解决与作为线性规划问题(ILP 或 MILP)解决。

我对这两方面的知识都不多。因此,如果您有任何答案,请简化您的答案。

最佳答案

一般来说,区别在于SAT只尝试可行的解决方案,而ILP则试图优化受约束的东西。我相信一些 ILP 求解器实际上使用 SAT 求解器来获得初始可行解。您在评论中描述的传感器阵列问题被表述为 ILP:“最小化这个主题。” SAT 版本会选择可接受的最大传感器数量并将其用作约束。现在,这是一个可满足性问题,但不是很容易用合取范式表达的问题。我建议使用具有整数理论的求解器。我最喜欢的是Z3。

然而,在你放弃优化之前,你应该尝试 GMPL/GLPK。您可能会惊讶于您的问题是多么容易处理。如果你不那么幸运,把它变成一个可满足性问题并带出Z3。

关于optimization - SAT和线性规划有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53565698/

相关文章:

algorithm - 如何在任意四边形内刻上一个矩形或圆形

np - SAT 是 NP 完全的,那么为什么我们不让 k-SAT 对于任意 k 值来说是 NP 完全的

c - 在 C 中,哪个更快 : if with returns, 或者如果有返回?

python - Python 中的优化——该做的、不该做的和经验法则

mathematical-optimization - 使用 Python Pulp 时出现不允许最佳解决方案的错误

python - Python 3.3 的线性规划优化包?

c - 如何用C读取.cnf文件( union 范式)?

z3 - 具有自定义理论的 SMT 求解器?

python - 按递增顺序打印一个数字作为 2 的幂之和

haskell - 列表理解中的表达式是否被冗余评估?