У меня есть большая логическая формула для решения, из-за редактирования я должен вставить изображение здесь:
Кроме того, у меня уже есть функция area
для измерения размера 4 целых чисел: area(c,d,e,f)=|c−d|×|e−f|
Я хотел бы сделать больше, чем просто выяснить, выполнима ли формула: я ищу оптимальный набор из шести (a,b,c,d,e,f)
, который делает большую формулу TRUE
и area(c,d,e,f)
больше или равной размерности любого другого набора из шести, который также удовлетворяет формула.
Другими словами, найдите Max(area(c,d,e,f))
подчиненное большой формуле.
Мне интересно, может ли решатель SMT помочь в этой проблеме. Я узнаю, что Z3
поддерживает quantifiers
, и могу сказать, является ли логическое выражение выполнимым или нет. Но вопрос в том, может ли Z3
помочь найти оптимальное решение для функции area
.
У кого-нибудь есть идеи? Любые комментарии о SMT-решателе, Z3 или других алгоритмах будут оценены...