我有以下代码:
1{p(1..10)}10.
:- p(I*2).它显示了31个答案,但我只需要最大子集p(1) p(3) p(5) p(7) p(9).,我怎么做呢?

发布于 2022-05-12 11:38:36
你在寻找一个优化。最简单的修复方法是添加
#maximize{I:p(I)}.结果是
Solving...
Answer: 1
p(9)
Optimization: -9
Answer: 2
p(5) p(9)
Optimization: -14
Answer: 3
p(7) p(9)
Optimization: -16
Answer: 4
p(5) p(7) p(9)
Optimization: -21
Answer: 5
p(1) p(5) p(7) p(9)
Optimization: -22
Answer: 6
p(3) p(5) p(7) p(9)
Optimization: -24
Answer: 7
p(1) p(3) p(5) p(7) p(9)
Optimization: -25
OPTIMUM FOUND不要担心负分数,clingo将#maximize转换为#minimize,因此否定。那么#maximize{I:p(I)}.是做什么的呢?通常,您希望在I上最大化所有p(I),在本例中,这是I之和。只要数一数
#maximize{1,I:p(I)}.结果是
Answer: 1
p(9)
Optimization: -1
Answer: 2
p(5) p(9)
Optimization: -2
Answer: 3
p(5) p(7) p(9)
Optimization: -3
Answer: 4
p(3) p(5) p(7) p(9)
Optimization: -4
Answer: 5
p(1) p(3) p(5) p(7) p(9)
Optimization: -5
OPTIMUM FOUNDhttps://stackoverflow.com/questions/71785911
复制相似问题