Ich versuche, ein Problem der eingeschränkten Optimierung zu lösen, bei dem ich die Grenzen einiger Variablen kenne (insbesondere eine umrahmte Einschränkung).
unterliegen
a ≤ d ( u , x ) ≤ b
wobei ein Vektor von Entwurfsvariablen ist, ein Vektor von Zustandsvariablen ist und eine Gleichheitsbedingung ist (normalerweise eine PDE). Die unteren und oberen Randbedingungen und können räumlich variabel sein.
Welche Pakete können mit Systemen dieser Form umgehen?
pde
optimization
nonlinear-programming
Sean Farley
quelle
quelle
Antworten:
Ich habe mich entschieden, meine Antwort basierend auf einigen Kommentaren radikal zu bearbeiten.
Ich habe TAO nicht benutzt. Aus Durchsicht die Dokumentation, wie es scheint , die einzige Möglichkeit , dass TAO erzwungener Optimierungsprobleme behandeln kann ( mit Ausnahme des Sonderfalls nur Box Einschränkungen) ist das Problem in eine Variationsungleichung mit den konvertieren Karush-Kuhn-Tucker (KKT) Bedingungen , die sind unter der Einschränkungsqualifikation erforderlich (der Typ, den ich normalerweise sehe, ist die Slater-Punkt-Bedingung ) und ausreichend unter der Konvexität des Ziels und der Einschränkungen (allgemeiner Typ 1-Invexität). Wennf ist nicht konvex, die Variationsungleichungsformulierung unter Verwendung der KKT-Bedingungen entspricht NICHT dem ursprünglichen Optimierungsproblem. Wenn Sie also ein globales Optimum für das Optimierungsproblem wünschen, sollten Sie es nicht als Variationsungleichung ausdrücken. Es ist ohnehin schwierig, ein globales Optimum für die PDE-beschränkte Optimierung zu finden (siehe unten). Vielleicht ist es in Ordnung, dieses Detail zu ignorieren. Angesichts dessen, was Wolfgang gesagt hat, wäre ich skeptisch, TAO einzusetzen. Ich bin bereits skeptisch, weil es keine Methoden zum Lösen nichtlinearer Programme (NLPs) als NLPs implementiert, sondern Variationsungleichungen.
Ich bin kein Experte für PDE-beschränkte Optimierung. Mitarbeiter und Mitarbeiter von mir arbeiten an ODE-beschränkten Optimierungsproblemen. Ich weiß, dass Larry Biegler (und andere) für aufdringliche Formulierungen Kollokationsmethoden verwenden wird, um die PDE zu diskretisieren und sie zu einem sehr großen, spärlichen NLP zu machen, und dann wird er sie mithilfe von Innenpunktmethoden lösen. Um das Problem der globalen Optimalität wirklich zu lösen, müssten Sie auch konvexe Relaxationen erzeugen, aber meines Wissens wird dieser Ansatz nicht gewählt, da Optimierungsprobleme aufgrund von PDE zu so großen NLPs führen, dass es schwierig ist, sie zu lösen globale Optimalität. Ich erwähne diese Details nur, weil die Problemformulierung die Wahl des Lösungspakets stark beeinflusst. Bei nichtintrusiven Formulierungen ergeben wiederholte PDE-Lösungen Gradienteninformationen für Optimierungsalgorithmen.
Einige Personen, die ODE-beschränkte Optimierungsprobleme untersuchen, verwenden einen ähnlichen Ansatz zur Diskretisierung des Problems mithilfe der Kollokation und einer numerischen Methode. Anschließend wird der resultierende NLP gelockert, um eine konvexe Formulierung zu erhalten, die in einem globalen Optimierungsalgorithmus verwendet wird. Ein alternativer Ansatz für die ODE-beschränkte Optimierung besteht darin, das Problem zu lösen und dann die ODE zu diskretisieren. Dies ist der Ansatz, den ich in meinem Labor gewählt habe. Es könnte möglich sein, bestimmte Klassen von Optimierungsproblemen mit PDE-Einschränkungen zu lockern, aber ich kenne keine noch ausstehenden Arbeiten, die an diesem Problem vorgenommen wurden. (Es war einmal ein potentielles Projekt in meinem Labor.)
Entscheidend ist letztendlich nicht die Differenzierbarkeit der ursprünglichen PDE, sondern die Differenzierbarkeit der Diskretisierung in Bezug auf die Entscheidungsvariablen.
Wenn das diskretisierte Problem in Bezug auf die Entscheidungsvariablen doppelt differenzierbar ist, berechnen die folgenden Pakete eine lokale Lösung:
fmincon
in Matlab implementiert eine Reihe von Algorithmen (einschließlich Innenpunkt- und sequentieller quadratischer Programmierung) für die nichtlineare OptimierungEs ist jedoch möglich, dass die Diskretisierung in Bezug auf die Entscheidungsvariablen nur einmal differenzierbar ist. In diesem Fall sollten Sie bei der Berechnung einer lokalen Lösung den projizierten steilsten Abstieg oder eine andere Optimierungsmethode erster Ordnung verwenden. Da sich viele Studien auf Probleme konzentrieren, bei denen Methoden zweiter Ordnung verwendet werden können (und wenn Sie sie verwenden können, sind sie aufgrund ihrer überlegenen Konvergenzeigenschaften eine bessere Wahl), konnte ich nicht viele Implementierungen steilster Abstammung finden, die keine Lösungen waren zu Hausaufgabenproblemen. Die GNU Scientific Library hat eine Implementierung, die jedoch nur zu Demonstrationszwecken dient. Sie müssten wahrscheinlich Ihre eigene Implementierung programmieren.
Wenn das Problem nur in Bezug auf die Entscheidungsvariablen kontinuierlich ist, können Sie es lokal mit direkten Methoden lösen. Es gibt eine hervorragende Übersicht über direkte Methoden von Kolda, Lewis und Torczon . Die bekannteste dieser Methoden ist der Nelder-Mead-Simplex-Algorithmus . Es ist nicht garantiert, dass es in mehreren Dimensionen zu einem lokalen Minimum konvergiert, aber es hat trotzdem beträchtlichen praktischen Nutzen gefunden.
Die Wahl des Pakets hängt wirklich von der Sprache ab, die Sie zur Lösung des Problems verwenden möchten. Wenn die Lösung des Problems mit gebundenen Bedingungen nur ein Teil eines Algorithmus ist, den Sie implementieren möchten (oder wenn dies der einzige Schritt in Ihrem Algorithmus ist, in diesem Fall Modellierungssprachen) werden für den Produktionscode praktikabler), die Art und Größe des Problems und wenn Sie Parallelität benötigen.
quelle
Wir haben TAO ausprobiert, fanden es jedoch nicht sehr nützlich für ungleichheitsbezogene Probleme. Außerdem ist es seit mindestens 2003 im Wesentlichen nur im Wartungsmodus und es gibt keine wirklichen neuen Funktionen außer Aktualisierungen zum Nachverfolgen von Änderungen in PETSc, auf denen es basiert.
quelle
Eine andere Alternative ist OPT ++ . Es unterstützt lineare und nichtlineare Abhängigkeiten mit einem effizienten nichtlinearen Innenpunktlöser, bietet Kontrolle über die Funktionsgenauigkeit (wenn numerische Differenzierung erforderlich ist), Kontrolle über Schrittgrößen usw. Ich optimiere normalerweise große implizite Funktionen (z. B. FEM), bei denen diese Arten von Kontrollen können nützlich sein.
quelle
Wenn das Problem als Komplementaritätsproblem formuliert ist, können Sie TAO (Toolkit for Advanced Optimization) verwenden. Einige der Methoden in TAO, wie z. B. die Methode mit reduziertem Speicherplatz (eine Variante der Methode mit aktivem Satz), sind derzeit als Teil von SNES in PETSc ( SNESVI ) verfügbar .
quelle
Das MINUTE- Modul von CERNLIB (seit langem auf ROOT portiert ) verwendet eine Transformation für den Eingabebereich , um Box-Einschränkungen in einen Bereich zu rendern, in dem sie ausgeführt werden und somit ohne Sonderfälle (auf Kosten) behandelt werden können von einer gewissen Geschwindigkeit natürlich).[−∞,+∞]
Ich denke nicht, dass MINUTE gut für Ihre Bedürfnisse geeignet ist, aber die Transformation kann erfolgen, wenn Sie gezwungen sind, den Code ganz oder teilweise selbst zu schreiben.
quelle
Wie @Geoff Oxberry hervorhob, können Sie mit mehreren Paketen eine lokale Lösung finden. Wenn Sie diese verschiedenen NLP-Löser für ein und dasselbe Problem vergleichen möchten, können Sie RobOptim verwenden .
Obwohl RobOptim ursprünglich mit Blick auf Optimierungsprobleme in der Robotik entwickelt wurde, eignet es sich für alle nichtlinearen Optimierungsprobleme. Es bietet eine einfache C ++ - Schnittstelle mit Plugins für mehrere NLP-Löser (z. B. Ipopt, NAG). Wenn Sie keine Gradienten angeben können, kann die Berechnung der endlichen Differenz automatisch durchgeführt werden.
Es ist Open Source, so dass Sie den Quellcode auf GitHub überprüfen können: https://github.com/roboptim/
Hinweis: Ich bin einer der Entwickler dieses Projekts.
quelle
Hier ist eine unvollständige Liste der Optimierungspakete mit eingeschränkter PDE.
Dolfin Adjoint ist Teil von FEniCS FEM:
http://dolfin-adjoint.org/
ROL, MOOCHO, Sundance sind Teile von Trilinos:
https://github.com/trilinos/trilinos/tree/master/packages/rol/
https://github.com/trilinos/trilinos/tree/master/packages/Sundance/
http://trilinos.org/packages/moocho/
PYOMO-Beispiel für die PDE-beschränkte Optimierung:
https://software.sandia.gov/trac/pyomo/browser/pyomo/trunk/examples/dae
Das TAO-Handbuch enthält Beispiele für die Lösung von Optimierungsproblemen mit PDE-Einschränkungen:
http://www.mcs.anl.gov/petsc/petsc-3.5/docs/tao_manual.pdf
quelle
Mit den APM MATLAB- und APM Python- Paketen können große (über 100.000 Variablen) von Differentialalgebraischen Gleichungssystemen mit gemischten Ganzzahlen gelöst werden. Die Software ist als Webdienst für kommerzielle oder akademische Zwecke verfügbar. Wenn Sie ein PDE-System lösen, können Sie es einmal diskretisieren, um es in DAE- oder ODE-Form zu bringen und in die APMonitor-Modellierungssprache zu übertragen. Die Modellierungssprache verwendet die Solver APOPT , BPOPT, IPOPT, SNOPT und MINOS.
quelle