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

Toolbox System Identification - greyest

 

phluex
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2017, 12:54     Titel: Toolbox System Identification - greyest
  Antworten mit Zitat      
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...

Ich freue mich auf Eure Rückmeldung,

viele Grüße
phluex
Private Nachricht senden Benutzer-Profile anzeigen


vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2017, 21:37     Titel:
  Antworten mit Zitat      
Hallo,

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.

Mit welcher Version arbeitest du?

Gruß
Vega
Private Nachricht senden Benutzer-Profile anzeigen
 
phluex
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2017, 10:40     Titel:
  Antworten mit Zitat      
Hallo vega,

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.


% Grenzen fuer Parameter
% Parameter fest vorgeben: sys.Structure.Parameters(1).Free = false;
% Parameter untere /(obere) Grenze vorgeben: sys.Structure.Parameters(4).Minimum = 0;
model.Structure.Parameters(1).Minimum = 0;
model.Structure.Parameters(1).Maximum = 1;

model.Structure.Parameters(2).Minimum = 0;
model.Structure.Parameters(2).Maximum = 1;

model.Structure.Parameters(3).Minimum = 0;
model.Structure.Parameters(3).Maximum = 1;

model.Structure.Parameters(4).Minimum = 0;
model.Structure.Parameters(4).Maximum = 1;

model.Structure.Parameters(5).Minimum = 0;
model.Structure.Parameters(5).Maximum = 10;

model.Structure.Parameters(6).Minimum = 0;
model.Structure.Parameters(6).Maximum = 10;

model.Structure.Parameters(7).Minimum = 1500e+3;
model.Structure.Parameters(7).Maximum = 2400e+3;

model.Structure.Parameters(8).Minimum = 10e+3;
model.Structure.Parameters(8).Maximum = 50e+3;

model.Structure.Parameters(9).Minimum = 10e+3;
model.Structure.Parameters(9).Maximum = 500e+3;

model.Structure.Parameters(10).Minimum = 10e+3;
model.Structure.Parameters(1).Maximum = 500e+3;

%% 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

opt = greyestOptions('InitialState','backcast','Display','on','Focus','Simulation') %, 'disturbanceModel','estimate');                % Optionen fuer estimation

model_est = greyest(data,model,opt);

%% Ausgabe
model_est                                                                  % Ausgabe der Ergebnisse

%Output Arguments koennen mit .report ausgegeben werden:
model_est.report.Status                                                     % Ausgabe des Output Arguments 'Status'


 



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) 0 0;1/(Cri*Rai) -1/(Cri*Rai)-1/(Cri*Ri) 1/(Cri*Ri) 0;0 1/(Ci*Ri) 1/(Ci*Ri)+1/(Ci*Rinf)+1/(Ci*Rg)+1/(Ci*Rr) 1/(Ci*Rg);0 0 1/(Cg*Rg) 1/(Cg*Rg)];
B = [1/(Cra*Ra) 0;0 0;1/(Ci*Rinf) 1/(Ci*Rr);0 0];
C = [0 0 1 0];
D = [0 0];



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


Ich freue mich über jeden Hinweis,

viele Grüße
phluex

D12h60se.mat
 Beschreibung:

Download
 Dateiname:  D12h60se.mat
 Dateigröße:  8.14 KB
 Heruntergeladen:  473 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
vega1013
Forum-Century

Forum-Century


Beiträge: 162
Anmeldedatum: 26.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2017, 13:45     Titel:
  Antworten mit Zitat      
Hallo phluex,

die Anzahl der Iterationen kannst du ändern, indem du nach der Definition von opt
Code:
opt.SearchOption.MaxIter = 25;

einfügst.

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.

Gruß
vega
Private Nachricht senden Benutzer-Profile anzeigen
 
phluex
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.03.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2017, 17:12     Titel:
  Antworten mit Zitat      
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 Wink

Schönes Wochenende noch!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.