複雑なスケジューリング問題の解を計算するためにJaCoP(Javaの制約プログラミングソルバ)を使用しています。今私は解決策が正しいとは言えないという問題に直面しています。ソルバーが解決策を見つけた検索終了後制約プログラミングソルバJaCoP解が見つかりましたが、一貫性がありません
store.impose(new XplusYeqZ(start, duration, cipStart));
が、残念ながら解決策は、上記の制約に違反し、明らかに間違っている:
私は、次の制約を課すています。
私は検索を開始する前にconsistency()
でストアの一貫性をチェックしていますが、それはtrue
を返しますが、検索後にはfalse
を返します。
Iは、検索後にストアのすべての制約を反復処理し、満足している場合、このコードを使用して印刷:
store.getConstraints().forEach(constraint -> {
System.out.println(constraint.id() + " " + constraint.satisfied());
});
方法は、上記制約にfalse
を返さ。
私の質問です:正しい解決策のためにすべての制約が満たされなければならない理由は論理的な説明ですか?私は何か見落としていますか?
補遺:あなたが検索の結果(真/偽)を確認する必要があります検索しないとき、私は、JaCoPは4.4.0
一部のソルバーでは、特定の問題で整数オーバーフロー/アンダーフローが発生することがあります。あなたはこれを打つかもしれません。 – TLW