Version 04 als eigenes Repository
Erster Commit des Strangs "Optimierte Entscheidungsfindung mit Python" (Version 04). Die Historie der 71 Commits bis zur Trennung bleibt im uebergeordneten Repository OR_mit_Python liegen, das ab jetzt nur noch Version_03 (eingefroren) verwaltet und Version_04/ ignoriert. Bewusst kein "git subtree split": Der Pfad Version_04/ existiert erst seit der Verzeichnistrennung, ein Split braechte daher nur 7 der 41 einschlaegigen Commits - eine Teilhistorie, die vollstaendig aussieht und es nicht ist. Stand: 5 Teile, 23 Kapitel, 5 Anhaenge, 292 Abschnitte, 703 Querverweise, 325 Indexmarken, 73 Beispielprogramme, 32 SVGs, 4 Plotly-Figuren, 25 Notebooks, PDF mit 715 Seiten. Zusaetzlich in diesem Commit: * pyproject.toml mit Abhaengigkeitsgruppen finance, large-scale, api, figures, dev, empfehlungen. Die abgedruckte requirements.txt bleibt unveraendert daneben bestehen. ortools steht in der Grundausstattung, highspy erst in [large-scale] - so kann der HiGHS-Symbolkonflikt bei der schlanken Installation gar nicht erst auftreten. * Dabei zwei Funde: graphviz wird von erzeuge_architektur_diagramme.py importiert, fehlt aber in requirements.txt (jetzt in [figures]); pymoo steht in requirements.txt, wird aber von keinem Programm importiert, sondern nur im Kapitel Metaheuristiken empfohlen (jetzt in [empfehlungen]). * NEUER_TITEL.md nach Kritik_und_Verbesserungsvorschlaege/ verschoben - es ist die Vorlage des Titelblatts, kein Bestandteil des Werks. Die beiden Fundstellen in PROGRESS.md und erzeuge_titelseite.py nachgezogen. * PROGRESS.md nannte noch den Untertitel der ersten Fassung; auf den tatsaechlichen aus erzeuge_titelseite.py korrigiert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
commit
b7af2f1d9a
468 changed files with 262141 additions and 0 deletions
60
Kritik_und_Verbesserungsvorschlaege/Verbesserungen_02.md
Normal file
60
Kritik_und_Verbesserungsvorschlaege/Verbesserungen_02.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
### Rolle und Ziel
|
||||
Du bist ein erfahrener Fachlektor, Senior Operations Research Scientist und Principal Systems Architect für High-Performance Analytics. Überarbeite und perfektioniere das Kompendium **„Optimierte Entscheidungsfindung mit Python“ (Version 04)** von Dieter Schlüter.
|
||||
|
||||
Das Werk hat mit Version 04 bereits ein herausragendes didaktisches Niveau erreicht. Ziel dieser nächsten Revision ist es, die letzten verbliebenen Hürden in **Software-Architektur, Packaging, Skalierung auf Multithreading/HPC, Explainable Optimization und Visualisierung** zu beseitigen.
|
||||
|
||||
Setze die folgenden präzisen Arbeitspakete vollständig um:
|
||||
|
||||
---
|
||||
|
||||
### 1. Bereinigung des C++-Symbolkonflikts und modernes Packaging
|
||||
* **Das Problem:** Derzeit crasht die gemeinsame Verwendung von `ortools` und `highspy` im selben Prozess durch doppelte HiGHS-Symbolauflösungen im dynamic linker, was im Buch über umständliche `subprocess`-Wrapper gelöst wird.
|
||||
* **Maßnahme:**
|
||||
* Implementiere im Setup- und Architektur-Teil ein sauberes, produktionsreifes Isolationskonzept: Zeige auf, wie ein solches Multi-Solver-Setup über **Multiprocessing mit `ProcessPoolExecutor` / IPC** oder über modulare Worker-Architekturen gelöst wird, ohne auf instabile `subprocess.run([sys.executable, "-c", ...])`-Strings zurückzugreifen.
|
||||
* Baue für das Buch ein begleitendes `pyproject.toml` (unter Verwendung von `uv` oder `poetry`) mit optionalen Dependency-Gruppen (`extras = ["finance", "large-scale", "api"]`), damit Kursteilnehmer schlanke, isolierte Umgebungen ohne überflüssigen Overhead aufsetzen können.
|
||||
* Erstelle ein offizielles, mehrstufiges `Dockerfile` (Multi-Stage Build), das die Solver sauber kompiliert bzw. bindet und ein reproduzierbares Kurs-Image bereitstellt.
|
||||
|
||||
---
|
||||
|
||||
### 2. Multi-Core, Parallelisierung und Solver-Ressourcenmanagement
|
||||
* **Das Problem:** In Version 04 wird Parallelität nur am Rande bei Benchmarks berührt; viele Beispiele laufen standardmäßig auf einem Core.
|
||||
* **Maßnahme:**
|
||||
* Ergänze in Kapitel 6 (MILP) und Kapitel 7 (CP-SAT) einen dedizierten Abschnitt über **Multi-Threading und deterministische Suche**:
|
||||
* Wie nutzt man `num_workers` in CP-SAT und HiGHS optimal aus?
|
||||
* Was bedeutet Nicht-Determinismus bei paralleler Branch-and-Bound-Suche (Race Conditions bei Incumbents) und wie erzwingt man reproduzierbare Runs für Tests?
|
||||
* Zeige in Kapitel 23 auf, wie man parallele Modellläufe (z. B. Szenarienanalysen in Monte-Carlo oder Hyperparameter-Tuning in Metaheuristiken) speichereffizient über `joblib` oder `ray` verteilt, ohne das Python-GIL zum Flaschenhals zu machen.
|
||||
|
||||
---
|
||||
|
||||
### 3. Explainable AI / Explainable Optimization (X-OR) für Entscheider
|
||||
* **Das Problem:** Wenn das Modell eine Lösung ausgibt, fragen Fachabteilungen und Betriebsräte: *„Warum genau diese Zuweisung und nicht jene?“* Schattenpreise beantworten das nur lokal bei LPs.
|
||||
* **Maßnahme:**
|
||||
* Erweitere Kapitel 4 („Vom Wunsch zum Modell“) und Kapitel 22 („Praxisfallen“) um Methoden der **Erklärbaren Optimierung**:
|
||||
* **Automatisierte Was-wäre-wenn-Analysen (Counterfactual Explanations):** Wie viel schlechter wird der Zielfunktionswert, wenn man eine vom Disponenten gewünschte manuelle Zuweisung fest erzwingt?
|
||||
* **Constraint Attribution:** Ein System, das visualisiert, welche 3 Nebenbedingungen die größten Opportunitätskosten (Erlöseinbußen) verursachen.
|
||||
* **Generierung natürlicher Sprachberichte:** Zeige, wie man aus den Dualwerten und Slack-Variablen automatisiert textuelle Zusammenfassungen für das Management formuliert (z. B.: *„Plan B kostet 4.200 € mehr, weil die gesetzliche Ruhezeit von Mitarbeiter X die günstigere Schicht blockiert.“*).
|
||||
|
||||
---
|
||||
|
||||
|
||||
### 4. Stochastik & Unsicherheit: Chance-Constrained Programming
|
||||
* **Das Problem:** Kapitel 12 behandelt Monte-Carlo, zweistufige stochastische Programmierung und Worst-Case-Robustheit. In der Industrie verlangt das Management jedoch fast immer Wahrscheinlichkeitszusagen („Mit 95 % Sicherheit darf der Tank nicht leerlaufen“).
|
||||
* **Maßnahme:**
|
||||
* Ergänze in Kapitel 12 einen Abschnitt zu **Wahrscheinlichkeitsbeschränkungen (Chance Constraints / Probabilistic Constraints)**:
|
||||
* Zeige, wie Bedingungen der Form $P(a^\top x \le b) \ge 1 - \alpha$ unter Normalverteilungsannahmen in deterministische Second-Order Cone Constraints (SOCP via CVXPY) umgeformt werden.
|
||||
* Zeige die szenariobasierte Alternative (Big-M mit Binärvariablen für Ausfall-Szenarien) für beliebige, empirische Verteilungen.
|
||||
|
||||
---
|
||||
|
||||
### 5. Didaktisches Redigieren: Kognitive Entlastung und modulare Leseführung
|
||||
* **Das Problem:** Bei über 700 Seiten droht das Buch neue Kursteilnehmer trotz Lernpfaden zu erschlagen.
|
||||
* **Maßnahme:**
|
||||
* Führe ein klares visuelles Farbleitsystem (Callout-Typen) ein:
|
||||
* `[Muss für alle]` (Kernkonzepte und Code).
|
||||
* `[Nur für Entwickler]` (NumPy-Vektorisierung, CSR-Format, Profiling).
|
||||
* `[Nur für Management/Planer]` (Kennzahleninterpretation, Zielkonflikte, Heuristiken).
|
||||
* Ergänze am Ende von Teil I bis IV jeweils eine **„Synthese-Doppelseite“**, die die Kernideen auf einen Blick zusammenfasst (Mindmap + Entscheidungsmatrix), damit Kursteilnehmer vor den Übungen rekapitulieren können, ohne zurückblättern zu müssen.
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in a new issue