GAでのモデルの出力値の最適化
Show older comments
optimtoolのGAによってsimulink(simmechanics)によって作成したモデルの出力値が最小になるように最適化を行いたいです. 現在のコマンドが以下の通りになります.
function trqfuka=GArensyu01(x,ScopeData2)
y1=[0 x(1)]
y2=[0 x(2)]
open('GArensyu2')
sim('GArensyu2')
trq=ScopeData2(:,2)
trq_int=(trq*0.022222).^2
trqfuka=sum(trq_int)
GArensyu2というのはモデルの名前です. y1,y2はモデルの入力値でScopeData2がモデルの出力値です. ワークスペースに何もない状態でこのコマンドのGAを実行すると,エラーで
「パラメーター 'VariableName' に対する 'GArensyu2/Subsystem3/From Workspace' 内の設定が無効です。」
と表示されます.これの解決策は何かないでしょうか. また,仮の値をy1,y2に与えてGAを実行するとエラーは出ないんですが,モデルが永遠に回り続け,全くGAの計算がされません.この解決策も教えて頂きたいです.よろしくお願いします.
13 Comments
michio
on 30 Jan 2017
「このコマンドのGAを実行する」というのは例えば
[X,Y]=ga(@(x) GArensyu01(x,ScopeData2), 2)
と実行するということですか?
fumito ito
on 30 Jan 2017
fumito ito
on 1 Feb 2017
michio
on 1 Feb 2017
閲覧者も現象(エラー)を再現させられるようモデルを添付頂くことは可能でしょうか?簡易的なもので構いませんので、原因の検証のためにどうぞよろしくお願いします。
モデルに対する入力値が Simulink モデルに渡されていないことが、このエラーの原因ではないかと思います。
- 関数 MATLAB ファイルで SIM 関数を実行するとエラーが発生するのはなぜですか?
Michio さんの言われている通り、再現モデルがあると、より具体的なアドバイスが可能かと思います。
fumito ito
on 1 Feb 2017
モデルファイルそのままの添付は難しそうですか? 可能であればこちらでも
[X,Y]=ga(@(x) GArensyu01(x,ScopeData2), 2)
と実行するだけでエラーを再現できればいいなと考えていました。
fumito ito
on 1 Feb 2017
michio
on 1 Feb 2017
sim('GArensyu2')
を
sim('GArensyu2','SrcWorkspace','current');
に変更して試して頂けますか?
mizuki
on 1 Feb 2017
私が先ほど案内しましたリンクにありますように、sim コマンドの引数に 'SrcWorkspace','current' を追加する内容は実行されましたでしょうか。
もし実行されていなければ、一度実行してみていただけませんか。うまくいかない場合、結果も併せてお知らせください。
fumito ito
on 1 Feb 2017
GArensyu01 関数内では ScopeData2 は確かに定義されていないですね。入力引数として与えられているだけです。
画像から判断するに GArensyu2 が実行された結果は 2 つのToWorkspace ブロックから simout1, simout2 という変数で出力されていそうですよ?
fumito ito
on 1 Feb 2017
Accepted Answer
More Answers (0)
Categories
Find more on Spline Postprocessing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!