Sie betrachten Algorithmus-Flussdiagramme der obersten Ebene. Einige der einzelnen Schritte im Flussdiagramm verdienen möglicherweise ihre eigenen detaillierten Flussdiagramme. In Veröffentlichungen mit Schwerpunkt auf Kürze werden jedoch oft viele Details ausgelassen. Details für Standard-Innenoptimierungsprobleme, die als "alter Hut" angesehen werden, werden möglicherweise überhaupt nicht bereitgestellt.
Die allgemeine Idee ist, dass Optimierungsalgorithmen die Lösung einer Reihe von allgemein einfacheren Optimierungsproblemen erfordern können. Es ist nicht ungewöhnlich, dass in einem Top-Level-Algorithmus drei oder sogar vier Stufen von Optimierungsalgorithmen enthalten sind, obwohl einige davon in Standardoptimierern enthalten sind.
Sogar die Entscheidung, wann ein Algorithmus beendet werden soll (auf einer der Hierarchieebenen), kann die Lösung eines Nebenoptimierungsproblems erforderlich machen. Zum Beispiel könnte ein nicht negativ eingeschränktes lineares Problem der kleinsten Quadrate gelöst werden, um die Lagrange-Multiplikatoren zu bestimmen, die zur Bewertung der KKT-Optimalitätsbewertung verwendet werden, um zu entscheiden, wann die Optimalität deklariert wird.
Wenn das Optimierungsproblem stochastisch oder dynamisch ist, gibt es möglicherweise noch weitere hierarchische Optimierungsebenen.
Hier ist ein Beispiel. Sequentielle Quadratische Programmierung (SQP). Ein anfängliches Optimierungsproblem wird durch iteratives Lösen der Karush-Kuhn-Tucker-Optimalitätsbedingungen behandelt, wobei von einem Anfangspunkt mit einem Ziel ausgegangen wird, das eine quadratische Approximation des Lagrange-Problems und eine Linearisierung der Beschränkungen ist. Das resultierende Quadratische Programm (QP) ist gelöst. Der QP, der gelöst wurde, weist entweder Vertrauensbereichsbeschränkungen auf, oder es wird eine Zeilensuche vom aktuellen Iterationsschritt zur Lösung des QP durchgeführt, der selbst ein Optimierungsproblem darstellt, um den nächsten Iterationsschritt zu finden. Wenn eine Quasi-Newton-Methode verwendet wird, muss ein Optimierungsproblem gelöst werden, um die Quasi-Newton-Aktualisierung des Hessischen des Lagrangen zu bestimmen - in der Regel handelt es sich dabei um eine Optimierung in geschlossener Form unter Verwendung geschlossener Formeln wie BFGS oder SR1. aber es könnte eine numerische Optimierung sein. Dann wird der neue QP gelöst, usw. Wenn der QP jemals undurchführbar ist, einschließlich zu Beginn, wird ein Optimierungsproblem gelöst, um einen durchführbaren Punkt zu finden. In der Zwischenzeit werden möglicherweise ein oder zwei Ebenen interner Optimierungsprobleme im QP-Solver aufgerufen. Am Ende jeder Iteration kann ein nicht negatives lineares Problem der kleinsten Quadrate gelöst werden, um die Optimalitätsbewertung zu bestimmen. Etc.
Wenn dies ein gemischtes ganzzahliges Problem ist, kann dieser gesamte Schebang an jedem Verzweigungsknoten als Teil eines Algorithmus höherer Ebene ausgeführt werden. In ähnlicher Weise wird für einen globalen Optimierer ein lokales Optimierungsproblem verwendet, um eine Obergrenze für die global optimale Lösung zu erzeugen. Anschließend werden einige Einschränkungen gelockert, um ein Optimierungsproblem für die Untergrenze zu erzeugen. Tausende oder sogar Millionen von "einfachen" Optimierungsproblemen aus Branch and Bound könnten gelöst werden, um ein gemischtes ganzzahliges oder globales Optimierungsproblem zu lösen.
Dies sollte Ihnen eine Idee geben.
Bearbeiten : Als Antwort auf die Henne-Ei-Frage, die der Frage nach meiner Antwort hinzugefügt wurde: Wenn es ein Henne-Ei-Problem gibt, dann ist es kein gut definierter praktischer Algorithmus. In den Beispielen, die ich gegeben habe, gibt es kein Huhn und Ei. Übergeordnete Algorithmusschritte rufen Optimierungslöser auf, die entweder definiert sind oder bereits existieren. SQP ruft iterativ einen QP-Löser auf, um Unterprobleme zu lösen, aber der QP-Löser löst ein einfacheres Problem, QP, als das ursprüngliche Problem. Wenn es einen noch höheren globalen Optimierungsalgorithmus gibt, kann er einen SQP-Löser aufrufen, um lokale nichtlineare Optimierungs-Teilprobleme zu lösen, und der SQP-Löser ruft wiederum einen QP-Löser auf, um QP-Teilprobleme zu lösen. Kein Küken und Ei.
Hinweis: Optimierungsmöglichkeiten gibt es "überall". Optimierungsexperten, wie z. B. diejenigen, die Optimierungsalgorithmen entwickeln, erkennen diese Optimierungsmöglichkeiten mit größerer Wahrscheinlichkeit und sehen sie als solche an als der Durchschnitt von Joe oder Jane. Und da sie algorithmisch geneigt sind, sehen sie ganz natürlich Möglichkeiten, Optimierungsalgorithmen aus untergeordneten Optimierungsalgorithmen aufzubauen. Formulierung und Lösung von Optimierungsproblemen dienen als Bausteine für andere (übergeordnete) Optimierungsalgorithmen.
Edit 2 : Als Antwort auf eine Kopfgeldanforderung, die gerade vom OP hinzugefügt wurde. In dem Artikel, in dem der nichtlineare SQP-Optimierer SNOPT https://web.stanford.edu/group/SOL/reports/snopt.pdf beschrieben wird , wird der QP-Solver SQOPT, der separat dokumentiert ist, speziell zur Lösung von QP-Teilproblemen in SNOPT verwendet.