手習ひデジタル信号処理(216) Scilab、{Scilabデモ}、反復ごとの関数値評価

Joseph Halfmoon

投稿再開。しかしテーマはネルダーミード法を駆使して関数の最適化を行うfminsearch関数のオプションで変わりませぬ。評価対象関数はバナナ関数(Rosenbrock関数。)前回は「計算コスト」を可視化するためのオプションでした。今回は「最適解への肉薄具合」をグラフに表示するオプションみたい。ガンバレー? 違うか?

※「手習ひデジタル信号処理」投稿順 Indexはこちら

※Windows11上の    Scilab2024.0.0を使用させていただいております。(Scilabについては御本家 Scilab 様へ)

fminsearch_optimplotfval.sce

前回は「もうひとつの」シンプレックス法を駆使するfminsearch関数の計算コスト(計算回数)を積算グラフにしているオプションのデモでした。バナナ関数の場合、ほぼほぼ真っすぐな直線に乗っていていい感じ?

今回はそのとき実際の関数評価値がどんな感じに「最適値」に肉薄しているんだかグラフにしてくれるデモです。以下のデモ選択画面から起動できます。selectPlotF

今回も「ミソ」な一か所だけっす。

 opt = optimset ( "PlotFcns" , optimplotfval );

またまた長いお名前のオプション、optimplotfvalです。これをセットしておくだけで毎回の繰り返しでの評価値をグラフにしてくれるみたい。

結果はこんな感じ。plotF

最初は急激に近づき、その後、遅くはなるけれど肉薄は続き、50回も繰り返すと後はダラダラと続きます。まあ、最後の方はどのくらいまで肉薄させるのか計算打ち切りの精度次第か。

とりあえずこういうグラフ見て置いたらなんか安心。ホントか?

手習ひデジタル信号処理(215) Scilab、{Scilabデモ}、反復ごとの関数評価回数 へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です