workspaceの値をGAで使用したい

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

3 件のコメント

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

サインインしてコメントする。

 採用された回答

michio
michio 2017 年 1 月 24 日

1 投票

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

3 件のコメント

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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeStartup and Shutdown についてさらに検索

質問済み:

2017 年 1 月 24 日

コメント済み:

2017 年 1 月 25 日

Community Treasure Hunt

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

Start Hunting!

Translated by