↑ページトップへ

OpenMDAO ではじめる最適化 (3/4)

OpenMDAO 0.9.5

GUIからの操作例

まずGUIを使用した操作例を見ていく。

GUIの起動、プロジェクト作成

  1. GUIの起動
    以下のコマンドでウェブブラウザベースのGUIが起動する。
    C:\OpenMDAO\openmdao-0.9.5>Scripts\activate
    (openmdao-0.9.5) C:\OpenMDAO\openmdao-0.9.5>openmdao gui
  2. GUIが起動したらまず新しいプロジェクトを作成する
    WelcomeToOpenMDAO
  3. プロジェクト名、説明、バージョンを設定(英数字)し、「New Project」をクリック
    NewProject
  4. スタート画面が表示される
    StartWindow

コンポーネントの作成

  1. 「Files」タブの「File」をクリックし、「New File」から「Paraboloid.py」というファイルを作成する
    CreateComponent1
  2. 作成された「Paraboloid.py」を右クリックして「Edit File」を選択
    CreateComponent2
  3. コンポーネントのPythonスクリプトを書き込み
    CreateComponent4
    書き込み内容は以下のとおり(日本語文字不可)
    スクリプトの内容については後ほど「スクリプトからの操作例」で説明する。
    from openmdao.main.api import Component
    from openmdao.lib.datatypes.api import Float

    class Paraboloid(Component):
            """ f(x,y) = (x-3)^2 + xy + (y+4)^2 - 3 """
            # set up interface to the framework
            x = Float(0.0, iotype='in', desc='The variable x')
            y = Float(0.0, iotype='in', desc='The variable y')
            f_xy = Float(0.0, iotype='out', desc='F(x,y)')
           
            def execute(self):
                    """f(x,y) = (x-3)^2 + xy + (y+4)^2 - 3
                    Minimum : x = 6.6667; y = -7.3333
                    """
                    x = self.x
                    y = self.y
                    self.f_xy = (x-3.0)**2 + x*y + (y+4.0)**2 - 3.0

    「Save」で保存したら編集ウィンドウを閉じる。

アセンブリの追加

  1. 「Library」タブの「Assembly」をキャンバスにドラッグ&ドロップ
    AddAssembly1 ドラッグ&ドロップ
  2. アセンブリに名前をつけてOKをクリック
    AddAssembly2
  3. アセンブリが作成される
    AddAssembly3

ドライバーの追加

  1. 「Library 」タブの「SLSQPdriver 」をアセンブリ上の「driver 」にドラッグ&ドロップ
    AddDriver1 「driver 」にドラッグ&ドロップ
  2. 確認ダイアログが表示されるのでOKをクリック
    AddDriver2
  3. ドライバーがSLSQPdriverに置きかわる
    AddDriver3

コンポーネントの追加

  1. 「Library 」タブの自作コンポーネント「Paraboloid 」をアセンブリにドラッグ&ドロップ
    AddDriver1 「MyAssembly 」にドラッグ&ドロップ
  2. コンポーネントに名前をつけてOKをクリック
    AddComponent2
  3. コンポーネントが配置される
    AddComponent3

設計変数の範囲の設定

  1. ドライバーをダブルクリック
    InRangeSettings1
  2. 「Parameters 」タブを選択し、Add Parameterをクリック
    InRangeSettings2
  3. 設計変数(Target) 、最小値(Low) 、最大値(High)を入力し、OKをクリック。
    設計変数 MyParaboloid.x に対して最小値-50、最大値50を設定する。
    InRangeSettings3
  4. ドライバーの出力とコンポーネントの入力が接続される
    InRangeSettings4
  5. 同様にして設計変数 MyParaboloid.y に対して最小値-50、最大値50を設定する

目的関数の設定

  1. 次に「Objectives 」タブを選択し、「Add Parameter 」をクリック
    ObjectiveSettings2
  2. コンポーネントで定義した最適化する式を入力し、OKをクリック
    ObjectiveSettings3
  3. ドライバーの入力とコンポーネントの出力が接続される
    ObjectiveSettings4

設計変数の初期値設定

  1. コンポーネントをダブルクリック
    SetInitValues1
  2. 「Input 」タブを選択し、コンポーネントのプロパティ( x と y )に初期値 10 を設定
    SetInitValues2

計算の実行と結果確認

  1. ドライバーを右クリックし、「Run 」をクリックして計算を開始
    Run
  2. 計算状況はウィンドウ下部のメッセージウィンドウに表示される。
    計算結果はウィンドウ右部の「Properties 」タブ、または初期値設定と同じダイアログで確認可能。
    CheckResult

保存と終了

「Project」タブの以下のメニューでプロジェクトの保存と終了が可能
  • Commit : 保存
  • Close : プロジェクトの終了(プロジェクトリストへ移動)
  • Exit : GUIの終了
SaveAndClose

最後に以上のGUI操作と同じことをPythonスクリプトを使っておこなった場合を見ていく。

1 2 3 4