Ein­zie­l­op­ti­mie­rungs­ver­fah­ren

In den letzten Jahrzehnten wurden diverse Verfahren in der Einzieloptimierung entwickelt und veröffentlicht. Wir stellen hier kurz 4 ausgewählte Verfahren vor, die jeweils in den Programmiersprachen C/C++ sowie MATLAB implementiert wurden.

In­ne­re-Punk­te-Ver­fah­ren

Hauptanwendungsgebiet sind lineare und nichtlineare konvexe Einzieloptimierungsprobleme. Dabei kann jedes konvexe Optimierungsproblem in ein Minimierungsproblem einer linearen Funktion auf einer konvexen Menge transformiert werden.

fmincon - Das innere-Punkte-Verfahren ist bei fmincon Standardmäßig eingestellt.

Dokumentation

IPOPT - Interior Point Optimizer

Download und Dokumentation

SQP Ver­fah­ren

Iteratives Verfahren für nichtlineare Optimierungsprobleme. Zielfunktion sowie Nebenbedingungen müssen dabei 2x stetig differenzierbar sein. Die benötigten Ableitungen werden ggf. durch numerisches Differenzieren bestimmt.

fmincon - Um das SQP Verfahren in MATLAB benutzen zu können, müssen die Standardeinstellung in fmincon geändert werden.

options = optimoptions('fmincon','Display','iter','Algorithm','sqp');
Diese müssen dann an geeigneter Stelle an den Löser übergeben werden. 

Siehe Dokumentation

Ac­ti­ve-Set-Ver­fah­ren

Bei diesem Verfahren wird das Einzieloptimierungsproblem mit Gleichheits- und Ungleichheitsnebenbedingungen in ein Optimierungsproblem mit Gleichheitsnebenbedingungen umformuliert, in dem die sogenannte aktive Menge betrachtet wird. Unter aktive Menge werden diejenigen Ungleichheitsnebenbedingungen verstanden, die aktuell mit Gleichheit erfüllt, also aktiv sind.

fmincon

Dokumentation

Knitro (Lizenz benötigt)

Dokumentation und Download

Trust-Re­gi­on Ver­fah­ren

Bei diesem Verfahren wird in jeder Iteration in der sogenannten Trust-Region die Zielfunktion durch eine „einfache“ Funktion (z.B. eine quadratische Funktion) approximiert für welche man das Minimum direkt berechnen kann. Sofern eine geeignete Funktion innerhalb der Trust-Region gefunden wurde, wird diese Region vergrößert; ansonsten verkleinert. Für dieses Verfahren muss der Gradient der Zielfunktion bekannt sein.

fminunc - mit den Optionen
options = optimoptions('fminunc','Algorithm','trust-region','SpecifyObjectiveGradient',true);

Siehe Dokumentation

Knitro

Siehe Beschreibung bei dem Active-Set Verfahren.

Hier geht es mit der Anleitung weiter.

Schritte des Vorgehensmodells

1.

Optimierungszweck identifizieren

2.

Modell prüfen bzw. anpassen

3.

Zielfunktionen und Nebenbedingungen formulieren

4.

Optimierungsalgorithmus auswählen

5.

Optimierungsproblem lösen

6.

Prozessmodelle berücksichtigen

7.

Lösungen implementieren