operations_research/Operations_Research_mit_Python_Version_04
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dschlueter 0f9c815b86 Grafik-Upgrade Stufe 1: elf neue Diagramme
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>
2026-09-09 01:11:33 +02:00
..
00_Vorwort_und_Lesehilfe.md Titelblatt: Anwendungsliste beginnt ohne "Von" 2026-09-08 19:49:03 +02:00
01_Notation_und_Abkuerzungen.md Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
10_Einfuehrung_OR.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
11_Mathematisches_Fundament.md Sechster und siebter Fund: die letzten handgeschriebenen Nummern 2026-09-08 09:52:41 +02:00
12_Python_Oekosystem.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
13_Vom_Wunsch_zum_Modell.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
19_Synthese_Grundlagen.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
20_Lineare_Programmierung.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
21_MILP.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
22_CP_SAT.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
23_Graphen_Fluesse_Touren.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
24_Metaheuristiken.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
25_Spaltengenerierung.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
29_Synthese_Kernverfahren.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
30_QP_und_NLP.md Achter Fund (Uebung-Verweise) und Phase 8.3: Dockerfile 2026-09-08 13:18:05 +02:00
31_Unsicherheit.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
32_Dynamische_Programmierung.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
33_Mehrziel_und_Pareto.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
34_Predict_then_Optimize.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
35_Strukturbruecke.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
36_Supply_Chain_Energie.md Grafik-Upgrade Stufe 1: elf neue Diagramme 2026-09-09 01:11:33 +02:00
39_Synthese_Nichtlinear.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
40_Finanzdaten.md Achter Fund (Uebung-Verweise) und Phase 8.3: Dockerfile 2026-09-08 13:18:05 +02:00
41_Markowitz.md Sechster und siebter Fund: die letzten handgeschriebenen Nummern 2026-09-08 09:52:41 +02:00
42_CVaR.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
43_Handelsmaschine.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
49_Synthese_Anwendungen.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
50_Praxis.md Achter Fund (Uebung-Verweise) und Phase 8.3: Dockerfile 2026-09-08 13:18:05 +02:00
51_Testing_und_Deployment.md Phase 8.2: Solver-Isolation ohne subprocess-Codestrings 2026-09-08 12:39:34 +02:00
52_Synthese_Praxis.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
59_Projektwerkstatt.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
90_Anhang_Loesungen.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
91_Anhang_Modellierungsmuster.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +02:00
92_Anhang_Fehlerdiagnose.md Phase 8.2: Solver-Isolation ohne subprocess-Codestrings 2026-09-08 12:39:34 +02:00
93_Anhang_Spickzettel.md Glossar und Literatur trennen, Menue um Glossar und ZIP-Download ergaenzen 2026-09-08 15:48:57 +02:00
94_Anhang_Glossar.md Glossar von 92 auf 234 Eintraege 2026-09-08 21:17:20 +02:00
95_Anhang_Literatur.md Literaturverzeichnis: alle Eintraege gegen Crossref geprueft 2026-09-08 21:58:16 +02:00
build_version_04.py NEUER_TITEL.md zu den Quellen, Kritik-Verzeichnis ganz heraus 2026-09-09 00:31:16 +02:00
erzeuge_glossar_04.py Build-Kommando fuer das Glossar: erzeuge_glossar_04.py 2026-09-08 21:28:53 +02:00
extract_programme_04.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
glossar_eintraege_04.py Build-Kommando fuer das Glossar: erzeuge_glossar_04.py 2026-09-08 21:28:53 +02:00
NEUER_TITEL.md NEUER_TITEL.md zu den Quellen, Kritik-Verzeichnis ganz heraus 2026-09-09 00:31:16 +02:00
README.md NEUER_TITEL.md zu den Quellen, Kritik-Verzeichnis ganz heraus 2026-09-09 00:31:16 +02:00
README_Programme.md Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
titeltexte_04.py NEUER_TITEL.md zu den Quellen, Kritik-Verzeichnis ganz heraus 2026-09-09 00:31:16 +02:00
veroeffentliche_04.py veroeffentliche_04.py: leserliche Ausgabe, 404-Probe entfernt 2026-09-08 20:04:53 +02:00

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. 100140 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