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

 

Waschtel
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2010, 21:06     Titel: Optimierung
  Antworten mit Zitat      
Hallo Matlab Gemeinde Smile

Folgendes Problem: Ich möchte ein Mehrkörpersystem hinsichtlich der Parameter bezogen auf eine Messkurve optimieren.
Das funktioniert soweit auch ganz gut, dauert nur etwas.
Ich habe als Optimierungswerkzeug "fminsearch" verwendet.
Bei der Funktion "fminbnd" kann man ja die Intervallgrenzen mit angeben, aber laut Hilfe nur für eine Variable.
Ich habe mir zusätzlich noch, indem ich einfach mal jeden Parameter einmal um 10% verändert habe, so eine Art Sensitivitätskoeffizienten berechnet. Also sprich welcher Parameter auf eine Veränderung am stärksten in die Funktion eingehen.
Meine Frage:
Gibt es ein Optimierungswerkzeug bei dem ich Grenzen für mehrere Variablen oder eine Art Priorisierung welche Variablen sich der Optimierer "genauer" ansehen sollte mitgeben kann?

Vielen Dank

Gruß
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: 28.04.2010, 22:52     Titel:
  Antworten mit Zitat      
Hallo,

in der Optimization Toolbox gibt es etliche Funktionen, die Minimierung (und Schranken) für mehrere Variablen ermöglichen, z.B. fmincon für Probleme recht allgemeiner Art.

Ein "genauer ansehen" ist bei den klassischen Algorithmen (Optimization Toolbox etc.) nicht möglich. Da sollte man auf patternsearch oder besser genetische Algorithmen zurückgreifen.

Das hört sich für mich zudem ein wenig nach Curve Fitting an; da könnte auch nlinfit / nlintool oder lsqnonlin interessant sein. In der Curve Fitting Toolbox werden zudem auch Konfidenzintervalle für die Parameter ausgegeben.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2010, 22:02     Titel:
  Antworten mit Zitat      
Ich habs mal mit der fmincon probiert.

Code:

optionen=optimset('LargeScale','off','TolFun',0.1,'MaxFunEvals',1000000','TolCon',0.1,'MaxIter',1000000);
[parameter,fval] = fmincon ( @fun,x0,[],[],[],[],min,max,[],optionen)
 


Irgendwie berücksichtigt er die optionen nicht, wobwohl diese für fmincon compatibel sind.
Er macht ein paar Optimierungsschritte und hört dann mit dem Startwert auf, obwohl der Funktionswert noch sehr groß ist.
Der Funktinswert ist die quadratische Abweichung zwischen Mess- und Rechenkurve. Mit fminsearch hat das soweit funktioniert.

Vielen Dank

Gruß Waschtel
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: 29.04.2010, 23:15     Titel:
  Antworten mit Zitat      
Hallo,

bedingt durch deine Optionen sorgst du dafür, dass der Algorithmus die Grenzen recht lasch handhabt (TolCon) und auch recht früh "aufgibt", wenn sich die Funktionswerte nicht mehr sehr ändern (TolFun). Ich würde TolFun hier eher sehr klein (1e-10) wählen, um möglichst gute Ergebnisse zu bekommen.

Vielleicht mal das Ergebnis von fminsearch als Startwert in fmincon reinstecken? Man sollte sich darüber im klaren sein, dass fmincon ein LOKALES Minimum sucht, nicht das globale - ist also auf gute Startwerte angewiesen. Ansonsten ist es schwierig, Rat zu geben, ohne das konkrete Problem vor sich zu haben.

Zwei Fragen:
- wenn es um eine Abweichung zwischen Mess- und Rechenkurve geht, warum die Parameter beschränken? Wenn die besten Parameter außerhalb des zulässigen Bereichs sind, könnte das auf einen Modellierungs- oder sonstigen Fehler hindeuten.
- warum nicht mit lsqnonlin oder nlinfit arbeiten? Diese Algorithmen sind schließlich für Kurvenanpassung geschaffen, während fmincon ein Allzweckalgorithmus ist.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.05.2010, 21:26     Titel:
  Antworten mit Zitat      
Zu Frage 1: Ich dachte es geht vll einfach schneller, wenn man dem optimierer noch mitgibt in welchem Bereich sich die Parameter befinden, allerdings scheint fmincon da eher langsamer vorzugehen wie fminsearch
Zu Frage 2: Denken sie, dass man mit lsqnonlin oder nlinfit mit weniger Iterationsschritten zum Zielt kommt?

Das ganze funktioniert ja bereits mit fminsearch, jedoch wird bei jedem Iterationsschritt der MKS Simulator wieder angeworfen und eine Rechenlauf dort gestartet - das dauert etwa so 2 Sekunden in meinem Fall und nimmt somit mit Abstand die meiste Zeit in Anspruch. Somit muss ich schauen, ob ich mit einem anderen Optimierer weniger Interationsschritte schaffe.

Gruß Waschtel
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: 01.05.2010, 22:15     Titel:
  Antworten mit Zitat      
Hallo,

Nebenbedingungen führen i.a. nicht zu einer schnelleren Konvergenz, da sie ja in jeden Schritt berücksichtigt werden müssen. Was hilft, ist ein guter Startwert.
Welches Verfahren das schnellste ist, hängt sehr von dem tatsächlichen Problem ab. Das muss man aber schlicht und einfach ausprobieren. Generell geht man davon aus, dass das Verfahren am schnellsten und zuverlässigsten arbeitet, das am stärksten auf das Problem ausgerichtet ist. Wenn das Problem Curve-Fitting ist, sollte man also die Curve-Fitting-Algorithmen zumindest mal probieren.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 25.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2010, 10:39     Titel:
  Antworten mit Zitat      
Oke Danke dann werd ich in die Richtung mal etwas rumprobieren.
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.