# Konvexe Optimierung

Die konvexe Optimierung ist ein Teilgebiet der mathematischen Optimierung.
Es ist eine bestimmte Größe zu minimieren, die sogenannte Zielfunktion, die von einem Parameter $x$ abhängt. Außerdem sind bestimmte Nebenbedingungen einzuhalten, das heißt, die Werte $x$, die man wählen darf, sind gewissen Einschränkungen unterworfen. Diese sind meist in Form von Gleichungen und Ungleichungen gegeben. Sind für einen Wert $x$ alle Nebenbedingungen eingehalten, so sagt man, dass $x$ zulässig ist. Man spricht von einem konvexen Optimierungsproblem oder einem konvexen Programm, falls sowohl die Zielfunktion als auch die Menge der zulässigen Punkte konvex ist. Viele Probleme der Praxis sind konvexer Natur. Oft wird zum Beispiel auf Quadern optimiert, welche stets konvex sind, und als Zielfunktion finden oft quadratische Formen wie in der quadratischen Optimierung Verwendung, die unter bestimmten Voraussetzungen ebenfalls konvex sind (siehe Definitheit). Ein anderer wichtiger Spezialfall ist die Lineare Optimierung, bei der eine lineare Zielfunktion über einem konvexen Polyeder optimiert wird.
Eine wichtige Eigenschaft der konvexen Optimierung im Unterschied zur nicht-konvexen Optimierung ist, dass jedes lokale Optimum auch ein globales Optimum ist. Anschaulich bedeutet dies, dass eine Lösung, die mindestens so gut ist wie alle anderen Lösungen in einer Umgebung, auch mindestens so gut ist wie alle zulässigen Lösungen. Dies erlaubt es, einfach nach lokalen Optima zu suchen.

## Problemstellung

Es gibt viele mögliche Formulierungen eines konvexen Programms. Eines der am häufigsten verwendeten und mathematisch am leichtesten handhabbaren ist
    ${\begin{aligned}{\text{Minimiere }}&f(x)&\\{\text{unter den Nebenbedingungen }}&g_{i}(x)\leq 0&i=1,\dots ,k\\&h_{j}(x)=0&j=1,\dots ,l\end{aligned}}$
Der Eingabeparameter $x$ sei aus dem $\mathbb {R} ^{n}$, das heißt, das Problem hängt von $n$ Einflussparametern ab. Die Zielfunktion $f\colon D_{0}\rightarrow \mathbb {R}$ sei konvex auf ihrem Definitionsbereich $D_{0}$, genauso wie die Ungleichungsrestriktionen $g_{i}\colon D_{i}\rightarrow \mathbb {R}$. Die $h_{j}(x)$ sind auf ganz $\mathbb {R} ^{n}$ definierte affine Funktionen der Form $h_{j}(x)=a_{j}^{T}x-b_{j}$. Die Menge
    ${\mathcal {D}}:=\bigcap _{m=0}^{k}D_{m}$
heißt dann die Definitionsmenge des konvexen Programms. Sie ist die größte Menge, auf der alle Funktionen definiert und konvex sind. Außerdem ist sie als Schnitt konvexer Mengen auch konvex. Die Funktionen $g_{i}$ stellen die sogenannten Ungleichungsnebenbedingungen und die Funktionen $h_{j}$ stellen die sogenannten Gleichungsnebenbedingungen dar. Die Funktion $f$ heißt die Zielfunktion und die Menge
    ${\mathcal {R}}:=\{x\in {\mathcal {D}}\subset \mathbb {R} ^{n}\,|\,g_{i}(x)\leq 0\,,h_{j}(x)=0\,{\text{ für alle }}i,j\}$
die Restriktionsmenge des Problems. Sie ist eine konvexe Menge, da Subniveaumengen konvexer Funktionen wieder konvex sind.

### Varianten
#### Konkave Zielfunktion

Meist werden auch Probleme der Form „Maximiere $f(x)$ unter konvexen Nebenbedingungen“ als konvexe Probleme bezeichnet, wenn $f(x)$ eine konkave Funktion ist. Dieses Problem ist äquivalent (nicht identisch) mit dem obigen Problem in dem Sinne, dass jeder Optimalpunkt des konkaven Problems auch ein Optimalpunkt des konvexen Problems ist, welches durch „minimiere $-f(x)$ unter konvexen Nebenbedingungen“ entsteht. Die Optimalwerte stimmen aber im Allgemeinen nicht überein.

