operations_research/OR_HTML_04/stichwortverzeichnis.html

116 lines
82 KiB
HTML
Raw Normal View History

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
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stichwortverzeichnis · Optimierte Entscheidungsfindung mit Python</title>
<script>
(function () {
try {
var t = localStorage.getItem("or-theme");
if (t) document.documentElement.setAttribute("data-theme", t);
} catch (e) {}
})();
</script>
<link rel="stylesheet" href="assets/highlight.css" />
<link rel="stylesheet" href="katex/katex.min.css" />
<script defer="" src="katex/katex.min.js"></script>
<script>document.addEventListener("DOMContentLoaded", function () {
var mathElements = document.getElementsByClassName("math");
var macros = [];
for (var i = 0; i < mathElements.length; i++) {
var texText = mathElements[i].firstChild;
if (mathElements[i].tagName == "SPAN") {
katex.render(texText.data, mathElements[i], {
displayMode: mathElements[i].classList.contains('display'),
throwOnError: false,
macros: macros,
fleqn: false
});
}}
// Der Browser springt zu einem #anker in der URL schon beim ersten Rendern
// an, BEVOR die KaTeX-Formeln oben im Text ihre finale Hoehe bekommen -
// durch den Reflow landet der Anker danach zu weit unten. Nach dem
// Formel-Rendering hier erneut zum Anker springen, das behebt es.
if (location.hash) {
var ziel = document.getElementById(decodeURIComponent(location.hash.slice(1)));
if (ziel) ziel.scrollIntoView({behavior: "instant", block: "start"});
}
});
</script>
<link rel="stylesheet" href="assets/site.css" />
</head>
<body>
<svg style="display:none" aria-hidden="true"><symbol id="icon-menu" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
<line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="21" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/>
</symbol>
<symbol id="icon-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
<circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.2" y2="16.2"/>
</symbol>
<symbol id="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
<circle cx="12" cy="12" r="4.5"/>
<line x1="12" y1="1.5" x2="12" y2="4"/><line x1="12" y1="20" x2="12" y2="22.5"/>
<line x1="1.5" y1="12" x2="4" y2="12"/><line x1="20" y1="12" x2="22.5" y2="12"/>
<line x1="4.5" y1="4.5" x2="6.2" y2="6.2"/><line x1="17.8" y1="17.8" x2="19.5" y2="19.5"/>
<line x1="19.5" y1="4.5" x2="17.8" y2="6.2"/><line x1="6.2" y1="17.8" x2="4.5" y2="19.5"/>
</symbol>
<symbol id="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M20 14.5A8.5 8.5 0 1 1 9.5 4a6.8 6.8 0 0 0 10.5 10.5z"/>
</symbol>
<symbol id="icon-chevron-left" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="15 4 7 12 15 20"/>
</symbol>
<symbol id="icon-chevron-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="9 4 17 12 9 20"/>
</symbol>
<symbol id="icon-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="4 13 9.5 18.5 20 6"/>
</symbol>
<symbol id="icon-external-link" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M18 13.5V19a1.5 1.5 0 0 1-1.5 1.5H5A1.5 1.5 0 0 1 3.5 19V7A1.5 1.5 0 0 1 5 5.5h5.5"/>
<polyline points="14.5 3.5 20.5 3.5 20.5 9.5"/><line x1="11" y1="13" x2="20" y2="4"/>
</symbol>
<symbol id="icon-book" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M4 5.5A2 2 0 0 1 6 4h6v16H6a2 2 0 0 0-2 1.5z"/>
<path d="M20 5.5A2 2 0 0 0 18 4h-6v16h6a2 2 0 0 1 2 1.5z"/>
</symbol>
<symbol id="icon-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>
</symbol>
<symbol id="icon-download" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 3v12"/><polyline points="7 10 12 15 17 10"/><path d="M4 19.5h16"/>
</symbol></svg>
<header class="site-header">
<button type="button" class="icon-btn" id="sidebar-toggle" aria-label="Menü öffnen"><svg class="icon" aria-hidden="true"><use href="#icon-menu"></use></svg></button>
<a class="brand" href="index.html"><svg class="icon" aria-hidden="true"><use href="#icon-book"></use></svg> <span>Optimierte Entscheidungsfindung mit Python</span></a>
<div class="site-search">
<input id="suche-eingabe" type="search" placeholder="Suchen …" aria-label="Suche" autocomplete="off" />
<svg class="icon such-icon" aria-hidden="true"><use href="#icon-search"></use></svg>
<div id="suche-ergebnisse" class="suche-ergebnisse" hidden></div>
</div>
<button type="button" class="icon-btn" id="theme-toggle" aria-label="Darstellung umschalten">
<svg class="icon icon-sun" aria-hidden="true"><use href="#icon-sun"></use></svg><svg class="icon icon-moon" aria-hidden="true"><use href="#icon-moon"></use></svg>
</button>
</header>
<div class="site-body">
<div class="sidebar-overlay" id="sidebar-overlay" hidden></div>
Notebook-Uebersichtsseite - das fehlende Gegenstueck zu programme.html Der 403 auf /OR/Notebooks_04/ hatte eine andere Ursache als vermutet: Beim Eintragen der Website-Adresse ins README hatte ich in der Lesen-Tabelle das VERZEICHNIS verlinkt. Keine Seite der Website tut das - die Kapitelseiten zeigen direkt auf Notebooks_04/<name>.ipynb, und das funktioniert. Der Webserver verweigert Directory-Listing, zu Recht. Die Frage "gibt es so etwas nicht schon?" war aber berechtigt und hat die eigentliche Luecke sichtbar gemacht: baue_programme_seite() erzeugt seit jeher programme.html, eine gestaltete Uebersicht der 76 Programme. Fuer die 25 Notebooks gab es kein Gegenstueck - sie wurden ausgeliefert, aber keine Seite listete sie. Neu ist baue_notebooks_seite(), nach demselben Muster und mit denselben Bausteinen: die Zuordnung Seite -> Notebook kommt fertig aus baue_notebooks(), Rahmen und Navigation aus baue_seiten_schablone() und baue_sidebar_html(). Gruppiert nach Vorspann, Kapiteln und Anhaengen; der einleitende Absatz nennt die drei Wege, ein Notebook auszufuehren. Dazu ein ZIP mit allen 25 Notebooks (208 KB), byteidentisch ueber zwei Laeufe. Ein ZIP speichert je Eintrag die Aenderungszeit; ohne festen Wert entstuende bei jedem Bau eine andere Datei, und da OR_HTML_04/ versioniert ist, wuechse das Repository bei jedem Lauf. Die Eintraege werden deshalb sortiert und mit ZipInfo(date_time=(1980,1,1,0,0,0)) geschrieben - dieselbe Sorgfalt wie svg.hashsalt bei den Diagrammen. Gegen kuenftige 403 schreiben spiegle_notebooks() und baue_programme_seite() je eine dreizeilige index.html mit meta refresh in ihr Downloadverzeichnis. Das behebt zugleich denselben latenten Fall bei programme/. Ein eigener Fehler, zum zweiten Mal derselbe: Das .replace(",", ".") fuer deutsche Tausenderpunkte hing am Ende eines mehrzeiligen f-Strings - und in Python bindet die Methode an die GESAMTE zusammengesetzte Zeichenkette. Aus "Drei Wege, sie auszufuehren" wurde "Drei Wege. sie auszufuehren". Exakt der Fehler, vor dem ich in erzeuge_wirkung.py selbst einen Kommentar hinterlassen hatte. Die Zahl wird jetzt getrennt formatiert. Geprueft: 25 gelistete Notebooks, 0 tote Links auf der Seite, ZIP mit 25 Eintraegen und identischen Zeitstempeln, Seitenleisteneintrag auf allen 40 Seiten mit Seitenleiste, --check fehlerfrei, PDF unveraendert 759 Seiten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 15:20:06 +02:00
<nav class="sidebar" id="sidebar" aria-label="Kapitelnavigation"><div class="sidebar-inhalt"><details class="sidebar-gruppe"><summary>Einstieg</summary><ul><li data-kapitel="vorwort.html"><a href="vorwort.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Vorwort & Lesehilfe</span></a></li><li data-kapitel="notation.html"><a href="notation.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Notation & Abkürzungen</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil I: Grundlagen des Operations Research</summary><ul><li data-kapitel="einfuehrung.html"><a href="einfuehrung.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 1: Einführung in Operations Research — Vom Ursprung zur mathematischen Entscheidungsfindung</span></a></li><li data-kapitel="fundament.html"><a href="fundament.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 2: Das mathematische Fundament — Vektoren, Matrizen, Konvexität</span></a></li><li data-kapitel="oekosystem.html"><a href="oekosystem.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 3: Das Python-Ökosystem für OR — Solver, Bindings und Modellierungsschichten</span></a></li><li data-kapitel="modellierung.html"><a href="modellierung.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 4: Vom Management-Wunsch zum Modell</span></a></li><li data-kapitel="synthese-grundlagen.html"><a href="synthese-grundlagen.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Synthese Teil I</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil II: Die Kernverfahren der deterministischen Optimierung</summary><ul><li data-kapitel="lp.html"><a href="lp.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 5: Lineare Programmierung — Simplex, Dualität und Schattenpreise</span></a></li><li data-kapitel="milp.html"><a href="milp.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 6: Gemischt-ganzzahlige Optimierung — Diskrete Entscheidungen und Branch-and-Bound</span></a></li><li data-kapitel="cpsat.html"><a href="cpsat.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 7: Constraint Programming mit CP-SAT — Logik, Scheduling und Zuweisung</span></a></li><li data-kapitel="graphen.html"><a href="graphen.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 8: Graphen, Flüsse und Touren — Min-Cost-Flow, Matching und VRP</span></a></li><li data-kapitel="metaheuristiken.html"><a href="metaheuristiken.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 9: Metaheuristiken — wenn der exakte Solver aussteigt</span></a></li><li data-kapitel="dekomposition.html"><a href="dekomposition.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Kapitel 10: Spaltengenerierung — das Modell umbauen statt die Lösung raten</span></a></li><li data-kapitel="synthese-kernverfahren.html"><a href="synthese-kernverfahren.html"><span class="fortschritt-haken"><svg class="icon" aria-hidden="true"><use href="#icon-check"></use></svg></span><span>Synthese Teil II</span></a></li></ul></details><details class="sidebar-gruppe"><summary>Teil III: Nichtlinearität, Unsicherheit und mehrperiodige D
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
<main class="content">
<nav class="prev-next"><span class="prev-next-leer"></span><span class="prev-next-leer"></span></nav>
<article>
Notebook-Uebersichtsseite - das fehlende Gegenstueck zu programme.html Der 403 auf /OR/Notebooks_04/ hatte eine andere Ursache als vermutet: Beim Eintragen der Website-Adresse ins README hatte ich in der Lesen-Tabelle das VERZEICHNIS verlinkt. Keine Seite der Website tut das - die Kapitelseiten zeigen direkt auf Notebooks_04/<name>.ipynb, und das funktioniert. Der Webserver verweigert Directory-Listing, zu Recht. Die Frage "gibt es so etwas nicht schon?" war aber berechtigt und hat die eigentliche Luecke sichtbar gemacht: baue_programme_seite() erzeugt seit jeher programme.html, eine gestaltete Uebersicht der 76 Programme. Fuer die 25 Notebooks gab es kein Gegenstueck - sie wurden ausgeliefert, aber keine Seite listete sie. Neu ist baue_notebooks_seite(), nach demselben Muster und mit denselben Bausteinen: die Zuordnung Seite -> Notebook kommt fertig aus baue_notebooks(), Rahmen und Navigation aus baue_seiten_schablone() und baue_sidebar_html(). Gruppiert nach Vorspann, Kapiteln und Anhaengen; der einleitende Absatz nennt die drei Wege, ein Notebook auszufuehren. Dazu ein ZIP mit allen 25 Notebooks (208 KB), byteidentisch ueber zwei Laeufe. Ein ZIP speichert je Eintrag die Aenderungszeit; ohne festen Wert entstuende bei jedem Bau eine andere Datei, und da OR_HTML_04/ versioniert ist, wuechse das Repository bei jedem Lauf. Die Eintraege werden deshalb sortiert und mit ZipInfo(date_time=(1980,1,1,0,0,0)) geschrieben - dieselbe Sorgfalt wie svg.hashsalt bei den Diagrammen. Gegen kuenftige 403 schreiben spiegle_notebooks() und baue_programme_seite() je eine dreizeilige index.html mit meta refresh in ihr Downloadverzeichnis. Das behebt zugleich denselben latenten Fall bei programme/. Ein eigener Fehler, zum zweiten Mal derselbe: Das .replace(",", ".") fuer deutsche Tausenderpunkte hing am Ende eines mehrzeiligen f-Strings - und in Python bindet die Methode an die GESAMTE zusammengesetzte Zeichenkette. Aus "Drei Wege, sie auszufuehren" wurde "Drei Wege. sie auszufuehren". Exakt der Fehler, vor dem ich in erzeuge_wirkung.py selbst einen Kommentar hinterlassen hatte. Die Zahl wird jetzt getrennt formatiert. Geprueft: 25 gelistete Notebooks, 0 tote Links auf der Seite, ZIP mit 25 Eintraegen und identischen Zeitstempeln, Seitenleisteneintrag auf allen 40 Seiten mit Seitenleiste, --check fehlerfrei, PDF unveraendert 759 Seiten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 15:20:06 +02:00
<h1>Stichwortverzeichnis</h1><p>219 Fachbegriffe. Ein Klick führt zum jeweiligen Kapitel/Abschnitt (statt einer im Web bedeutungslosen Seitenzahl wie im gedruckten Register).</p><nav class="register-sprungleiste"><a href="#buchstabe-A">A</a> <a href="#buchstabe-B">B</a> <a href="#buchstabe-C">C</a> <a href="#buchstabe-D">D</a> <a href="#buchstabe-E">E</a> <a href="#buchstabe-F">F</a> <a href="#buchstabe-G">G</a> <a href="#buchstabe-H">H</a> <a href="#buchstabe-I">I</a> <a href="#buchstabe-J">J</a> <a href="#buchstabe-K">K</a> <a href="#buchstabe-L">L</a> <a href="#buchstabe-M">M</a> <a href="#buchstabe-N">N</a> <a href="#buchstabe-O">O</a> <a href="#buchstabe-P">P</a> <a href="#buchstabe-Q">Q</a> <a href="#buchstabe-R">R</a> <a href="#buchstabe-S">S</a> <a href="#buchstabe-T">T</a> <a href="#buchstabe-U">U</a> <a href="#buchstabe-V">V</a> <a href="#buchstabe-W">W</a> <a href="#buchstabe-Z">Z</a></nav><h2 class="register-buchstabe" id="buchstabe-A">A</h2><div class="register-eintrag"><span class="register-begriff">Absolutbetrag (Modellierungsmuster)</span><a href="anhang-modellierungsmuster.html#anhang-modellierungsmuster">Anhang B: Katalog der Modellierungsmuster</a></div><div class="register-eintrag"><span class="register-begriff">Adjusted Close</span><a href="finanzdaten.html#sec:finanzdaten-diskrete-und-logarithmische-renditen">Kapitel 18: Finanzdaten-Modellierung — Renditen, Kovarianz und Shrinkage</a></div><div class="register-eintrag"><span class="register-begriff">Aktivierungsschalter (Modellierungsmuster)</span><a href="anhang-modellierungsmuster.html#anhang-modellierungsmuster">Anhang B: Katalog der Modellierungsmuster</a></div><div class="register-eintrag"><span class="register-begriff">Almgren-Chriss-Modell</span><a href="anhang-glossar-literatur.html#anhang-glossar-literatur">Anhang E: Glossar und Literatur</a>, <a href="dynamische-programmierung.html#sec:dynamische-programmierung-das-almgren-chriss-problem-optimale-orderausfuehrung">Kapitel 13: Dynamische Programmierung — Die Bellman-Gleichung und Order-Execution</a></div><div class="register-eintrag"><span class="register-begriff">Alternativoptima</span><a href="anhang-glossar-literatur.html#anhang-glossar-literatur">Anhang E: Glossar und Literatur</a></div><div class="register-eintrag"><span class="register-begriff">Approximate Dynamic Programming</span><a href="praxisfallen.html#sec:praxisfallen-weiterfuehrende-literatur-und-roadmap">Kapitel 22: Praxisfallen und der Weg zum produktiven Einsatz</a></div><h2 class="register-buchstabe" id="buchstabe-B">B</h2><div class="register-eintrag"><span class="register-begriff">Bedingte Kopplung (Konjunktion)</span><a href="anhang-modellierungsmuster.html#anhang-modellierungsmuster">Anhang B: Katalog der Modellierungsmuster</a></div><div class="register-eintrag"><span class="register-begriff">Bellman, Richard</span><a href="dynamische-programmierung.html#sec:dynamische-programmierung-das-bellmansche-optimalitaetsprinzip">Kapitel 13: Dynamische Programmierung — Die Bellman-Gleichung und Order-Execution</a></div><div class="register-eintrag"><span class="register-begriff">Bellman-Gleichung</span><a href="anhang-glossar-literatur.html#anhang-glossar-literatur">Anhang E: Glossar und Literatur</a>, <a href="dynamische-programmierung.html#sec:dynamische-programmierung-der-fluch-der-dimensionalitaet">Kapitel 13: Dynamische Programmierung — Die Bellman-Gleichung und Order-Execution</a></div><div class="register-eintrag"><span class="register-begriff">Benders-Zerlegung</span><a href="praxisfallen.html#sec:praxisfallen-weiterfuehrende-literatur-und-roadmap">Kapitel 22: Praxisfallen und der Weg zum produktiven Einsatz</a></div><div class="register-eintrag"><span class="register-begriff">Big-M-Methode</span><a href="anhang-glossar-literatur.html#anhang-glossar-literatur">Anhang E: Glossar und Literatur</a>, <a href="milp.html#sec:milp-modellierungstricks-big-m-und-logische-bedingungen">Kapitel 6: Gemischt-ganzzahlige Optimierung — Diskrete Entscheidungen und B
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
</article>
<nav class="prev-next"><span class="prev-next-leer"></span><span class="prev-next-leer"></span></nav>
</main>
</div>
<footer class="site-footer">
<p>© Dieter Schlüter · <a href="gesamtdokument.html">Gesamtdokument</a> ·
<a href="programme.html">Beispielprogramme</a></p>
</footer>
<script defer src="assets/search-index.js"></script>
<script defer src="assets/programme.js"></script>
<script defer src="assets/site.js"></script>
</body>
</html>