logfile.log

logfile.logは最適化エンジンによって生成され、最適化の実行で発生している一連のイベントを記録します。この記録は、最適化のクラッシュをトラブルシューティングする際に効果的です。

以下の3種類のロガーがlogfileに情報を送信できます:
最適化エンジンによる送信
コスト関数または感度を評価するたびに、実行される処理を通知するログメッセージが最適化エンジンによって生成されます。このメッセージはmsolve.optimize.Optimizerで始まり、次のような内容を記述しています。


図 1.

このログメッセージには、反復計算の回数を示す数値、ログレベル(メッセージの重要度)、およびイベント自体が記述されています。最適化が停止した場合、上記のメッセージがlogfileで確認できる最後のメッセージであれば、2回目の反復計算の開始前に問題が発生したことになります。

応答による送信
最適化エンジンで応答オブジェクトのコスト関数または感度が評価される前に、そのオブジェクトによって自身が評価されます。応答が評価されると、応答ロガーによってログメッセージが生成されます。応答クラスによって生成されるメッセージはmsolve.optimize.Responseで始まり、次のような内容を記述しています。


図 2.

このログメッセージには、反復計算の回数を示す数値、ログレベル(メッセージの重要度)、およびこの情報を生成した応答の名前と値が記述されています。最適化が停止した場合、上記のメッセージがlogfileで確認できる最後のメッセージであれば、現在の設計で応答の定義が正しくないか、応答を評価できないことを示しています(無効な設計である場合など)。

OptimizerValidatorによる送信
MotionSolveで無効な設計に最適化エンジンが到達した場合は、OptimizerValidatorからlogfileにメッセージが送信されます。このメッセージは、次のようにmsolve.optimize.Optimizer.OptimizerValidatorで始まり、その後にエラーまたは警告のメッセージが続きます。


図 3.

上記のメッセージが、最適化がクラッシュする前にlogfileから得られた最後のメッセージである場合、モデルが物理的に無効になる領域に最適化エンジンが到達したことを示しています。この問題を解決するには、Dv.blimitを厳しくするか、制約条件を追加します。