как показать всем максимальный результат в clingo при использовании maximize?
Сейчас я пишу программу asp. когда я комментирую строку #maximize{S:ce(S)}. в программе ответ выглядит следующим образом
опустите ответы с 1 по 6.
Ответ: 7 обзор (харрис, английский) обзор (бен, математика) обзор (бен, китайский) обзор (ник, математика) обзор (бен, английский) обзор (ник, китайский) ce(4)
Ответ: 8 обзор (харрис, английский) обзор (бен, математика) обзор (бен, китайский) обзор (ник, математика) обзор (ник, английский) обзор (ник, китайский) ce(4)
УДОВЛЕТВОРЕННЫЙ
в котором ответ 7 и ответ 8 имеют одинаковое значение CE, равное 4.
когда я раскомментирую строку #maximize{S:ce(S)}. ответ показывает следующее
Ответ: 1 обзор (бен, китайский) обзор (ник, математика) ce(2) обзор (харрис, математика) обзор (бен, английский) обзор (ник, английский) обзор (ник, китайский) Оптимизация: -2
Ответ: 2 обзор (харрис, английский) обзор (бен, математика) обзор (бен, китайский) ce(3) обзор (харрис, математика) обзор (ник, английский) обзор (ник, китайский) Оптимизация: -3
Ответ: 3 обзор (харрис, английский) обзор (бен, математика) обзор (бен, китайский) обзор (ник, математика) ce(4) обзор (ник, английский) обзор (ник, китайский) Оптимизация: -4
ОПТИМАЛЬНЫЙ НАЙДЕН
есть только один результат 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 Настроить обработку операторов оптимизации. Доступные значения для режима:
opt Вычислить оптимальную модель (требуется --models=0).
enum Перечислить модели со стоимостью меньше или равной некоторой фиксированной границе (см. --opt-bound).
optN Вычислить оптимум, а затем перечислить оптимальные модели.
ignore Игнорировать любые операторы оптимизации во время вычислений.