| Filename | Latest commit message | Latest commit date |
|---|---|---|
Grafik_Upgrade.md verlangt "37 didaktisch wertvolle Visualisierungen". Es sind
19: Die Abschnitte "Modul 1-4" wiederholen die Grafiken 1-18 unter den Nummern
19-36, nur Grafik 37 ist zusaetzlich. Belegt an den Skriptnamen - 38
Nennungen, 19 verschiedene Dateien, erzeuge_kombinatorik_wand.py steht dreimal
darin. Von den 19 betreffen neun bereits vorhandene Diagramme.
Umgesetzt sind die zehn wirklich neuen plus eine elfte, die aus einem
Sachfehler des Auftrags entstand: Grafik 14 sollte in Abschnitt 12.3 stehen,
nannte aber Zahlen aus Kapitel 17. Beide Stellen haben jetzt ihre eigene
Grafik mit ihren eigenen Zahlen.
Vier Vorgaben des Auftrags wurden bewusst nicht befolgt: PNG bei 300 dpi (das
Buch kennt nur SVG - die 33 verwaisten PNGs waren gerade erst geloescht
worden), Matplotlib-Standardfarben (die Buchpalette steht in 33 Diagrammen),
harte Kapitelnummern im Fliesstext ({ref:sec:...} stattdessen) und die
fehlende Byte-Reproduzierbarkeit.
Der eigentliche Ertrag waren die Selbsttests. Jeder Generator prueft seine
Zahlen gegen das, was im Kapitel steht, und bricht bei Abweichung ab. Vier
haben angeschlagen:
* Kombinatorik-Wand: 25! ergibt 491,5 Mio. Jahre, die Tabelle nennt 490 Mio. -
Rundung auf zwei signifikante Stellen, nicht Fehler des Buchs.
* Laufzeit-Diagramm: Die abgedruckte Prozentspalte laesst sich aus den
abgedruckten Zeiten nicht exakt nachrechnen (0,001/0,008 ergibt 12 %,
gedruckt sind 14 %) - die Zeiten sind gerundet, die Prozente nicht.
* Predict-then-Optimize: geratene Datenaufteilung ergab 197,35 statt 200,95
MSE. Mit TRAINING aus dem Buchprogramm stimmen alle vier Kostenwerte.
* Almgren-Chriss: ein echter Fehler im Buchprogramm.
DER FUND: analytische_loesung() minimiert die eigene Kostenfunktion nicht. Ihr
Pfad kostet 10.860,40 EUR, der DP-Pfad 10.266,24 EUR - ein Gitterverfahren
kann das kontinuierliche Optimum aber nicht unterbieten. periodenkosten()
rechnet das Risiko mit lambda/2, die geschlossene Formel setzt
kappa~^2 = lambda*sigma^2*P0^2/eta ohne dieses Halbe. Mit lambda/2 liefert die
Formel 10.264,85 EUR und denselben Pfad wie die DP, knapp UNTER der
Gitterloesung. Die Grafik zeigt bis zur Entscheidung darueber den DP-Pfad; er
ist der, den das Kapitel abdruckt.
Nachweise: Alle elf Diagramme sind ueber zwei Laeufe byte-identisch. Kein
vorhandenes Diagramm wurde veraendert. Die Lastabwurf-Grafik reproduziert die
Befundtabelle exakt (874.870/2.504.154/28 von 40 gegen 351.356/415.924/0).
Zwei Abbildungen landeten beim automatischen Einfuegen im Codeblock (ihre
Anker standen in abgedruckten Ausgaben) und wurden dahinter verschoben; eine
Pruefung ueber alle elf zeigt null Fehlplatzierungen.
Neu: bilder_04/stil_04.py buendelt Palette, rcParams und speichere().
networkx wurde entgegen der Planung nicht gebraucht - pyproject.toml bleibt
unveraendert. PDF von 781 auf 788 Seiten, 44 Diagramme, 27 Generatoren.
Veroeffentlicht: 25 Dateien.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
| .. | ||
| 00_Vorwort_und_Lesehilfe.md | ||
| 01_Notation_und_Abkuerzungen.md | ||
| 10_Einfuehrung_OR.md | ||
| 11_Mathematisches_Fundament.md | ||
| 12_Python_Oekosystem.md | ||
| 13_Vom_Wunsch_zum_Modell.md | ||
| 19_Synthese_Grundlagen.md | ||
| 20_Lineare_Programmierung.md | ||
| 21_MILP.md | ||
| 22_CP_SAT.md | ||
| 23_Graphen_Fluesse_Touren.md | ||
| 24_Metaheuristiken.md | ||
| 25_Spaltengenerierung.md | ||
| 29_Synthese_Kernverfahren.md | ||
| 30_QP_und_NLP.md | ||
| 31_Unsicherheit.md | ||
| 32_Dynamische_Programmierung.md | ||
| 33_Mehrziel_und_Pareto.md | ||
| 34_Predict_then_Optimize.md | ||
| 35_Strukturbruecke.md | ||
| 36_Supply_Chain_Energie.md | ||
| 39_Synthese_Nichtlinear.md | ||
| 40_Finanzdaten.md | ||
| 41_Markowitz.md | ||
| 42_CVaR.md | ||
| 43_Handelsmaschine.md | ||
| 49_Synthese_Anwendungen.md | ||
| 50_Praxis.md | ||
| 51_Testing_und_Deployment.md | ||
| 52_Synthese_Praxis.md | ||
| 59_Projektwerkstatt.md | ||
| 90_Anhang_Loesungen.md | ||
| 91_Anhang_Modellierungsmuster.md | ||
| 92_Anhang_Fehlerdiagnose.md | ||
| 93_Anhang_Spickzettel.md | ||
| 94_Anhang_Glossar.md | ||
| 95_Anhang_Literatur.md | ||
| build_version_04.py | ||
| erzeuge_glossar_04.py | ||
| extract_programme_04.py | ||
| glossar_eintraege_04.py | ||
| NEUER_TITEL.md | ||
| README.md | ||
| README_Programme.md | ||
| titeltexte_04.py | ||
| veroeffentliche_04.py | ||
Optimierte Entscheidungsfindung mit Python
Wegweiser durch diese Ausgabe. Dieses Kompendium verfolgt einen klaren Anspruch: Kursteilnehmerinnen und Kursteilnehmer sollen den Text nicht nur lesen, sondern damit arbeiten, üben und eigene Anwendungen bauen können.
Was dieses Kompendium bietet
| Merkmal | Umfang | Warum |
|---|---|---|
| Formel-Lesehilfen | bei jeder nicht-trivialen Formel | Nicht jede/r liest Formelsprache flüssig |
| Handrechnungen | Simplex, Big-M, Dualität, Bellman, CVaR | Verstehen kommt vor Programmieren |
| Zeile-für-Zeile-Code-Erklärungen | alle Kernprogramme | Code lesen lernen, nicht nur ausführen |
| Erwartete Programmausgaben | alle Programme | Selbstkontrolle: „Läuft es bei mir richtig?“ |
| ~130 Übungsaufgaben mit Lösungen | jedes Kapitel | Aktives Üben statt passives Lesen |
| Selbsttests | jedes Kapitel | Schnelle Wissenskontrolle |
| Codebeispiele durchgängig lauffähig | u. a. Rucksack, Zuordnung, Job-Shop, Monte-Carlo, robuste Optimierung, Min-Cost-Flow | Theorie und Code gehören zusammen |
| Notations- und Abkürzungsverzeichnis | 01_Notation_und_Abkuerzungen.md |
Jede Abkürzung genau einmal sauber eingeführt |
| Projektwerkstatt | 59_Projektwerkstatt.md |
8 vollständige Projektaufträge für eigene Anwendungen |
| Modellierungsmuster-Katalog | 91_Anhang_Modellierungsmuster.md |
Nachschlagewerk: „Wie modelliere ich X?“ |
| Fehlerdiagnose-Handbuch | 92_Anhang_Fehlerdiagnose.md |
Was tun, wenn der Solver INFEASIBLE meldet? |
Aufbau der Dateien
Der Text ist auf mehrere Dateien verteilt, damit er handhabbar bleibt. Die Nummern-Präfixe legen die Lesereihenfolge fest.
Vorspann
| Datei | Inhalt |
|---|---|
00_Vorwort_und_Lesehilfe.md |
Vorwort & Lesehilfe |
01_Notation_und_Abkuerzungen.md |
Notation & Abkürzungen |
Teil I: Grundlagen des Operations Research
| Datei | Kapitel |
|---|---|
10_Einfuehrung_OR.md |
Kapitel 1 — Einführung in Operations Research — Vom Ursprung zur mathematischen Entscheidungsfindung |
11_Mathematisches_Fundament.md |
Kapitel 2 — Das mathematische Fundament — Vektoren, Matrizen, Konvexität |
12_Python_Oekosystem.md |
Kapitel 3 — Das Python-Ökosystem für OR — Solver, Bindings und Modellierungsschichten |
13_Vom_Wunsch_zum_Modell.md |
Kapitel 4 — Vom Management-Wunsch zum Modell |
19_Synthese_Grundlagen.md |
Synthese Teil I |
Teil II: Die Kernverfahren der deterministischen Optimierung
| Datei | Kapitel |
|---|---|
20_Lineare_Programmierung.md |
Kapitel 5 — Lineare Programmierung — Simplex, Dualität und Schattenpreise |
21_MILP.md |
Kapitel 6 — Gemischt-ganzzahlige Optimierung — Diskrete Entscheidungen und Branch-and-Bound |
22_CP_SAT.md |
Kapitel 7 — Constraint Programming mit CP-SAT — Logik, Scheduling und Zuweisung |
23_Graphen_Fluesse_Touren.md |
Kapitel 8 — Graphen, Flüsse und Touren — Min-Cost-Flow, Matching und VRP |
24_Metaheuristiken.md |
Kapitel 9 — Metaheuristiken — wenn der exakte Solver aussteigt |
25_Spaltengenerierung.md |
Kapitel 10 — Spaltengenerierung — das Modell umbauen statt die Lösung raten |
29_Synthese_Kernverfahren.md |
Synthese Teil II |
Teil III: Nichtlinearität, Unsicherheit und mehrperiodige Dynamik
| Datei | Kapitel |
|---|---|
30_QP_und_NLP.md |
Kapitel 11 — Quadratische und nichtlineare Optimierung — KKT, Lagrange, Konvexität |
31_Unsicherheit.md |
Kapitel 12 — Optimierung unter Unsicherheit — Monte-Carlo, Stochastik, Robustheit |
32_Dynamische_Programmierung.md |
Kapitel 13 — Dynamische Programmierung — Die Bellman-Gleichung und Order-Execution |
33_Mehrziel_und_Pareto.md |
Kapitel 14 — Mehrere Ziele — Pareto-Fronten statt Gewichte |
34_Predict_then_Optimize.md |
Kapitel 15 — Predict-then-Optimize — die bessere Prognose, die schlechtere Entscheidung |
39_Synthese_Nichtlinear.md |
Synthese Teil III |
Teil IV: Anwendungen — Energiewirtschaft und Finanzmärkte
| Datei | Kapitel |
|---|---|
35_Strukturbruecke.md |
Kapitel 16 — Die Strukturbrücke — dieselbe Mathematik, zwei Welten |
36_Supply_Chain_Energie.md |
Kapitel 17 — Supply-Chain und Energieeinsatz unter Unsicherheit |
40_Finanzdaten.md |
Kapitel 18 — Finanzdaten-Modellierung — Renditen, Kovarianz und Shrinkage |
41_Markowitz.md |
Kapitel 19 — Die moderne Portfoliotheorie nach Markowitz |
42_CVaR.md |
Kapitel 20 — Tail-Risiko, CVaR und Transaktionskosten |
43_Handelsmaschine.md |
Kapitel 21 — Die vollständige quantitative Handelsmaschine |
49_Synthese_Anwendungen.md |
Synthese Teil IV |
Teil V: Praxis
| Datei | Kapitel |
|---|---|
50_Praxis.md |
Kapitel 22 — Praxisfallen und der Weg zum produktiven Einsatz |
51_Testing_und_Deployment.md |
Kapitel 23 — Testen, Messen, Ausliefern |
52_Synthese_Praxis.md |
Synthese Teil V |
59_Projektwerkstatt.md |
Projektwerkstatt |
Anhang
| Datei | Inhalt |
|---|---|
90_Anhang_Loesungen.md |
Anhang A — Lösungen zu allen Übungsaufgaben |
91_Anhang_Modellierungsmuster.md |
Anhang B — Katalog der Modellierungsmuster |
92_Anhang_Fehlerdiagnose.md |
Anhang C — Fehlerdiagnose-Handbuch |
93_Anhang_Spickzettel.md |
Anhang D — Spickzettel der Solver |
94_Anhang_Glossar.md |
Anhang E — Glossar |
95_Anhang_Literatur.md |
Anhang F — Literaturverzeichnis |
Eine Einzeldatei erzeugen
Wer lieber ein einziges Dokument möchte (z. B. zum Drucken oder für die PDF-Erzeugung), baut es aus den Einzeldateien:
cd Version_04 # das Wurzelverzeichnis des Repositorys
python3 Operations_Research_mit_Python_Version_04/build_version_04.py
Das Skript erzeugt Operations_Research_mit_Python_Version_04.md im übergeordneten
Verzeichnis — in derselben Reihenfolge wie oben, mit Titelblock, automatisch gesetztem
Inhaltsverzeichnis-Platzhalter und entfernten unnötigen Zeilenumbrüchen innerhalb von
Absätzen. Optionen:
python3 .../build_version_04.py --pdf # zusätzlich PDF über pandoc + xelatex
python3 .../build_version_04.py --html # zusätzlich die Website OR_HTML_04/
python3 .../build_version_04.py --check # nur Konsistenzprüfung, schreibt nichts
--html erzeugt die mehrseitige Website mit Suche, Stichwortverzeichnis und
Notebook-Downloads; das Gesamtdokument auf einer Seite liegt darin als
gesamtdokument.html.
Empfohlene Reihenfolge für Kursteilnehmer
Vollständiger Lehrgang (empfohlen, ca. 100–140 Stunden): Vorwort → Notation → alle Kapitel der Reihe nach → Projektwerkstatt. Jedes Kapitel endet mit Übungsaufgaben — bearbeiten Sie diese, bevor Sie weiterlesen.
Schnellpfad Planung & Disposition (ca. 25 Stunden): Einführung, Fundament, Vom Wunsch zum Modell, LP, MILP, CP-SAT → Projekt P1 oder P2.
Schnellpfad Logistik (ca. 25 Stunden): Einführung, Fundament, LP, MILP, Graphen → Projekt P3.
Schnellpfad Quantitative Finance (ca. 30 Stunden): Einführung, Fundament, QP/NLP, Finanzdaten, Markowitz, CVaR, Handelsmaschine → Projekt P6 oder P7.
(Ohne Kapitelnummern — die verschieben sich beim Einfügen neuer Kapitel. Die maßgebliche, immer aktuelle Fassung der Lernpfade steht im Vorwort.)
Details zu den Lernpfaden stehen in 00_Vorwort_und_Lesehilfe.md.
Autor / Herausgeber: Dieter Schlüter · Stand: 9. September 2026