ドキュメンテーション

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

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

この例では、線形と非線形の制約および範囲制約をもつ二次式を最小化するために、[fmincon] ソルバーと共に最適化アプリを使用する方法を示します。

メモ

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

以下を解く、[x1, x2] を探す問題を考えてみましょう。

minxf(x)=x12+x22

これは、以下の制約をもちます。

0.5x1(bound)x1x2+10(linear inequality)x12x22+109x12x22+90x12+x20x22+x10}(nonlinear inequality)

この問題の初期推定は x1 = 3 と x2 = 1 です。

手順 1: 目的関数のファイル objecfun.m を記述する

function f = objecfun(x)
f = x(1)^2 + x(2)^2;

手順 2: 非線形制約のファイル nonlconstr.m を記述する

function [c,ceq] = nonlconstr(x)
c = [-x(1)^2 - x(2)^2 + 1;
     -9*x(1)^2 - x(2)^2 + 9;
     -x(1)^2 + x(2);
     -x(2)^2 + x(1)];
ceq = [];

手順 3: 最適化アプリで問題を設定および実行する

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

  2. ソルバーの [fmincon] を選択し、[アルゴリズム] フィールドを Active set に変更します。

  3. objecfun.m ファイルを呼び出すために、[目的関数] フィールドに @objecfun を入力します。

  4. [開始点] フィールドに [3;1] を入力します。

  5. 制約を定義します。

    • [下限] フィールドに [0.5,-Inf] を入力して、範囲 0.5 ≤ x1 を設定します。-Inf エントリは x2 に下限がないことを意味します。

    • [A] フィールドに [-1 -1] を入力し、[b] フィールドに -1 を入力して、線形不等式制約を設定します。

    • [非線形制約関数] フィールドに @nonlconstr を入力して、非線形制約を設定します。

  6. 必要に応じて、[オプション] ペインで [コマンド ウィンドウに表示] を拡張し、[各反復] を選択して、各反復のアルゴリズム情報をコマンド ウィンドウに表示します。

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

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

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

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

      Objective function value: 2.0000000268595803
    • アルゴリズムの終了メッセージは以下になります。

      Local 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.
    • この例の最終点は以下になります。

          1
          1	
  9. 反復ごとにコマンド ウィンドウにアルゴリズムの情報が表示されます。

                                    Max     Line search  Directional  First-order 
     Iter F-count        f(x)   constraint   steplength   derivative   optimality Procedure 
        0      3           10            2                                         Infeasible start point
        1      6      4.84298      -0.1322            1        -5.22         1.74   
        2      9       4.0251     -0.01168            1        -4.39         4.08  Hessian modified twice  
        3     12      2.42704     -0.03214            1        -3.85         1.09   
        4     15      2.03615    -0.004728            1        -3.04        0.995  Hessian modified twice  
        5     18      2.00033   -5.596e-05            1        -2.82       0.0664  Hessian modified twice  
        6     21            2   -5.326e-09            1        -2.81     0.000522  Hessian modified twice  
    Active inequalities (to within options.ConstraintTolerance = 1e-06):
      lower      upper     ineqlin   ineqnonlin
                                         3
                                         4
    
    Local 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.

関連するトピック