Clingo - 进度 error/warning

Clingo - Progression error/warning

我是运行规划的求解器,在各种答案集之间我得到了我认为是警告的内容(因为它不会终止执行)说以下内容:

Progression : [2;8] (Error: 3)
Progression : [3;8] (Error: 1.66667)
Progression : [4;8] (Error: 1)
Progression : [5;8] (Error: 0.6)
Progression : [6;8] (Error: 0.333333)
Progression : [7;8] (Error: 0.142857)

我找不到任何关于该警告的参考,所以我希望有人知道它们的意思。

快速搜索 clasp 源 https://github.com/potassco/clasp/blob/master/src/clasp_output.cpp 发现方法 TextOutput::printUnsat 负责这些消息。

基础 class 中的评论显示 Output::printUnsat:

//! Called on unsat - may print new info.

具体来说,TextOutput::printUnsat评论是

//! Prints the given lower bound and upper bounds that are known to be optimal.

这些行提供了有关优化当前状态的有价值信息:在您的示例中,求解器找到了成本为 8 的解决方案,但尚未证明该解决方案是最优的,但正在证明它:已证明成本至少为 2、3、4、...、7。因此,如果您在最后一行之后中止求解器,则可以保证找到的解决方案是最优的或与最优解相差 1 .

此信息可以帮助您在最优性和求解器时间之间做出折衷。如果您有足够接近最佳结果的次优结果,那么您在应用程序中通常会很好。