使用最大化时如何在 Clingo 中显示所有最大结果?



我目前正在编写一个asp程序。 当我在程序中#maximize{S:ce(S)}.注释行时,答案如下所示

omit the Answer 1 to 6.
Answer: 7
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(ben,english) review(nick,chinese) **ce(4)**
Answer: 8
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(nick,english) review(nick,chinese) **ce(4)**
SATISFIABLE

其中答案 7 和答案 8 具有相同的ce4

当我取消注释该行时,#maximize{S:ce(S)}.答案如下所示

Answer: 1
review(ben,chinese) review(nick,math) ce(2) review(harris,math) review(ben,english) review(nick,english) review(nick,chinese)
Optimization: -2
Answer: 2
review(harris,english) review(ben,math) review(ben,chinese) ce(3) review(harris,math) review(nick,english) review(nick,chinese)
Optimization: -3
Answer: 3
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) **ce(4)** review(nick,english) review(nick,chinese)
Optimization: -4
OPTIMUM FOUND

ce(4)只有一个结果,但我想得到ce最大值的所有结果,我应该怎么做才能得到值为ce(4)的两个结果。

也许您可以在执行 clingo 时共享您的命令。我简化了您的程序,因为我不知道您正在编码的问题。

review(harris,english).
review(ben,math).
review(ben,chinese).
review(nick,math).
review(ben,english) | review(nick, english). % miss one in your problem
review(nick,chinese).
ce(4).
#maximize{S:ce(S)}. 

基本上,问题的缺失条件是review(ben,english)review(nick, english)的枚举 .

如果使用命令clingo 0 filename.lp执行,则输出将仅生成一个答案集:

Answer: 1
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(nick,chinese) ce(4) review(ben,english)
Optimization: -4
OPTIMUM FOUND

与您的尝试类似,如果我评论最后一行,将显示两个答案集:

Answer: 1
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(nick,chinese) ce(4) review(ben,english)
Answer: 2
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(nick,chinese) ce(4) review(nick,english)
SATISFIABLE

但是,如果您取消注释最后一行并在原始命令后添加--opt-mode=optN,则输出将为:

Answer: 1
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(nick,chinese) ce(4) review(ben,english)
Optimization: -4
Answer: 1
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(nick,chinese) ce(4) review(ben,english)
Optimization: -4
Answer: 2
review(harris,english) review(ben,math) review(ben,chinese) review(nick,math) review(nick,chinese) ce(4) review(nick,english)
Optimization: -4
OPTIMUM FOUND

不确定这是否是您想要的。您不妨参考有关--opt-mode参数的 clingo 指南:

--

opt-mode=mode配置优化语句的处理。模式的可用值包括:

选择计算最优模型(需要 --models=0(。

枚举枚举成本小于或等于某个固定边界的模型 (参见 --选择绑定(。

optN计算最优值,然后枚举最优模型。

忽略在计算过程中忽略任何优化语句。

最新更新