2016-07-13 7 views
2

Я использую 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

+1

Некоторые решатели сталкиваются с трудностями при переполнении целых чисел/потоках при определенных проблемах. Вы можете столкнуться с этим. – TLW

ответ

1

Во-первых, когда вы поиск, вы должны проверить результат (истина/ложь) поиска. Если результат неверен, модель несовместима, и хранилище находится в неопределенном состоянии. Это может быть в вашей проблеме.

+0

Вы хотите проверить возвращаемое значение 'labeling' после поиска? Я делаю это, и возвращаемое значение «true». Или вы имеете в виду что-то другое? –