|
|
Zustandssprünge in quasistatischer Simulation |
|
Marc! |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 22.04.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.09.2016, 08:21
Titel: Zustandssprünge in quasistatischer Simulation
|
 |
|
 |
|
Hallo!
Ich arbeite zur Zeit an einer quasistatischen Simulation, die den Zeitverlauf eines Systems als eine Reihe von Gleichgewichtszuständen bestimmt. Das übergeordnete Ziel ist es eine Strecke in minimaler Zeit zu absolvieren. Dazu muss in jedem Punkt die maximal mögliche Beschleunigung erreicht werden. Für jeden Berechnungsschritt wird aus Beschleunigung und Geschwindigkeit aus dem vorherigem Punkt die aktuelle Geschwindigkeit ermittelt und für diese Geschwindigkeit unter Rahmenbedingungen der Systemzustand gesucht, der die maximale Beschleunigung liefert.
Um die Beschleunigung zu maximieren, habe ich ein nichtlineares Optimierungsproblem formuliert, das mit der fmincon-Funktion aus Matlab gelöst wird (SQP-Algorithmus). Mein Problem ist, dass der Solver an recht vielen Stellen einen Sprung zu einem völlig anderem Systemzustand macht und somit die Ergebnisse nicht stetig sind. Vermutlich findet er hier ein anderes lokales Minimum.
Jetzt suche ich einen Weg, den Solver auf den richtigen "Pfad" zu führen um stetige Systemänderungen zu bekommen. Ich habe schon versucht die Änderungsrate diverser Größen zu beschränken aber das führte entweder zu keiner wirklichen Verbesserung oder der Solver fand keine Lösung mehr.
Vielleich hat der ein oder andere ja schon Erfahrung mit solchen Simulationen und stieß auf ähnliche Probleme. Für Tipps und Anregungen bin ich sehr dankbar!
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 16.09.2016, 09:14
Titel:
|
 |
Hallo,
Zitat: |
Mein Problem ist, dass der Solver an recht vielen Stellen einen Sprung zu einem völlig anderem Systemzustand macht und somit die Ergebnisse nicht stetig sind. Vermutlich findet er hier ein anderes lokales Minimum. |
Dann würde ich auf Anhieb sagen, dass man den bisherigen Systemzustand als Startpunkt nehmen sollte und über untere/obere Schranken die Veränderungen beschränken sollte.
Für eine konkretere Hilfestellung bräuchte ich ein Codebeispiel, aus dem die Problematik ersichtlich wird.
Grüße,
Harald
|
|
|
Marc! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 22.04.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.09.2016, 08:48
Titel:
|
 |
Guten Morgen,
die Sache mit den oberen und unteren Schranken zur Beschränkung der Veränderung habe ich auch schon ausprobiert. Entweder das System verändert sich immer genau um den zugelassenen Wert, oder der Solver findet keine passende Lösung in dem erlaubtem Intervall.
Mit dem ersten Fall bin ich aber auch nicht glücklich, da der User das System dann ja mehr oder weniger führt, als dass es sich ändert. Wahrscheinlich kommt man um solche Einschränkungen aber nicht herum, oder was meint ihr?
Ist eine geschicktere Formulierung der Schranken anhand des aktuellen Systemzustandes sinnvoller?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.09.2016, 08:56
Titel:
|
 |
Hallo,
ohne Code oder genaue Erklärung der Vorgehensweise (zu optimierende Parameter, Zielfunktion, Nebenbedingungen) kann ich nicht mehr sagen.
Grüße,
Harald
|
|
|
Marc! |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 22.04.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.09.2016, 12:09
Titel:
|
 |
|
 |
|
Danke für die rasche Antwort, Harald.
Den Code kann ich hier leider nicht posten.
Ich betrachte ein Fahrzeugmodell mit folgenden Einganggrößen:
Control Input für Motor- oder Bremsmoment
Lenkwinkel
Geschwindigkeit
Schwimmwinkel
Gierrate
Raddrehzahlen
Die Geschwindigkeit ist bekannt und ich möchte die maximale Längsbeschleunigung für einen bestimmten Kurvenradius finden. Die Objective Function für fmincon maximiert also die Längsbeschleunigung.
Mein Nebenbedingungen gleichen die Reifenlängskraft mit dem Brems-/Motormoment und Fahrwiderständen ab. Die Querbeschleunigung, die sich auch den Reifenkräften ergibt, gleich der um mit der gegebenen Geschwindigkeit den Kurvenradius zu fahren. Die Gierrate ergibt sich ebenfalls aus Geschwindigkeit und Kurvenradius.
Die Zustandssprünge treten im Schwimm- und Lenkwinkel auf. Wenn ich die Änderung aber begrenze gibt es, wie gesagt oft Probleme bei der Lösungsfindung.
Überhaupt ist das ganze Optimierungsproblem sehr empfindlich, was Startwerte und Constraints angeht
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.09.2016, 12:54
Titel:
|
 |
Hallo,
ist das Fahrzeugmodell in Simulink implementiert, oder verwendest du einen DGL-Löser wie ode45? Dann siehe hier:
http://www.mathworks.com/help/optim.....ifferential-equation.html
Ich verstehe ja, dass du den Code nicht posten kannst. Nur kann zumindest ich dann leider nicht wirklich helfen, da ich mich nur generell mit Optimierungsproblemen, aber nicht diesem speziellen hier auskenne.
Grüße,
Harald
|
|
|
|
|
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.
|
|