【发布时间】:2022-01-01 18:49:54
【问题描述】:
我目前正在努力解决以下问题: 让我们假设这个伪代码:
% Animal: ID, Type, Cost
animal (id1, dog, 300).
animal (id2, dog, 400).
animal (id3, dog, 600).
animal (id1, cat, 200).
animal (id2, cat, 400).
animal (id3, cat, 400).
animal (id1, fish, 20).
animal (id2, fish, 20).
animal (id3, fish, 20).
% Search the most expensive animals of each animal-type
most_expensive_animals(ID, Type, Cost) :- animal(ID, Type, Cost),
#max {X:animal(_, Type, X)} = Cost.
#show most_expensive_animals/3.
答案集是:
most_expensive_animals(id3,dog,600)
most_expensive_animals(id2,cat,400)
most_expensive_animals(id3,cat,400)
most_expensive_animals(id1,fish,20)
most_expensive_animals(id2,fish,20)
most_expensive_animals(id3,fish,20)
我想要实现的是一个规则,它只选择一种独立于 id 的动物类型(它也可以随机发生)。目标是,答案集如下:
most_expensive_animals(id3,dog,600)
most_expensive_animals(id2,cat,400)
most_expensive_animals(id1,fish,20)
此外,被踢出的解决方案应保存在另一个答案集中,如下所示:
alternative_most_expensive_animals(id3,cat,400)
alternative_most_expensive_animals(id2,fish,20)
alternative_most_expensive_animals(id3,fish,20)
我遵循了一些选择规则的方法,但没有成功。谁能进一步帮助我?
提前致谢!
【问题讨论】:
标签: answer-set-programming clingo