Neuer Abschnitt im CP-SAT-Kapitel plus Parallele_Suche.py (76. Programm). Setzt Paket 2 aus Verbesserungen_02.md um. Was fehlte, war nicht die Regel, sondern die Messung: Das Buch setzt an acht Stellen num_workers = 1 mit dem Kommentar "fuer eine reproduzierbare Ausgabe", nachgeprueft hatte es nie jemand. Gerechnet wird auf demselben Job-Shop wie das Intervallvariablen-Kapitel, nur gross genug, dass die Suche arbeitet: 12 Auftraege, 10 Maschinen, 120 Arbeitsgaenge. Zwei Befunde, beide staerker als die Behauptung: * Die Beschleunigung ist ueberlinear. Acht Arbeiter waren im abgedruckten Lauf nicht achtmal, sondern 12,3-mal schneller als einer. Kein Messfehler: CP-SAT vervielfacht nicht dieselbe Suche, sondern laesst verschiedene Strategien nebeneinander laufen, die einander ihre Schranken mitteilen. * Der Seed genuegt nicht - und zwar schon ab ZWEI Arbeitern. Ein Arbeiter: 1 Plan aus 4 Laeufen. Zwei Arbeiter: 3 verschiedene Plaene aus 4 Laeufen, bei identischem random_seed und identischem Zielwert 183. Die vollstaendige Antwort kam erst ueber die Uebungsaufgabe: Mit num_workers = 1, aber fuenf verschiedenen Seeds ergeben sich ebenfalls fuenf verschiedene Plaene. Keiner der beiden Parameter sichert die Reproduzierbarkeit allein - erst die Kombination traegt. Weiter fuer die Aufgabe gemessen: Der Gewinn kehrt sich um (auf 24 Kernen Faktor 10,2 bei 8 Arbeitern, 12,3 bei 16, 9,0 bei 24) - "so viele Arbeiter wie Kerne" ist damit widerlegt. Und bei 15 Auftraegen laeuft ein Arbeiter ins 60-s-Limit (FEASIBLE, Makespan 200), waehrend acht OPTIMAL mit demselben Makespan 200 nach 26,4 s melden: Der Unterschied liegt nicht in der Loesung, sondern im Beweis, dass es keine bessere gibt. Die abgedruckte Ausgabe traegt die Kennzeichnung "Laufzeiten und die Zahl der verschiedenen Plaene sind hardwareabhaengig" - nach dem Muster, das das Testing-Kapitel fuer Benchmark_Skalierung.py schon verwendet. Der Vergleich des extrahierten Programms mit dem Abdruck weicht denn auch in genau einer Zelle ab (4 statt 3 verschiedene Plaene bei 4 Arbeitern); Zielwert und Struktur sind identisch. Hier ist die Nichtreproduzierbarkeit der abgedruckten Zahl die Aussage selbst. Mitgezogen: Kapitelkopf, Lernziele, Selbsttest, Zusammenfassung, Vorwort-Programmverzeichnis, Uebungsaufgabe und Loesung in Anhang A, ein Verweis aus dem bestehenden Callout zu mehrdeutigen Optima und einer aus Warmstart_Effekt.py im MILP-Kapitel (dort nach Regel 12 der Kapitelname). Stand: 295 Abschnitte, 730 Querverweise, 328 Indexmarken, 76 Programme, 140 Aufgaben mit 140 Loesungen, 33 pytest-Tests, PDF 744 Seiten, 69 netzfreie Programme fehlerfrei. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
116 lines
35 KiB
HTML
116 lines
35 KiB
HTML
<!doctype html>
|
|
<html lang="de">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Beispielprogramme · Optimierte Entscheidungsfindung mit Python</title>
|
|
<script>
|
|
(function () {
|
|
try {
|
|
var t = localStorage.getItem("or-theme");
|
|
if (t) document.documentElement.setAttribute("data-theme", t);
|
|
} catch (e) {}
|
|
})();
|
|
</script>
|
|
<link rel="stylesheet" href="assets/highlight.css" />
|
|
<link rel="stylesheet" href="katex/katex.min.css" />
|
|
<script defer="" src="katex/katex.min.js"></script>
|
|
<script>document.addEventListener("DOMContentLoaded", function () {
|
|
var mathElements = document.getElementsByClassName("math");
|
|
var macros = [];
|
|
for (var i = 0; i < mathElements.length; i++) {
|
|
var texText = mathElements[i].firstChild;
|
|
if (mathElements[i].tagName == "SPAN") {
|
|
katex.render(texText.data, mathElements[i], {
|
|
displayMode: mathElements[i].classList.contains('display'),
|
|
throwOnError: false,
|
|
macros: macros,
|
|
fleqn: false
|
|
});
|
|
}}
|
|
// Der Browser springt zu einem #anker in der URL schon beim ersten Rendern
|
|
// an, BEVOR die KaTeX-Formeln oben im Text ihre finale Hoehe bekommen -
|
|
// durch den Reflow landet der Anker danach zu weit unten. Nach dem
|
|
// Formel-Rendering hier erneut zum Anker springen, das behebt es.
|
|
if (location.hash) {
|
|
var ziel = document.getElementById(decodeURIComponent(location.hash.slice(1)));
|
|
if (ziel) ziel.scrollIntoView({behavior: "instant", block: "start"});
|
|
}
|
|
});
|
|
</script>
|
|
<link rel="stylesheet" href="assets/site.css" />
|
|
</head>
|
|
<body>
|
|
<svg style="display:none" aria-hidden="true"><symbol id="icon-menu" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
|
|
<line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/>
|
|
</symbol>
|
|
<symbol id="icon-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
|
|
<circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.2" y2="16.2"/>
|
|
</symbol>
|
|
<symbol id="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
|
|
<circle cx="12" cy="12" r="4.5"/>
|
|
<line x1="12" y1="1.5" x2="12" y2="4"/><line x1="12" y1="20" x2="12" y2="22.5"/>
|
|
<line x1="1.5" y1="12" x2="4" y2="12"/><line x1="20" y1="12" x2="22.5" y2="12"/>
|
|
<line x1="4.5" y1="4.5" x2="6.2" y2="6.2"/><line x1="17.8" y1="17.8" x2="19.5" y2="19.5"/>
|
|
<line x1="19.5" y1="4.5" x2="17.8" y2="6.2"/><line x1="6.2" y1="17.8" x2="4.5" y2="19.5"/>
|
|
</symbol>
|
|
<symbol id="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M20 14.5A8.5 8.5 0 1 1 9.5 4a6.8 6.8 0 0 0 10.5 10.5z"/>
|
|
</symbol>
|
|
<symbol id="icon-chevron-left" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<polyline points="15 4 7 12 15 20"/>
|
|
</symbol>
|
|
<symbol id="icon-chevron-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<polyline points="9 4 17 12 9 20"/>
|
|
</symbol>
|
|
<symbol id="icon-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<polyline points="4 13 9.5 18.5 20 6"/>
|
|
</symbol>
|
|
<symbol id="icon-external-link" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M18 13.5V19a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 19V7A1.5 1.5 0 0 1 5 5.5h5.5"/>
|
|
<polyline points="14.5 3.5 20.5 3.5 20.5 9.5"/><line x1="11" y1="13" x2="20" y2="4"/>
|
|
</symbol>
|
|
<symbol id="icon-book" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M4 5.5A2 2 0 0 1 6 4h6v16H6a2 2 0 0 0-2 1.5z"/>
|
|
<path d="M20 5.5A2 2 0 0 0 18 4h-6v16h6a2 2 0 0 1 2 1.5z"/>
|
|
</symbol>
|
|
<symbol id="icon-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
|
|
</symbol>
|
|
<symbol id="icon-download" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M12 3v12"/><polyline points="7 10 12 15 17 10"/><path d="M4 19.5h16"/>
|
|
</symbol></svg>
|
|
<header class="site-header">
|
|
<button type="button" class="icon-btn" id="sidebar-toggle" aria-label="Menü öffnen"><svg class="icon" aria-hidden="true"><use href="#icon-menu"></use></svg></button>
|
|
<a class="brand" href="index.html"><svg class="icon" aria-hidden="true"><use href="#icon-book"></use></svg> <span>Optimierte Entscheidungsfindung mit Python</span></a>
|
|
<div class="site-search">
|
|
<input id="suche-eingabe" type="search" placeholder="Suchen …" aria-label="Suche" autocomplete="off" />
|
|
<svg class="icon such-icon" aria-hidden="true"><use href="#icon-search"></use></svg>
|
|
<div id="suche-ergebnisse" class="suche-ergebnisse" hidden></div>
|
|
</div>
|
|
<button type="button" class="icon-btn" id="theme-toggle" aria-label="Darstellung umschalten">
|
|
<svg class="icon icon-sun" aria-hidden="true"><use href="#icon-sun"></use></svg><svg class="icon icon-moon" aria-hidden="true"><use href="#icon-moon"></use></svg>
|
|
</button>
|
|
</header>
|
|
<div class="site-body">
|
|
<div class="sidebar-overlay" id="sidebar-overlay" hidden></div>
|
|
<nav class="sidebar" id="sidebar" aria-label="Kapitelnavigation"><div class="sidebar-inhalt"><details class="sidebar-gruppe"><summary>Einstieg</summary><ul><li data-kapitel="vorwort.html"><a href="vorwort.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Vorwort & Lesehilfe</span></a></li><li data-kapitel="notation.html"><a href="notation.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Notation & Abkürzungen</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil I: Grundlagen des Operations Research</summary><ul><li data-kapitel="einfuehrung.html"><a href="einfuehrung.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 1: Einführung in Operations Research — Vom Ursprung zur mathematischen Entscheidungsfindung</span></a></li><li data-kapitel="fundament.html"><a href="fundament.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 2: Das mathematische Fundament — Vektoren, Matrizen, Konvexität</span></a></li><li data-kapitel="oekosystem.html"><a href="oekosystem.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 3: Das Python-Ökosystem für OR — Solver, Bindings und Modellierungsschichten</span></a></li><li data-kapitel="modellierung.html"><a href="modellierung.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 4: Vom Management-Wunsch zum Modell</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil II: Die Kernverfahren der deterministischen Optimierung</summary><ul><li data-kapitel="lp.html"><a href="lp.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 5: Lineare Programmierung — Simplex, Dualität und Schattenpreise</span></a></li><li data-kapitel="milp.html"><a href="milp.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 6: Gemischt-ganzzahlige Optimierung — Diskrete Entscheidungen und Branch-and-Bound</span></a></li><li data-kapitel="cpsat.html"><a href="cpsat.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 7: Constraint Programming mit CP-SAT — Logik, Scheduling und Zuweisung</span></a></li><li data-kapitel="graphen.html"><a href="graphen.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 8: Graphen, Flüsse und Touren — Min-Cost-Flow, Matching und VRP</span></a></li><li data-kapitel="metaheuristiken.html"><a href="metaheuristiken.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 9: Metaheuristiken — wenn der exakte Solver aussteigt</span></a></li><li data-kapitel="dekomposition.html"><a href="dekomposition.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 10: Spaltengenerierung — das Modell umbauen statt die Lösung raten</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil III: Nichtlinearität, Unsicherheit und mehrperiodige Dynamik</summary><ul><li data-kapitel="qp-nlp.html"><a href="qp-nlp.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 11: Quadratische und nichtlineare Optimierung — KKT, Lagrange, Konvexität</span></a></li><li data-kapitel="unsicherheit.html"><a href="unsicherheit.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 12: Optimierung unter Unsicherheit — Monte-Carlo, Stochastik, Robustheit</span></a></li><li data-kapitel="dynamische-programmierung.html"><a href="dynamische-programmierung.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 13: Dynamische Programmierung — Die Bellman-Gleichung und Order-Execution</span></a></li><li data-kapitel="mehrziel.html"><a href="mehrziel.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 14: Mehrere Ziele — Pareto-Fronten statt Gewichte</span></a></li><li data-kapitel="prognose.html"><a href="prognose.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 15: Predict-then-Optimize — die bessere Prognose, die schlechtere Entscheidung</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil IV: Anwendungen — Energiewirtschaft und Finanzmärkte</summary><ul><li data-kapitel="bruecke.html"><a href="bruecke.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 16: Die Strukturbrücke — dieselbe Mathematik, zwei Welten</span></a></li><li data-kapitel="supplychain.html"><a href="supplychain.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 17: Supply-Chain und Energieeinsatz unter Unsicherheit</span></a></li><li data-kapitel="finanzdaten.html"><a href="finanzdaten.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 18: Finanzdaten-Modellierung — Renditen, Kovarianz und Shrinkage</span></a></li><li data-kapitel="markowitz.html"><a href="markowitz.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 19: Die moderne Portfoliotheorie nach Markowitz</span></a></li><li data-kapitel="cvar.html"><a href="cvar.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 20: Tail-Risiko, CVaR und Transaktionskosten</span></a></li><li data-kapitel="handelsmaschine.html"><a href="handelsmaschine.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 21: Die vollständige quantitative Handelsmaschine</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil V: Praxis</summary><ul><li data-kapitel="praxisfallen.html"><a href="praxisfallen.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 22: Praxisfallen und der Weg zum produktiven Einsatz</span></a></li><li data-kapitel="testing.html"><a href="testing.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 23: Testen, Messen, Ausliefern</span></a></li><li data-kapitel="projektwerkstatt.html"><a href="projektwerkstatt.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Projektwerkstatt</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Anhänge</summary><ul><li data-kapitel="anhang-loesungen.html"><a href="anhang-loesungen.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Anhang A: Lösungen zu allen Übungsaufgaben</span></a></li><li data-kapitel="anhang-modellierungsmuster.html"><a href="anhang-modellierungsmuster.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Anhang B: Katalog der Modellierungsmuster</span></a></li><li data-kapitel="anhang-fehlerdiagnose.html"><a href="anhang-fehlerdiagnose.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Anhang C: Fehlerdiagnose-Handbuch</span></a></li><li data-kapitel="anhang-spickzettel.html"><a href="anhang-spickzettel.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Anhang D: Spickzettel der Solver</span></a></li><li data-kapitel="anhang-glossar-literatur.html"><a href="anhang-glossar-literatur.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Anhang E: Glossar und Literatur</span></a></li></ul></details><ul class="sidebar-extra"><li><a href="programme.html"><svg class="icon" aria-hidden="true"><use href="#icon-book"></use></svg> Beispielprogramme</a></li><li><a href="stichwortverzeichnis.html"><svg class="icon" aria-hidden="true"><use href="#icon-search"></use></svg> Stichwortverzeichnis</a></li><li><a href="gesamtdokument.html"><svg class="icon" aria-hidden="true"><use href="#icon-external-link"></use></svg> Gesamtdokument (eine Seite)</a></li><li><a href="Operations_Research_mit_Python_Version_04.pdf" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Download als PDF</a></li></ul></div></nav>
|
|
<main class="content">
|
|
|
|
<nav class="prev-next"><span class="prev-next-leer"></span><span class="prev-next-leer"></span></nav>
|
|
<article>
|
|
<h1>Beispielprogramme</h1><p>Alle 76 im Buch abgedruckten Programme, gruppiert nach Kapitel, zum direkten Herunterladen.</p><section class="programmgruppe"><h2><a href="einfuehrung.html">Kapitel 1: Einführung in Operations Research — Vom Ursprung zur mathematischen Entscheidungsfindung</a></h2><ul class="programmliste"><li><code>Bot_Allokation.py</code> <a class="download-link" href="programme/Bot_Allokation.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Brute_Force_Vergleich.py</code> <a class="download-link" href="programme/Brute_Force_Vergleich.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Bausteine_Vorlage.py</code> <a class="download-link" href="programme/Bausteine_Vorlage.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Excel_Bruecke.py</code> <a class="download-link" href="programme/Excel_Bruecke.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="fundament.html">Kapitel 2: Das mathematische Fundament — Vektoren, Matrizen, Konvexität</a></h2><ul class="programmliste"><li><code>Matrixform.py</code> <a class="download-link" href="programme/Matrixform.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Visualisierung_Loesungsraum.py</code> <a class="download-link" href="programme/Visualisierung_Loesungsraum.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Konvexitaet_Demo.py</code> <a class="download-link" href="programme/Konvexitaet_Demo.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Skalierung_Kondition.py</code> <a class="download-link" href="programme/Skalierung_Kondition.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="oekosystem.html">Kapitel 3: Das Python-Ökosystem für OR — Solver, Bindings und Modellierungsschichten</a></h2><ul class="programmliste"><li><code>Ein_System_Vier_Ansaetze.py</code> <a class="download-link" href="programme/Ein_System_Vier_Ansaetze.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Solver_Wahl.py</code> <a class="download-link" href="programme/Solver_Wahl.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Modellierungsschichten.py</code> <a class="download-link" href="programme/Modellierungsschichten.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Vektorisierte_Modellgenerierung.py</code> <a class="download-link" href="programme/Vektorisierte_Modellgenerierung.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="modellierung.html">Kapitel 4: Vom Management-Wunsch zum Modell</a></h2><ul class="programmliste"><li><code>Vom_Wunsch_zum_Modell.py</code> <a class="download-link" href="programme/Vom_Wunsch_zum_Modell.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="lp.html">Kapitel 5: Lineare Programmierung — Simplex, Dualität und Schattenpreise</a></h2><ul class="programmliste"><li><code>Simplex_Tableau_LP.py</code> <a class="download-link" href="programme/Simplex_Tableau_LP.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Sensitivitaetsanalyse.py</code> <a class="download-link" href="programme/Sensitivitaetsanalyse.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Dualitaet_Nachweis.py</code> <a class="download-link" href="programme/Dualitaet_Nachweis.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Toleranzen_und_Entartung.py</code> <a class="download-link" href="programme/Toleranzen_und_Entartung.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="milp.html">Kapitel 6: Gemischt-ganzzahlige Optimierung — Diskrete Entscheidungen und Branch-and-Bound</a></h2><ul class="programmliste"><li><code>Runden_Gegenbeispiel.py</code> <a class="download-link" href="programme/Runden_Gegenbeispiel.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Rucksack.py</code> <a class="download-link" href="programme/Rucksack.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>MILP_Portfolio_Fixgebuehren.py</code> <a class="download-link" href="programme/MILP_Portfolio_Fixgebuehren.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Solverstatus_und_Gap.py</code> <a class="download-link" href="programme/Solverstatus_und_Gap.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Warmstart_Effekt.py</code> <a class="download-link" href="programme/Warmstart_Effekt.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Big_M_Falle.py</code> <a class="download-link" href="programme/Big_M_Falle.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="cpsat.html">Kapitel 7: Constraint Programming mit CP-SAT — Logik, Scheduling und Zuweisung</a></h2><ul class="programmliste"><li><code>Propagation_Demo.py</code> <a class="download-link" href="programme/Propagation_Demo.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>CP_SAT_Vertretungssystem.py</code> <a class="download-link" href="programme/CP_SAT_Vertretungssystem.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>JobShop_Intervalle.py</code> <a class="download-link" href="programme/JobShop_Intervalle.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Parallele_Suche.py</code> <a class="download-link" href="programme/Parallele_Suche.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>CP_SAT_Statusfaelle.py</code> <a class="download-link" href="programme/CP_SAT_Statusfaelle.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Strafgewichte.py</code> <a class="download-link" href="programme/Strafgewichte.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="graphen.html">Kapitel 8: Graphen, Flüsse und Touren — Min-Cost-Flow, Matching und VRP</a></h2><ul class="programmliste"><li><code>Min_Cost_Flow.py</code> <a class="download-link" href="programme/Min_Cost_Flow.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Zuordnung_Ungarisch.py</code> <a class="download-link" href="programme/Zuordnung_Ungarisch.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>VRP_Flotten_Routing.py</code> <a class="download-link" href="programme/VRP_Flotten_Routing.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>VRP_Kapazitaetsfalle.py</code> <a class="download-link" href="programme/VRP_Kapazitaetsfalle.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="metaheuristiken.html">Kapitel 9: Metaheuristiken — wenn der exakte Solver aussteigt</a></h2><ul class="programmliste"><li><code>Simulated_Annealing.py</code> <a class="download-link" href="programme/Simulated_Annealing.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Metaheuristik_vs_Exakt.py</code> <a class="download-link" href="programme/Metaheuristik_vs_Exakt.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Large_Neighborhood_Search.py</code> <a class="download-link" href="programme/Large_Neighborhood_Search.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="dekomposition.html">Kapitel 10: Spaltengenerierung — das Modell umbauen statt die Lösung raten</a></h2><ul class="programmliste"><li><code>Spaltengenerierung.py</code> <a class="download-link" href="programme/Spaltengenerierung.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="qp-nlp.html">Kapitel 11: Quadratische und nichtlineare Optimierung — KKT, Lagrange, Konvexität</a></h2><ul class="programmliste"><li><code>QP_Grundlagen.py</code> <a class="download-link" href="programme/QP_Grundlagen.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>KKT_Nachweis.py</code> <a class="download-link" href="programme/KKT_Nachweis.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Entropie_Maximierte_Allokation.py</code> <a class="download-link" href="programme/Entropie_Maximierte_Allokation.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Lokale_Optima_Multistart.py</code> <a class="download-link" href="programme/Lokale_Optima_Multistart.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="unsicherheit.html">Kapitel 12: Optimierung unter Unsicherheit — Monte-Carlo, Stochastik, Robustheit</a></h2><ul class="programmliste"><li><code>Fluch_des_Durchschnitts.py</code> <a class="download-link" href="programme/Fluch_des_Durchschnitts.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Monte_Carlo.py</code> <a class="download-link" href="programme/Monte_Carlo.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Stochastische_Optimierung.py</code> <a class="download-link" href="programme/Stochastische_Optimierung.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Robuste_Optimierung.py</code> <a class="download-link" href="programme/Robuste_Optimierung.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Chance_Constraints.py</code> <a class="download-link" href="programme/Chance_Constraints.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="dynamische-programmierung.html">Kapitel 13: Dynamische Programmierung — Die Bellman-Gleichung und Order-Execution</a></h2><ul class="programmliste"><li><code>Bellman_Minimalbeispiel.py</code> <a class="download-link" href="programme/Bellman_Minimalbeispiel.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Mehrperiodige_Order_Execution.py</code> <a class="download-link" href="programme/Mehrperiodige_Order_Execution.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="mehrziel.html">Kapitel 14: Mehrere Ziele — Pareto-Fronten statt Gewichte</a></h2><ul class="programmliste"><li><code>Mehrziel_Pareto.py</code> <a class="download-link" href="programme/Mehrziel_Pareto.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="prognose.html">Kapitel 15: Predict-then-Optimize — die bessere Prognose, die schlechtere Entscheidung</a></h2><ul class="programmliste"><li><code>Predict_then_Optimize.py</code> <a class="download-link" href="programme/Predict_then_Optimize.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="bruecke.html">Kapitel 16: Die Strukturbrücke — dieselbe Mathematik, zwei Welten</a></h2><ul class="programmliste"><li><code>Strukturbruecke.py</code> <a class="download-link" href="programme/Strukturbruecke.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="supplychain.html">Kapitel 17: Supply-Chain und Energieeinsatz unter Unsicherheit</a></h2><ul class="programmliste"><li><code>Kraftwerkseinsatz.py</code> <a class="download-link" href="programme/Kraftwerkseinsatz.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="finanzdaten.html">Kapitel 18: Finanzdaten-Modellierung — Renditen, Kovarianz und Shrinkage</a></h2><ul class="programmliste"><li><code>Renditen_Vergleich.py</code> <a class="download-link" href="programme/Renditen_Vergleich.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Schaetzrauschen_Demo.py</code> <a class="download-link" href="programme/Schaetzrauschen_Demo.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Finanzdaten_Ledoit_Wolf.py</code> <a class="download-link" href="programme/Finanzdaten_Ledoit_Wolf.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Kovarianz_Falle.py</code> <a class="download-link" href="programme/Kovarianz_Falle.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="markowitz.html">Kapitel 19: Die moderne Portfoliotheorie nach Markowitz</a></h2><ul class="programmliste"><li><code>Diversifikation_Demo.py</code> <a class="download-link" href="programme/Diversifikation_Demo.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Markowitz_CVXPY.py</code> <a class="download-link" href="programme/Markowitz_CVXPY.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Renditeschaetzung_Falle.py</code> <a class="download-link" href="programme/Renditeschaetzung_Falle.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="cvar.html">Kapitel 20: Tail-Risiko, CVaR und Transaktionskosten</a></h2><ul class="programmliste"><li><code>VaR_CVaR_Demo.py</code> <a class="download-link" href="programme/VaR_CVaR_Demo.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>CVaR_Portfolio.py</code> <a class="download-link" href="programme/CVaR_Portfolio.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="handelsmaschine.html">Kapitel 21: Die vollständige quantitative Handelsmaschine</a></h2><ul class="programmliste"><li><code>QuantitativeTradingEngine.py</code> <a class="download-link" href="programme/QuantitativeTradingEngine.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Backtest_Fallen.py</code> <a class="download-link" href="programme/Backtest_Fallen.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Data_Snooping.py</code> <a class="download-link" href="programme/Data_Snooping.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="praxisfallen.html">Kapitel 22: Praxisfallen und der Weg zum produktiven Einsatz</a></h2><ul class="programmliste"><li><code>Infeasibility_Diagnose.py</code> <a class="download-link" href="programme/Infeasibility_Diagnose.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Erklaerbarkeit.py</code> <a class="download-link" href="programme/Erklaerbarkeit.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Constraint_Attribution.py</code> <a class="download-link" href="programme/Constraint_Attribution.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Betriebsueberwachung.py</code> <a class="download-link" href="programme/Betriebsueberwachung.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>or_kern.py</code> <a class="download-link" href="programme/or_kern.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Solverwechsel_CPSAT_HiGHS.py</code> <a class="download-link" href="programme/Solverwechsel_CPSAT_HiGHS.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section><section class="programmgruppe"><h2><a href="testing.html">Kapitel 23: Testen, Messen, Ausliefern</a></h2><ul class="programmliste"><li><code>test_or_kern.py</code> <a class="download-link" href="programme/test_or_kern.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Mutationstest.py</code> <a class="download-link" href="programme/Mutationstest.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Benchmark_Skalierung.py</code> <a class="download-link" href="programme/Benchmark_Skalierung.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li><li><code>Optimierungsdienst.py</code> <a class="download-link" href="programme/Optimierungsdienst.py" download><svg class="icon" aria-hidden="true"><use href="#icon-download"></use></svg> Herunterladen</a></li></ul></section>
|
|
</article>
|
|
|
|
<nav class="prev-next"><span class="prev-next-leer"></span><span class="prev-next-leer"></span></nav>
|
|
</main>
|
|
</div>
|
|
<footer class="site-footer">
|
|
<p>© Dieter Schlüter · <a href="gesamtdokument.html">Gesamtdokument</a> ·
|
|
<a href="programme.html">Beispielprogramme</a></p>
|
|
</footer>
|
|
<script defer src="assets/search-index.js"></script>
|
|
<script defer src="assets/programme.js"></script>
|
|
<script defer src="assets/site.js"></script>
|
|
</body>
|
|
</html>
|