2016-07-13 10 views
2

複雑なスケジューリング問題の解を計算するために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

+1

一部のソルバーでは、特定の問題で整数オーバーフロー/アンダーフローが発生することがあります。あなたはこれを打つかもしれません。 – TLW

答えて

1

まず使用しています。結果が偽の場合、モデルは矛盾し、ストアは未定義の状態になります。あなたの問題の場合があります。

+0

検索後に 'labeling'の戻り値をチェックすることを意味しますか?私はそれをしており、戻り値は 'true'です。それとも別の何かを意味するのですか? –

関連する問題