как показать всем максимальный результат в 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 Игнорировать любые операторы оптимизации во время вычислений.

Другие вопросы по тегам