#logic-programming #answer-set-programming #clingo #gringo
#логическое программирование #набор ответов-программирование #clingo #гринго
Вопрос:
У меня есть следующий код clingo, который генерирует пространство поиска, за которым следуют ограничения.
{in(I,1..4)}=1 :- I=1..n.
:- [constraint1]
:- [constraint2]
Этот код работает. Но мне нужно, чтобы clingo нашел наибольшее значение n, для которого существует стабильная модель. Каков наилучший способ сделать это?
Ответ №1:
Немного более производительный вариант должен быть:
value(I) :- in(I,_).
value(I-1) :- value(I), I > 0.
#maximize {1,I : value(I)}.
Ответ №2:
Вы можете использовать агрегат #min для нахождения min n.
value(I) :- I = #min {I:in(I,X) }.
и используйте директиву #maximize, чтобы найти стабильные модели, в которых значение совокупного опыта больше.
#maximize {I: value(I)}.