Lineare Programme |
Beispiel:
Wir können Teig für 2 Typen von Muffins (A oder B) herstellen. Für diese können wir unterschiedliche Preise verlangen:
Die unterschiedlichen Teige haben eine unterschiedliche Zusammensetzung:
Wir haben folgende Mengen an Zutaten zur Verfügung:
Wie finden wir heraus, wie viel Teig von welchem Typ wir für maximale Einnahmen herstellen wollen?
Wir können die Menge an Teig (in Gramm) von Typ A mit $x_1$ und die Menge an Teig von Typ B mit $x_2$ bezeichnen.
Wir wollen also die Menge an Teig von Typ A und B bestimmen, die uns die maximale Einnahmen bringt:
\[ \begin{aligned} \max \quad & 0.6 x_1 + 0.5 x_2 \\ \end{aligned} \] (Ertrag in Cent)
Wir haben 1500g Mehl. Teig A besteht zu 80% aus Mehl, Teig B zu 50%.
Was bedeuted das für $x_1$ und $x_2$?
$0.8 x_1 + 0.5 x_2 \leq 1500$
Wir können versuchen das zu visualisieren:
|
Die Gerade |
|
Wir dürfen natürlich auch weniger als das gesamte Mehl verwenden:
$\color{blue} 0.8 x_1 + 0.5 x_2 \leq 1500$
Analog haben wir 900g Schokolade. Teig A besteht zu 20% aus Schokolade, Teig B zu 50%.
$\color{red} 0.2 x_1 + 0.5 x_2 \leq 900$
Wir können natürlich nicht weniger als 0 Gramm von einem Teig herstellen:
| $ x_1 \geq 0\\ x_2 \geq 0 $ |
|
Wir kennen jetzt die Menge mit allen möglichen Kombinationen an Teig, die wir herstellen können.
Welche bringt die größten Einnahmen?
Unser Ziel war:
\[ \begin{aligned} \max \quad & 0.6 x_1 + 0.5 x_2 \\ \end{aligned} \]Alle Mischverhältnisse in denen wir genau 500 Cent verdienen:
$0.6 x_1 + 0.5 x_2 = 500$
Richtung, in der wir mehr verdienen ist z.B. der Vektor \[ \begin{bmatrix} 0.6 \\ 0.5 \end{bmatrix} \qquad \text{oder} \qquad \begin{bmatrix} 6 \\ 5 \end{bmatrix} \]
Graphisch können wir nun das beste Teigverhältnis ermittlen:
|
|
Was wir aus der graphischen Lösung direkt auch noch sehen:
Das ganze Problem zusammengenommen ließ sich so formulieren:
\[ \begin{aligned} \max \quad & 0.6 x_1 + 0.5 x_2 \\ \text{subject to} \quad & 0.8 x_1 + 0.5 x_2 \leq 1500 \\ & 0.2 x_1 + 0.5 x_2 \leq 900 \\ & x_1 \geq 0 \\ & x_2 \geq 0 \end{aligned} \]
Diese Formulierung nennt man ein
Lineares Programm (LP).
Ein LP hat folgende Struktur:
Linear bedeutet, dass ein Term nur aus einer Summe besteht, und in jedem Summand maximal eine Variable vorkommen darf. Die Variable darf mit einem Faktor multipliziert werden.
Ein linearer Term kann graphisch immer als Gerade oder Ebene interpretiert werden.
Linear:
Nicht linear:
Was wollen wir mit LPs machen?
Wir können LPs auch vektorisiert ausdrücken.
Die Nebenbedingungen als Matrix-Vektor Produkt:
\[ \underbrace{ \begin{bmatrix} 0.8 & 0.5 \\ 0.2 & 0.5 \end{bmatrix} }_{A} \underbrace{ \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} }_{x} \leq \underbrace{ \begin{bmatrix} 1500 \\ 900 \end{bmatrix} }_{b} \]
Die Zielfunktion als Vektor-Vektor Produkt:
\[ \max \quad {\underbrace{ \begin{bmatrix} 0.6 \\ 0.5 \end{bmatrix} }_{c}}^T \underbrace{ \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} }_{x} \]Jedes lineare Programm können wir allgemein schreiben als:
\[ \begin{aligned} \max \quad & c^T x \\ \text{subject to} \quad & Ax \leq b \\ & x \geq 0 \end{aligned} \]Entscheidend ist, was in $A$, $b$ und $c$ steht.
Diese Schreibweise nennt sich kanonische Form.
Jedes LP kann in kanonische Form überführt werden.
$$\min \; c^T x \quad \Leftrightarrow \quad \max\; -c^T x$$
Was ist, wenn wir nicht $x_i \geq 0$ haben wollen?
Wir können $x_i$ einfach durch $x_i^+ - x_i^-$ ersetzen.
\[ \begin{aligned} \max \quad & \underbrace{\begin{bmatrix} c_1 & c_2 & \cdots & c_n \end{bmatrix}}_{\color{blue} c^T} \underbrace{\begin{bmatrix} x_1 \\ x_2 \\ \vdots\\ x_n \end{bmatrix}}_{\color{blue} x}\\ \text{subject to} \quad & \underbrace{\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix}}_{\color{blue} A} \underbrace{\begin{bmatrix} x_1 \\ x_2 \\ \vdots\\ x_n \end{bmatrix}}_{\color{blue} x} \leq \underbrace{\begin{bmatrix} b_1\\ b_2 \\ \vdots\\ b_m \end{bmatrix}}_{\color{blue} b} \\ & x \geq 0 \end{aligned} \]
Angenommen wir haben nun ein ganz allgemeines "Muffin" Problem:
\[ \begin{aligned} \max \quad & c^T x \\ \text{subject to} \quad & Ax \leq b \\ & x \geq 0 \end{aligned} \]
Mit mehr als 3 Rezepten kommen wir mit der graphischen Methode nicht weiter. Wir brauchen einen allgemeineren Algorithmus.