非線形制約条件付きGAのcrossoverintermediateに関するエラー
Afficher commentaires plus anciens
非線形制約条件付きのGAを用いたシミュレーションを行っていたところ,以下のエラーが表示されます.
位置 1 のインデックスが無効です。配列インデックスは正の整数または logical 値でなければなりません。
エラー: crossoverintermediate (line 47)
parent1 = thisPopulation(parents(index),:);
エラーで一時停止したところ,配列parentsの中の要素がすべて0になっており,配列thisPopulationの要素を呼び出せなくなっていました.
配列parentsの中の要素がすべて0になるのを防ぐためにはどうすればいいのでしょうか.すべてのエラー文を以下に記します.
位置 1 のインデックスが無効です。配列インデックスは正の整数または logical 値でなければなりません。
エラー: crossoverintermediate (line 47)
parent1 = thisPopulation(parents(index),:);
エラー: stepGA (line 34)
xoverKids = feval(options.CrossoverFcn, parents(1:(2 *
nXoverKids)),options,GenomeLength,FitnessFcn,thisScore,thisPopulation,options.CrossoverFcnArgs{:});
エラー: galincon (line 62)
[score,population,state] =
stepGA(score,population,options,state,GenomeLength,FitnessFcn);
エラー: gacon (line 78)
[~,Iterate.f,innerExitFlag,innerOutput,innerPopulation,innerScore] = ...
エラー: ga (line 405)
[x,fval,exitFlag,output,population,scores] = gacon(FitnessFcn,nvars, ...
エラー: optim (line 7)
[x,fval,exitflag,output,population,scores] = ga(@fun,8,[1 0 0 0 0 0 0 0; 0 1 0 0 0 0 0 0; 0 0 1 0 0 0 0 0; 0 0 0 0 1 0 0 0; 0 0 0 0 0 1 0 0; 0 0 0 0 0 0 1
0],[0.3;0.3;0.1;0.3;0.3;0.1],[],[],[0 0 0 0 0 0 0 0],[],@nonlcon,options);
11 commentaires
Kazuya
le 18 Déc 2018
おそらく、、実行している状況に特有のエラーなので回答が難しいかと思います。エラーが発生するコードを転記(添付)可能ですか?
Aoi Midori
le 19 Déc 2018
tsuyo0000さん、
横から失礼いたします。頂いたコードで、確かにエラーが再現しました。そこで、エラーの原因を細かく探ると、optimoptions()で設定されている「'InitialPopulationMatrix',x0」の処理が原因のようでした。前後のソースがtsuyo0000さんとは異なるので、一概には言えませんが、私の環境では、InitialPopulationMatrixの値を変えると(例えばx0(6)を0に変更)エラーがなくなりました。
こうすることで、tsuyo0000さんの意図通りのコードではなくなってしまう点恐縮ですが、これによって配列parentsの中の要素も0ではなくなっていたので、一解決案として記載します。
tsuyo0000
le 19 Déc 2018
Aoi Midori
le 19 Déc 2018
tsuyo0000さん、
実は、私の環境でも網羅的に実験していたのですが、'InitialPopulationMatrix'を設定しない時はエラーは発生せず、また、世代数や個体数を増減させてもエラーは起きなかったのです。。
ここにあるSyntaxの、optionsを追加する前の形では全て正常動作を確認できています。
tsuyo0000
le 19 Déc 2018
tsuyo0000
le 20 Déc 2018
Aoi Midori
le 21 Déc 2018
tsuyo0000
私も色々見てたのですが、いまいち原因がよくわかっていません。特に自分の場合、上記でもエラーにならないので...。
もしもう少し大きい範囲でソースを添付頂けたら、何かわかることがあるかもしれません。
Kazuya
le 21 Déc 2018
目的関数の fun.m があれば同じ条件下でいろいろ試せるので原因を見つけるのに効率的かと思いますが、、どうでしょう。
tsuyo0000
le 21 Déc 2018
Aoi Midori
le 21 Déc 2018
MathWorksさんからご回答貰えたようでよかったです。ご解決おめでとうございます!また、回答の共有もありがとうございます。今後参考にさせていただきます。
Réponses (0)
Catégories
En savoir plus sur ソルバーの選択 dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!