2016-04-01 9 views
0

Ich habe versucht, eine Optimierung mit einem neuronalen Netzwerk und dem genetischen Algorithmus durchzuführen. Ich trainierte ein neuronales Netzwerk mit Eingang p (4x72 Matrix) und Ziel t (2x72 Matrix). Um die Optimierung mit Hilfe des genetischen Algorithmus neu zu erstellen, nutzte ich die sim Funktion des neuronalen Netzwerks als Fitness-Funktion. Der Code I für es verwendet wird, ist wie folgt:Ihre Fitness-Funktion muss einen skalaren Wert zurückgeben

[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); 

Ich habe die LB und UB versehen, die untere Grenze und obere Grenze, respectively. options und habe ich versucht, es mit

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

Logisch, wie I p verwendet‘ im sim Befehl würde die sich ergebende Matrix 72x2 sein, die die gleiche wie die Population für GA ist. Aber aus irgendeinem Grund bekomme ich immer den Fehler "Ihre Fitness-Funktion muss einen skalaren Wert zurückgeben".

Bitte führen Sie mich, um dieses Problem zu lösen.

Antwort

0

Die Funktion "sim" liefert eine Matrix mit allen Ausgängen Ihres Netzwerks. Sie müssen den quadratischen Fehler daraus berechnen, um einen skalaren Wert bereitzustellen, der mit dem GA minimiert werden soll.

+0

meinst du mit der Berechnung der mittleren quadratischen Fehler, ich ende in einer 1x1-Matrix, die offensichtlich ein Skalar wird? Ich habe es mit just1 output probiert und die Methode, die ich gesagt habe, funktioniert perfekt. Da ich über 3 Ausgänge nachdenke, bin ich mir nicht sicher, wie es weitergehen soll. –

+0

Ich habe eine Funktion mse_c mit folgendem Code erstellt: Funktion mse_calc = mse_c (netto, p, t) y = sim (netto, p); mse_calc = Summe ((y-t).^2)/Länge (y); Ende Diese Funktion gibt eine 72x1-Matrix zurück. Aber um es als Fitness-Funktion in GA zu füttern, muss es 1x72 sein, soweit ich weiß. Das Transponierzeichen würde einen Fehler in der Funktion verursachen. –

Verwandte Themen