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 > d o c u m e n t . a d d E v e n t L i s t e n e r ( " D O M C o n t e n t L o a d e d " , f u n c t i o n ( ) {
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 >
2026-09-08 19:24:54 +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 >
Glossar von 92 auf 234 Eintraege
Auftrag: alle Markdown-Dateien lesen, jeden Fachbegriff, jede Abkuerzung, jeden
Algorithmus- und Bibliotheksnamen extrahieren, das Glossar vollstaendig neu
aufsetzen.
Die Begriffsliste wurde geerntet, nicht erfunden. Grundlage sind die 219
{idx:}-Marken des Buchs - die bereits kuratierte Begriffsliste des Autors. 92
davon hatten einen Glossareintrag, 143 nicht. Dazu Abkuerzungen und
Bibliotheken aus dem Fliesstext ohne Indexmarke: GIL, GLOP, MIQP, MSE, MAPE,
DTO, Solver-Status, NumPy, SciPy, pandas, scikit-learn, yfinance, pydantic,
pymoo, Matplotlib, Plotly.
Auch die Querverweise sind gemessen: Fuer jeden Indexbegriff wurde die erste
Fundstelle bestimmt und daraus der umgebende {#sec:}-Abschnitt abgeleitet.
Damit steht am Ende jedes Eintrags ein {ref:}, das der Build zur richtigen
Nummer aufloest - eine harte "siehe Kapitel 5" haette gegen die Grundregel des
Projekts verstossen.
Zwei Funde beim Gegenpruefen:
* 23 Eintraege haetten auf sich selbst verwiesen. Ihr Begriff ist im ganzen
Buch nur im Glossar mit {idx:} markiert - die "erste Fundstelle" war also
diese Datei. Im PDF stand dann "-> Anhang E" mitten in Anhang E.
* Die erste Fundstelle ist nicht immer die erklaerende. "Schattenpreis"
landete beim LP-Schnellstart statt beim Abschnitt ueber Dualitaet. Fuer alle
92 Altbestandseintraege gelten jetzt die von Hand gesetzten Ziele der
Vorgaengerfassung; der Erzeuger bricht ab, wenn ein Verweis ins Glossar
selbst zeigt.
Zwei Formatfragen entschied die Probe am echten Build:
* "## A" als Buchstabengruppe funktioniert und wird NICHT nummeriert -
ABSCHNITT_RE verlangt ein {#sec:}-Label, das hier fehlt.
* Pandoc-Definitionslisten ueberleben den Bau nicht: reflow_markdown() zieht
die ":"-Fortsetzungszeile in den Begriffsabsatz, der Doppelpunkt bleibt
sichtbar stehen. Die Absatzform rendert sauber in HTML und PDF.
Der Beleg, dass die Schreibweisen stimmen: Das Stichwortregister waechst von
219 auf 220 Hauptbegriffe - genau ein neuer Begriff (Solver-Status). Alle
uebrigen 218 Indexmarken trafen buchstabengetreu auf bestehende Eintraege.
Nebenbei: Die 25 Buchstabenueberschriften waeren als 25 Treffer in den
Suchindex geraten und bei jedem eingetippten Buchstaben oben gestanden.
_erfasse_suchindex() ueberspringt jetzt einbuchstabige Ueberschriften; der
Index bleibt bei 631 Eintraegen.
PDF von 759 auf 772 Seiten. Veroeffentlicht: 4 Dateien uebertragen, alle
dreizehn HTTP-Proben richtig, 234 Eintraege auf dem Server gegengeprueft.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 21:17:20 +02:00
< h1 > Stichwortverzeichnis< / h1 > < p > 220 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-glossar.html#anhang-glossar" > Anhang E: Glossar< / a > , < 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 = "anhang-glossar.html#anhang-glossar" > Anhang E: Glossar< / a > , < 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-glossar.html#anhang-glossar" > Anhang E: Glossar< / a > , < 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.html#anhang-glossar" > Anhang E: Glossar< / 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.html#anhang-glossar" > Anhang E: Glossar< / a > < / div > < div class = "register-eintrag" > < span class = "register-begriff" > Approximate Dynamic Programming< / span > — < a href = "anhang-glossar.html#anhang-glossar" > Anhang E: Glossar< / a > , < 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-glossar.html#anhang-glossar" > Anhang E: Glossar< / a > , < 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.html#anhang-glossar" > Anhang E: Glossar< / 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 = "anhang-glossar.html#anhang-glossar" > Anhang E: Glossar< / a > , < 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 cla
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 >