WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Parameteridentifikation mit genetic algorithm

 

Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.04.2018, 23:45     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung bezieht sich auf data, also musst du data übergeben (genauso wie y_ref).

Mit lsim habe ich noch nicht gearbeitet. Da könnte ich auch nur das machen, was ich dir raten würde: Doku lesen.

Im übrigen würde ich unabhängig von ga erstmal versuchen, die Fitnessfunction überhaupt richtig zum Laufen zu bekommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen


student_VS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 02.04.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2018, 12:15     Titel:
  Antworten mit Zitat      
Vielen Dank, Harald.

Ich versuche gerade nur die Fitness Function über das command window zum Laufen zu bringen, jedoch leider ohne Erfolg. Mit meiner Parameterübergabe passt was nicht, welche ich als Startwerte verwende.

Error using DynamicSystem/lsim (line 84)
When simulating the response to a specific input signal, the input data U must be a matrix of numeric values with at least two
rows (samples) and without any NaN or Inf.

Error in myFitness02 (line 40)
[y,t_out,x] = lsim(sys_ss, data.InputData, t, x0);

Code:
function mse = myFitness02(par,y_ref,u_ref)

R_re=par(1);
R_h=par(2);
R_ea=par(3);
A_w=par(4);
A_e=par(5);
C_r=par(6);
C_h=par(7);
C_e=par(8);

x0=[40,20,0];
t=1:length(y_ref);


% Dynamikmatrix / Zustandsmatrix A von Modell 2
A = [(-R_re-R_h)/(C_r*R_h*R_re), 1/(R_re*C_r) , 1/(R_h*C_r); ...
    1/(R_re*C_r), (-R_ea-R_re)/(C_e*R_re*R_ea) , 0 ; ...
    1/(R_h*C_h), 0 , -1/(R_h*C_h)];
% Eingangsmatrix B von Modell 2
B = [0, A_w/C_r, 0 ; 1/(R_ea*C_e), A_e/C_e, 0; 0, 0, 1/C_h ];
% Ausgangsmatrix C
C = [1,0,0];
% Durchgangsmatrix D
D = zeros(1,3);

Ts=0; %Sampling time, 0 indicates a continuous-time model

sys_ss=ss(A,B,C,D,Ts); % State Space Modell

data = iddata(y_ref,u_ref,10);
data.TimeUnit='seconds';
% data.InputName = {'Außentemperatur T_a', 'solare Einstrahlung q_rad_sol', 'Heizleistung Waermepumpe q_h'};
% data.InputUnit = {'°C'; 'W'; 'W'};
% data.OutputName = 'Raumtemperatur T_r';
% data.OutputUnit = '°C';

%data.InputData = zeros(length(y_ref),length(t))

[y,t_out,x] = lsim(sys_ss, data.InputData, t, x0);
 
mse = sum((y-y_ref).^2) / length(y)

end


Die par, y_ref und u_ref habe ich vor Ausführung der Fitness Function im command window als Zahlenwerte definiert.

par= [1 64 364 22 22 30 108 9]
y_ref = 22
u_ref = [5 200 3000]

habs auch schon mit mehreren Varianten probiert (y_ref als 1x3 Matrix, u_ref als 3x1 bzw. 2x3)

Was mach ich nur falsch bzw. kapier ich nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.04.2018, 12:51     Titel:
  Antworten mit Zitat      
Hallo,

ich kenne lsim wie gesagt nicht. Das Problem:
Code:
data.InputData
ans =
           5         200        3000


Laut Fehlermeldung ist das nicht zulässig. Wie du das beheben kannst, kann ich dir nicht sagen. Meine Empfehlung wäre, diese spezielle Frage in einem separaten Thema zu stellen, da ich nicht davon ausgehe, dass sich hier nach so vielen Beiträgen noch jemand einklinkt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.