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:
dschlueter 2026-09-08 01:20:09 +02:00
commit b7af2f1d9a
468 changed files with 262141 additions and 0 deletions

View file

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.1.2 (20260126.1125)
-->
<!-- Title: d05 Pages: 1 -->
<svg width="456pt" height="317pt"
viewBox="7.00 7.00 449.00 310.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(11.2 305.51)">
<title>d05</title>
<!-- modell -->
<g id="node1" class="node">
<title>modell</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M346.17,-294.31C346.17,-294.31 87.75,-294.31 87.75,-294.31 81.75,-294.31 75.75,-288.31 75.75,-282.31 75.75,-282.31 75.75,-242.03 75.75,-242.03 75.75,-236.03 81.75,-230.03 87.75,-230.03 87.75,-230.03 346.17,-230.03 346.17,-230.03 352.17,-230.03 358.17,-236.03 358.17,-242.03 358.17,-242.03 358.17,-282.31 358.17,-282.31 358.17,-288.31 352.17,-294.31 346.17,-294.31"/>
<text xml:space="preserve" text-anchor="start" x="88.71" y="-274.32" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">PYTHON&#45;MODELLIERUNGSSCHICHT</text>
<text xml:space="preserve" text-anchor="start" x="88.71" y="-250.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">scipy.optimize.linprog · Google OR&#45;Tools</text>
<text xml:space="preserve" text-anchor="start" x="88.71" y="-240.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">CVXPY · Pyomo / PuLP</text>
</g>
<!-- engines -->
<g id="node2" class="node">
<title>engines</title>
<polygon fill="#0891b2" stroke="none" points="12.96,-130.14 12.96,-164.64 420.96,-164.64 420.96,-130.14 12.96,-130.14"/>
<polygon fill="none" stroke="#0891b2" points="12.96,-130.14 12.96,-164.64 420.96,-164.64 420.96,-130.14 12.96,-130.14"/>
<text xml:space="preserve" text-anchor="start" x="118.34" y="-144.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">SOLVER&#45;ENGINES (C / C++)</text>
<polygon fill="#ecfeff" stroke="none" points="12.96,-98.64 12.96,-130.14 161.46,-130.14 161.46,-98.64 12.96,-98.64"/>
<polygon fill="none" stroke="#0891b2" points="12.96,-98.64 12.96,-130.14 161.46,-130.14 161.46,-98.64 12.96,-98.64"/>
<text xml:space="preserve" text-anchor="start" x="47.46" y="-111.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#0891b2">LP · MIP · QP</text>
<polygon fill="#ecfeff" stroke="none" points="161.46,-98.64 161.46,-130.14 292.71,-130.14 292.71,-98.64 161.46,-98.64"/>
<polygon fill="none" stroke="#0891b2" points="161.46,-98.64 161.46,-130.14 292.71,-130.14 292.71,-98.64 161.46,-98.64"/>
<text xml:space="preserve" text-anchor="start" x="177.21" y="-111.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#0891b2">Constraint · SAT</text>
<polygon fill="#ecfeff" stroke="none" points="292.71,-98.64 292.71,-130.14 420.96,-130.14 420.96,-98.64 292.71,-98.64"/>
<polygon fill="none" stroke="#0891b2" points="292.71,-98.64 292.71,-130.14 420.96,-130.14 420.96,-98.64 292.71,-98.64"/>
<text xml:space="preserve" text-anchor="start" x="301.71" y="-111.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#0891b2">Konvex · QP · NLP</text>
<polygon fill="#ffffff" stroke="none" points="12.96,-53.64 12.96,-98.64 161.46,-98.64 161.46,-53.64 12.96,-53.64"/>
<polygon fill="none" stroke="#0891b2" points="12.96,-53.64 12.96,-98.64 161.46,-98.64 161.46,-53.64 12.96,-53.64"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-79.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">HiGHS</text>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-65.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">(Open Source / Default)</text>
<polygon fill="#ffffff" stroke="none" points="161.46,-53.64 161.46,-98.64 292.71,-98.64 292.71,-53.64 161.46,-53.64"/>
<polygon fill="none" stroke="#0891b2" points="161.46,-53.64 161.46,-98.64 292.71,-98.64 292.71,-53.64 161.46,-53.64"/>
<text xml:space="preserve" text-anchor="start" x="170.46" y="-79.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">CP&#45;SAT</text>
<text xml:space="preserve" text-anchor="start" x="170.46" y="-65.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">(Kombinatorik / SAT)</text>
<polygon fill="#ffffff" stroke="none" points="292.71,-53.64 292.71,-98.64 420.96,-98.64 420.96,-53.64 292.71,-53.64"/>
<polygon fill="none" stroke="#0891b2" points="292.71,-53.64 292.71,-98.64 420.96,-98.64 420.96,-53.64 292.71,-53.64"/>
<text xml:space="preserve" text-anchor="start" x="312.96" y="-79.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">OSQP / Clarabel</text>
<text xml:space="preserve" text-anchor="start" x="318.59" y="-65.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">(Konvex / QP)</text>
<polygon fill="#ffffff" stroke="none" points="12.96,-8.64 12.96,-53.64 161.46,-53.64 161.46,-8.64 12.96,-8.64"/>
<polygon fill="none" stroke="#0891b2" points="12.96,-8.64 12.96,-53.64 161.46,-53.64 161.46,-8.64 12.96,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-34.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">Gurobi / CPLEX / Xpress</text>
<text xml:space="preserve" text-anchor="start" x="48.96" y="-20.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">(Kommerziell)</text>
<polygon fill="#ffffff" stroke="none" points="161.46,-8.64 161.46,-53.64 292.71,-53.64 292.71,-8.64 161.46,-8.64"/>
<polygon fill="none" stroke="#0891b2" points="161.46,-8.64 161.46,-53.64 292.71,-53.64 292.71,-8.64 161.46,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="176.84" y="-34.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">SCIP / CBC / GLPK</text>
<text xml:space="preserve" text-anchor="start" x="176.84" y="-20.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">(OSS akademisch)</text>
<polygon fill="#ffffff" stroke="none" points="292.71,-8.64 292.71,-53.64 420.96,-53.64 420.96,-8.64 292.71,-8.64"/>
<polygon fill="none" stroke="#0891b2" points="292.71,-8.64 292.71,-53.64 420.96,-53.64 420.96,-8.64 292.71,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="307.34" y="-34.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">IPOPT</text>
<text xml:space="preserve" text-anchor="start" x="307.34" y="-20.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">(NLP / nichtlinear)</text>
</g>
<!-- modell&#45;&gt;engines -->
<g id="edge1" class="edge">
<title>modell&#45;&gt;engines</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M216.96,-229.34C216.96,-216.51 216.96,-200.95 216.96,-184.91"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="220.11,-185.2 216.96,-176.2 213.81,-185.2 220.11,-185.2"/>
<text xml:space="preserve" text-anchor="middle" x="282.96" y="-198.53" font-family="DejaVu Sans" font-size="10.00" fill="#334155"> &#160;C&#45;API / FFI / Matrix&#45;Export</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB