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

3 visualizaciones (últimos 30 días)
Tsuyoshi Yasuda
Tsuyoshi Yasuda el 13 de Feb. de 2018
Comentada: Tsuyoshi Yasuda el 14 de Feb. de 2018
fminuncにおいて,Iterationを横軸,変数を縦軸のグラフを作る方法について教えていただきたいです.
  5 comentarios
Tsuyoshi Yasuda
Tsuyoshi Yasuda el 13 de Feb. de 2018
変数は2つです. できるのであればiteration毎の値を確保しておきたいです.
michio
michio el 13 de Feb. de 2018
Editada: michio el 13 de Feb. de 2018
分かりました。すでに試されてご存じの通り、目的関数にそのまま変数確保のコードを書いてしまうと関数の評価回数分の値が確保されてしまうので、Iteration毎に確保する(もしくは後ほど削除する)ような仕組みが必要ですね。少し考えてみます。
他の閲覧者の方もよいアイデアがあればぜひ書き込んでください。

Iniciar sesión para comentar.

Respuesta aceptada

michio
michio el 13 de Feb. de 2018
で紹介されている出力関数を設定するのがよさそうです。実際には
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 comentario
Tsuyoshi Yasuda
Tsuyoshi Yasuda el 14 de Feb. de 2018
できました.ありがとうございました!

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!