手習ひデジタル信号処理(218) Scilab、{Scilabデモ}、neldermead群

Joseph Halfmoon

前回までネルダーミード法を駆使して関数の最適化(値の最小化)を行うfminsearch関数のデモを延々と鑑賞。しかし今回、もう一つ、ネルダーミード法を使うための関数群が存在することが発覚しました。その名もズバリneldermead_で始まる「関数群」デス。でもね、1個の関数では目的を果たさず。複数を組み合わせて使用。

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

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

neldermead_rosenbrock.sce

さて、今回neldermead_という綴りで始まる「関数群」に向き合って明らかになったことは、前回までの

fminsearch関数

がチョロイという1点です。なんとなれば1行記述すれば目的を果たします。その上大事なのは、

MATLABにも同等(そして同名)の関数あり

同名とはいっても内部は異なるんだと思いますが、移植可能性は高いみたいです。

それに対して今回登場したneldermead関数群ですが、

    • パラメータ設定がfminsearchより細かく設定できる
    • 最適化プロセスの追跡、記録も細かく制御できる
らしいです。今回のデモは、以下のデモ選択画面から起動できます。

selectNelderMead

上記デモ選択画面のタイトルにあるように、今回も評価対象の関数はバナナ関数(Rosenbrock関数)デス。

上記でなんやら「痒い所に手が届く」設定可能な関数群みたいだ、と述べました。しかし細かく制御できるということは、使い方が難しい、ということでもあります。実際、今回のデモでは、

    1. neldermead_new 1回
    2. neldermead_configure 5回
    3. neldermead_search 1回
    4. neldermead_get 3回
    5. neldermead_destroy 1回

合計5種の関数を、合計11回呼び出してました。それでいて最終的な結果はこんな感じ。neldermeadResult

 

素人老人には、fminsearch関数使う方がずっと簡単。でもま、今後neldermead‗関数群使う秘儀が出てくる雰囲気あり。恐ろしいぞ。

手習ひデジタル信号処理(217) Scilab、{Scilabデモ}、反復ごとの変数値の動き へ戻る

コメントを残す

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