Jak mogę zautomatyzować proces optymalizacji projektu obiektu fizycznego?


9

Próbuję zoptymalizować rozdzielacz przepływu w zbiorniku, tak aby rozkład prędkości i temperatury na dowolnym przekroju był względnie jednolity. Istnieje wiele parametrów, które mogę dostosować do maksymalnej jednorodności przekroju, takie jak liczba rur wlotowych, ich położenie, orientacja i kierunek. Wiem, że mogę utworzyć wiele różnych geometrii i przetestować każdą z nich osobno, ale jest to bardzo czasochłonne. Chciałbym móc napisać program, który może iteracyjnie testować kilka przypadków jednocześnie (równolegle) i adaptacyjnie wybrać nowy zestaw geometrii do przetestowania na podstawie poprzednich wyników. Jak najlepiej to zrobić?


1
Część do wyszukiwania parametrów jest dla mnie łatwa. Nietuzinkowa część parametryzuje geometrię.
Geoff Oxberry

Odpowiedzi:


4

To, co chcesz zrobić, to optymalizacja kształtu za pomocą metod opartych na gradientach. Zasadniczo oznacza to, że musisz obliczyć gradient funkcji celu wrt do parametrów modelu.

W przypadku niewielkiej liczby parametrów można użyć FD, ale w przypadku dużej liczby parametrów należy przyjrzeć się metodom powiązanym. Jeśli używasz kodu komercyjnego lub kodu innej osoby, który nie może rozwiązać równań sąsiednich, wówczas jedyną opcją jest FD.

Przejrzyj podstawowe podstawowe książki dotyczące optymalizacji kształtu.

Edycja: W przypadku problemów strukturalnych z FE można zapoznać się z książką Choi oraz Kim I i II


Niektóre parametry są tylko liczbami całkowitymi ... Czy nadal można stosować podejście oparte na gradiencie?
Paweł

Czy polecasz jakieś dobre tutoriale / książki na temat optymalizacji kształtu?
Paweł

Aby dowiedzieć się czegoś krótkiego / prostego, przeczytaj: acdl.mit.edu/mdo/mdo_06/EulerAdjoint.pdf . Jak powiedziałem z FD, jest to banalne, ponieważ musisz tylko obliczyć gradient (co oznacza, że ​​uruchom kod CFD kilka razy, w zależności od liczby parametrów), a następnie użyj gradientu do przeprowadzenia optymalizacji. Zwykle potrzeba kilku iteracji, zanim oszacowania parametrów się zbiegną. W przypadku dużych parametrów staje się to drogie i będziesz musiał skorzystać z połączonych metod, aby obliczyć gradient.
stali

Dziękuję, stali. To było bardzo dobre wprowadzenie do metod łączenia.
Paul

5

Jeśli odpowiednio sparametryzujesz geometryczną część konstrukcyjną, jest to problem optymalizacji czarnej skrzynki z mieszanymi parametrami dyskretnymi i ciągłymi.

DAKOTA http://dakota.sandia.gov/ i NOMAD http://www.gerad.ca/NOMAD/Project/Home.html to dwa przydatne pakiety, które pozwalają automatycznie wybierać najlepsze parametry. (DAKOTA ma lepszą obsługę aplikacji, ale NOMAD prawdopodobnie ma lepsze optymalizatory).

Aby zróżnicować geometrię, wprowadź dyskretny lub ciągły parametr dla każdej kontrolki, za pomocą której chcesz wpływać na geometrię, i zautomatyzuj budowę geometrii z kolekcji kontrolek. Zauważ, że metody bez pochodnych są dość powolne w dużych wymiarach, więc utrzymuj liczbę parametrów na względnie niskim poziomie.

