[最適化] ライブ エディター タスク
[最適化] ライブ エディター タスクとは
[最適化] ライブ エディター タスクでは、fminbnd
、fminsearch
、fzero
、および lsqnonneg
ソルバーのビジュアル インターフェイスが提供されます。タスクを開始するには、[新規ライブ スクリプト] ボタンをクリックします。次に、[挿入] タブをクリックし、[タスク]、[最適化] を選択します。
非線形多変数関数の最小化
この例では、関数 を最小化する方法を説明します。ここで、[最適化] ライブ エディター タスクを使用して、変数 a = π とします。
類似の最適化問題を説明したビデオについては、How to Use the Optimize Live Editor Task を参照してください。
[ホーム] タブの [ファイル] セクションで、[新規ライブ スクリプト] ボタンをクリックします。
[最適化] ライブ エディター タスクを挿入します。[挿入] タブをクリックし、次に [コード] セクションで [タスク]、[最適化] を選択します。
問題データの入力に使用するために [セクション区切り] ボタンをクリックします。タスクの上と下に新しいセクションが表示されます。
[最適化] タスクの上のセクションで、次のコードを入力します。
a = pi; x0 = [-1 2];
これらの変数をワークスペースに配置するために、Ctrl + Enter キーを押します。
タスクの [問題の種類の指定] セクションで、[目的]、[非線形] ボタンと [制約]、[制約なし] ボタンをクリックします。タスクに推奨ソルバーとして
fminsearch
が表示されます。メモ
Optimization Toolbox™ を所有している場合、この時点での推奨ソルバーは異なっています。
fminsearch
を選択して、例を続けてください。[問題のデータの選択] セクションで、[目的関数]、[ローカル関数] を選択し、次に [新規] ボタンをクリックします。タスクの下の新しいセクションに関数スクリプトが表示されます。結果として得られるコードを編集して、次の行をコメント化しない状態で含めます。
function f = objectiveFcn(optimInput,a) x = optimInput(1); y = optimInput(2); f = 100*(y - x^2)^2 + (a - x)^2; end
[問題のデータの選択] セクションで、ローカル関数として
objectiveFcn
を選択します。[問題のデータの選択] セクションの [関数入力] で、[最適化入力]、[optimInput] および [固定入力: a]、[a] を選択します。
[初期点 (x0)]、[x0] を選択します。
[進行状況の表示] セクションで、プロットに対し [目的値] を選択します。
ソルバーを実行するには、タスク ウィンドウの右上にあるオプション ボタン [⁝] をクリックし、[セクションの実行] を選択します。
次のプロットが表示されます。
解の点を確認するには、[最適化] タスクの上部を参照します。
変数
solution
と変数objectiveValue
がワークスペースに返されます。それらの値を表示するには、タスクの下にセクション区切りを挿入し、次のコードを入力します。disp(solution) disp(objectiveValue)
Ctrl+Enter キーを押してセクションを実行します。
disp(solution)
3.1416 9.8696
disp(objectiveValue)
3.9946e-11
スカラー方程式の求解
この例では、[最適化] ライブ エディター タスクを使用して、cos(x) = x となる点 x を求める方法を説明します。
[ホーム] タブの [ファイル] セクションで、[新規ライブ スクリプト] ボタンをクリックします。ライブ スクリプトに次のコード行を入力します。
fun = @(x)cos(x) - x; x0 = 0;
1 行目は、cos(x) = x となる点 x で 0 の値をとる無名関数
fun
を定義しています。2 行目は、fzero
が求解を開始する初期点x0
= 0 を定義しています。Ctrl+Enter キーを押して、これらの変数を MATLAB® ワークスペースに配置します。
[最適化] ライブ エディター タスクを挿入します。[挿入] タブをクリックし、次に [コード] セクションで [タスク]、[最適化] を選択します。
タスクの [問題の種類の指定] セクションで、[ソルバー]、[fzero] を選択します。
[問題のデータの選択] セクションで、[目的関数]、[関数ハンドル] を選択し、次に
[fun]
を選択します。[初期点 (x0)]、[x0] を選択します。[進行状況の表示] セクションで、プロットに対し [目的値] を選択します。
Ctrl+Enter キーを押してソルバーを実行します。
解の値を確認するには、[挿入] タブの [セクション区切り] ボタンをクリックして、タスクの下に新しいセクションを挿入します。新しいセクションで、
solution
と入力して Ctrl+Enter キーを押します。solution
solution = 0.7391
参考
最適化 | fzero
| fminsearch