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

fminuncにおいて,Iterationを横軸,変数を縦軸のグラフを作る方法について教えていただきたいです.

댓글 수: 5

michio
michio 2018년 2월 13일
こちらではうまくいきませんでしたか?
Tsuyoshi Yasuda
Tsuyoshi Yasuda 2018년 2월 13일
それだと,関数の評価回数(func-count)が横軸になってしまっているんです.一応,Iterationとfunc-countを照らし合わせればグラフを作ることはできるのですが,手作業になるので時間がかかっていしまいます.なので,プログラムでそれをできるようにしたいのですが,自分ではわからなっかたので質問しました.
michio
michio 2018년 2월 13일
편집: michio 2018년 2월 13일
そういうことでしたか。コメントありがとうございました。 Iteration毎の最適化されるパラメータ変数の推移をプロットされたいんですね。 ここで変数はいくつありますか?1つ以上ですか?
プロットするだけでよいですか?それとも
で紹介されたようにグローバル変数などで、iteration毎の値を確保しておきたいですか?
Tsuyoshi Yasuda
Tsuyoshi Yasuda 2018년 2월 13일
変数は2つです. できるのであればiteration毎の値を確保しておきたいです.
michio
michio 2018년 2월 13일
편집: michio 2018년 2월 13일
分かりました。すでに試されてご存じの通り、目的関数にそのまま変数確保のコードを書いてしまうと関数の評価回数分の値が確保されてしまうので、Iteration毎に確保する(もしくは後ほど削除する)ような仕組みが必要ですね。少し考えてみます。
他の閲覧者の方もよいアイデアがあればぜひ書き込んでください。

댓글을 달려면 로그인하십시오.

 채택된 답변

michio
michio 2018년 2월 13일

2 개 추천

で紹介されている出力関数を設定するのがよさそうです。実際には
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개)

질문:

2018년 2월 13일

댓글:

2018년 2월 14일

Community Treasure Hunt

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

Start Hunting!