#### Abstraktes konvexes Optimierungsproblem

Manchmal werden Probleme der Form
    ${\begin{aligned}{\text{Minimiere }}&f(x)&\\{\text{unter den Nebenbedingungen }}&x\in K,&K{\text{ ist konvexe Menge }}\end{aligned}}$
als abstraktes konvexes Optimierungsproblem bezeichnet. Sie besitzen dieselben Lösbarkeitseigenschaften wie das obige Problem, sind aber mathematisch schwerer zu handhaben, da Kriterien wie $x\in K$ algorithmisch schwer greifbar sind. Meist werden dann Funktionen gesucht, welche die abstrakte Nebenbedingung $x\in K$ mittels Ungleichungen beschreiben, um das abstrakte Problem somit auf das obige Problem zurückzuführen. Umgekehrt kann aber auch jedes konvexe Problem als ein abstraktes konvexes Problem der Form „minimiere $f(x)$ unter der Nebenbedingung $x\in {\mathcal {R}}$“ formuliert werden. Hierbei ist ${\mathcal {R}}$ die Restriktionsmenge.

#### Mischformen

Die allgemeinste Form eines konvexen Problems besteht aus einer Mischform, die sowohl Ungleichungsrestriktionen, Gleichungsrestriktionen als auch abstrakte Nebenbedingungen verwendet. Aus den oben beschriebenen Gründen ist diese Form jedoch unpraktisch zu handhaben.

## Lösbarkeit aus theoretischer Sicht

Abstrakte konvexe Probleme zeichnen sich durch einige starke Eigenschaften aus, die das Auffinden von globalen Minima erleichtern:
* Jedes lokale Minimum des Problems ist immer auch ein globales Minimum des Problems.
* Die Menge der optimalen Punkte ist konvex. Sind nämlich $x,y$ optimal für das Problem, so ist aufgrund der Konvexität $f(\lambda x+(1-\lambda )y)\leq \lambda f(x)+(1-\lambda )f(y)=f(x)$, da $f(x)=f(y)$. Andererseits ist $f(x)=f(y)\leq f(z)$ für alle Punkte $z$ der Restriktionsmenge ${\mathcal {R}}$, da $f(x)$ und $f(y)$ globale Minima sind. Somit ist $f(\lambda x+(1-\lambda )y)=f(x)$ für alle $\lambda \in [0,1]$.
* Ist die Zielfunktion strikt konvex, so ist der Optimalpunkt eindeutig.
Da jede Formulierung eines konvexen Problems in ein abstraktes Problem umgewandelt werden kann, übertragen sich alle diese Eigenschaften auf jede Formulierung des Problems.

## Geschichte

Die Disziplin der konvexen Optimierung entstand unter anderem aus der konvexen Analysis. Die erste Optimierungs-Technik, welche als Gradientenverfahren bekannt ist, geht auf Gauß zurück. Im Jahre 1947 wurde das Simplex-Verfahren durch George Dantzig eingeführt. Des Weiteren wurden im Jahr 1968 erstmals Innere-Punkte-Verfahren durch Fiacco und McCormick vorgestellt. In den Jahren 1976 und 1977 wurde die Ellipsoid-Methode von David Yudin und Arkadi Nemirovski und unabhängig davon von Naum Schor zur Lösung konvexer Optimierungsprobleme entwickelt. Narendra Karmarkar beschrieb im Jahr 1984 zum ersten Mal einen polynomialen potentiell praktisch einsetzbaren Algorithmus für lineare Probleme. Im Jahr 1994 entwickelten Arkadi Nemirovski und Yurii Nesterov Innere-Punkte-Verfahren für die konvexe Optimierung, welche große Klassen von konvexen Optimierungsproblemen in polynomialer Zeit lösen konnten.
Bei den Karush-Kuhn-Tucker-Bedingungen wurden die notwendigen Bedingungen für die Ungleichheits-Einschränkung zum ersten Mal 1939 in der Master-Arbeit (unveröffentlicht) von William Karush aufgeführt. Bekannter wurden diese jedoch erst 1951 nach einem Konferenz-Paper von Harold W. Kuhn und Albert W. Tucker.
Vor 1990 lag die Anwendung der konvexen Optimierung hauptsächlich im Operations Research und weniger im Bereich der Ingenieure. Seit 1990 boten sich jedoch immer mehr Anwendungsmöglichkeiten in der Ingenieurwissenschaft. Hier lässt sich unter anderem die Kontroll- und Signal-Steuerung, die Kommunikation und der Schaltungsentwurf nennen. Darüber hinaus ist das Konzept vor allem für die Strukturmechanik effizient. Außerdem entstanden neue Problemklassen wie semidefinite und Kegel-Optimierung 2. Ordnung und robuste Optimierung.

