|
|
Optimierung mit unrobuster Zielfunktion |
|
McLovin |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 24.09.15
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2014b
|
|
|
|
|
|
Verfasst am: 24.09.2015, 12:39
Titel: Optimierung mit unrobuster Zielfunktion
|
|
|
|
|
Hallo zusammen,
ich habe es im Rahmen meiner Abschlussarbeit mit einem Optimierungsproblem zu tun, bei dem ich nicht richtig weiterkomme. Vielleicht fällt dazu ja hier jemandem etwas ein, ich bin für alle Tipps und Anregungen dankbar
Und zwar geht es darum, ein Bauteil mit einer sehr komplexen Geometrie bzgl. seines Wirkungsgrades zu optimieren. Das Bauteil wird durch 7 Parameter definiert, welche im Laufe der Optimierung variiert werden. Es gibt sowohl kontinuierliche, als auch integer-Parameter. In der Zielfunktion wird der Wirkungsgrad in Abhängigkeit der Parameter berechnet, was ca. 1-2 Sekunden dauert.
Die Schwierigkeit besteht darin, dass die Zielfunktion nur für bestimmte Parameterkombinationen definiert ist. Der Großteil der Kombinationen ist physikalisch nicht sinnvoll und es kann kein Ergebnis berechnet werden, sodass NaN als Funktionswert ausgegeben wird. Aufgrund der sehr komplexen Geometrieberechnung ist es mir auch bisher nicht möglich gewesen, die Parameter mittels Randbedingungen auf sinnvolle Kombinationen einzuschränken.
Momentan nutze ich den Genetischen Algorithmus der Global Optimization Toolbox. Dieser sucht je nach Startwert extrem lange (500-1000 Iterationen), bis er überhaupt eine Parameterkombination findet, bei der ein Wirkungsgrad berechnet werden kann. Von dort aus konvergiert er dann auch langsam gegen ein Minimum, wobei ich mir jedoch nicht sicher bin ob es sich dabei um ein lokales oder globales Minumum handelt.
Mein Ziel ist es nun, den Ablauf der Optimierung robuster und schneller zu gestalten. Dazu hätte ich auch einige Ideen, von denen ich jedoch nicht weiß ob sie sinnvoll sind oder nicht:
1. Würde es helfen den Suchraum "gröber" abzusuchen? Momentan wird auf 16 Nachkommastellen gerechnet, was physikalisch ohnehin keinen Sinn macht. Falls ja, wie macht man sowas?
2. Was kann ich an Einstellungen des Algorithmus zu ändern um ihn robuster zu machen? Sollte man z.b. die Populationsgröße größer oder kleiner wählen? Ich habe schon einiges ausprobiert, aber kam bisher noch zu keinen guten Ergebnissen weil mir einfach das Gefühl dafür fehlt...
3. Ich muss ein geeignetes Stoppkriterium für den Algorithmus definieren. Gibt es die Möglichkeit, die Iterationsschritte erst zu zählen, nachdem ein Startwert gefunden wurde? Momentan habe ich das Problem, dass manchmal bei 300 der Startwert gefunden wird und manchmal erst bei 800. Wenn ich jetzt 1000 als Obergrenze definiere würden verschiedene Optima rauskommen...
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt, bitte fragt nach falls noch etwas unklar ist. Vielen Dank schon einmal im Voraus!
|
|
|
|
|
|
|
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 - 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.
|
|