Ich versuche, einen Strömungsverteiler in einem Tank so zu optimieren, dass die Geschwindigkeits- und Temperaturverteilung über einen beliebigen Querschnitt relativ gleichmäßig ist. Es gibt viele Parameter, die ich an die maximale Gleichmäßigkeit des Querschnitts anpassen kann, wie z. B. die Anzahl der Einlassrohre, ihre Position, Ausrichtung und Richtung. Ich weiß, dass ich verschiedene Geometrien erstellen und jede einzeln testen kann, aber das ist sehr zeitaufwändig. Ich möchte in der Lage sein, ein Programm zu schreiben, das mehrere Fälle gleichzeitig (parallel) iterativ testen und adaptiv einen neuen Satz von Geometrien zum Testen basierend auf den vorherigen Ergebnissen auswählen kann. Wie kann ich das am besten machen?
optimization
Paul
quelle
quelle
Antworten:
Was Sie tun möchten, ist die Formoptimierung mit gradientenbasierten Methoden. Dies bedeutet im Wesentlichen, dass Sie den Gradienten der Zielfunktion anhand Ihrer Modellparameter berechnen müssen.
Für eine kleine Anzahl von Parametern können Sie FD verwenden, für eine große Anzahl von Parametern müssen Sie jedoch die zugehörigen Methoden untersuchen. Wenn Sie einen kommerziellen Code oder den Code einer anderen Person verwenden, der die zugehörigen Gleichungen nicht lösen kann, ist FD Ihre einzige Option.
Schauen Sie sich die grundlegenden Bücher zur Optimierung der Grundform an.
Bearbeiten: Für strukturelle FE-Probleme können Sie das Buch von Choi und Kim I und II lesen
quelle
Wenn Sie Ihr Geometriekonstruktionsteil entsprechend parametrisieren, ist dies ein Problem der Black-Box-Optimierung mit gemischten diskreten und kontinuierlichen Parametern.
DAKOTA http://dakota.sandia.gov/ und NOMAD http://www.gerad.ca/NOMAD/Project/Home.html sind zwei nützliche Pakete, mit denen Sie automatisch die besten Parameter auswählen können. (DAKOTA hat eine bessere Anwendungsunterstützung, aber NOMAD hat wahrscheinlich die besseren Optimierer.)
Um die Geometrie zu variieren, geben Sie für jedes Steuerelement, mit dem Sie die Geometrie beeinflussen möchten, einen diskreten oder kontinuierlichen Parameter ein und automatisieren Sie die Konstruktion der Geometrie aus der Sammlung von Steuerelementen. Beachten Sie, dass derivatfreie Methoden in hohen Dimensionen ziemlich langsam sind. Halten Sie daher die Anzahl der Parameter relativ klein.
Nachdem Sie den Raum mit einem der oben genannten Pakete erkundet haben, können Sie die Analyse verfeinern, indem Sie eine genauere Optimierung durchführen, bei der alle diskreten Parameter und alle kontinuierlichen Parameter festgelegt sind, für die Sie keine analytische Ableitung erhalten können. Sie können jedoch die Anzahl der kontinuierlichen Formparameter erhöhen, für die Sie analytische Ableitungen berechnen können, da ein gradientenbasierter Optimierer (wie IPOPT https://projects.coin-or.org/Ipopt ) weitaus größere Probleme effizient lösen kann .
Wenn Sie nicht wissen, wie Sie die Ableitung erhalten, die Abhängigkeit jedoch reibungslos ist, können Sie ein automatisches Differenzierungsprogramm verwenden oder Ihr kontinuierliches Problem in AMPL codieren. In diesem Fall kümmert sich die Solver-Schnittstelle um die Ableitungen.
Zu den Grundlagen der Formoptimierung siehe z. B. Haftka, RT und Grandhi, RV, Strukturformoptimierung - Eine Übersicht, Computer Methods in Applied Mechanics and Engineering 57 (1986), 91-106. (Vertrauen Sie der Beschreibung der Modellierung; verwenden Sie jedoch nicht die von ihnen empfohlenen Löser, da sich die Optimierungstechnologie seitdem erheblich verbessert hat.)
quelle
In Bezug auf die Parametrisierung der Geometrie (wie Geoff nicht trivial hervorhob ) - kann ich Brenda Kulfan - Universal Parametric Geometry Representation Method, J. Aircraft, Band 45, Nr . 1.2008, aufrichtig empfehlen .
Der beschriebene Ansatz ist bei der aerodynamischen Optimierung von Flugzeugen anwendbar.
quelle
Es gibt auch eine adjungierte Raumoptimierung, die viel schneller zu sein scheint als die standardmäßige parametrische Optimierung in CFD. In letzter Zeit hat die Popularität in der CFD-Community im Allgemeinen und in OpenFOAM im Besonderen stark zugenommen. Wir organisieren derzeit einen Workshop zu OpenFOAM und haben viele abstrakte Beiträge zu dieser Methode erhalten. Wenn Sie interessiert sind, überprüfen Sie dies , für weitere Informationen, googeln Sie einfach "adjungierte Raumformoptimierung in CFD".
Zusätzliche Information:
Wenn Sie OpenFOAM verwenden könnten, gibt es eine Python-basierte Bibliothek, die für genau solche Zwecke verwendet wird, um eine große Anzahl von Fällen zu bearbeiten und deren Parameter namens PyFoam zu ändern . Für eine einfache Geometrie können Sie ein Netz als einfaches blockMesh definieren und über alles iterieren, was Sie möchten . In einem einfachen Fall geht es darum, einige Schleifen in Python zu schreiben. So sieht das Skript aus, wenn Sie die Geschwindigkeit der Einlassgrenzbedingung ändern. Einfache Änderungen der Netzgeometrie wären ein paar weitere Codezeilen ...
quelle
Du bräuchtest:
Folgende Funktionen sind für das CFD-Tool von entscheidender Bedeutung:
Daher kann ich folgende Software empfehlen:
Erweiterte Simulationsbibliothek , die bietet
Hochleistung:
Hohe Flexibilität und Liebenswürdigkeit:
Erzeugung und Manipulation von geometrischen Grundelementen .
quelle