-1

我目前正在编写一个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 的ce值相同4

当我取消注释该行时#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)

4

1 回答 1

2

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

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)and 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

不确定这是否是您想要的。您不妨参考 cligo 指南,了解关于 的参数--opt-mode

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

opt计算最优模型(需要 --models=0)。

enum枚举成本小于或等于某个固定界限的模型(参见 --opt-bound)。

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

ignore在计算期间忽略任何优化语句。

于 2019-12-12T08:17:38.333 回答