workspaceの値をGAで使用したい

以下に示すような式を遺伝的アルゴリズム(GA)で最適化したいです.以下に示す式のqはワークスペースに定義されている値を使うつもりでしたが,GAを実行すると 「関数または変数 'q' が未定義です。」 とエラーが出ます.ワークスペースの値を使うことはできないのでしょうか.ちなみにqはsimulinkのモデルから出力された1×11の行列です.

3 Comments

michio
michio on 24 Jan 2017
関数はまた別のワークスペースを別に持つので、おっしゃるワークスペース(ベースワークスペース)の変数を直接は使用できません。
使用する方法はありますので ga を実行しているコマンド文を見せて(コピペして)いただけますか?
fumito ito
fumito ito on 25 Jan 2017
Edited: fumito ito on 25 Jan 2017
sim('GArensyu2');
[X,Y]=ga(@GArensyu5,11)
初心者なので変かもしれませんが,'GArensyu2'というsimulinkモデルをまわして,そのモデルによって出力されたデータを先ほど図に示したqの値として使いたいです.
のコマンドは最初の写真にありますが一応ここにもコマンドを載せておきます.
function trqdata=GArensyu5(x,q)
K=100
trq=K*(x-q)*0.1
trqdata=sum(trq)

Sign in to comment.

 Accepted Answer

michio
michio on 24 Jan 2017

1 vote

こちらのページが参考になるかと思います。

3 Comments

michio
michio on 25 Jan 2017
Edited: michio on 25 Jan 2017
[X,Y]=ga(@(x) GArensyu5(x,q) ,11)
を試してみてください。詳細は上で紹介したリンク先にありますが、
@(x) GArensyu5(x,q)
は元々 x,q と2つの入力引数を持つよう定義された関数 GArensyu を使って、x だけを入力関数にもつ"無名関数"として定義しています。無名関数が定義されるタイミングで、ワークスペースに変数 q が存在する必要があります。
ga 関数の第一引数に与える関数は、入力引数は1つだけ(ここでは x) の関数として与える必要があるので、追加のパラメータを与える場合にはこのような方法も取られます。
fumito ito
fumito ito on 25 Jan 2017
うまくいきました.助かりました. 本当にありがとうございます.
michio
michio on 25 Jan 2017
よかったです。他にもお困りの事があれば投稿してみてください。
また、回答のAcceptもよろしくお願いします。

Sign in to comment.

More Answers (0)

Categories

Asked:

on 24 Jan 2017

Commented:

on 25 Jan 2017

Community Treasure Hunt

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

Start Hunting!