2

複雑なスケジューリング問題の解を計算するために、Java の制約プログラミング ソルバーである 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 を使用しています

4

1 に答える 1

1

まず、検索を行うときは、検索の結果 (真/偽) を確認する必要があります。結果が false の場合、モデルに一貫性がなく、ストアは未定義の状態です。あなたの問題に当てはまるかもしれません。

于 2016-08-05T12:57:32.313 に答える