operations_research/Kritik_und_Verbesserungsvorschlaege/Verbesserungen_02.md
dschlueter b7af2f1d9a 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>
2026-09-08 01:20:09 +02:00

5.2 KiB

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.