第13章 スコア計算パフォーマンスのコツ
ソルバーの実行時間のほとんどは、ソルバーの最も深いループで呼び出されるスコア計算の実行に関係します。スコア計算が高速化すると、同じアルゴリズムでより短い時間で同じソリューションが返されます。通常、これにより、同じ時間内でより良い解決策が提供されます。スコア計算のパフォーマンスを向上させるには、次のテクニックを使用します。
13.1. スコア計算速度
スコア計算を改善するときは、最高のスコアを最大化するのではなく、スコア計算速度を最大化することに重点を置きます。スコア計算が大幅に改善されても、たとえばアルゴリズムがローカルオプティマまたはグローバルオプティマに陥っている場合など、最高スコアの改善がほとんど、またはまったく起こらない場合があります。代わりに計算速度に注目すると、スコア計算の改善がより顕著に現れます。
1 秒あたりのスコア計算速度は、スコア計算以外の実行時間の影響を受けますが、スコア計算パフォーマンスの信頼できる測定値となります。結果は、問題データセットの問題の規模によって異なります。通常、EasyScoreCalculator
クラスを使用しない限り、大規模な問題であっても、1 秒あたりのスコア計算速度は 1000
を超えます。
計算速度を監視することで、スコア制約を削除または追加し、最新の計算速度と元の計算速度を比較できます。
最高のスコアを元の最高のスコアと比較することは無意味です。リンゴとオレンジを比べるようなものです。