Я использую JaCoP - решатель программирования ограничений для Java - для вычисления решения сложной задачи планирования. Теперь я столкнулся с проблемой, что найденное решение неверно.Сопряжение программирования Solver Решение JaCoP найдено, но сохраняет несоответствие
Я навязывание следующего ограничения:
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
Некоторые решатели сталкиваются с трудностями при переполнении целых чисел/потоках при определенных проблемах. Вы можете столкнуться с этим. – TLW