В настоящее время я пишу программу 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)
.
1 ответ
Может быть, вы могли бы поделиться своей командой при выполнении 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
Не уверен, что это то, что вы хотите. Вы также можете обратиться к руководству clingo относительно параметра --opt-mode
:
--opt-mode=mode Настройте обработку операторов оптимизации. Доступные значения для mode:
opt Вычислить оптимальную модель (требуется --models=0).
enum Перечислить модели со стоимостью меньше или равной некоторой фиксированной границе (ср. --opt-bound).
optN Вычислить оптимум, а затем перечислить оптимальные модели.
игнорировать Игнорировать любые операторы оптимизации во время вычислений.
Похожие вопросы
Новые вопросы
answer-set-programming
Настройка ответа Программирование - это декларативная парадигма программирования, которая может решать сложные проблемы поиска. Он основан на стабильной модели (набор ответов) семантика логического программирования. В отличие от традиционных языков программирования, мы не даем пошаговые инструкции в настроек ответа на программирование. Это нечто большее, что это то, что я хочу, теперь вы тренируетесь, как это сделать.