MV-3021:ショックアブソーバーの最適化

本チュートリアルでは、ショックアブソーバーについてMotionSolveのOptimization Wizardを使って最適化問題をセットアップする方法について学習します。

以下について習得します:
  • 設計変数としてSpringDamper要素の剛性と減衰を定義
  • タイプMaxValの応答を定義
  • 目的関数としての応答の使用
  • 最適化の実行と結果のポスト処理
概要
ショックアブソーバーは、質量m、線形剛性k、線形減衰係数cで自由度1のシステムとしてモデル化されます。 質量の速度は1 m/s、質量はm = 1 kg、過渡解析の終了時間は12秒を使用します。


図 1.
最適化の目的は、最大変位が1m未満で、時間間隔0~12sでの質量の最大加速度を最小化することです。これを達成するために、剛性kおよび減衰係数cが設計変数としてモデル化されます。感度の計算には、MotionSolveのFD(Finite Differencing: 有限差分)機能が使用されます。


設計変数の追加

このステップでは、最適化のための設計変数を追加します。

開始に先立ち、mbd_modeling\motionsolve\optimization\MV-3021にあるmv_3021_initial_impact_absorber.mdlファイルを自身の<作業ディレクトリ>にコピーします。

  1. MotionSolveで、mv_3021_initial_impact_absorber.mdlを開きます。
  2. ProjectブラウザModelを右クリックし、コンテキストメニューからOptimization Wizardを選択します。
  3. Design Variablesページの下で、Springsタブをクリックします。
  4. kcをSpringDamper 0の設計変数とします。モデルツリーのSpringDamperの下からkおよびcデータメンバーを選択し、Addをクリックします。


    図 2.
  5. 設計変数の上限および下限を、表 1に従って修正します:
    表 1.
    DV 下限値 上限値
    sd_0.k 0.2 1.0
    sd_0.c 0.2 1.0

応答変数の追加

このステップでは、最適化のための応答変数を追加します。

最適化の目的は、質量の変位を1.0未満にキープしながら、最大加速度を最小化することにあります。これを達成するために、2つの応答が作成されます:
  • 質量のz方向の最大加速度
  • 質量のz方向の最大変位
z方向の最大加速度の応答は目的関数を定義するために、z方向の最大変位は制約条件を定義するために使用されます。この2つの応答は共に、‘MaxVal’応答を用いて作成されます。この応答は、シミュレーション全体を通して、式の最大値を捕捉するために使用できます。‘MaxVal’応答の詳細は、‘Multibody Optimization User’s Guide’および‘MotionSolve User’s Guide’から得ることができます。

  1. Responsesページ上をクリックします。
  2. をクリックして、応答変数を追加します。デフォルトのラベルと識別子を保持し、OKをクリックします。
  3. 応答変数が作成されたら、Response Typeの下でMaxValを選択します。
  4. Response Expression欄に`ABS(ACCZ({b_0.cm.id},{m_0.id}))`と入力します(質量重心のACCZの絶対値)。
    Response Variableは、図 3に示すように見えるはずです:


    図 3.
  5. 再度これらの手順に従い、2つ目の'MaxVal'応答を作成します。Response Expressionには`ABS(DZ({b_0.cm.id},{m_0.id}))`を使用します。
    これで、必要な応答変数がすべて作成されました。完成したページは、図 4に示すように見えるはずです:


    図 4.

目的関数と制約条件の追加

ここで、目的関数と制約条件を問題に追加します。

この前のセクションで作成した応答を目的関数として使うことができます。

  1. Goalsページに進みます。Objectivesの下で、をクリックします。
    これで、応答rv_0で目的関数が追加されます。
  2. Weightに1.0を選択し、TypeはMinのままとします。
  3. Constraintsの下でをクリックし、作成された応答rv_0がrv_1となるよう修正します。
  4. 符号は'< ='のままとし、値に1.0と入力します。
    これは、rv_1の値が1.0未満となることを保証します。これで目的関数と制約条件が定義され、モデルを実行する準備が整いました。


    図 5.

最適化の実行

このステップでは、最適化を実行します。

  1. Solutionsページに進み、最適化の設定を指定して解析を実行します。
  2. Optimization Settingsをクリックします。
  3. DSA typeをFDに変更します。
    注: AUTOを選択するというオプションもあります。AUTOを選択すると、MotionSolveはシミュレーションタイプを検知し、感度を計算するための最良のアプローチを選択します。シミュレーションタイプはDynamicであるため、MotionSolveはFDを選択します。


    図 6.
  4. Save & Optimizeをクリックして最適化を開始します。

    最適化が実行されている間、総加重コストvs.反復計算数のプロットと制約値が別々のウィンドウに表示されます。

    最適化プロセスが完了すると、Solutionページ内のテキストウィンドウには最適化された設計変数値、応答の最終値および最適化されたコスト関数が表示されます。



    図 7.
    期待される設計変数の値は表 2に示すとおりです:
    表 2.
    RV/VD 期待される値 最適化エンジンからの値
    rv_0 0.5206 0.5206
    sd_0.k 0.3606 0.36003
    sd_0.c 0.4851 0.48569

ポスト処理

このステップでは、ショックアブソーバーの最適化の結果をポスト処理します。

  1. Review Resultsページに進みます。
    Summaryタブには、設計変数、応答および目的関数の値が表形式で反復計算毎にリストされます。このチュートリアルについては、最適設計変数は、最終反復計算5からのものとなっています。


    図 8.
  2. Plotタブをクリックし、設計変数、応答変数およびコスト関数の変動をグラフで可視化します。


    図 9.
  3. Animationタブをクリックし、反復計算中に生成されたコンフィギュレーションをアニメーション表示します。
  4. Iteration 5を選択してLoad Resultをクリックし、その反復計算からのH3Dファイルを読み込みます。
    /ボタンクリックして、アニメーションを開始 / 停止することができます。


    図 10.
    このタブからは、任意の反復計算に対応した状態のモデルのアーカイブをエクスポートすることも可能です。
  5. Archive Model Locationブラウザをクリックし、ファイルのパスを指定します。
  6. Export ボタンをクリックします。
    これで、モデルをオープン / 実行 / 最適化するのに必要なファイルがすべて含まれるアーカイブフォルダーが作成されます。設計変数値は、ユーザーが選択した反復計算番号の値に設定されます。