Main Content

最適化

ライブ エディターでの最適化

R2020b 以降

説明

[最適化] タスクを使うと、非線形の目的関数の対話的な最適化や非線形方程式の求解ができます。このタスクは、ライブ スクリプト用の MATLAB® コードを自動生成します。

このタスクを使用すると、次を行うことができます。

  • 目的関数の指定。指定方法として、関数を記述するか、関数を参照します。

  • ソルバー オプションの指定。

  • 最適化の実行。

Optimization Toolbox™ または Global Optimization Toolbox がある場合は、[最適化] タスクを使用して、非線形方程式系の求解や非線形制約をもつ目的関数の最適化など、さらに多くの問題タイプを解くことができます。ライブ エディター タスクの一般情報については、ライブ スクリプトへの対話型タスクの追加を参照してください。

Optimize task in Live Editor

タスクを開く

[最適化] タスクを MATLAB エディターのライブ スクリプトに追加するには、ライブ エディターの [挿入] タブで [タスク]、[最適化] を選択します。

Insert Optimize Live Editor task

あるいは、スクリプトのコード ブロック内に、fminbnd などの関連キーワードを入力します。コマンドの補完候補から [最適化] を選択します。

Choosing Optimize from command completion suggestions

パラメーター

すべて展開する

MATLAB が問題の解を求めるために使用する最適化ソルバー。次のいずれかのソルバーとして指定します。

  • fminbnd — 有界領域における 1 つの変数の実関数を最小化します。

  • fminsearch — 非有界領域における複数の変数の実関数を最小化します。

  • lsqnonnegx ≥ 0 に従って norm(C*x-d) を最小化します。

  • fzero — 実数の非線形関数 f(x) = 0 である実点 x を見つけます。

例: fminsearch

最小化する関数 (fminbnd または fminsearch) または根を求める関数 (fzero)。関数ハンドル、ローカル関数名、または関数ファイルとして指定します。

  • 関数ハンドル — 関数ハンドルをワークスペースで作成します。次に、[最適化] タスクで、[目的関数]、[関数ハンドル] を選択し、目的関数を選択します。

  • ローカル関数

    • 新規作成 — [最適化] タスクで、[目的関数]、[ローカル関数] を選択してから、[新規] ボタンをクリックします。新しい関数定義がタスクの下に表示されます。オブジェクティブを計算するように関数を編集します。次に、ローカル関数を選択します。

    • 既存 — [目的関数]、[ローカル関数] を選択し、ローカル関数を選択します。

  • 関数ファイル

    • 新規作成 — [最適化] タスクで、[目的関数]、[ファイルから] を選択し、[新規] ボタンをクリックします。新しい関数ファイルが表示されます。オブジェクティブを計算するようにファイルを編集し、そのファイルを MATLAB パス上に保存します。[参照] ボタンをクリックして、ファイルを選択します。

    • 既存 — [ファイルから][参照...] を選択し、ファイルを選択します。

ヒント

  • 余分な入力をもつ関数の場合、[最適化] では最適化変数を選択し、固定されたデータ入力が含まれるワークスペース変数を指定する必要があります。この例には、3 つの関数入力が含まれています。

    Optimization input = "vars", Fixed input y = "y", Fixed input w = "w"

    [最適化] では、すべての関数入力を指定した後にのみコードを生成します。

  • [最適化] では、varargin 入力が含まれる関数、またはエラーが含まれる関数を解析できません。

  • ファイルから目的関数を選択すると、[最適化] によってファイル位置が MATLAB パスに追加されます。

  • [最適化] で解析エラーが発生した場合、あるいは複数のローカル関数が同じ名前をもつ場合、使用可能なローカル関数のリストは空になります。

バージョン履歴

R2020b で導入

参考

関数