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.
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. –
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. –