Максимизировать интервал в clingo

#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)}.