Main Content

[最適化] ライブ エディター タスク

[最適化] ライブ エディター タスクとは

[最適化] ライブ エディター タスクでは、fminbndfminsearchfzero、および lsqnonneg ソルバーのビジュアル インターフェイスが提供されます。タスクを開始するには、[新規ライブ スクリプト] ボタンをクリックします。次に、[挿入] タブをクリックし、[タスク]、[最適化] を選択します。

Optimize Live Editor task.

非線形多変数関数の最小化

この例では、関数 f(x,y)=100(yx2)2+(ax)2 を最小化する方法を説明します。ここで、[最適化] ライブ エディター タスクを使用して、変数 a = π とします。

類似の最適化問題を説明したビデオについては、How to Use the Optimize Live Editor Task を参照してください。

  1. [ホーム] タブの [ファイル] セクションで、[新規ライブ スクリプト] ボタンをクリックします。

  2. [最適化] ライブ エディター タスクを挿入します。[挿入] タブをクリックし、次に [コード] セクションで [タスク]、[最適化] を選択します。

    Insert task Optimize

  3. 問題データの入力に使用するために [セクション区切り] ボタンをクリックします。タスクの上と下に新しいセクションが表示されます。

  4. [最適化] タスクの上のセクションで、次のコードを入力します。

    a = pi;
    x0 = [-1 2];
  5. これらの変数をワークスペースに配置するために、Ctrl + Enter キーを押します。

  6. タスクの [問題の種類の指定] セクションで、[目的]、[非線形] ボタンと [制約]、[制約なし] ボタンをクリックします。タスクに推奨ソルバーとして fminsearch が表示されます。

    メモ

    Optimization Toolbox™ を所有している場合、この時点での推奨ソルバーは異なっています。fminsearch を選択して、例を続けてください。

  7. [問題のデータの選択] セクションで、[目的関数]、[ローカル関数] を選択し、次に [新規] ボタンをクリックします。タスクの下の新しいセクションに関数スクリプトが表示されます。結果として得られるコードを編集して、次の行をコメント化しない状態で含めます。

    function f = objectiveFcn(optimInput,a)
    x = optimInput(1);
    y = optimInput(2);
    f = 100*(y - x^2)^2 + (a - x)^2;
    end
  8. [問題のデータの選択] セクションで、ローカル関数として objectiveFcn を選択します。

  9. [問題のデータの選択] セクションの [関数入力] で、[最適化入力]、[optimInput] および [固定入力: a]、[a] を選択します。

    Local function objectiveFcn, optimization input optimInput, fixed input a

  10. [初期点 (x0)]、[x0] を選択します。

  11. [進行状況の表示] セクションで、プロットに対し [目的値] を選択します。

  12. ソルバーを実行するには、タスク ウィンドウの右上にあるオプション ボタン [⁝] をクリックし、[セクションの実行] を選択します。

    Run Section

    次のプロットが表示されます。

    Plot showing values decreasing from 120 to 4e-11 in fewer than 150 iterations

  13. 解の点を確認するには、[最適化] タスクの上部を参照します。

    Variables solution and objectiveValue are returned

    変数 solution と変数 objectiveValue がワークスペースに返されます。それらの値を表示するには、タスクの下にセクション区切りを挿入し、次のコードを入力します。

    disp(solution)
    disp(objectiveValue)
  14. Ctrl+Enter キーを押してセクションを実行します。

    disp(solution)
        3.1416    9.8696
    disp(objectiveValue)
       3.9946e-11

スカラー方程式の求解

この例では、[最適化] ライブ エディター タスクを使用して、cos(x) = x となる点 x を求める方法を説明します。

  1. [ホーム] タブの [ファイル] セクションで、[新規ライブ スクリプト] ボタンをクリックします。ライブ スクリプトに次のコード行を入力します。

    fun = @(x)cos(x) - x;
    x0 = 0;

    1 行目は、cos(x) = x となる点 x で 0 の値をとる無名関数 fun を定義しています。2 行目は、fzero が求解を開始する初期点 x0 = 0 を定義しています。

  2. Ctrl+Enter キーを押して、これらの変数を MATLAB® ワークスペースに配置します。

  3. [最適化] ライブ エディター タスクを挿入します。[挿入] タブをクリックし、次に [コード] セクションで [タスク]、[最適化] を選択します。

  4. タスクの [問題の種類の指定] セクションで、[ソルバー]、[fzero] を選択します。

  5. [問題のデータの選択] セクションで、[目的関数]、[関数ハンドル] を選択し、次に [fun] を選択します。[初期点 (x0)]、[x0] を選択します。

    fzero with choices made

  6. [進行状況の表示] セクションで、プロットに対し [目的値] を選択します。

    Plot function is Objective value.

  7. Ctrl+Enter キーを押してソルバーを実行します。

    Plot of solution process, seven iterations with final five all nearly zero.

  8. 解の値を確認するには、[挿入] タブの [セクション区切り] ボタンをクリックして、タスクの下に新しいセクションを挿入します。新しいセクションで、solution と入力して Ctrl+Enter キーを押します。

    solution
    solution = 0.7391

参考

| |

関連するトピック