2016-04-01 31 views
0

ニューラルネットワークと遺伝的アルゴリズムを使用して最適化を実行しようとしました。私は入力p(4x72マトリックス)ターゲットt(2x72マトリックス)とニューラルネットワークを訓練しました。遺伝的アルゴリズムを用いた最適化に逆らって、適応関数としてニューラルネットワークの関数simを使用した。 Iは、それぞれ下限および上限であるLBとUBを提供しているフィットネス関数がスカラー値を返す必要があります

[email protected](p) sim(net,p'); 
%'net' is the neural network I created with p as input and t as target 
[xOpt,fVal,exitflag,target]=ga(objFcn,4,[],[],[],[],LB,UB,[],options); 

次のように私はそれのために使用されるコードです。私はsimコマンドでP」を使用されるとoptionsは、私は論理的に

options = gaoptimset('Vectorized','on'); 
% even vectorized off doesnt solve the problem 

でそれを試してみました、結果として得られるマトリックスは、GAのための人口と同じである72x2だろう。しかし何らかの理由で、私はいつもあなたのフィットネス関数がスカラー値を返さなければならないというエラーを受け取ります。

この問題を解決するために私を導いてください。

答えて

0

"sim"関数は、ネットワークからのすべての出力を持つ行列を返します。 GAで最小化するためにスカラー値を提供するには、それから二乗誤差を計算する必要があります。

+0

平均二乗誤差を計算することは、明らかにスカラーになる1x1行列で終わるのですか?私はちょうど1の出力でそれを試して、私が言った方法は完璧に働きました。私は3つのアウトプットを検討しているので、どのように進むべきかについてはあまりよく分かりません。 –

+0

関数mse_cを次のコードで作成しました。 function mse_calc = mse_c(net、p、t) y = sim(net、p); mse_calc = sum((y-t)。^ 2)/ length(y); end この関数は、72x1の行列を返します。しかし、GAのフィットネス機能としてそれを供給するには、私が知る限り1x72でなければなりません。転置記号は、関数に何らかのエラーを表示します。 –

関連する問題