## Beispiel

Als Beispiel wird ein eindimensionales Problem ohne Gleichungsnebenbedingungen und mit nur einer Ungleichungsnebenbedingung betrachtet:
Minimiere
    $f(x)=(x-2)^{2}$ mit $x\in K=[0,\infty )$
unter der Nebenbedingung:
    $g(x)=x^{2}-1\leq 0$
Der zulässige Bereich ist gegeben durch die konvexe Menge
    $\{x\in K:g(x)\leq 0\}=[0,1]$,
denn für Werte $x>1$ ist $g(x)\leq 0$ nicht erfüllt. Der Zeichnung kann entnommen werden, dass $f(x)$ für $x=1$ den Optimalwert $1$ annimmt.

## Klassifikation und Verallgemeinerungen

Die konvexe Optimierung enthält weitere Klassen von Optimierungsproblemen, die sich alle durch eine spezielle Struktur auszeichnen:
* Konische Programme: Es werden verallgemeinerte Ungleichungen verwendet, ansonsten sind alle Funktionen affin. Konische Programme haben wiederum drei Teilgebiete:
** Semidefinite Programme verwenden den Kegel der positiv semidefiniten Matrizen, haben also als Variable eine Matrix. Die verwendete verallgemeinerte Ungleichung ist dann die Loewner-Halbordnung.
** Die SOCPs (Second Order Cone Program) verwenden den second-order cone, der auch Lorentz-Kegel genannt wird.
** Auch lineare Optimierungsprobleme lassen sich als konische Programme formulieren.
Außerdem wird unterschieden, ob die verwendeten Funktionen stetig differenzierbar sind oder nicht.
Unter gewissen Voraussetzungen fallen noch folgende Problemklassen unter die konvexe Optimierung:
* Quadratische Programme und Quadratische Programme mit quadratischen Nebenbedingungen sind konvexe Probleme, wenn alle auftretenden Matrizen positiv semidefinit sind.
* Geometrische Programme sind per se keine konvexen Probleme, lassen sich aber durch elementare Substitutionen in eine konvexe Form überführen.
Verallgemeinerungen, die noch einige Eigenschaften einer konvexen Funktion erhalten, machen gewisse erweiterte Begriffe der konvexen Optimierung möglich.
* Pseudokonvexe Funktionen sind eine Klasse von differenzierbaren Funktionen, bei denen ein globales Minimum vorliegt, wenn die Ableitung verschwindet.
* Bei quasikonvexen Funktionen sind die Subniveaumengen alle konvex. Lässt man somit quasikonvexe Funktionen als Ungleichungsrestriktionen zu, so ist die Restriktionsmenge als Schnitt der Subniveaumengen immer noch eine konvexe Menge. Man erhält somit ein abstraktes konvexes Optimierungsproblem.
* K-konvexe Funktion verwenden verallgemeinerte Ungleichungen, um Konvexität für Halbordnungen auf dem $\mathbb {R} ^{n}$ zu verallgemeinern. Dabei werden $l$ echte Kegel im $\mathbb {R} ^{k_{i}}$ definiert und dementsprechend $l$ Funktionen $g_{i}\colon \mathbb {R} ^{n}\mapsto \mathbb {R} ^{k_{i}}$, die K-konvex bezüglich des Kegels $K_{i}$ und der verallgemeinerten Ungleichung $\preccurlyeq _{K_{i}}$ sind. Das Problem lautet dann
       ${\begin{aligned}{\text{Minimiere }}&f(x)&\\{\text{unter den Nebenbedingungen }}&g_{i}(x)\preccurlyeq _{K_{i}}0&i=1,\dots ,l\\&Hx-b=0&\end{aligned}}$
    für eine konvexe Funktion $f$ und eine passend dimensionierte Matrix $H$ und einen Vektor $b$. Da auch die Subniveaumengen einer K-konvexen Funktion konvex sind, liefert dies auch wieder ein abstraktes konvexes Optimierungsproblem.
