|
|
Optimierung-Parameter Identifikation eines Modells |
|
Matmarv |

Forum-Fortgeschrittener
|
 |
Beiträge: 54
|
 |
|
 |
Anmeldedatum: 12.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Matlab R2013a
|
 |
|
|
 |
|
Verfasst am: 12.03.2013, 08:47
Titel: Optimierung-Parameter Identifikation eines Modells
|
 |
|
 |
|
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
|
|
|
|
|
Matmarv |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 54
|
 |
|
 |
Anmeldedatum: 12.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Matlab R2013a
|
 |
|
|
 |
|
Verfasst am: 14.03.2013, 10:41
Titel: Systemidentifikation mit Matlab
|
 |
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!
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.03.2013, 10:59
Titel:
|
 |
|
|
Martin1986 |

Forum-Century
|
 |
Beiträge: 121
|
 |
|
 |
Anmeldedatum: 20.06.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Win 2016b Linux 2016b
|
 |
|
|
 |
|
Verfasst am: 14.03.2013, 11:06
Titel:
|
 |
oder halt mit fmincon selbstbasteln...
was in einfacheren Fällen auch ausreicht...
|
|
|
Matmarv |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 54
|
 |
|
 |
Anmeldedatum: 12.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Matlab R2013a
|
 |
|
|
 |
|
Verfasst am: 14.03.2013, 11:13
Titel: Lösung durch Fehlerabweichenminimierung
|
 |
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
|
|
|
Matmarv |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 54
|
 |
|
 |
Anmeldedatum: 12.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Matlab R2013a
|
 |
|
|
 |
|
Verfasst am: 14.03.2013, 11:25
Titel: fmincon
|
 |
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]
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.03.2013, 11:46
Titel:
|
 |
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:
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:
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
|
|
|
Matmarv |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 54
|
 |
|
 |
Anmeldedatum: 12.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: Matlab R2013a
|
 |
|
|
 |
|
Verfasst am: 14.03.2013, 14:12
Titel: fmincon anwendung
|
 |
Hallo allerseits,
ich steh im moment ein wenig auf dem Schlauch. Ich muss leider nochmal nachfragen.
Ich habe folgende Funktion:
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
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|