Пролог ручная или нестандартная маркировка
В настоящее время я пишу решатель для проблемы планирования этажа в Прологе и у меня есть некоторые проблемы с частью маркировки.
В настоящее время проблема заключается в том, что мои ограничения опубликованы, но когда я запускаю маркировку, на поиски решения уходит целая вечность. Я хотел бы привести некоторые эвристики.
У меня вопрос, как я могу вручную пометить мои переменные? Я боюсь, что после определения переменной clpfd, как это:
X in Xinf..Xsup
и ограничивая его, если я сделаю что-то вроде:
fd_sup(X, Xmax),
X = Xmax,
...
в моей пользовательской метке я не буду использовать возможность возврата назад Пролога для проверки других значений домена X. Я ошибся ?
Кроме того, есть ли более умный способ маркировки моих переменных, чем написание пользовательских процедур маркировки? Моя идея эвристики состоит в том, чтобы альтернативно попробовать экстремумы переменной области (например, max (X), min (X), max (X-1), min (X-1) и т. Д.)
Надеюсь, вы можете помочь мне :)