für ga muss die Fitnessfunktion ein Input- und ein Outputargument haben. Bei dir sind es stattdessen jeweils drei. Zudem muss der Output eine Zahl sein, woran ich auch Zweifel habe.
Was willst du denn optimieren? Das wird für mich nicht klar.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Es gibt ein Messunsicherheitsmodell mit dem ich arbeiten muss. Ich soll den besten Wert finden. Den Wert mit der geringsten Abweichung soll mir zurückgegeben werden
Code:
% Das ist meine Funktion
function[mu_x_cartesian,mu_y_cartesian,mu_z_cartesian,mu_abs_cartesian] = cartesian_ga_function(x,y,z)
%[hier stehen die Rückgabewerte] = hier_ist_der_funktionsname (hier sind die eingabeparameter)
u_distance_abs = 0.000005; % [muem] Hier sind nur statische Werte
u_distance_rel = 0.000005; % [muem]
u_azimuth = 0.000005; % [muem]
u_elevation = 0.000005; % [muem]
fhi= atan(y ./x);
% Die Funktion muss ich umrechnen, weil der Algorithmus nur in kartesichen Koordinaten rechnen kann
theta = acos(z ./sqrt(x.^2+y.^2+z.^2));
% Die Funktion muss ich umrechnen, weil der Algorithmus nur in kartesichen Koordinaten rechnen kann
distance_r = sqrt(x.^2+y.^2+z.^2);
% Die Funktion muss ich umrechnen, weil der Algorithmus nur in kartesichen Koordinaten rechnen kann
% Hier endet die Funktion. Diese Funktion soll im GA optimiert werden
% Hier gebe ich den Optimierungsbereich an. Jeder Wert von 1 bis 60 soll in allen Richtungen überprüft werden
x = 1:60;
y = 1:60;
z = 1:60;
% das @ Zeichen bedeutet nach dieser Funktion soll der GA optimieren. % als erstes gebe ich (x,y,z) ein um zu sagen gib die Werte ein % wenn ich beispielsweise nur einen Wert eingebe bekomme ich Werte raus (welche aber falsch sind)
fun = @(x,y,z)cartesian_ga_function(10,10,10)
nvars = 4;
[optimum] = ga(fun,nvars)
% Wenn ich das ganze normal mit einem Array mache bekomme ich die richtigen Werte raus, nur halt ohne automatische Optimierung [a,b,c,d]=cartesian_ga_function(1:60,1:60,1:60);
für ga muss die Fitnessfunktion ein Input- und ein Outputargument haben. Bei dir sind es stattdessen jeweils drei.
Solange du das nicht änderst, wird der Code nicht laufen.
Was sollen x, y, z denn sein? Vektoren oder nur Zahlen?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.