- HTML 55.6%
- Python 39.9%
- CSS 2.5%
- TeX 0.8%
- JavaScript 0.6%
- Other 0.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Setzt den umsetzbaren Teil von Paket 3 aus Verbesserungen_03.md um
(Vorher-Nachher-Wasserfall, Business Impact). Neuer Generator
bilder_04/erzeuge_wirkung.py; das Supply-Chain-Kapitel bekommt damit sein
erstes Diagramm ueberhaupt.
Der Anlass: Die Tabelle nannte nur die Summen - 874.870 EUR gegen
351.356 EUR, 149 % mehr. Wofuer genau, stand nirgends.
Der Generator rechnet die Instanz erneut, wie es die Konvention verlangt.
Die Probe fiel gut aus: Der unabhaengige Nachbau reproduziert beide
abgedruckten Summen exakt, dazu 178,7 MWh Fehlmenge und 28/40 Szenarien mit
Abwurf. Kein Auseinanderlaufen - der erste Generator dieser Reihe, der
nichts findet.
Was die Zerlegung zeigt und die Tabelle nicht: Die Anfahrkosten sind in
beiden Plaenen gleich (58.000 EUR). Der Erwartungswert-Plan spart also nicht
dort, wo man es vermuten wuerde. Er spart 12.725 EUR Brennstoff und bezahlt
dafuer 536.239 EUR Lastabwurf - das 42-fache. "149 % mehr" ist eine Zahl,
ueber die man streiten kann; "wir sparen 12.725 EUR und riskieren
536.239 EUR" ist eine, ueber die man entscheidet.
Die Trennung von Brennstoff- und Abwurfkosten ist der einzige Zusatz
gegenueber bewerte() im Buchprogramm; dort wird sie nicht gebraucht.
Ein eigener Fehler unterwegs: Ein .replace(",", ".") fuer deutsche
Tausenderpunkte lag auf dem ganzen Titelsatz und machte aus "Brennstoff,
Preis" ein "Brennstoff. Preis". Jetzt gibt es euro(), das nur auf Zahlen
angewandt wird.
SVG byteidentisch ueber zwei Laeufe. Diagramme jetzt 33, davon 19 mit
Generator (16 Skripte). PDF unveraendert 746 Seiten.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
||
| bilder_04 | ||
| Kritik_und_Verbesserungsvorschlaege | ||
| Notebooks_04 | ||
| Operations_Research_mit_Python_Version_04 | ||
| Operations_Research_mit_Python_Version_04_Programme | ||
| OR_HTML_04 | ||
| pandoc | ||
| .gitignore | ||
| CLAUDE.md | ||
| Operations_Research_mit_Python_Version_04.md | ||
| Operations_Research_mit_Python_Version_04.pdf | ||
| pandoc-defaults-basis.yaml | ||
| pandoc-defaults-buch.yaml | ||
| PLAN.md | ||
| PROGRESS.md | ||
| pyproject.toml | ||
| README.md | ||
Optimierte Entscheidungsfindung mit Python — Version 04
Quellen, Build-Werkzeuge und Ausgaben des Lehrbuchs Optimierte Entscheidungsfindung mit Python (Autor: Dieter Schlüter). Dieses Verzeichnis ist die Wurzel: Alle Skripte leiten ihre Pfade daraus ab, und alle Befehle unten werden hier ausgeführt.
Dies ist die Bau-Anleitung für das Repository. Der Wegweiser für Leserinnen und Leser des Buchs — Aufbau, Lernpfade, Voraussetzungen — steht in
Operations_Research_mit_Python_Version_04/README.md.
Was hier liegt
| Pfad | Rolle |
|---|---|
Operations_Research_mit_Python_Version_04/ |
Quelle: 31 Kapiteldateien + Build-Skripte |
bilder_04/ |
Quelle: Diagramme (SVG/PNG) + erzeuge_*.py-Generatoren |
Operations_Research_mit_Python_Version_04.md |
generiert: Gesamtdokument (Pandoc-Eingabe) |
Operations_Research_mit_Python_Version_04.pdf |
generiert: PDF, 746 Seiten |
OR_HTML_04/ |
generiert: Mehrseiten-Website — dieser Ordner wird veröffentlicht |
Operations_Research_mit_Python_Version_04_Programme/ |
generiert: 76 lauffähige Beispielprogramme |
Notebooks_04/ |
generiert: ein Jupyter-Notebook je Kapitel |
PLAN.md / PROGRESS.md |
das Ziel des Umbaus und der erreichte Stand |
pyproject.toml |
Abhängigkeiten in Gruppen (finance, large-scale, api, …) |
pandoc-defaults-*.yaml, pandoc/ |
Konfiguration des PDF-Baus |
Nur die als Quelle markierten Verzeichnisse werden von Hand bearbeitet. Alles andere wird erzeugt und bei jeder inhaltlichen Änderung neu gebaut — insbesondere gehören Programmänderungen in den Kapitel-Codeblock, nicht in das Programme-Verzeichnis.
Bauen
cd Version_04
# nur prüfen: Struktur, Querverweise, Codezäune, harte Nummern
python3 Operations_Research_mit_Python_Version_04/build_version_04.py --check
# Gesamtdokument, PDF und Website
python3 Operations_Research_mit_Python_Version_04/build_version_04.py --pdf --html
# Beispielprogramme aus den Kapiteln extrahieren
python3 Operations_Research_mit_Python_Version_04/extract_programme_04.py
Die Website ist danach in OR_HTML_04/ vollständig und selbstgenügsam — alle Verweise
zeigen auf Unterverzeichnisse (assets/, bilder_04/, katex/, Notebooks_04/). Der Ordner
lässt sich unverändert auf einen Webserver kopieren.
Voraussetzungen
Python-Pakete — alles auf einen Schlag, wie im Buch abgedruckt
(requirements.txt):
python3 -m venv .venv && source .venv/bin/activate
pip install -r Operations_Research_mit_Python_Version_04_Programme/requirements.txt
Wer eine schlanke Umgebung möchte, nimmt stattdessen pyproject.toml mit
seinen Gruppen — die Grundausstattung trägt den Großteil des Buchs:
pip install -e . # numpy, scipy, pandas, matplotlib, openpyxl, pydantic, ortools, cvxpy
pip install -e ".[finance]" # scikit-learn, yfinance
pip install -e ".[large-scale]" # highspy, Pyomo, linopy, polars
pip install -e ".[api]" # fastapi, uvicorn, httpx
pip install -e ".[figures]" # plotly, graphviz — nur zum Neuerzeugen der Diagramme
pip install -e ".[dev]" # pytest
ortools steht in der Grundausstattung, highspy erst in [large-scale]. Das ist
Absicht: Beide bringen eine eigene HiGHS-Kopie mit und vertragen sich nicht im selben
Prozess. Wer die Grundausstattung installiert, kann in den Konflikt gar nicht geraten —
cvxpy zieht highspy nicht nach, erkennt es aber, sobald [large-scale] es
mitgebracht hat.
graphviz fehlt in der requirements.txt — es wird allein von
bilder_04/erzeuge_architektur_diagramme.py gebraucht, nicht von den Beispielprogrammen,
und steht darum nur in [figures].
Externe Werkzeuge, je nachdem, was gebaut werden soll:
| Werkzeug | wofür | ohne es |
|---|---|---|
pandoc (≥ 3.0) |
PDF und Website | --pdf/--html scheitern; --check läuft |
xelatex + texindy |
kein PDF; Website unberührt | |
inkscape |
SVG-Grafiken im PDF | LaTeX bricht bei \includesvg ab |
dot (Graphviz) |
5 der 15 Bildgeneratoren | nur beim Neuerzeugen dieser Diagramme nötig |
OR_HTML_04/katex/ ist externes Material und wird von keinem Skript erzeugt. Fehlt es,
bleiben die Formeln auf der Website ungesetzt.
Zwei Werte, die beim Veröffentlichen zu setzen sind
COLAB_BASIS_URLinOperations_Research_mit_Python_Version_04/build_version_04.py. Sie trägt Kontoname und Repository-Name; die 25 Colab-Badges auf den Kapitelseiten hängen daran. Der PfadteilNotebooks_04/…wird relativ zur Repository-Wurzel aufgelöst und stimmt bereits. Ein Leerstring schaltet die Badges ab.- Nichts weiter. Alle übrigen Pfade sind relativ.
Warum die PDF-Konfiguration doppelt vorliegt
pandoc-defaults-basis.yaml ist eine Kopie der Benutzerdatei
~/.config/pandoc/defaults.yaml (Schriften, Geometrie, Seitenlayout) — mit relativem
Pfad auf pandoc/header-includes.tex statt des absoluten, der dort steht. Ohne diese Kopie
könnte ein frischer Klon kein PDF bauen. build_version_04.py bevorzugt sie und fällt auf
die Benutzerdatei zurück, falls sie fehlt.
pandoc-defaults-buch.yaml enthält die projektspezifischen Überschreibungen
(Inhaltsverzeichnis und Nummerierung werden im Markdown selbst erzeugt, -shell-escape für
\includesvg). Die eigentliche Buchtypografie steht in bilder_04/or_pdf_header.tex.
Verlauf
Version 04 baut das Werk vom Nachschlagewerk zum Kursbegleiter um; alle sechs Phasen sind
abgeschlossen. Was geplant war, steht in PLAN.md; was erreicht ist und woran
man das nachprüft, in PROGRESS.md — einschließlich der Funde unterwegs und
der Regeln, die sich daraus ergeben haben. Wer hier weiterarbeitet, liest beide zuerst.