fminuncのIt​erationを横軸​に変数を縦軸にしてグ​ラフを作りたい

3 ビュー (過去 30 日間)
Tsuyoshi Yasuda
Tsuyoshi Yasuda 2018 年 2 月 13 日
コメント済み: Tsuyoshi Yasuda 2018 年 2 月 14 日
fminuncにおいて,Iterationを横軸,変数を縦軸のグラフを作る方法について教えていただきたいです.
  5 件のコメント
Tsuyoshi Yasuda
Tsuyoshi Yasuda 2018 年 2 月 13 日
変数は2つです. できるのであればiteration毎の値を確保しておきたいです.
michio
michio 2018 年 2 月 13 日
編集済み: michio 2018 年 2 月 13 日
分かりました。すでに試されてご存じの通り、目的関数にそのまま変数確保のコードを書いてしまうと関数の評価回数分の値が確保されてしまうので、Iteration毎に確保する(もしくは後ほど削除する)ような仕組みが必要ですね。少し考えてみます。
他の閲覧者の方もよいアイデアがあればぜひ書き込んでください。

サインインしてコメントする。

採用された回答

michio
michio 2018 年 2 月 13 日
で紹介されている出力関数を設定するのがよさそうです。実際には
options = optimoptions(@solvername,'OutputFcn', @outfun);
などと 'OutputFcn' を設定します。outfun 関数を作る必要がありますが、上記URL先にも紹介がありますが
function stop = outfun(x,optimValues,state)
switch state
case 'init'
case 'iter'
case 'done'
otherwise
end
end
といった形で、各"状態"に応じで処理内容を記載します。詳細: アルゴリズムの状態
冒頭で紹介したURL先にあるサンプルコードで、history.x = []; として確保しているのが、各Iterationでの変数x の値です。サンプルコードのように、outfun を入れ込関数の形にすることで history 変数を共有するか、global 変数を用いてもよいと思います。取り急ぎ最小限のご紹介まで。実装する際に困ったことがあれば相談してください。
  1 件のコメント
Tsuyoshi Yasuda
Tsuyoshi Yasuda 2018 年 2 月 14 日
できました.ありがとうございました!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!