* Eine weitere Verallgemeinerung sind die fast konvexen Funktionen. Sie bilden im Allgemeinen kein abstraktes konvexes Optimierungsproblem mehr, dafür gilt bei ihnen wie bei konvexen Problemen die starke Dualität, wenn sie die Slater-Bedingung erfüllen.
* Allgemeiner lassen sich konvexe Abbildungen für jeden reellen Vektorraum mit Ordnungskegel definieren.

## Optimalitätsbedingungen

Für konvexe Probleme gibt es einige wichtige Optimalitätskriterien. Zuerst werden die notwendigen Kriterien beschrieben, das heißt, wenn ein Optimum erreicht wird, dann sind diese Kriterien erfüllt. Danach die hinreichenden Kriterien, das heißt, wenn diese Kriterien in einem Punkt erfüllt sind, dann handelt es sich um einen Optimalpunkt.

### Notwendige Kriterien
#### Karush-Kuhn-Tucker-Bedingungen

Die Karush-Kuhn-Tucker-Bedingungen (auch bekannt als die KKT-Bedingungen) sind eine Verallgemeinerung der Lagrange-Multiplikatoren von Optimierungsproblemen unter Nebenbedingungen und damit ein sehr grundlegendes Konzept mit Anwendungen in vielen Teildisziplinen der mathematischen Optimierung. Ein zulässiger Punkt $x^{*}$ des konvexen Problems erfüllt die KKT-Bedingungen, wenn gilt
    $\nabla f(x^{*})+\sum _{i=1}^{m}\mu _{i}^{*}\nabla g_{i}(x^{*})+\sum _{j=1}^{l}\lambda _{j}^{*}\nabla h_{j}(x^{*})=0$
    $g_{i}(x^{*})\leq 0,{\text{ für }}i=1,\ldots ,m$
    $h_{j}(x^{*})=0,{\text{ für }}j=1,\ldots ,l$
    $\mu _{i}^{*}\geq 0,{\text{ für }}i=1,\ldots ,m$
    $\mu _{i}^{*}g_{i}(x^{*})=0,{\text{für }}\;i=1,\ldots ,m.$
Diese Bedingungen werden die Karush-Kuhn-Tucker-Bedingungen oder kurz KKT-Bedingungen genannt.
Ein Punkt $(x^{*},\mu ^{*},\lambda ^{*})\in \mathbb {R} ^{n+m+l}$ heißt dann Karush-Kuhn-Tucker-Punkt oder kurz KKT-Punkt des obigen Optimierungsproblems, wenn er die obigen Bedingungen erfüllt.
Das eigentliche notwendige Optimalitätskriterium lautet nun: Ist ein Punkt $x^{*}$ ein lokales (und aufgrund der Konvexität auch globales) Minimum des konvexen Problems, und erfüllt er gewisse Regularitätsvoraussetzungen, so gibt es $\mu ^{*},\lambda ^{*}$, so dass $(x^{*},\mu ^{*},\lambda ^{*})$ ein KKT-Punkt ist. Gängige Regularitätsbedingungen (auch constraint qualifications genannt) sind die LICQ, die MFCQ, die Abadie CQ oder speziell für konvexe Probleme die Slater-Bedingung. Mehr Regularitätsvoraussetzungen finden sich im Hauptartikel zu den KKT-Bedingungen.

#### Fritz-John-Bedingungen

