Clingo 打印重复的答案?

Clingo Printing Duplicated Answers?

我无法解释下面的 clingo v 5.2.2 输出:

为什么 clingo 打印了两次 answer1?我检查过这两个 answer1 完全一样。

我在我的代码中使用 optimization。这可能是问题所在吗?

我设置了 test repo。上面的输出可以通过 运行 测试库中的以下行生成。

clingo --opt-mode=OptN examples/swap-shift.lp

这是我现在的理解:使用 --opt-mode=OptN 选项,clingo 将尝试多个模型,直到找到所有最优模型,然后打印它所见证的所有模型,然后是最优模型。我认为这可以解释为什么 answer1 在我原来的问题中被打印了两次。

在输出中,我认为 Models 是见证总数(包括打印两次的第一个最优模型)。 Optimal 是找到的最佳模型的数量。

我通过观察 this example

的输出进行了观察
clingo --opt-mode=OptN asp/_all.lp asp/examples/scatter.lp

看看Optimization是如何减少的,​​最后打印出两个最优模型

在寻找最佳答案集时,clingo 会打印出比之前找到的答案集更好的每个答案集。 如果找不到更好的答案集,这意味着最后一个答案集的最优性已经被证明。 如果您使用了 optN 模式,则 clingo 会枚举具有该最佳成本的所有答案集。这将再次找到找到的第一个最佳答案集。

我个人不知道如何从命令行只打印最佳答案集,并且每个答案集只打印一个。使用 Python API.

可以实现这样的行为