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
129
README.md
Normal file
129
README.md
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
# 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**: 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, 715 Seiten |
|
||||
| `OR_HTML_04/` | generiert: **Mehrseiten-Website** — dieser Ordner wird veröffentlicht |
|
||||
| `Operations_Research_mit_Python_Version_04_Programme/` | generiert: 73 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
|
||||
pip install -e ".[finance]" # cvxpy, 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 nur `pip install -e .` nutzt, kann in den Konflikt gar nicht geraten; `cvxpy`
|
||||
aus `[finance]` zieht ein installiertes `highspy` bei der Solver-Erkennung selbst mit herein.
|
||||
|
||||
`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.
|
||||
Loading…
Reference in a new issue