我在一个规划上运行求解器,在不同的答案集中,我得到了一个我认为是警告的东西(因为它没有终止执行),内容如下:
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)我找不到任何关于这些警告的参考,所以我希望有人知道它们的意思。
发布于 2017-12-28 21:40:41
这些行提供了有关优化当前状态的有价值的信息:在您的示例中,求解器已经找到了成本为8的解,但尚未证明该解是最优的,但它正在证明它:它已经证明了成本至少为2,3,4,...,7。因此,如果您在最后一行后中止求解器,则可以保证找到的解要么是最优的,要么是最优的。
这些信息可以帮助您在最佳性和求解器时间之间进行比较。通常,如果您的结果不是最优的,并且足够接近最优,那么在应用程序中就没问题。
发布于 2017-12-28 14:27:30
在clasp源https://github.com/potassco/clasp/blob/master/src/clasp_output.cpp中快速搜索一下,就会发现方法TextOutput::printUnsat负责处理这些消息。
基类中的注释显示为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.https://stackoverflow.com/questions/47994855
复制相似问题