Решение для ограниченного программирования Solver JaCoP найдено, но хранилище несовместимо
Я использую JaCoP - средство программирования ограничений для Java - для вычисления решения сложной задачи планирования. Теперь я сталкиваюсь с проблемой, что найденное решение не является правильным.
Я налагаю следующее ограничение:
store.impose(new XplusYeqZ(start, duration, cipStart));
После окончания поиска решатель нашел решение, но, к сожалению, решение явно неверное, нарушив приведенное выше ограничение.
Я проверяю соответствие магазина consistency()
прежде чем начать поиск, и он возвращается true
, но после поиска возвращается false
,
Я также перебрал все ограничения магазина после поиска и распечатал, если он удовлетворен, используя этот код:
store.getConstraints().forEach(constraint -> {
System.out.println(constraint.id() + " " + constraint.satisfied());
});
Возвращенный метод false
на ограничение выше.
Мой вопрос: есть ли логическое объяснение, почему не все ограничения должны быть выполнены для правильного решения? Я что-то пропускаю?
Приложение: я использую JaCoP 4.4.0
1 ответ
Во-первых, когда вы делаете поиск, вы должны проверить результат (true/false) поиска. Если результат равен false, модель не согласована и хранилище находится в неопределенном состоянии. Это может быть дело в вашей проблеме.