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

Optimierung-Parameter Identifikation eines Modells

 

Matmarv
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 12.03.2013, 08:47     Titel: Optimierung-Parameter Identifikation eines Modells
  Antworten mit Zitat      
Hallo,

ich suche nach einem Optimierungsalgorithmus in Matlab für folgende Aufgabe:

Ich erstelle ein Temperaturmodell und habe die Differentialgleichungen in Zustandsraumdarstellung. [x`] = [A] [x]+[B][u]
[y] = [C][x]

Kleine Übersicht zum Programm welches die Temperatur berechnet:

- x0 = Zustandswerte vom letzten Schritt

for ( 1:1000 )
[x`] = [A] [x]+[B][u]
[x] = [x0] + [x']*delta t
[x0]=[x]
end

Das funktioniert so weit. Jedoch ist es sehr schwer die einzelnen Übergangswiderstände und Kapazitäten der Systemmatrix [A] zubestimmen, so dass das Modell noch Sinnvolle ergebnisse liefert. In [B] stecken auch noch Kapazitäten.

Ich kenne aber [u] die Eingangsgröße am echten Modell und ich habe Messungen von [x] also der Temperaturwerte. Wenn ich jetzt mein Modell mit einer gewissen Eingangsgröße [u] beaufschlage und die reale Anlage auch erhalte ich unterschiedliche Werte für [x](Temperatur). Ich möchte jetzt mit diesem [deltax] durch einen Optimierungsalgorithmus die Systemmatrix [A] anpassen.

Könnt ihr mir da Vorschläge machen, wie ich dies in Matlab lösen kann ?

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 14.03.2013, 10:41     Titel: Systemidentifikation mit Matlab
  Antworten mit Zitat      
Ich suche immer noch nach einer Lösung für mein Problem. Ich habe dabei gelernt, dass im allgemeinen in der Literatur der Begriff "Systemidentifikation" für dieses Thema verwendet wird. Vielleicht kann jemand damit mehr anfangen.

Vielen Dank schon mal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.03.2013, 10:59     Titel:
  Antworten mit Zitat      
Hallo,

es gibt die System Identification Toolbox dafür:
http://www.mathworks.de/de/products/sysid/

Erste Schritte:
http://www.mathworks.com/help/relea.....dentification-basics.html

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

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 14.03.2013, 11:06     Titel:
  Antworten mit Zitat      
oder halt mit fmincon selbstbasteln...
was in einfacheren Fällen auch ausreicht...
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 14.03.2013, 11:13     Titel: Lösung durch Fehlerabweichenminimierung
  Antworten mit Zitat      
Danke für den Hinweiß, jedoch suche ich eher nach einer anderen Lösung.
Mit hilfe von Algorithmen z.B. Summe der kleinsten Fehlerquadrate die Systemmaxtrix, Eingangsmatrix im Zustandsraum so anzupassen, dass die Abweichung im Zustandvektor zu den gemessenen Zuständen minimal wird.

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Matmarv
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 14.03.2013, 11:25     Titel: fmincon
  Antworten mit Zitat      
Zitat:
%oder halt mit fmincon selbstbasteln...
was in einfacheren Fällen auch ausreicht...
[/code]

Danke für den Tipp. Ich weiß jedoch noch nicht wie ich die funktion nutzen kann. Ich versuche jetzt mit dieser FUnktion folgendes zu lösen:

Da ich gemessene Zustände habe [xgemessen] und meine berechneten Zustand [x] mit der fehlerhaften Systemmatrix [A] kenne. Möchte ich jetzt die Differenz [deltax] = [xgemessen] - [x] durch anpassung von A und B gegen null gehen lassen.

[xpunkt] = [A]*[x] + [B]*[u]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.03.2013, 11:46     Titel:
  Antworten mit Zitat      
Hallo,

hast du dich denn mal damit auseinandergesetzt, was die System Identification Toolbox macht? ;)

Wenn du Richtung Optimization Toolbox gehst, sind lsqnonlin oder lsqcurvefit vermutlich einfacher in der Handhabung und effizienter.

Du musst eine Funktion folgender Form schreiben:

Code:
function deltax = abweichungen(input)

input ist dabei ein Vektor, der alle Elemente von A und B aneinandergereiht enthält. In der Funktion erzeugst du dann als erstes A und B und arbeitest dann damit weiter.

zu:
Code:
for ( 1:1000 )
[x`] = [A] [x]+[B][u]
[x] = [x0] + [x']*delta t
[x0]=[x]
end

Dir sollte auch klar sein, dass du mit solchem Code lediglich eine (möglicherweise nicht sehr gute) Annäherung an das tatsächliche Systemverhalten bekommst.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 12.03.13
Wohnort: ---
Version: Matlab R2013a
     Beitrag Verfasst am: 14.03.2013, 14:12     Titel: fmincon anwendung
  Antworten mit Zitat      
Hallo allerseits,

ich steh im moment ein wenig auf dem Schlauch. Ich muss leider nochmal nachfragen.
Ich habe folgende Funktion:

Code:
[detlaX] = [xgemessen]-( [Xo]+([A]*[x]+[B]*[u]) * delta t )


Kann ich mit der funktion fmincon delta x gegen null gehen lassen indem ich A und B anpasse? Wie muss ich dies schreiben?

x0,x,u sind Vektoren und A und B sind min. 5X5 Matritzen

Danke schon mal im vorraus.

Liebe Grüße
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 - 2025 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.