最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

lsqlin ソルバーを使用した最適化アプリ

問題

この例では、最適化アプリを使用して制約付き最小二乗問題を解く方法を示します。

メモ

最適化アプリは、将来のリリースで削除される予定です。

この例の問題は、x1 + 2x2 + 4x3 = 7 の面上にある原点に最も近い点を見つけます。この問題を解く最も簡単な方法は x = (x1,x2,x3) の面上の点から原点への距離を二乗したものを最小化することです。これは実際の距離を最小化した場合と同じ最適点を出力します。任意の点 (x1,x2,x3) から原点への距離の二乗は x12+x22+x32 になるため、問題は以下のように記述できます。

minxf(x)=x12+x22+x32,

制約は以下になります。

x1 + 2x2 + 4x3 = 7.

関数 f(x) は "目的関数" と呼ばれ、x1 + 2x2 + 4x3 = 7 "等式制約" と呼ばれます。より複雑な問題では、他の等式制約、不等式制約、上限または下限の制約を含むことがあります。

問題の設定

この節では、最適化アプリで [lsqlin] ソルバーを用いて問題を設定する方法を示します。

  1. コマンド ウィンドウで「optimtool」と入力し、最適化アプリを起動します。

  2. ソルバーの選択から [lsqlin] を選択します。[Interior point] アルゴリズムを使用します。

  3. 目的関数の変数を作成するために以下を入力します。

    • [C] フィールドに eye(3) を入力します。

    • [d] フィールドに zeros(3,1) を入力します。

    [C][d] フィールドは以下の図のようになります。

  4. 等式制約の変数を作成するために以下を入力します。

    • [Aeq] フィールドに [1 2 4] を入力します。

    • [beq] フィールドに 7 を入力します。

    [Aeq][beq] フィールドは以下の図のようになります。

  5. 次の図のように [スタート] ボタンをクリックします。

  6. アルゴリズムを終了すると、[ソルバーを実行して結果を表示] の下に以下の情報が表示されます。

    • アルゴリズム終了時の [現在の反復] の値はこの例では 1 です。

    • アルゴリズム終了時の目的関数の最終値は以下になります。

      Objective function value: 2.333333333333334
    • 終了メッセージは以下になります。

      Minimum found that satisfies the constraints.
      
      Optimization completed because the objective function is non-decreasing in 
      feasible directions, to within the value of the optimality tolerance,
      and constraints are satisfied to within the value of the constraint tolerance.
    • この例の最終点は以下になります。

          0.333
          0.667
          1.333

関連するトピック