ドキュメンテーション

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

最適化アプリケーション

最適化アプリケーションの基礎

最適化アプリケーションを開く方法

最適化アプリケーションを開くには、コマンド ウィンドウで

optimtool

と入力します。以下の図のように、最適化アプリケーションが開きます。

最適化アプリケーションは MATLAB®[アプリケーション] タブから起動することもできます。

最適化アプリケーションのリファレンス ページには、関数 optimtool を起動するための他の方法が記載されています。

最適化アプリケーションの使用手順

以下は、最適化アプリケーションで最適化問題を設定し、結果を表示するための手順を要約したものです。

一時停止と停止

ソルバーの実行中は以下のことができます。

  • [一時停止] をクリックすると、アルゴリズムが一時的に停止します。[再開] をクリックすると、一時停止した時点から現在の反復情報を使ってアルゴリズムの計算を再開します。

  • [停止] をクリックすると、アルゴリズムが停止します。[ソルバーを実行して結果を表示] ウィンドウは、[停止] をクリックした時点の現在の反復情報を表示します。

アルゴリズムを停止した後の結果はエクスポートできます。詳細については、作業のエクスポート を参照してください。

結果の表示

ソルバーが終了すると、[ソルバーを実行して結果を表示] ウィンドウにアルゴリズムが終了した理由が表示されます。実行間の [ソルバーを実行して結果を表示] ウィンドウを消去するには、[結果のクリア] をクリックします。

表示結果の並べ替え-  ソルバーと問題により異なりますが、結果は表形式であることがあります。表に複数の行がある場合は、列の見出しをクリックして表を並べ替えます。見出しを再度クリックすると、並べ替えが逆になります。

たとえば、最適化アプリケーションを使用して、lsqlin ソルバーを使用した最適化アプリケーションで説明されている lsqlin 問題を解くとします。結果は以下のようになります。

結果を値別の昇順 (低から高へ) で並べ替える場合は、[値] をクリックします。結果は既にその順序で並んでいたので、変更しません。

結果を値別の降順 (高から低へ) で並べ替える場合は、[値] を再度クリックします。

元の順に戻す場合は、[インデックス] をクリックします。

Global Optimization Toolbox 関数 gamultiobj が返す表の並べ替えの例については、「Multiobjective Optimization with Two Objectives」を参照してください。

[ファイル]、[ワークスペースへエクスポート] を使用して結果をエクスポートする場合は、エクスポートされる結果は表示の並べ替え順に依存しません。

最終点

[最終点] を更新して、アルゴリズムが終了したときの最終点の座標を表示します。最終点が表示されない場合は、左下にある アイコンの上向き三角形をクリックしてください。

新規問題の開始

オプションのリセットと問題の消去-  [ファイル][最適化ツールのリセット] を選択して問題の定義とオプションをリセットし、元の既定値にします。このアクションはアプリケーションを終了して再起動することと等価です。

問題の定義のみを消去するには [ファイル][問題フィールドのクリア] を選択します。この動作により、選択されたソルバーとアルゴリズムを除いて、[問題の設定と結果] ペインのフィールドは既定の設定にリセットされます。[オプション]ペインの既定値を編集した場合、そのオプションはこの動作でリセットされません。

ソルバーの変更を設定する-  ソルバーを変更したときの最適化アプリケーションにおけるオプション処理の方法を変更するには、[ファイル][設定] を選択します。これにより、以下に示す [設定] ダイアログが開きます。

既定値 [オプションを既定値にリセットする] は、optimtool で以前指定されたすべてのオプションを無視します。これを選択すると、[オプションを既定値にリセットする前にメッセージを表示する] オプションを選択できます。

代わりに [可能な場合は現在のオプションを維持する] を選択して、変更した値を保存できます。変更したオプションが新しく選択されたソルバーで有効でない場合、設定はできますが使用はできません。代わりに新しく選択されたソルバーに関連する有効なオプションが使用されます。この選択により、オプションを変更することなく問題に異なるソルバーが試せます。

オプションの指定

プロット関数

