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

Optimization TB: Keine analytische Zielfunktion

 

Buhmann
Forum-Anfänger

Forum-Anfänger



Beiträge: 30
Anmeldedatum: 25.05.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 25.05.2011, 09:57     Titel: Optimization TB: Keine analytische Zielfunktion
  Antworten mit Zitat      
Hallo zusammen!

Ich möchte in Matlab eine Zielfunktion minimieren, von der ich keinen analytischen Ausdruck vorliegen habe. Ich habe ein externes Programm, dem ich Eingabewerte übergebe, zu denen mir das Programm dann einen Ausgabewert liefert, der minimiert werden soll.
In allen Beispielen, Anwendungen usw. wird aber immer vorausgesetzt, dass ich die Hessematrix oder die Ableitungen i.a. berechnen und dem Algorithmus zur Verfügung stellen kann.
Kann mir jemand sagen, wie ich die Optimization TB zur Lösung meines Problems einsetzen kann?
Vll. kann mir auch jemand sagen, um was für ein(e) Problem(klasse) es sich dabei handelt, vielleicht hab ich bisher einfach nur nach den falschen Stichwörtern gegooglet?

Gruß
Chris
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Harald
Forum-Meister

Forum-Meister


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

Zitat:
In allen Beispielen, Anwendungen usw. wird aber immer vorausgesetzt, dass ich die Hessematrix oder die Ableitungen i.a. berechnen und dem Algorithmus zur Verfügung stellen kann.

Das ist bei den Algorithmen optional - sprich: es ist gut, wenn du das zur Verfügung stellen kannst, aber nicht erforderlich.

Eine Übersicht über die Solver findest du hier:
http://www.mathworks.com/help/relea...../optim/ug/brhkghv-18.html

Wenn es sich, wie ich einfach mal vermuten würde, um eine allgemeine nichtlineare Zielfunktion handelt, empfiehlt sich einer der folgenden:
fminunc - wenn du keine Nebenbedingungen hast
fmincon - wenn du Nebenbedingungen hast
fminsearch - wenn es nicht sinnvoll ist, eine Ableitung anzunähern

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

Forum-Anfänger

Forum-Anfänger



Beiträge: 30
Anmeldedatum: 25.05.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 25.05.2011, 14:24     Titel:
  Antworten mit Zitat      
Danke schon mal für die schnelle Antwort!
Ja, fminsearch habe ich bereits ausprobiert und das funktioniert auch einwandfrei. Ich soll allerdings verschiedene Algorithmen auf meine Zielfunktion anwenden und diese benchmarken. Ob ich den genetischen Algorithmus und das Simulated Annealing aus der TB benutze, oder das selber programmiere werde ich noch sehen.
Meine Funktion ist übrigens hochgradig mehrdimensional und stetig.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


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

wenn sie stetig ist und auch nicht zu "zackig" (Sprünge in den Gradienten), dann sollte auch fminunc gute Ergebnisse liefern.

Bei den von mir genannten Algorithmen ist das größte Problem, dass sie einen ausreichend guten Startwert (d.h. dass der Algorithmus zum globalen Min. konvergiert) brauchen.

Wenn du keine ausreichend guten Startwerte hast, würde ich (in dieser Reihenfolge) folgendes ausprobieren:
Code:
patternsearch
ga
simulannealbnd

Bei den beiden letzteren würde ich als Hybrid Function fminunc oder fminsearch verwenden, da die Konvergenz dort schlecht ist (liegt in der Natur dieser Algorithmen).
Alle drei Algorithmen werden höchstwahrscheinlich deutlich länger als fminsearch brauchen, um das Minimum zu finden.

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

Forum-Anfänger

Forum-Anfänger



Beiträge: 30
Anmeldedatum: 25.05.11
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 16.07.2011, 12:24     Titel:
  Antworten mit Zitat      
Hallo nochmal!

Ich hab noch eine Frage zu patternsearch. Der Algorithmus führt zwar nicht wirklich zu einem Minima, das ich mit den fminsearch, fminunc und einem anderen, selbst geschriebenen Algorithmus finde, aber das ist erstmal Nebensache, da ich mich auch noch nicht mit den Options auseinandergesetzt habe.
Mein Problem ist, dass ich patternsearch keine options übergeben kann. Der Funktionsaufruf
Code:
[endvektor,MFV] = patternsearch(@getMFV,startvektor);

funktioniert, folgendes funktioniert allerdings nicht:
Code:
opt = psoptimset('OutputFcn',@outputPlotProgress);
[endvektor,MFV] = patternsearch(@GUI_getMF_2var,startvektor,opt);

Dann bekomme ich immer die Fehlermeldung:
Code:
??? Error using ==> patternsearch at 225
PATTERNSEARCH only accepts inputs of data type double.

Da patternsearch laut Hilfe mit options-Argument nur so:
Code:
x = patternsearch(@fun,x0,A,b,Aeq,beq,LB,UB,nonlcon,options)

aufgerufen werden kann, nehme ich an, dass es daran liegt, dass ich A, b, Aeq, beq, LB, UB und nonIcon nicht übergebe. Allerdings habe ich keine Ahnung, welche Werte ich da einsetzen soll...

Kann mir dabei jemand helfen?

Zuletzt bearbeitet von Buhmann am 16.07.2011, 12:42, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


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

für nicht benötigte Argumente sollte [] übergeben werden.
Das ist auch in der Dokumentation so nachzulesen.

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 - 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.