Po zakończeniu eksploracji przestrzeni za pomocą jednego z powyższych pakietów możesz udoskonalić analizę, wykonując dokładniejszą optymalizację, w której ustalone są wszystkie dyskretne parametry i wszystkie parametry ciągłe, dla których nie można uzyskać pochodnej analitycznej. Możesz jednak zwiększyć liczbę parametrów kształtu ciągłego, w odniesieniu do których możesz obliczyć pochodne analityczne, ponieważ optymalizator oparty na gradiencie (taki jak IPOPT https://projects.coin-or.org/Ipopt ) może skutecznie obsługiwać znacznie większe problemy .

Jeśli nie wiesz, jak uzyskać pochodną, ​​ale zależność jest płynna, możesz rozważyć użycie programu automatycznego różnicowania lub kodowania ciągłego problemu w AMPL, w którym to przypadku interfejs solver zajmie się pochodnymi.

Aby zapoznać się z podstawami optymalizacji kształtu, patrz np. Haftka, RT i Grandhi, RV, trukturalna optymalizacja kształtu - ankieta, Metody komputerowe w mechanice stosowanej i inżynierii 57 (1986), 91-106. (Ufaj opisowi modelowania, ale nie korzystaj z polecanych przez nich solverów, ponieważ technologia optymalizacji znacznie się poprawiła).


Jakie metody mogę sparametryzować geometrię?
Paweł

Zobacz dodatek do mojej odpowiedzi.
Arnold Neumaier

@Paul: Właśnie poprawiłem głupi błąd w swoim piśmie - parametry geometrii mogą oczywiście być dyskretne lub ciągłe!
Arnold Neumaier


3

Istnieje również optymalizacja przestrzeni przyległej, która wydaje się być znacznie szybsza niż standardowa optymalizacja parametryczna w CFD. Ostatnio ma duży wzrost popularności w społeczności CFD, aw szczególności w OpenFOAM. Obecnie organizujemy warsztaty na temat OpenFOAM i otrzymaliśmy wiele abstrakcyjnych zgłoszeń dotyczących tej metody. Jeśli jesteś zainteresowany, sprawdź to , aby uzyskać więcej informacji, po prostu google „Optymalizacja kształtu sąsiedniej przestrzeni w CFD”.

Dodatkowe informacje:

Jeśli możesz użyć OpenFOAM, istnieje biblioteka oparta na języku Python, która jest używana do takich rzeczy, aby manipulować dużą liczbą przypadków i zmieniać ich parametry o nazwie PyFoam . W przypadku prostej geometrii można zdefiniować siatkę jako prosty blok Siatka i iterować w dowolny sposób. W prostym przypadku chodzi o napisanie kilku pętli w Pythonie. Oto jak wygląda skrypt, jeśli zmienisz prędkość warunku brzegowego „wlotowego”. Proste zmiany geometrii siatki byłyby jeszcze kilkoma liniami kodu ...


2

Potrzebujesz:

  1. optymalizator i
  2. narzędzie CFD, które jest wystarczająco (elastyczne), aby poradzić sobie z różnymi projektami w ramach konkretnej koncepcji lub nawet należącymi do różnych koncepcji.

Kluczowe znaczenie dla narzędzia CFD mają następujące funkcje:

  • Wysoka wydajność obliczeniowa (szybkość) w celu przetworzenia dużej liczby osobnych projektów w rozsądnych ramach czasowych.
  • Wysoka elastyczność i sympatia technik numerycznych w celu wykluczenia ręcznej interwencji w proces wyszukiwania / analizy.
  • Programowa manipulacja geometrią.

Mogę więc polecić następujące oprogramowanie:

  1. Insight Toolkit, który zapewnia dużą liczbę optymalizatorów, z którymi można łączyć
  2. Zaawansowana biblioteka symulacji, która oferuje

    • Wysoka wydajność:

      • Biblioteka jest przyspieszana sprzętowo, tzn. Może wykorzystywać sprzęt GPU lub FPGA (jeśli jest dostępny), co oznacza przyspieszenie o 10–100 w porównaniu z programem opartym na procesorze. Również na zwykłym procesorze wykorzystuje zaawansowane funkcje, takie jak SIMD.
      • Opiera się na podejściu do dynamicznej kompilacji, co oznacza, że ​​nie trzeba poświęcać wydajności dla elastyczności. Powoduje to nawet 10-krotne przyspieszenie w porównaniu ze standardową techniką kompilacji.
      • ASL może być stosowany w infrastrukturze klastrowej i na komputerach z wieloma GPU.
    • Wysoka elastyczność i sympatia:

      • Do siatki wolne techniki numeryczne oparte są na prostokątnej siatce i zanurzono podejść brzegowych. Funkcje te umożliwiają automatyczną optymalizację projektu, ponieważ nie jest wymagane generowanie siatki.
      • Biblioteka oparta jest na dynamicznym podejściu do kompilacji, co oznacza, że ​​nie trzeba poświęcać wydajności w celu zapewnienia elastyczności. Umożliwia to sformułowanie jednego ogólnego i wydajnego algorytmu dla różnych projektów / koncepcji.
    • Generowanie i manipulowanie prymitywami geometrycznymi .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.