fminsearch​関数などの最適化計算​で、各繰り返し計算で​の目的関数の値やパラ​メータ推定値を描画す​ることはできますか?

fminsearch関数などの最適化計算で、各繰り返し計算での目的関数の値やパラメータ推定値を描画することはできますか?

 Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 7 de Ag. de 2024
Editada: MathWorks Support Team el 7 de Ag. de 2024

0 votos

optimset 関数で、"PlotFcns" パラメータを使用することで可能です。
PlotFcns パラメータには、描画用の関数を各イタレーションでのコールバックとして定義します。
描画用の関数は、下記が用意されています。
  optimplotx.m : 現在のパラメータ推定値   optimplotfval.m :目的関数の値   optimplotfunccount.m : 目的関数の評価回数      ※Optimization Toolbox では、下記の関数も提供されています。   optimplotconstrviolation.m : 最大制約違反   optimplotfirstorderopt.m : 一次の最適性(output.firstorderopt)   optimplotresnorm.m : 残差ノルム   optimplotstepsize.m : ステップサイズ
例えば、optimplotfval.m を使用して、各繰り返し計算での目的関数の値を表示するには、以下のように実行します。
banana = @(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2; % 目的関数定義 options = optimset('PlotFcns',@optimplotfval); % PlotFcns の設定 [x,fval] = fminsearch(banana,[-1.2, 1],options) % 最適化
また、描画用の関数をユーザ定義で作成することも可能です。その場合、描画用の関数は、決められた関数書式で記述する必要があります。
以下の MATLABファンクションファイル myplot.m は、ユーザ定義で作成したプログラム例です。
function stop = myplot(x,optimValues,state) % 入力引数 % x: 目的変数 % optimValues: 現在の繰り返し計算での結果を含む構造体 % state: 現在の最適化計算の状態('init','interrupt','iter','done'のいずれか) % 出力引数 % stop: 最適化計算の継続(false)/停止(true)を決定するフラグ stop = false; switch state case 'init' % 初期化時 hold on case 'iter' % 繰り返し計算時 plot(optimValues.iteration,x,'o'); case 'done' % 計算終了時 hold off legend('x1','x2') otherwise end end
以下の URL より参考情報をご覧いただけます。
●Optimization Toolboxヘルプドキュメント(英語):Plot Functions R2024aの場合

Más respuestas (0)

Categorías

Más información sobre Optimization Toolbox en Centro de ayuda y File Exchange.

Productos

Versión

R2008b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!