workspaceの値をGAで使用したい

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

3 Commenti

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

Accedi per commentare.

 Risposta accettata

michio
michio il 24 Gen 2017

1 voto

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

3 Commenti

michio
michio il 25 Gen 2017
Modificato: michio il 25 Gen 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 il 25 Gen 2017
うまくいきました.助かりました. 本当にありがとうございます.
michio
michio il 25 Gen 2017
よかったです。他にもお困りの事があれば投稿してみてください。
また、回答のAcceptもよろしくお願いします。

Accedi per commentare.

Più risposte (0)

Categorie

Richiesto:

il 24 Gen 2017

Commentato:

il 25 Gen 2017

Community Treasure Hunt

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

Start Hunting!

Translated by