60 lines
5.2 KiB
Markdown
60 lines
5.2 KiB
Markdown
|
|
### 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.
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|