13.11. スコアの説明
OptaPlanner スコアがどのように生成されるかを示す方法はいくつかあります。これをスコアの説明といいます。
-
getSummary()の戻り値を出力します。これは開発中にスコアを説明する最も簡単な方法ですが、この方法は診断目的でのみ使用します。 -
アプリケーションまたは Web UI で
ScoreManagerAPI を使用します。 より詳細なビューを得るために、各制約のスコアを分析します。
手順
スコアを説明するには、次のいずれかの方法を使用します。
getSummary()の戻り値を出力します。System.out.println(scoreManager.getSummary(solution));
System.out.println(scoreManager.getSummary(solution));Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の会議スケジュールの例では、会議
S51がSpeaker required room tagというハード制約を破る原因であることを出力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要この文字列を解析したり、UI や公開サービスで使用したりしないでください。代わりに、ConstraintMatch API を使用してください。
アプリケーションまたは Web UI で
ScoreManagerAPI を使用します。次の例のようなコードを入力します。
ScoreManager<CloudBalance, HardSoftScore> scoreManager = ScoreManager.create(solverFactory); ScoreExplanation<CloudBalance, HardSoftScore> scoreExplanation = scoreManager.explainScore(cloudBalance);
ScoreManager<CloudBalance, HardSoftScore> scoreManager = ScoreManager.create(solverFactory); ScoreExplanation<CloudBalance, HardSoftScore> scoreExplanation = scoreManager.explainScore(cloudBalance);Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソリューションのスコアを計算する必要がある場合は、このコードを使用します。
HardSoftScore score = scoreExplanation.getScore();
HardSoftScore score = scoreExplanation.getScore();Copy to Clipboard Copied! Toggle word wrap Toggle overflow
スコアを制約ごとに分類します。
ScoreExplanationからConstraintMatchTotal値を取得します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各
ConstraintMatchTotalは 1 つの制約を表し、全体のスコアの一部です。すべてのConstraintMatchTotal.getScore()の合計が全体のスコアと等しくなります。注記制約ストリームと Drools スコア計算は制約一致を自動的にサポートしますが、Java インクリメント演算子によるスコア計算には追加のインターフェイスを実装する必要があります。