我无法解释clingo v 5.2.2
下面的输出:
为什么要clingo
打印answer1
两次?我已经检查过这两个answer1
s 是完全一样的。
我在我的代码中使用优化。这可能是问题吗?
我已经建立了一个测试仓库。可以通过在测试存储库中运行以下行来生成上述输出。
clingo --opt-mode=OptN examples/swap-shift.lp
在寻找最佳答案集时,cligo 会打印出比之前找到的答案集更好的答案集。如果找不到更好的答案集,则说明最后一个答案集的最优性已经得到证明。如果您使用了 optN 模式,则 cligo 会枚举所有具有最佳成本的答案集。这将再次找到找到的第一个最佳答案集。
我个人不知道如何仅从命令行打印最佳答案集和每个答案集。可以使用 Python API 实现这样的行为。
这就是我现在所理解的:使用该--opt-mode=OptN
选项,clingo
将尝试多个模型,直到找到所有最佳模型,并且它将打印它见证的所有模型,然后是最佳模型。我认为这可以解释为什么answer1
在我原来的问题中被打印了两次。
在输出中,我认为Models
是证人总数(包括打印两次的第一个最优模型)。Optimal
是找到的最优模型的数量。
我通过观察这个例子的输出进行了观察
clingo --opt-mode=OptN asp/_all.lp asp/examples/scatter.lp
看看最后如何Optimization
减少和打印两个最佳模型。