0

私はまだ OptaPlanner を使用して、VehicleRoutingExample に似た連鎖計画の問題を最適化しています。私の計画エンティティには、別の計画エンティティである計画変数があります。スコアは HardSoftScores です。

実行時の問題を解決するために IncrementalScore を初期化しましたが、何かが正しく機能しておらず、その理由を見つけることができませんでした。(デバッグ、system.out… ect. ...)

問題は、Solver が IncrementalScore を使用してテスト データセットの実行可能なソリューションを作成しないことです。ソルバーが EasyScore を使用して作成したため、実行可能な解を見つけることができることがわかっています。

EasyScore によって作成された最適解は、次のスコアを与えてくれます: (0hard/-151763soft) IncrementalScore が解いているとき、いくつかの奇妙な値が得られます。

Solver.getBestsolution().getScore() によって与えられるスコアは (-25hard/-207111soft) です。追加の IncrementalScoreCalculator をインスタンス化し、bestSolution のスコアを計算させると、値 (-34hard/-207111soft) が得られます。解決策を確認したところ、最初の値は間違っているだけで、2 番目の値は「正しい」(ただし実行可能ではありません) ことがわかりました。

誰かが間違いがどこにあるのか考えていますか? または、理由を見つける他の方法はありますか?

4

1 に答える 1

1

マニュアルの「5.3.6. 無効なスコアの検出」の章を参照して、簡易スコア計算とインクリメンタル スコア計算がいつ同期されなくなるかを確認してください。

<environmentMode>FULL_ASSERT</environmentMode>
...
<scoreDirectorFactory>
  <scoreDefinitionType>...</scoreDefinitionType>
  <incrementalScoreCalculatorClass>...IncrementalScoreCalculator</incrementalScoreCalculatorClass>
  <assertionScoreDirectorFactory>
    <easyScoreCalculatorClass>...EasyScoreCalculator</easyScoreCalculatorClass>
  </assertionScoreDirectorFactory>
</scoreDirectorFactory>

次に、両方の実装の制約タイプをコメントアウトして、異なる方法で実装されている制約に焦点を合わせます。無効に計算されているハード制約の 1 つであるようです。

于 2014-10-24T13:31:11.487 に答える