Verfasst am: 03.03.2017, 11:54
Titel: Toolbox System Identification - greyest
Hallo zusammen,
ich arbeite im Moment mit der SystemIdentification Toolbox und im speziellen mit der Grey-Box Funktion. Dabei gebe ich eine Modellstruktur in Form einer Zustandsraumdarstellung an, lese Messdaten ein und lasse mir die unbekannten Parameter der Modellstruktur mit Hilfe von des Befehls greyest schätzen.
Das Problem:
Nach 20 Iterationen wird die Schätzung beendet da in der Funktion dies als maximale Anzahl an Iterationen vorgegeben ist. Bei der Überprüfung der geschätzten Parameter zeigt sich, dass nur 4 von 7 Parametern verändert wurden. Die restlichen Parameter entsprechen den Startparametern.
Hat jemand schon Erfahrung mit dem selben Problem gemacht?
Mir scheint es, als ob die Parameter in der Reihenfolge der Startparameter nacheinander in das Schätzverfahren einbezogen werden, sodass es hilfreich wäre, die Anzahl der Iterationen zu vergrößern. Dies ist jedoch nach meinem Kenntnisstand mit der Funktion greyest nicht möglich...
ist zwar schon eine Weile her das ich mit der Toolbox gearbeitet habe, aber meines Wissens nach sollte man die Anzahl der Iterationen auch bei greyest hoch setzen können. Zeig doch mal den relevanten Code und lade wenn möglich auch die Messdaten hoch. Dann kann man sicher helfen.
vielen Dank für deine schnelle Rückmeldung! Ich arbeite mit der Version 2015b.
Im Folgenden der Matlab-Code, mit welchem ich die lineare Grey-Box Modellierung durchführe. Ganz konkret habe ich dabei das Problem, dass die vier Parameter Cg, Ci, Cri und Cra im Ergebnis immer noch den Werten der Startparameter entsprechen und nicht durch die Optimierung verändert wurden.
Code:
%% Modellstruktur erstellen mit idgrey
par = {'Rr',0.01; 'Rg',0.01; 'Ri',0.01; 'Rai', 0.01; 'Ra',0.01; 'Rinf',0.1; 'Cg',2100e+3;'Ci',27e+3; 'Cri',300e+3; 'Cra',300e+3}; % Matrix mit Parametern erstellen
aux = {}; % Hilfsparameter - sind aber leer
T = 0; % Zeitabstand bei diskretem Modell - Hier aber kontinuierliches Modell (deshalb c)
model = idgrey('B6R4CFunction',par,'cd',aux,T); % 'cd' odefun returns matrices corresponding to a continuous-time system, if Ts=0.
%% Einlesen der Daten % PARAMETERSCHAETZUNG: Einlesen der einzelnen Datensaetze aus Matrix % Data_Est = importdata('Daten10Grad10s.mat'); % Data_Est enthaelt alle fuer die SCHAETUNG notwendigen Variablen
Data_Sim = importdata('D12h60se.mat'); % Data_Est enthaelt alle fuer die SCHAETUNG notwendigen Variablen
%% Schaetzung der Parameter mit greyest % Daten als Format iddata uebergeben (Ausgangsgroesse y, Eingangsgroesse(n) u, Sampletime)
Data_Est = importdata('D12h60se.mat'); % Data_Est enthaelt alle fuer die SCHAETUNG notwendigen Variablen
t = Data_Est(:,1:1);
Tr = Data_Est(:,5:5);
Ta = Data_Est(:,3:3);
yTi = Data_Est(:,2:2);
% Erstellen der Vektoren
u = [Tr, Ta];
y = [yTi] ;
data = iddata(y, u, 60); % Eingangs- Ausgangsdaten und Samplingtime
Die Funktion, die darin aufrufen wird, ist folgende:
function[A,B,C,D] = B6R4CFunction(Rr, Rg, Ri, Rai, Ra, Rinf, Cg, Ci, Cri, Cra ,T)
A = [-1/(Cra*Ra)-1/(Cra*Rai)1/(Cra*Rai)00;1/(Cri*Rai)-1/(Cri*Rai)-1/(Cri*Ri)1/(Cri*Ri)0;01/(Ci*Ri)1/(Ci*Ri)+1/(Ci*Rinf)+1/(Ci*Rg)+1/(Ci*Rr)1/(Ci*Rg);001/(Cg*Rg)1/(Cg*Rg)];
B = [1/(Cra*Ra)0;00;1/(Ci*Rinf)1/(Ci*Rr);00];
C = [0010];
D = [00];
Das Ergebnis sieht dann wie folgt aus:
Model parameters:
Rr = 0.0009028
Rg = 0.0001499
Ri = 0.01718
Rai = 3.375e-05
Ra = 9.358e-05
Rinf = 0.0001144
Cg = 2.1e+06
Ci = 2.7e+04
Cri = 3e+05
Cra = 3e+05
Auf den ersten Blick ergibt das aber auch nicht das gewünschte Ergebnis.
Hast du dir mal die Frage gestellt, ob das Modell mit den gegeben Ein-/Ausgangsdaten und der Parametrierung generell auch identifiziert werden kann?
Ggf. könnte auch die stark unterschiedliche Größe der Parameter für den Optimierungsalgorithmus ein Problem darstellen.
Vielen Herzlichen Dank für die schnelle Anwort!
Ich hatte diesen Befehl nur für nlgreyest gefunden und dachte deshalb, dass er bei linearen Modellen nicht funktioniert.
Leider bin ich neu in der Thematik und hatte bisher noch nicht daran gedacht, ob das Modell auch identifiziert werden kann. Ist aber ein guter Hinweis, dem ich nachgehen werden! Falls jemand eine Idee hat: Immer her damit
Schönes Wochenende noch!
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.