| Filename | Latest commit message | Latest commit date |
|---|---|---|
Der einzige Punkt, der in diesem Projekt je als "blockiert" gefuehrt wurde,
ist erledigt. Die Begruendung lautete: Die VRP-Instanz sei ein synthetisches
100 x 100-km-Raster ohne Geokoordinaten, eine echte Karte verlange also
ENTWEDER eine neue Instanz (und damit zwei Dutzend neue abgedruckte Zahlen)
ODER eine willkuerliche Verankerung.
Es gibt einen dritten Weg, und er ist exakt. Eine azimutal-aequidistante
Projektion um den Schwerpunkt des Rasters bildet die 17 Punkte so auf Laenge
und Breite ab, dass die Grosskreisdistanzen mit den Rasterdistanzen
uebereinstimmen:
festes cos(Breite) Median 0,360 % Maximum 2,003 %
cos der eigenen Breite Median 0,351 % Maximum 0,908 %
azimutal-aequidistant Median 0,000 % Maximum 0,001 %
Ein Meter auf hundert Kilometer. Kein abgedruckter Wert aendert sich, die
Gesamtstrecke bleibt bei 619 km, das SVG ist byte-identisch geblieben.
Zwei Befunde stuetzten die Entscheidung: "100 x 100 km Raster" steht nur in
zwei Codekommentaren, nirgends im Fliesstext; und der didaktische Punkt der
Bildunterschrift - die sich kreuzenden Touren, die KEIN Fehler sind - wird auf
einer Karte deutlicher.
erzeuge_vrp_touren.py schreibt jetzt SVG UND Karte aus einem Lauf. Ein zweites
Skript haette erneut geloest, und die Routing-Bibliothek arbeitet heuristisch.
pruefe_projektion() bricht ab, wenn die Verzerrung 0,01 % ueberschreitet - die
Zahl im Buch wird bei jedem Lauf bewiesen.
Neu im Build: die Marke {karte:name}, aufgeloest zu einem <iframe> (Leaflets
Stylesheet soll nicht in die Buchseite greifen), im PDF zum Verweissatz - wie
bei {plotly:}. --check bewacht jetzt beide Markenarten auf Existenz der Datei;
gegengeprueft mit einer absichtlich falschen Marke.
Zwei Vorkehrungen, die ohne Messung nicht aufgefallen waeren:
* Folium vergibt jedem Element eine uuid4 - jeder Lauf erzeugte eine andere
Datei. normalisiere() ersetzt sie durch fortlaufende Nummern; zwei Laeufe
liefern jetzt dieselbe Pruefsumme.
* Folium bindet ZEHN CDN-Ressourcen ein (jQuery, Bootstrap, Glyphicons,
FontAwesome, awesome-markers ...). Gebraucht werden ZWEI. leaflet.js und
leaflet.css liegen jetzt in web_04/assets/, die uebrigen acht entfallen.
Nachgeprueft: Die Karte benutzt ausschliesslich L.*-Aufrufe. Ohne Netz
fehlen nur die Kacheln, Marker und Touren bleiben sichtbar.
Gegenrechnung an vier Strecken: Depot -> K1 misst auf der Karte 27,20 km, die
Distanzmatrix sagt 27 - die Differenz stammt aus deren int(), nicht aus der
Geographie.
Veroeffentlicht: 8 Dateien uebertragen, alle dreizehn HTTP-Proben richtig, die
Karte auf dem Server unter 200 erreichbar.
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 | ||
| extract_programme_04.py | ||
| 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: 8. September 2026