Szukam rozwiązania ograniczonego problemu optymalizacji, w którym znam granice niektórych zmiennych (w szczególności ograniczenie pudełkowe).
z zastrzeżeniem
a ≤ d ( u , x ) ≤ b
gdzie jest wektorem zmiennych projektowych, jest wektorem zmiennych stanu, a jest ograniczeniem równości (zwykle PDE). Dolne i górne ograniczenia i b mogą być przestrzennie zróżnicowany.
Które pakiety mogą obsługiwać systemy tego formularza?
pde
optimization
nonlinear-programming
Sean Farley
źródło
źródło
Odpowiedzi:
Postanowiłem radykalnie edytować swoją odpowiedź na podstawie niektórych komentarzy.
Nie korzystałem z TAO. Z wglądu w dokumentację wydaje się, że jedynym sposobem, w jaki TAO może poradzić sobie z ograniczonymi problemami optymalizacji (wyłączając szczególny przypadek tylko ograniczeń pudełkowych), jest przekształcenie problemu w nierówność wariacyjną przy użyciu warunków Karush-Kuhn-Tucker (KKT) , które są konieczne w ramach kwalifikacji ograniczeń (typ, który zwykle widzę to warunek punktu Slatera ) i wystarczające w wypukłości celu i ograniczeń (bardziej ogólnie, wypukłość typu 1). Jeślif jest niep wypukły, sformułowanie nierówności wariacyjnej przy użyciu warunków KKT NIE jest równoważne pierwotnemu problemowi optymalizacji, więc ściśle mówiąc, jeśli chcesz globalnego optimum dla problemu optymalizacji, nie powinieneś wyrażać go jako nierówności wariacyjnej. W każdym razie trudno byłoby znaleźć globalne optimum dla optymalizacji ograniczonej przez PDE (patrz poniżej), więc może ignorowanie tego szczegółu jest w porządku. Biorąc pod uwagę to, co powiedział Wolfgang, byłbym sceptycznie nastawiony do korzystania z TAO; Jestem już sceptyczny, ponieważ nie implementuje metod rozwiązywania programów nieliniowych (NLP) jako NLP, a nie nierówności wariacyjne.
Nie jestem ekspertem od optymalizacji ograniczonej przez PDE; współpracownicy i współpracownicy kopalni pracują nad problemami optymalizacji ograniczonymi przez ODE. Wiem, że w przypadku natrętnych sformułowań, Larry Biegler (i inni) zastosuje metody kolokacji, aby zdyskretować PDE i uczynić go bardzo dużym, rzadkim NLP, a następnie rozwiąże go przy użyciu wewnętrznych metod punktowych. Aby naprawdę rozwiązać problem z optymalizacją globalną, należy również wygenerować wypukłe rozluźnienia, ale o ile mi wiadomo, takie podejście nie jest stosowane, ponieważ problemy optymalizacji ograniczone przez PDE prowadzą do tak dużych NLP, że trudno byłoby je rozwiązać globalna optymalizacja. Wspominam o tych szczegółach tylko dlatego, że sformułowanie problemu ma duży wpływ na wybór pakietu solvera. W przypadku nieinwazyjnych preparatów powtarzane PDE rozwiązuje informacje o gradiencie wydajności dla algorytmów optymalizacyjnych.
Niektóre osoby, które badają problemy optymalizacji ograniczone przez ODE, stosują podobne podejście do dyskretyzacji problemu za pomocą kolokacji i metody numerycznej, a następnie rozluźnienia wynikowego NLP, aby uzyskać wypukłą formułę stosowaną w globalnym algorytmie optymalizacji. Alternatywnym podejściem do optymalizacji ograniczonej przez ODE jest złagodzenie problemu, a następnie dyskretyzacja ODE, co jest podejściem przyjętym w moim laboratorium. Może być możliwe złagodzenie pewnych klas problemów związanych z optymalizacją ograniczonych przez PDE, ale nie znam żadnej pracy wykonanej nad tym problemem. (W pewnym momencie był to potencjalny projekt w moim laboratorium).
Ostatecznie liczy się nie różnicowalność pierwotnego PDE, ale różnicowalność dyskretyzacji w odniesieniu do zmiennych decyzyjnych.
Jeśli dyskretny problem można dwukrotnie rozróżnić w odniesieniu do zmiennych decyzyjnych, następujące pakiety obliczą lokalne rozwiązanie:
fmincon
w Matlab implementuje szereg algorytmów (w tym programowanie punktów wewnętrznych i sekwencyjne programowanie kwadratowe) dla optymalizacji nieliniowejMożliwe jest jednak, że dyskretyzacja jest tylko raz rozróżnialna w odniesieniu do zmiennych decyzyjnych, w którym to przypadku należy zastosować prognozowane najbardziej strome zejście lub inną metodę optymalizacji pierwszego rzędu przy obliczaniu rozwiązania lokalnego. Ponieważ wiele badań koncentruje się na problemach, w których można zastosować metody drugiego rzędu (a kiedy można ich użyć, ich lepsze właściwości zbieżności sprawiają, że są lepszym wyborem), nie mogłem znaleźć wielu implementacji najbardziej stromego zejścia, które nie byłyby rozwiązaniami do zadań domowych. GNU Scientific Library zawiera implementację, ale to tylko w celach demonstracyjnych. Prawdopodobnie będziesz musiał zakodować własną implementację.
Jeśli problem jest ciągły tylko w odniesieniu do zmiennych decyzyjnych, możesz użyć metod bezpośrednich, aby rozwiązać go lokalnie. Istnieje doskonała ankieta na temat metod bezpośrednich przeprowadzona przez Koldę, Lewisa i Torczona . Najbardziej znaną z tych metod jest algorytm simpleksowy Neldera-Meada . Nie można zagwarantować, że zbiega się do lokalnego minimum w wielu wymiarach, ale i tak znalazło znaczne praktyczne zastosowanie.
Wybór pakietu naprawdę zależy od języka, którego chcesz użyć do rozwiązania problemu, jeśli rozwiązanie problemu związanego z ograniczeniami jest tylko częścią algorytmu, który chcesz zaimplementować (lub jeśli jest to jedyny krok w algorytmie, w którym to przypadku języki modelowania stają się bardziej opłacalne dla kodu produkcyjnego), rodzaju i wielkości problemu, a jeśli potrzebujesz jakiejkolwiek równoległości.
źródło
Próbowaliśmy TAO, ale okazało się, że nie jest to bardzo przydatne w przypadku problemów ograniczonych nierównością. Jest także zasadniczo w trybie konserwacji od co najmniej 2003 roku, bez żadnych nowych nowych funkcji oprócz aktualizacji do śledzenia zmian w PETSc, na których jest zbudowany.
źródło
Inną alternatywą jest OPT ++ . Obsługuje ograniczenia liniowe i nieliniowe dzięki wydajnemu nieliniowemu rozwiązaniu punktu wewnętrznego, zapewnia kontrolę dokładności funkcji (jeśli wymagane jest różnicowanie numeryczne), kontrolę wielkości kroków itp. Zazwyczaj optymalizuję duże funkcje ukryte (np. MES) tam, gdzie te typy kontrole mogą być przydatne.
źródło
Jeśli problem został sformułowany jako problem komplementarności, możesz użyć TAO (Toolkit for Advanced Optimization). Niektóre metody w TAO, takie jak metoda zredukowanej przestrzeni (wariant metody zestawu aktywnego), są obecnie dostępne jako część SNES w PETSc ( SNESVI ).
źródło
Nie sądzę, aby MINUTE dobrze działał dla twoich potrzeb, ale transformacja może być, jeśli będziesz zmuszony napisać część lub całość kodu samodzielnie.
źródło
Jak zauważył @Geoff Oxberry, kilka pakietów pozwala znaleźć lokalne rozwiązanie. Jeśli chcesz być w stanie porównać te różne solwery NLP dla tego samego problemu, możesz użyć RobOptim .
Mimo że RobOptim został pierwotnie opracowany z myślą o problemach związanych z optymalizacją robotyki, jest odpowiedni do wszelkich nieliniowych problemów związanych z optymalizacją. Zapewnia prosty interfejs C ++ z wtyczkami do wielu solverów NLP (np. Ipopt, NAG). Jeśli nie możesz podać gradientów, obliczenia różnic skończonych można wykonać automatycznie.
Jest to oprogramowanie typu open source, dzięki czemu możesz sprawdzić kod źródłowy w GitHub: https://github.com/roboptim/
Uwaga: Jestem jednym z twórców tego projektu.
źródło
Oto częściowa lista pakietów optymalizacyjnych ograniczonych przez PDE.
Dolfin Adjoint jest częścią FEniCS FEM:
http://dolfin-adjoint.org/
ROL, MOOCHO, Sundance są częścią Trilinos:
https://github.com/trilinos/trilinos/tree/master/packages/rol/
https://github.com/trilinos/trilinos/tree/master/packages/Sundance/
http://trilinos.org/packages/moocho/
Przykład PYOMO dla optymalizacji ograniczonej przez PDE:
https://software.sandia.gov/trac/pyomo/browser/pyomo/trunk/examples/dae
Podręcznik TAO podaje przykłady rozwiązywania problemów optymalizacji ograniczonych przez PDE:
http://www.mcs.anl.gov/petsc/petsc-3.5/docs/tao_manual.pdf
źródło
The APM MATLAB i APM Python pakiety mogą rozwiązać dużą skalę (100,000 zmienne) układów równań mieszane Integer różnicowego algebraicznych. Oprogramowanie jest dostępne jako usługa internetowa do użytku komercyjnego lub akademickiego. Jeśli rozwiązujesz system PDE, możesz raz dyskretnie wprowadzić go do formularza DAE lub ODE, aby umieścić go w języku modelowania APMonitor. Język modelowania używa solverów APOPT , BPOPT, IPOPT, SNOPT i MINOS.
źródło