<aclass="brand"href="index.html"><svgclass="icon"aria-hidden="true"><usehref="#icon-book"></use></svg><span>Optimierte Entscheidungsfindung mit Python</span></a>
<navclass="sidebar"id="sidebar"aria-label="Kapitelnavigation"><divclass="sidebar-inhalt"><detailsclass="sidebar-gruppe"open><summary>Einstieg</summary><ul><lidata-kapitel="vorwort.html"><ahref="vorwort.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Vorwort & Lesehilfe</span></a></li><lidata-kapitel="notation.html"class="aktiv"><ahref="notation.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Notation & Abkürzungen</span></a></li></ul></details><detailsclass="sidebar-gruppe"><summary>Teil I: Grundlagen des Operations Research</summary><ul><lidata-kapitel="einfuehrung.html"><ahref="einfuehrung.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 1: Einführung in Operations Research — Vom Ursprung zur mathematischen Entscheidungsfindung</span></a></li><lidata-kapitel="fundament.html"><ahref="fundament.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 2: Das mathematische Fundament — Vektoren, Matrizen, Konvexität{idx:Konvexität}</span></a></li><lidata-kapitel="oekosystem.html"><ahref="oekosystem.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 3: Das Python-Ökosystem für OR — Solver, Bindings und Modellierungsschichten</span></a></li><lidata-kapitel="modellierung.html"><ahref="modellierung.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 4: Vom Management-Wunsch zum Modell</span></a></li><lidata-kapitel="synthese-grundlagen.html"><ahref="synthese-grundlagen.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Synthese Teil I</span></a></li></ul></details><detailsclass="sidebar-gruppe"><summary>Teil II: Die Kernverfahren der deterministischen Optimierung</summary><ul><lidata-kapitel="lp.html"><ahref="lp.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 5: Lineare Programmierung — Simplex, Dualität und Schattenpreise</span></a></li><lidata-kapitel="milp.html"><ahref="milp.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 6: Gemischt-ganzzahlige Optimierung — Diskrete Entscheidungen und Branch-and-Bound{idx:Branch-and-Bound}</span></a></li><lidata-kapitel="cpsat.html"><ahref="cpsat.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 7: Constraint Programming mit CP-SAT{idx:CP-SAT} — Logik, Scheduling und Zuweisung</span></a></li><lidata-kapitel="graphen.html"><ahref="graphen.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 8: Graphen, Flüsse und Touren — Min-Cost-Flow, Matching und VRP</span></a></li><lidata-kapitel="metaheuristiken.html"><ahref="metaheuristiken.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 9: Metaheuristiken — wenn der exakte Solver aussteigt</span></a></li><lidata-kapitel="dekomposition.html"><ahref="dekomposition.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Kapitel 10: Spaltengenerierung — das Modell umbauen statt die Lösung raten</span></a></li><lidata-kapitel="synthese-kernverfahren.html"><ahref="synthese-kernverfahren.html"><spanclass="fortschritt-haken"><svgclass="icon"aria-hidden="true"><usehref="#icon-check"></use></svg></span><span>Synthese Teil II</span></a></li></ul></details><detailsclass="sidebar-gruppe"
<navclass="prev-next"><aclass="prev-next-knopf prev-next-prev"href="vorwort.html"><svgclass="icon"aria-hidden="true"><usehref="#icon-chevron-left"></use></svg><span><small>Zurück</small>Vorwort & Lesehilfe</span></a><aclass="prev-next-knopf prev-next-next"href="einfuehrung.html"><span><small>Weiter</small>Kapitel 1: Einführung in Operations Research — Vom Ursprung zur mathematischen Entscheidungsfindung</span><svgclass="icon"aria-hidden="true"><usehref="#icon-chevron-right"></use></svg></a></nav>
<article>
<h1id="notation-und-abkürzungen">Notation und Abkürzungen</h1>
<p>Dieses Kapitel ist zum Nachschlagen gedacht, nicht zum Durchlesen. Schlagen Sie hier nach, sobald Ihnen ein Symbol oder ein Kürzel begegnet, das Sie nicht sicher zuordnen können.</p>
<hr/>
<h2id="die-symbole-der-optimierung">1. Die Symbole der Optimierung</h2>
<td>gewichteter Mittelwert über alle Szenarien</td>
</tr>
<trclass="even">
<td><spanclass="math inline">\mathbb{1}</span> oder <spanclass="math inline">\mathbf{1}</span></td>
<td>Einsvektor</td>
<td><spanclass="math inline">(1,1,\dots,1)^\top</span>; <spanclass="math inline">\mathbf{1}^\top\mathbf{w}</span> ist die Summe aller <spanclass="math inline">w_i</span></td>
<td><strong>Kurs</strong> (bereinigter Schlusskurs) von Titel <spanclass="math inline">i</span></td>
<td>in Währungseinheiten</td>
</tr>
<trclass="even">
<td><spanclass="math inline">\lambda</span></td>
<td>Risikoaversion / Gewichtung des Risikoterms</td>
<td>Modellparameter, frei wählbar</td>
</tr>
<trclass="odd">
<td><spanclass="math inline">\alpha</span></td>
<td>Konfidenzniveau bei VaR/CVaR</td>
<td><spanclass="math inline">0{,}95</span> = „schlechteste 5 % der Tage“</td>
</tr>
<trclass="even">
<td><spanclass="math inline">\gamma</span></td>
<td>Hilfsvariable, schätzt den VaR (<ahref="cvar.html#kap-cvar">Kapitel 20</a>); Diskontfaktor (<ahref="dynamische-programmierung.html#kap-dynamische-programmierung">Kapitel 13</a>)</td>
<td>Anzahl <strong>Zeitschritte</strong> bzw. Handelstage</td>
<td>252 Handelstage/Jahr</td>
</tr>
<trclass="even">
<td><spanclass="math inline">N</span></td>
<td>Anzahl <strong>Titel</strong> im Universum</td>
<td>z. B. 10 Aktien</td>
</tr>
</tbody>
</table>
<h3id="symbole-der-verfahrenskapitel-teil-ii-und-iii">1.5 Symbole der Verfahrenskapitel (Teil II und III)</h3>
<p>Diese Zeichen kommen erst in den Kapiteln vor, die über das klassische LP hinausgehen.</p>
<table>
<colgroup>
<colstyle="width: 25%"/>
<colstyle="width: 25%"/>
<colstyle="width: 25%"/>
<colstyle="width: 25%"/>
</colgroup>
<thead>
<trclass="header">
<th>Symbol</th>
<th>Sprechweise</th>
<th>Bedeutung</th>
<th>Kapitel</th>
</tr>
</thead>
<tbody>
<trclass="odd">
<td><spanclass="math inline">\pi</span></td>
<td>„pi“</td>
<td><strong>Reihenfolge (Permutation)</strong>: <spanclass="math inline">\pi(k)</span> ist der Auftrag, der als <spanclass="math inline">k</span>-ter läuft</td>
<td><strong>Zugbewertung</strong> — um wie viel ein Nachbarschaftszug die Lösung verschlechtert (<spanclass="math inline">\Delta > 0</span>) oder verbessert (<spanclass="math inline">\Delta \le 0</span>)</td>
<td><strong>Schranke im <spanclass="math inline">\varepsilon</span>-Constraint-Verfahren</strong>: ein Ziel wird zur Nebenbedingung, <spanclass="math inline">e(x) \le \varepsilon</span></td>
<td><strong>Prognostizierter</strong> Wert — das Dach unterscheidet die Schätzung vom später eintretenden Ist-Wert <spanclass="math inline">d_t</span></td>
<p><strong>⚠️ Achtung, Doppelbelegungen.</strong> In der Literatur — und deshalb auch hier — tragen einige Buchstaben je nach Kapitel verschiedene Bedeutungen. Die wichtigsten Fälle: <spanclass="math inline">\lambda</span> ist in <ahref="lp.html#kap-lp">Kapitel 5</a> und <ahref="qp-nlp.html#kap-qp-nlp">Kapitel 11</a> ein <strong>Lagrange-Multiplikator/Schattenpreis</strong>, in <ahref="markowitz.html#kap-markowitz">Kapitel 19</a> und <ahref="cvar.html#kap-cvar">Kapitel 20</a> ein <strong>frei gewählter Risikoaversionsparameter</strong>. <spanclass="math inline">\gamma</span> ist in <ahref="dynamische-programmierung.html#kap-dynamische-programmierung">Kapitel 13</a> der <strong>Diskontfaktor</strong>, in <ahref="cvar.html#kap-cvar">Kapitel 20</a> die <strong>VaR-Hilfsvariable</strong>. <spanclass="math inline">S</span> bezeichnet als Matrix <spanclass="math inline">\mathbf{S}</span> die Stichprobenkovarianz, als Skalar <spanclass="math inline">S</span> die Szenarienzahl. <spanclass="math inline">\pi</span> ist in <ahref="metaheuristiken.html#kap-metaheuristiken">Kapitel 9</a> eine <strong>Reihenfolge</strong>, in <ahref="dekomposition.html#kap-dekomposition">Kapitel 10</a> ein <strong>Dualpreis</strong> — beide Bedeutungen sind so verbreitet, dass ein Ausweichbuchstabe mehr verwirren als helfen würde. Der Kontext ist jeweils eindeutig, und die Kapitel weisen an der betreffenden Stelle darauf hin.</p>
<td>fachspezifische Sprache (hier: Modellierungssprache)</td>
<td>—</td>
</tr>
<trclass="even">
<td><strong>CSR</strong></td>
<td>Compressed Sparse Row</td>
<td>Speicherformat für dünnbesetzte Matrizen</td>
<td>—</td>
</tr>
<trclass="odd">
<td><strong>GIL</strong></td>
<td>Global Interpreter Lock</td>
<td>Pythons Sperre, die echte Parallelität von Python-Code verhindert — Solverbibliotheken in C++ geben sie frei (<ahref="testing.html#kap-testing">Kapitel 23</a>)</td>
<td>—</td>
</tr>
<trclass="even">
<td><strong>JSON</strong></td>
<td>JavaScript Object Notation</td>
<td>Textformat für strukturierte Daten; Austauschformat des Optimierungsdienstes</td>
<td>—</td>
</tr>
<trclass="odd">
<td><strong>RHS</strong></td>
<td>Right-Hand Side</td>
<td>rechte Seite einer (Un-)Gleichung, der Vektor <spanclass="math inline">\mathbf{b}</span></td>
<td>—</td>
</tr>
<trclass="even">
<td><strong>FFI</strong></td>
<td>Foreign Function Interface</td>
<td>Aufruf von C/C++-Code aus Python</td>
<td>—</td>
</tr>
</tbody>
</table>
<h3id="begriffe-aus-dem-solver-alltag">2.5 Begriffe aus dem Solver-Alltag</h3>
<table>
<colgroup>
<colstyle="width: 33%"/>
<colstyle="width: 33%"/>
<colstyle="width: 33%"/>
</colgroup>
<thead>
<trclass="header">
<th>Kürzel / Begriff</th>
<th>Bedeutung</th>
<th>Was Sie tun sollten</th>
</tr>
</thead>
<tbody>
<trclass="odd">
<td><strong>OPTIMAL</strong></td>
<td>Beweisbar beste Lösung gefunden</td>
<td>Nichts — alles gut</td>
</tr>
<trclass="even">
<td><strong>FEASIBLE</strong></td>
<td>Zulässige Lösung gefunden, Optimalität nicht bewiesen</td>
<td>Relativer Abstand beste Lösung ↔︎ beste Schranke</td>
<td>1–2 % sind in der Praxis meist genug</td>
</tr>
<trclass="even">
<td><strong>Incumbent</strong></td>
<td>Beste bisher gefundene zulässige Lösung</td>
<td>Referenz für das Pruning</td>
</tr>
<trclass="odd">
<td><strong>Relaxation</strong></td>
<td>Modell mit weggelassener Ganzzahligkeit</td>
<td>liefert die Schranke</td>
</tr>
<trclass="even">
<td><strong>Warm Start</strong></td>
<td>Solver startet von bekannter Lösung</td>
<td>beschleunigt wiederholte Läufe</td>
</tr>
<trclass="odd">
<td><strong>Slack</strong></td>
<td>Schlupf, ungenutzte Kapazität</td>
<td>Slack = 0 → Engpass</td>
</tr>
<trclass="even">
<td><strong>Lookahead-Bias</strong></td>
<td>Nutzung von Daten aus der Zukunft</td>
<td>Backtest ist wertlos — <ahref="praxisfallen.html#kap-praxisfallen">Kapitel 22</a></td>
</tr>
</tbody>
</table>
<hr/>
<h2id="konventionen-in-diesem-buch">3. Konventionen in diesem Buch</h2>
<p><strong>Vektoren</strong> sind grundsätzlich <strong>Spaltenvektoren</strong> und werden fett gesetzt: <spanclass="math inline">\mathbf{x}</span>. Ein transponierter Vektor <spanclass="math inline">\mathbf{x}^\top</span> ist eine Zeile. Skalare bleiben mager: <spanclass="math inline">n</span>, <spanclass="math inline">Z</span>.</p>
<p><strong>Matrizen</strong> sind fett und groß: <spanclass="math inline">\mathbf{A}</span>, <spanclass="math inline">\boldsymbol{\Sigma}</span>.</p>
<p><strong>Minimierung ist die Standardform.</strong> Jede Maximierung lässt sich durch Vorzeichenwechsel in eine Minimierung überführen: <spanclass="math inline">\max f(\mathbf{x}) = -\min\,(-f(\mathbf{x}))</span>. Die meisten Solver — auch <code>scipy.optimize.linprog</code> — minimieren intern. Wer das vergisst, erhält systematisch das Gegenteil des Gewünschten; siehe <ahref="lp.html#sec:lp-die-vorzeichenfalle-bei-schattenpreisen">Abschnitt 5.7</a>.</p>
<p><strong>Dezimaltrennzeichen.</strong> Im Fließtext und in Formeln steht das deutsche Komma (<spanclass="math inline">3{,}14</span>), in Code und Programmausgaben der englische Punkt (<code>3.14</code>) — Python kennt nichts anderes.</p>
<p><strong>Code-Sprache.</strong> Kommentare und Ausgaben der Beispielprogramme sind deutsch, Bezeichner überwiegend englisch, weil das der Konvention der verwendeten Bibliotheken entspricht und die Programme so anschlussfähig an die Originaldokumentation bleiben.</p>
<p><strong>Anglizismen.</strong> Fachbegriffe werden bei der ersten Verwendung deutsch eingeführt und der englische Originalbegriff <em>kursiv</em> in Klammern ergänzt, weil Sie ihn für die Recherche brauchen: „zulässiger Bereich (<em>feasible region</em>)“.</p>
</article>
<navclass="prev-next"><aclass="prev-next-knopf prev-next-prev"href="vorwort.html"><svgclass="icon"aria-hidden="true"><usehref="#icon-chevron-left"></use></svg><span><small>Zurück</small>Vorwort & Lesehilfe</span></a><aclass="prev-next-knopf prev-next-next"href="einfuehrung.html"><span><small>Weiter</small>Kapitel 1: Einführung in Operations Research — Vom Ursprung zur mathematischen Entscheidungsfindung</span><svgclass="icon"aria-hidden="true"><usehref="#icon-chevron-right"></use></svg></a></nav>