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 mit fmincon

 

Marc!
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 22.04.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.07.2016, 20:58     Titel: Optimierung mit fmincon
  Antworten mit Zitat      
Hallo zusammen,

ich versuche momentan ein nichtlineares Optimierungsproblem unter Nebenbedingugnen zu lösen. Ich verwende den Solver fmincon mit dem SQP Algorithmus, der laut gefundener Literatur schon mehrfach erfolgreich auf mein Problem angewendet wurde.

Um die Robustheit zu testen erzeuge ich mir 100 Sätze von Startwerten innerhalb meiner Boundaries und lasse den Solver dann laufen. Für das Problem kenne ich die Lösung. Der Solver liefert in ungefähr 40 % der Fälle das korrekte Ergebnis. In den anderen Fällen weichen die Ergebnisse um maximal 2 % vom Sollwert ab.

Für die eigentlichen korrekten Werte wirft fmincon jedoch zwei verschiedene ExitFlags aus:
Code:
ExitFlag = 2
Local minimum possible. Constraints satisfied.
fmincon stopped because the size of the current step is less than the selected value of the step size tolerance and constraints are  satisfied to within the selected value of the constraint tolerance.

ExitFlag = -2
No feasible solution found.
fmincon stopped because the size of the current step is less than the selected value of the step size tolerance but constraints are not satisfied to within the selected value of the constraint tolerance.


Der Fall 1, welche eine konvergierte Lösung andeutet ist nicht dabei. Fall 2 und Fall -2 treten beide sowohl bei guten Ergebnissen auf, als auch bei Ergebnissen, die stärker von der Lösung abweichen. Mit "guten" Ergebnissen meine ich hier einen Wert für meine Objective Function, mit deren Genauigkeit ich sehr gut leben kann und weiterrechnen möchte. (im Angehängtem Bild ist eindeutig das Optimum bei ca. 18,21 zu sehen) Jedoch ist die Constraint Boundary von 1e-08 oftmals überschritten. Wenn ich diese lockere kann ich keine signifikante Verbesserung feststellen. Aber in einigen Fällen wird jetzt die ExitFlag=1 ausgegeben. Die Ergebnisse weichen logischer Weise stärker vom Optimum ab.

Ein großes Problem scheint mit zu sein, dass die Stepsize Tolerance immer unterschritten und die Berechnung abgebrochen wird. Gibt es Ansätze, die hier weiterhelfen? Ich habe schon viel mit den Tolerances rumgespielt und und die Boundaries und Startwerte schon recht nah zur Lösung gewählt. Ich möchte den Solver jetzt so tunen, dass ich zuverlässig die richtige Lösung finde ohne fehlerhafte ExitFlags zu bekommen.

Ich bin für jeden Tipp sehr dankbar!

123.png
 Beschreibung:

Download
 Dateiname:  123.png
 Dateigröße:  12.7 KB
 Heruntergeladen:  316 mal
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.