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

fmincon - Problem

 

danny_fox
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 31.08.11
Wohnort: Wien
Version: ---
     Beitrag Verfasst am: 31.08.2011, 20:13     Titel: fmincon - Problem
  Antworten mit Zitat      
Hallo an alle,

habe ein kleines Problem mit fmincon. Uuuunnnddd zwar, ich versuche eine Funktion mit mehreren (genau 4) Variablen zu minimieren. Mein Problem ist dass die Zielfunktion die minimiert werden muss nicht mehr in der Form y = x(1)x(2)x(3).... ausschaut, sondern y = F(x) selber nur mehr eine Funktion von x ist. Die Funktion F(x) ist auch schön in ein m-file geschrieben und die minimierung funktioniert auch mittels fminsearch, würde allerdings gerne fmmincon und die verschiedenen Algorithemn (interior-point und sqp) vergleichen!! Das Problem bei fmincon ist, dass er die Startwerte als lokales Minimum ansieht und sich nicht von denen weg bewegt (obwohl sie dies nicht sind)!!!!!
Hat vll irgendwer eine Idee?? Wäre sehr dankbar!!!

Mfg

Max
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2011, 20:55     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Das Problem bei fmincon ist, dass er die Startwerte als lokales Minimum ansieht und sich nicht von denen weg bewegt (obwohl sie dies nicht sind)!!!!!

Ohne genauere Informationen ist das Problem sehr schwer zu diagnostizieren.
Als erstes würde ich versuchen, TolX und TolFun über OPTIMSET herunterzusetzen, da es sonst sein kann, dass man entweder nur in einer Art Sattelpunkt ist und der Algorithmus meint, in einem lokalen Minimum gelandet zu sein, oder die Änderungen der Funktionswerte im Vergleich zu den Funktionswerten zu klein sind. Mich wundert allerdings, dass jegliche Startwerte gleich als vermeintliche lokale Minima erkannt werden.

Hast du mit FMINSEARCH vernünftige Ergebnisse erhalten?
Wenn ja und wenn FMINCON nichts brauchbares liefert, stellt sich mir die Frage: ist die Zielfunktion stetig und differenzierbar (nicht in dem Sinn, dass man die Ableitungen analytisch berechnen könnte, eher "glatt")? Wenn nicht, ist die Verwendung von ableitungsbasierten Algorithmen natürlich ein Lotteriespiel .

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 31.08.11
Wohnort: Wien
Version: ---
     Beitrag Verfasst am: 01.09.2011, 08:21     Titel:
  Antworten mit Zitat      
Hallo,

mhmmmm gute Frage!!!
Also gut, dass genaue Minimierungsproblem ist folgendes. In einer Funktion werden chi2 Werte und daraus dann p- Werte berechnet. Diese p-Werte werden dann auf Gleichverteilung geprüft. Je besser sie gleichverteilt sind desto kleiner ist der Wert der dabei rauskommt.
So nun möchte ich diesen Wert minimieren, dazu werden Startwerte in die erste Funktion gesteckt um p-Werte zu errechnen und daraus dann die Gleichverteilung geprüft.
Ob nun die eigentliche Zielfunktion glatt ist, mhmmmmm gute Frage, eig müsste sie das schon sein!!!

Irgendwelche Vorschläge dazu, bzw verstanden was ich hier so aufgeschrieben habe Smile.

Danke schonmal

Mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.09.2011, 08:34     Titel:
  Antworten mit Zitat      
Hallo,

und was willst du eigtl. optimieren? Sprich, was sind deine veränderlichen Parameter? Ich kann mir vorstellen, dass die Funktion recht stark oszilliert/variiert und dass das Probleme bereitet.

Als erstes würde ich wie gesagt eine Anpassung von TolFun und TolX versuchen.

Falls du die Global Optimization Toolbox hast, könntest du auch mal PATTERNSEARCH versuchen (versucht globale Optimierung und ist ableitungsfrei).

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 31.08.11
Wohnort: Wien
Version: ---
     Beitrag Verfasst am: 01.09.2011, 19:07     Titel:
  Antworten mit Zitat      
Hey,

alsooo mit den veränderlichen Paramtern geh ich in eine Fkt die dort dann Spuren rekonstruieren usw., im Endeffekt produzieren diese Parameter die p Werte von chi2 Werten, die dann in der Zielfkt mit einer Gleichverteilung verglichen werden. Der Wert der bei diesem Vergleich heraus kommt soll also minimiert werden. Dieser Wert oszilliert also eig nicht wirklich stark und sollte glatt sein und nicht wirklich Nebenminima besitzen.

Werde mal schauen ob ich die Global Optimization Toolbox auftreiben kann, dnake für den Tipp

Mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
danny_fox
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 31.08.11
Wohnort: Wien
Version: ---
     Beitrag Verfasst am: 06.10.2011, 20:09     Titel:
  Antworten mit Zitat      
Hallo nochmal,


hab zwar das Programm jetzt mit fminsearch geschrieben und es funktioniert auch, möchte aber dennoch wissen warum es mit fmincon bzw fminunc nicht laufen will. Verstehen tu ich es nicht, das die Fkt glatt ist, keine Nebenminima besitzt und die "Fehlermeldung", also Warnung die ausgegeben wird versteh ich nicht. Wenn ich die Zielfkt minimieren will schreibt mir Matlab "Warning: Gradient must be provided" und nach 4 maligen ausführen der Fkt schreibt Matlab "Opimization completed because the size of the gradient at the initial point is less than ....". D.h. bei 3 veränderlichen Variablen hat er die Fkt ja 4 mal ausgeführt um nummerisch den Gradienten zu bilden, aber offensichtlich nicht geschafft. Seltsam nur dass wenn ich selbst den Gradienten bilde mir ganze positive Zahlen durchaus größer als Null herauskommen!!

Jemand eine Idee??? Oder weiß vll jemand wie man bei Matlab den debug mode startet damit man vll mal in die Fkt "hineinschauen" kann und weiß was da falsch läuft!?!?!?!

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.10.2011, 20:22     Titel:
  Antworten mit Zitat      
Hallo,

Debug-Modus starten: Haltepunkt setzen, indem du vor der Zeile auf den Strich klickst, und das Programm dann laufen lässt. Ich fürchte allerdings, dass die Probleme tief im Algorithmus auftauchen und dass das nicht weiterhelfen wird.

Weitere Hilfe werde zumindest ich ohne den Code nicht bieten können. Insbesondere irritiert mich das "Gradient must be provided".

Grüße,
Harald
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 - 2024 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.