ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

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

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

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

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

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

手順 1: 目的関数のファイル objfun.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 を入力して、範囲 0.5x1 を設定します。

    • [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 default value of the function tolerance,
      and constraints are satisfied to within the default 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-005       1      -2.82     0.0664  Hessian modified twice  
       6    21         2  -5.327e-009       1      -2.81   0.000522  Hessian modified twice  
    
    Local minimum found that satisfies the constraints.
    
    Optimization completed because the objective function is non-decreasing in 
    feasible directions, to within the default value of the function tolerance,
    and constraints are satisfied to within the default value of the constraint tolerance.
    
    Active inequalities (to within options.TolCon = 1e-006):
      lower      upper     ineqlin   ineqnonlin
                                         3
                                         4
この情報は役に立ちましたか?