Optimization SAT和线性规划的区别是什么

Optimization SAT和线性规划的区别是什么,optimization,linear-programming,sat,Optimization,Linear Programming,Sat,我有一个受线性约束的优化问题。 如何知道哪种方法更适合建模和解决问题。 我通常是问作为可满足性问题(SAT或SMT)解决问题,还是作为线性规划问题(ILP或MILP)解决问题 这两方面我都不太了解。因此,如果您有任何答案,请简化您的答案。一般来说,不同之处在于SAT只尝试可行的解决方案,而ILP则尝试根据约束条件优化某些内容。我相信一些ILP解算器实际上使用SAT解算器来获得初始可行解。您在评论中描述的传感器阵列问题被表述为ILP:“将此主题最小化到该主题。”SAT版本的问题将取而代之的是选择最

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


这两方面我都不太了解。因此,如果您有任何答案,请简化您的答案。

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


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

你能更清楚地描述一下你的问题吗?“受线性约束的优化问题”并没有提供多少有意义的信息。如果没有它,恐怕没有比“了解SAT和LPs/ILP是什么”更好的答案了,这取决于很多细节。但是关键字优化(而不是可行性)和线性约束将其从纯SAT中慢慢推开。我看到您使用了标记约束编程。这是另一种与其他方法有点正交的方法。@MyStackRunnerOver我将举一个例子。我想在一个区域内分配最小可能数量的传感器节点,以满足一定的质量水平。我所说的质量是指一组指标,比如覆盖率……等等,因为SAT都是关于可行性的,优化的理论比ILP中可用的理论发展得更少。你要么做一些深入的研究来把握差异,要么正式地提出你的问题以获得一些建议。解释这些概念之间的差异不在StackOverflow的范围内。在许多核心问题上,人们甚至还没有很好地理解。但总的来说:这些方法有不同的证明系统,有些问题确实使得在某些系统中很难处理。简单的例子:
sum(x)仍然取决于问题(一切都是可能的:与SAT相比,从非常慢到非常快;imho:前者更常见,但很好……取决于问题)。这些是(通常)基于SAT的解算器,具有额外的证明系统(例如切割平面),其合并会牺牲大量SAT解算器的原始功率。编辑:刚刚看到评论中有一些非正式的问题信息(但不在问题中):听起来更像是一个需要MICP解算器的数学选择问题(凸>线性;取决于你的精确度量;利用度量在这里非常重要!)。我已经在尝试使用z3。但是使用Z3进行优化呢?据我所知,它支持多目标优化。在这种情况下,LP的区别是什么?多目标优化与Z3将是昂贵的一方——或者更确切地说,如果你的问题很难,你需要Z3,那么解决它的多目标版本可能是昂贵的。ILP解算器绝对是单目标的,尽管如果每个目标的可行性问题相同,您可能可以连接到解算器以跟踪您找到的所有可行解决方案,然后对它们进行帕累托排序。