operations_research/Operations_Research_mit_Python_Version_04
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dschlueter 803d8aa91e Literaturverzeichnis: alle Eintraege gegen Crossref geprueft
Die erste Fassung stuetzte sich bei rund 30 Eintraegen auf Kenntnis der
Standardliteratur statt auf eine Abfrage. Ein Skript hat jeden Eintrag einzeln
gegen die Crossref-API gestellt: DOIs ueber /works/{doi}, Eintraege ohne DOI
ueber die bibliografische Suche mit Aehnlichkeitsbewertung.

Ergebnis: 54 der 72 Eintraege tragen eine DOI, alle 54 loesen auf und zeigen
auf das richtige Werk. Die uebrigen 18 sind Webdokumentationen,
Institutsberichte, Konferenzbeitraege ohne DOI-Vergabe oder Buecher, die
Crossref nicht auf Buchebene fuehrt.

Zwei echte Fehler:

* Almgren & Chriss stand mit (2000) und der DOI 10.21314/JOR.2000.041 - die
  loest nicht auf. Richtig ist 2001 mit 10.21314/jor.2001.041; Band, Heft und
  Seitenzahlen stimmten.
* Rockafellar & Uryasev stand mit S. 21-42, und zwar schon in der
  Vorgaengerfassung. Der Verlagsdatensatz nennt S. 21-41.

Dazu sieben ergaenzte Buch-DOIs (Dantzig, Wolsey, Boyd/Vandenberghe, Ben-Tal
et al., Biere et al., Brandimarte/Zotteri, Powell), jede einzeln auf Verlag,
Jahr und Typ geprueft. Beim Handbook of Constraint Programming fuehrt Crossref
nur Kapitel-DOIs - statt eines geratenen Buch-DOI ist jetzt die Reihe genannt
(Foundations of Artificial Intelligence, Bd. 2).

Der lehrreichste Teil war das Verwerfen: Die Crossref-Suche liefert zu
"Network Flows" (Ahuja/Magnanti/Orlin) den Treffer 10.2307/2583863 mit 100 %
Titeluebereinstimmung - er gehoert zu einer Buchbesprechung von 1994, nicht
zum Buch. Ebenso falsch waren die Treffer zu Sutton/Barto (Rezension der
ersten Auflage, 1998), Bertsekas (1996), Kleppmann (Elsevier 2003) und dem
SCIP-Bericht (ein R-Paket). Eine automatische Uebernahme des besten Treffers
haette fuenf falsche DOIs ins Buch geschrieben; sichtbar wurde es erst beim
Abgleich von Typ, Verlag und Jahr.

Veroeffentlicht: 4 Dateien, PDF unveraendert 781 Seiten.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 21:58:16 +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 Aufgeraeumt: 33 PNG-Zweitfassungen, Bau-Ueberbleibsel, Ausgabepfade 2026-09-08 14:22:26 +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 Phase 8.2: Solver-Isolation ohne subprocess-Codestrings 2026-09-08 12:39:34 +02:00
13_Vom_Wunsch_zum_Modell.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +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 Achter Fund (Uebung-Verweise) und Phase 8.3: Dockerfile 2026-09-08 13:18:05 +02:00
21_MILP.md Phase 6.3: Parallelitaet und Determinismus - gemessen statt behauptet 2026-09-08 11:19:53 +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 Folium-Karten: die Blockade war eine falsche Alternative 2026-09-08 20:38:16 +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 Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +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 Achter Fund (Uebung-Verweise) und Phase 8.3: Dockerfile 2026-09-08 13:18:05 +02:00
32_Dynamische_Programmierung.md Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +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 Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +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 Phase 8.1: Synthese-Seiten je Teil - und die gebrochene Lesekette 2026-09-08 12:10:02 +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 Build-Kommando fuer das Glossar: erzeuge_glossar_04.py 2026-09-08 21:28:53 +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
README.md Dokumentation nachgezogen - und dabei den neunten Fund gemacht 2026-09-08 19:13:34 +02:00
README_Programme.md Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
titeltexte_04.py Titeltext: eine Quelle fuer PDF-Titelseite und Startseite 2026-09-08 19:39:49 +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: 8. September 2026