Die Fritz-John-Bedingungen oder FJ-Bedingungen sind eine Verallgemeinerung der KKT-Bedingungen und kommen im Gegensatz zu diesen ohne Regularitätsvoraussetzungen aus. Unter gewissen Umständen sind beide Bedingungen äquivalent. Ein Punkt $(z^{*},x^{*},\mu ^{*},\lambda ^{*})\in \mathbb {R} ^{1+n+m+l}$ heißt Fritz-John-Punkt oder kurz FJ-Punkt des konvexen Problems, wenn er die folgenden Bedingungen erfüllt:
    $z^{*}\nabla f(x^{*})+\sum _{i=1}^{m}\mu _{i}^{*}\nabla g_{i}(x^{*})+\sum _{j=1}^{l}\lambda _{j}^{*}\nabla h_{j}(x^{*})=0$
    $g_{i}(x^{*})\leq 0,{\text{ für }}i=1,\ldots ,m$
    $h_{j}(x^{*})=0,{\text{ für }}j=1,\ldots ,l$
    $\mu _{i}^{*}\geq 0,{\text{ für }}i=1,\ldots ,m$
    $\mu _{i}^{*}g_{i}(x^{*})=0,{\text{für }}\;i=1,\ldots ,m.$
    $z^{*}\geq 0$
Diese Bedingungen werden die Fritz-John-Bedingungen oder kurz FJ-Bedingungen genannt.
Ist der Punkt $x^{*}$ lokales (und aufgrund der Konvexität auch globales) Minimum des Optimierungsproblems, so gibt es $\mu ^{*},\lambda ^{*},z^{*}$, so dass $(z^{*},x^{*},\mu ^{*},\lambda ^{*})$ ein FJ-Punkt ist und $(z^{*},\mu ^{*},\lambda ^{*})$ ungleich dem Nullvektor ist.

### Hinreichende Kriterien

Ist $(x^{*},\mu ^{*},\lambda ^{*})$ ein KKT-Punkt, so ist $x^{*}$ ein globales Minimum des konvexen Problems. Somit sind die KKT-Bedingungen im konvexen Fall schon hinreichend für die Optimalität des Punktes. Insbesondere werden dazu keine weiteren Regularitätsvoraussetzungen benötigt. Da sich zeigen lässt, dass man aus jedem FJ-Punkt einen KKT-Punkt konstruieren kann, wenn $z^{*}>0$ ist, sind auch schon die FJ-Bedingungen hinreichend für die Optimalität, wenn $z^{*}>0$ gilt.

### Kriterien für nicht differenzierbare Funktionen

Sind einige der verwendeten Funktionen des konvexen Optimierungsproblems nicht differenzierbar, so kann man noch auf die Sattelpunktcharakterisierung von Optimalpunkten zurückgreifen. Mittels der Lagrange-Funktion lässt sich dann zeigen, dass jeder Sattelpunkt der Lagrange-Funktion eine Optimallösung ist. Umgekehrt ist $x^{*}$ eine Optimallösung und die Slater-Bedingung erfüllt, so kann man die Optimallösung zu einem Sattelpunkt der Lagrange-Funktion erweitern.

## Konkretes Vorgehen
### Lagrange-Funktion

Zunächst wird die folgende abkürzende Schreibweise eingeführt:
    $L(x,\lambda )=f(x)+\sum _{i=1}^{m}\mu _{i}g_{i}(x)+\sum _{j=1}^{l}\nu _{j}h_{j}(x)$,
wobei $\lambda$ der Vektor aus allen Multiplikatoren ist.

### Lagrangesche Multiplikatorenregel für das konvexe Problem

Vergleiche hierzu auch mit Lagrangesche Multiplikatorenregel. Konkretes Vorgehen:
* Überprüfe, ob alle auftretenden Funktionen stetig partiell differenzierbar sind. Falls nein, ist diese Regel nicht anwendbar.
* Gibt es einen zulässigen Punkt ${\hat {x}}$, für den gilt: $\nabla f({\hat {x}})=0$? Falls ja, dann ist ${\hat {x}}$ optimal. Sonst fahre mit dem nächsten Schritt fort.
* Bestimme den Gradienten $\nabla _{x}L(x,\lambda )$ der Lagrange-Funktion.
* Löse das System $\nabla _{x}L(x,\lambda )(x-{\hat {x}})\geq 0~(x\in K)$, wobei kein Multiplikator negativ sein darf. Falls eine Restriktion nicht aktiv ist, muss der zugehörige Multiplikator sogar gleich $0$ sein. Findet man eine Lösung ${\hat {x}}$, so ist diese optimal.