Menu Close
Settings Close

Language and Page Formatting Options

8.3. OptaPlannerソルバーのログレベルの変更

OptaPlannerソルバーのログレベルを変更して、ソルバーアクティビティを確認できます。次のリストは、さまざまなログレベルについて説明しています。

  • error:RuntimeExceptionとして呼び出し元のコードに throw されるエラーを除いて、エラーをログに記録します。

    エラーが発生した場合、OptaPlannerは通常は短時間で失敗します。呼び出し元のコードに詳細なメッセージを含むRuntimeExceptionのサブクラスをスローします。ログメッセージの重複を避けるために、エラーとしてログに記録されません。呼び出し元のコードがそのRuntimeExceptionを明示的にキャッチして排除しない限り、スレッドのデフォルトの `ExceptionHandlerはとにかくそれをエラーとしてログに記録します。その間、コードはさらに害を及ぼしたり、エラーを難読化したりすることで中断されます。

  • 警告:疑わしい状況をログに記録します
  • info: すべてのフェーズとソルバー自体をログに記録します
  • デバッグ:すべてのフェーズのすべてのステップをログに記録します
  • トレース:すべてのフェーズのすべてのステップのすべての動きをログに記録します
注記

トレースログを指定すると、パフォーマンスが大幅に低下します。ただし、トレースロギングは、ボトルネックを発見するための開発中に非常に重要です。

デバッグログでさえ、レイトアクセプタンスやシミュレーテッドアニーリングなどの高速ステッピングアルゴリズムではパフォーマンスが大幅に低下する可能性がありますが、タブーサーチなどの低速ステッピングアルゴリズムでは低下しません。

trace`とデバッグロギングの両方が、ほとんどのアペンダーでのマルチスレッド解決で輻輳を引き起こします。

Eclipseでは、コンソールへのデバッグログにより、スコア計算速度が1秒あたり10000を超える輻輳が発生する傾向があります。IntelliJもMavenコマンドラインもこの問題に悩まされていません。

手順

ロギングレベルをデバッグロギングに設定して、フェーズがいつ終了し、どのくらいの速さでステップが実行されるかを確認します。

次の例は、デバッグログからの出力を示しています。

INFO  Solving started: time spent (3), best score (-4init/0), random (JDK with seed 0).
DEBUG     CH step (0), time spent (5), score (-3init/0), selected move count (1), picked move (Queen-2 {null -> Row-0}).
DEBUG     CH step (1), time spent (7), score (-2init/0), selected move count (3), picked move (Queen-1 {null -> Row-2}).
DEBUG     CH step (2), time spent (10), score (-1init/0), selected move count (4), picked move (Queen-3 {null -> Row-3}).
DEBUG     CH step (3), time spent (12), score (-1), selected move count (4), picked move (Queen-0 {null -> Row-1}).
INFO  Construction Heuristic phase (0) ended: time spent (12), best score (-1), score calculation speed (9000/sec), step total (4).
DEBUG     LS step (0), time spent (19), score (-1),     best score (-1), accepted/selected move count (12/12), picked move (Queen-1 {Row-2 -> Row-3}).
DEBUG     LS step (1), time spent (24), score (0), new best score (0), accepted/selected move count (9/12), picked move (Queen-3 {Row-3 -> Row-2}).
INFO  Local Search phase (1) ended: time spent (24), best score (0), score calculation speed (4000/sec), step total (2).
INFO  Solving ended: time spent (24), best score (0), score calculation speed (7000/sec), phase total (2), environment mode (REPRODUCIBLE).

費やされた時間の値はすべてミリ秒単位です。

すべてがSLF4Jに記録されます。これは、すべてのログメッセージをLogback、Apache Commons Logging、Log4j、またはjava.util.loggingに委任する単純なログファサードです。選択したロギングフレームワークのロギングアダプタに依存関係を追加します。