Setzt Paket 5 aus Verbesserungen_02.md um (den Teil, der nicht zurueckgestellt wurde). Fuenf neue Dateien 19_/29_/39_/49_/52_Synthese_*.md, je eine am Ende eines Teils, mit eigener Website-Seite ueber SONDERSEITEN - sie tragen bewusst keine "# Kapitel:"-Ueberschrift, weil sie keine Kapitel sind, sondern der Rueckblick auf einen Teil. Der Entwurf musste sich abgrenzen: Die Teil-Einleitungen haben bereits Entscheidungsdiagramme. Eine zweite Matrix am Teil-Ende waere eine Dopplung gewesen. Die Synthesen leisten deshalb, was eine Einleitung nicht kann - den Vergleich ueber die Kapitel hinweg (Verfahren nebeneinander, mit der Spalte "wo es aufhoert"), eine Tabelle "was dieser Teil gemessen hat" (Behauptung gegen Messung gegen Fundstelle) und drei Fehler, die der Teil verhindert. Zitiert wird ausschliesslich, was im Buch tatsaechlich gerechnet wird. Drei Funde beim Einbau: * Teil III sagte "die drei Kapitel dieses Teils", hat aber fuenf. Phase 3 hatte Mehrziel und Predict-then-Optimize hinzugefuegt, die Einleitung blieb stehen. * 50_Praxis.md verwies auf die Projektwerkstatt mit "acht eigene Anwendungen" - sie hat elf. * Und der eigentliche Fund: Die Lesekette der Quelldateien fuehrte an ACHT Kapiteln vorbei. 12_Python_Oekosystem zeigte direkt auf 20_Lineare_Programmierung, 23_Graphen direkt auf 30_QP, 32_Dynamische direkt auf 40_Finanzdaten, 50_Praxis direkt auf die Projektwerkstatt. Wer der Kette folgte, uebersprang acht von 23 Kapiteln - darunter Metaheuristiken, Spaltengenerierung, Strukturbruecke, Supply-Chain und das ganze Testing-Kapitel. Zehn weitere Dateien hatten gar keine Navigationszeile. Zur Reichweite, damit sie nicht ueberschaetzt wird: Diese Zeilen stehen nur in den Quelldateien. entferne_navigation() streicht sie aus dem Gesamtdokument, und die Website baut ihre Vor/Zurueck-Knoepfe selbst aus DATEIEN. PDF und Website waren nie betroffen - wohl aber jeder, der die Markdown-Dateien im Repository liest, und das wird nach der Veroeffentlichung der Normalfall sein. Die Kette ist jetzt ueber alle 35 Uebergaenge geschlossen, und --check bewacht sie: Fehlt eine Zeile oder zeigt sie an der in DATEIEN folgenden Datei vorbei, ist der Lauf rot. Gegengetestet mit beiden Bruchformen. Stand: 36 Dateien, 296 Abschnitte, 815 Querverweise, 328 Indexmarken, 76 Programme (unveraendert), 33 pytest-Tests, PDF 758 Seiten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
130 lines
5.9 KiB
Markdown
130 lines
5.9 KiB
Markdown
# 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`](Operations_Research_mit_Python_Version_04/README.md).
|
|
|
|
---
|
|
|
|
## Was hier liegt
|
|
|
|
| Pfad | Rolle |
|
|
| --- | --- |
|
|
| `Operations_Research_mit_Python_Version_04/` | **Quelle**: 36 Kapiteldateien (inkl. 5 Teil-Synthesen) + 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, 758 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
|
|
|
|
```bash
|
|
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`](Operations_Research_mit_Python_Version_04_Programme/requirements.txt)):
|
|
|
|
```bash
|
|
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`](pyproject.toml) mit
|
|
seinen Gruppen — die Grundausstattung trägt den Großteil des Buchs:
|
|
|
|
```bash
|
|
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` | PDF | 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
|
|
|
|
1. **`COLAB_BASIS_URL`** in `Operations_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 Pfadteil `Notebooks_04/…` wird relativ zur Repository-Wurzel aufgelöst und
|
|
stimmt bereits. Ein Leerstring schaltet die Badges ab.
|
|
2. 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`](PLAN.md); was erreicht ist und woran
|
|
man das nachprüft, in [`PROGRESS.md`](PROGRESS.md)** — einschließlich der Funde unterwegs und
|
|
der Regeln, die sich daraus ergeben haben. Wer hier weiterarbeitet, liest beide zuerst.
|