HS-1050: 外部Rosenbrock関数の最小化
ComposeまたはPythonを用いて2D Rosenbrock関数を最適化する方法について学習します。
本チュートリアルは、xおよびyとラベル付けされた2つの設計変数を定義します。
最適化の目的は、 f(x,y)= 100*(y-x^2)^2 + (1-x)^2 を最小にすることです。xとyの範囲は[-2 ; -2]、開始ポイントは[-1 ; -1]に設定されます。
スタディのセットアップの実行
- HyperStudyを開始します。
-
以下の方法で新規スタディを開始します:
- メニューバーから、 をクリックします。
- リボン上で
をクリックします。
- Add Study(スタディの追加)ダイアログでスタディの名前を入力し、スタディの場所を選んでOKをクリックします。
- Define Models(モデルの定義)ステップに進みます。
-
パラメータ化ファイルモデルを1つ追加します。
-
Import Variables(変数のインポート)をクリックします。
2つの入力変数が.tplファイルからインポートされます。
- Define Input Variables(入力変数の定義)ステップに進みます。
-
入力変数の下限値、初期値、上限値を、図 2内に示す数値に変更します。
図 2.
ベースランの実行
- Test Models(モデルをテスト)ステップに進みます。
-
Run Definition(計算実行)をクリックします。
スタディのDirectory(ディレクトリ)内に、approaches/setup_1-def/ディレクトリが作成されます。approaches/setup_1-def/run__00001/m_1には、ベースランの結果である入力ファイルが含まれます。
出力応答の作成と評価
このステップでは出力応答を1つ生成します。
- Define Output Responses(出力応答の定義)パネルに進みます。
- Directory(ディレクトリ)から、approaches/setup_1-def/run__00001/m_1にあるrosenbrock.resファイルをワークエリアにドラッグ&ドロップします。
- File Assistant(ファイルアシスタント)ダイアログで、Reading technology(読み取り技術)をAltair® HyperWorks®にセットし、Next(次)をクリックします。
- Single Item in a Time Series(タイムシリーズの単一アイテム)を選択し、Next(次)をクリックします。
-
以下のオプションを定義し、Next(次)をクリックします。
- TypeをUnknownにセットします。
- RequestをBlock 1にセットします。
- ComponentをColumn 1にセットします。
図 3.
- オプション: データソースと出力応答のラベルを入力します。
-
Expression(式)をFirst Element(最初の要素)にセットします。
式がm_1_ds_1[0]に変わります。
-
Finish(終了)をクリックします。
図 4.
出力応答1がワークエリアに追加されます。 -
Evaluate(評価)をクリックします。
式m_1_ds_1[0]の値は404.0となるはずです。
最適化の実行
-
Optimization(最適化)を追加します。
- Explorer(エクスプローラ)内で右クリックし、コンテキストメニューからAdd(追加)を選択します。
- Add(追加)ダイアログでOptimization(最適化)を選択します。
- Definition from(定義元)に、Setup(セットアップ)を選択しOKをクリックします。
- ステップに進みます。
- Objectives/Constraints - Goals(目的 / 制約条件 - 目標)タブをクリックします。
-
Response 1に目的関数を追加します。
- Add Goal(目標を追加)をクリックします。
- Type (タイプ)列に、Minimizeを選択します。
図 5.
- ステップに進みます。
-
ワークエリア内でModes(モード)をAdaptive Response Surface Method (逐次更新型応答曲面法)(ARSM)にセットします。
注: 問題の定式化に有効な手法のみが使用可能です。
- Apply(適用)をクリックします。
- Evaluate(評価)ステップに進みます。
- Evaluate Tasks(計算実行)をクリックします。
- オプション:
Iteration Plot(反復計算プロット)タブをクリックし、最適化の進捗を確認します。
反復計算履歴は、目的関数値の大きな減少を示しています。Rosenbrock関数は、真の最適の領域での平坦さのため、いかなる最適化エンジンにおいても探し出すのが困難であるグローバルの最小値を有しており、ARSMは (x,y)=(1,1)における理論解を見つけていません。
図 6.