プロット関数を選択すると、アルゴリズムの実行中にさまざまな進行状況を簡単にプロットできます。選択された各プロットは Figure ウィンドウ内で別々の軸を描画します。選択されたソルバーが利用できる場合、[ソルバーを実行して結果を表示] ウィンドウの [停止] ボタンをクリックすると、ソルバーの実行が中断されます。事前定義されたプロット関数を最適化アプリケーションから選択できます。または [カスタム関数] を選択し、独自の関数を作成することもできます。選択されたソルバーに関連しないプロット関数は灰色で表示され、選択できません。以下のリストは利用可能なプロット関数です。

  • [現在の点] ― 現在の反復点の棒グラフ表示を選択します。

  • [関数の数] ― 各反復の関数評価回数のプロットを選択します。

  • [関数値] ― 各反復の関数値のプロットを選択します。

  • [残差ノルム] ― 現在の反復の残差ノルムの棒グラフ表示を選択します。

  • [最大の制約] ― 各反復の最大制約違反のプロットを選択します。

  • [現在のステップ] ― 各反復のアルゴリズムステップ サイズのプロットを選択します。

  • [1 次の最適性] ― 各反復のソルバーの最適性違反プロットを選択します。

  • [カスタム関数] ― 関数ハンドルとして独自のプロット関数を入力します。たとえば、以下を入力して、セル配列を使用して複数のプロット関数を与えます。

    {@plotfcn,@plotfcn2}
    出力関数と同じ構文でカスタムのプロット関数を記述します。詳細は、出力関数 を参照してください。

上の図は、既定の fmincon ソルバーに利用できるプロット関数を示します。

出力関数

[出力関数] は、各反復でアルゴリズムが呼び出す関数または関数集合です。関数値、勾配値、現在の反復数のような最適化量を、これらの関数を使って出力できます。出力関数をなしにするか、関数ハンドルを使って単一の出力関数を指定するか、複数の出力関数を指定します。複数の出力関数を与えるには、[カスタム関数] フィールドに関数ハンドルのセル配列を使用します。たとえば、以下のようにします。

{@outputfcn,@outputfcn2}

出力関数の記述の詳細は、「出力関数」を参照してください。

コマンド ウィンドウに表示

[表示レベル] を選択してアルゴリズム実行時に表示する情報量を指定します。以下から選択します (ソルバーによっては、使用できないものもあります)。

  • [オフ] (既定の設定) ― 出力を表示しません。

  • [最終出力] ― 実行終了時に停止した理由を表示します。

  • [最終出力と詳細メッセージを表示] ― 実行終了時に停止した理由を詳細に表示します。

  • [通知] ― 関数が収束しない場合に出力を表示します。

  • [通知と詳細メッセージを表示] ― 関数が収束しない場合に詳細な出力のみを表示します。

  • [各反復] ― アルゴリズムの反復ごとに情報を表示し、実行終了時に停止した理由を表示します。

  • [各反復と詳細メッセージを表示] ― アルゴリズムの反復ごとに情報を表示し、実行終了時に停止した詳細な理由を表示します。

詳細なメッセージについては、より詳細な終了メッセージを参照してください。

[診断情報を表示] を選択すると、既定の設定から変更されたオプションの情報と問題の情報がリストされます。

以下のグラフィックスは fmincon ソルバーの表示オプションを示したものです。他の一部のソルバーでは、オプションの数が少なくなっています。

作業のインポートとエクスポート

作業のエクスポート

[ワークスペースへエクスポート] ダイアログ ボックスを使うと、問題の情報を MATLAB ワークスペースに構造体またはオブジェクトとして送ることができ、コマンド ウィンドウで操作できるようになります。

以下に示される [ワークスペースへエクスポート] ダイアログ ボックスにアクセスするには、[ファイル][ワークスペースへエクスポート] を選択します。

結果に以下を含めるよう指定できます。

  • 問題とオプションの情報

  • 問題とオプションの情報、停止時のソルバーの状態 (ほとんどのソルバーの最後の点、遺伝的アルゴリズム ソルバーの現在の人口、シミュレーテッド アニーリング ソルバーで見つけられた最良の点)

  • 以前の実行開始時の乱数発生器 randrandn の状態 (利用可能なソルバーの [前回の実行とはランダムな状態を使用する] ボックスを確認することでわかります)

  • オプション情報のみ

  • 最適化アプリケーションでの問題の実行結果

エクスポートした結果にはオプションの情報がすべて含まれています。たとえば、lsqcurvefit のエクスポートした結果の構造体はデータ xresnormresidualexitflagoutputlambda および jacobian を含みます。

最適化アプリケーションから情報を MATLAB ワークスペースへとエクスポートすると、MATLAB ワークスペース ブラウザーでそのデータを参照できます。またはコマンド ウィンドウで構造体の名前を入力しても参照できます。構造体またはオブジェクトのフィールド値を参照するには、ワークスペース ウィンドウで名前をダブルクリックします。コマンド ラインに exportname.fieldname を入力しても値を参照できます。たとえば、output.message を入力すると、出力構造体のメッセージを参照できます。構造体が構造体またはオブジェクトを含む場合は、ワークスペース ブラウザーで再度ダブルクリックするか、コマンド ラインで exportname.name2.fieldname を入力します。たとえば、エクスポートした問題の構造体のオプションに含まれる反復表示のレベルを確認するには「optimproblem.options.Display」と入力します。

以下を入力すると、コマンド ラインでエクスポートされた問題のソルバーを実行できます。

solver(problem)
たとえば、optimproblem という名前のエクスポートした fmincon の問題がある場合は以下を入力します。
fmincon(optimproblem)
これによって、optimproblem に保存されたオプションを用いて、問題に対し fmincon が実行されます。たとえば、以下を入力すると、出力をよりコントロールできます。
[x,fval,exitflag] = fmincon(optimproblem)
また、サポートされた任意の構文を使用してコントロールすることもできます。

作業のインポート

コマンド ウィンドウで Optimization Toolbox™ の関数を使ってオプションを保存した場合でも、最適化アプリケーションからオプションを、または問題とオプションをエクスポートした場合でも、最適化アプリケーションを使用して問題についての作業を再開できます。

オプション、または問題とオプションを最適化アプリケーションにインポートするには、次の 3 つの方法があります。

  • 入力としてオプションまたは問題とオプションを指定して、コマンド ウィンドウから関数 optimtool を呼び出します。たとえば、次のようになります。

    optimtool(options)
  • 最適化アプリケーションで [ファイル][インポート オプション] を選択します。

  • 最適化アプリケーションで [ファイル][問題のインポート] を選択します。

上記方法を行う場合、オプションまたは問題とオプションが MATLAB ワークスペースに存在しなければなりません。

[実行を再開するために必要な情報を含める] ボックスをチェックして生成した問題をインポートした場合、初期点は以前の実行で生成した最後の点です(遺伝的アルゴリズム ソルバーでは初期人口は以前の実行で生成した最後の人口です。シミュレーテッド アニーリング ソルバーでは、初期点は前の実行で生成した最良の点です)。このボックスをチェックしないで生成した問題をインポートする場合、以前の実行の初期点 (つまり期人口) が初期点 (つまり初期人口) になります。

ファイルの生成

別の時点でコマンド ウィンドウで最適化問題を続行するファイルを生成したいとします。このファイルを変更せずに実行して、最適化アプリケーションで作成した結果を再作成することができます。このファイルを編集および変更し、コマンド ウィンドウから実行することもできます。

最適化アプリケーションからデータをファイルにエクスポートするには、[ファイル][コード生成] を選択します。

生成されたファイルは以下の情報を取得します。

  • ソルバー、最小化する関数の情報、アルゴリズムの仕様、制約、開始点を含む問題の定義

  • オプションと現在選択されているオプション値

コマンド ウィンドウでこのファイルを実行し、問題の結果を再現します。

問題の結果を生成したファイルへエクスポートすることはできませんが、MAT ファイルに保存することができます。そしてその MAT ファイルを生成したファイルと一緒に使用できます。[ワークスペースへエクスポート] ダイアログ ボックスを使用して結果をエクスポートすると、コマンド ウィンドウから MAT ファイルへデータを保存できます。

この情報は役に立ちましたか?