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,89 @@
<?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)
-->
<!-- Pages: 1 -->
<svg width="581pt" height="301pt"
viewBox="0.00 0.00 581.00 301.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(4 296.63)">
<text xml:space="preserve" text-anchor="middle" x="286.68" y="-277.23" font-family="DejaVu Sans" font-size="12.00">Branch&#45;and&#45;Bound: 5 gelöste LPs statt aller ganzzahligen Punkte</text>
<text xml:space="preserve" text-anchor="middle" x="286.68" y="-262.98" font-family="DejaVu Sans" font-size="12.00">max 5x₁ + 4x₂ &#160;u.d.N. &#160;6x₁+4x₂ ≤ 24, &#160;x₁+2x₂ ≤ 6</text>
<!-- P₀ -->
<g id="node1" class="node">
<title>P₀</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M356.91,-256.13C356.91,-256.13 216.88,-256.13 216.88,-256.13 210.88,-256.13 204.88,-250.13 204.88,-244.13 204.88,-244.13 204.88,-216.92 204.88,-216.92 204.88,-210.92 210.88,-204.92 216.88,-204.92 216.88,-204.92 356.91,-204.92 356.91,-204.92 362.91,-204.92 368.91,-210.92 368.91,-216.92 368.91,-216.92 368.91,-244.13 368.91,-244.13 368.91,-250.13 362.91,-256.13 356.91,-256.13"/>
<text xml:space="preserve" text-anchor="middle" x="286.89" y="-240.15" font-family="DejaVu Sans" font-size="10.00">P₀</text>
<text xml:space="preserve" text-anchor="middle" x="286.89" y="-227.4" font-family="DejaVu Sans" font-size="10.00">x = (3; 1,5), Schranke Z ≤ 21</text>
<text xml:space="preserve" text-anchor="middle" x="286.89" y="-214.65" font-family="DejaVu Sans" font-size="10.00">x2 gebrochen — verzweigen</text>
</g>
<!-- A -->
<g id="node2" class="node">
<title>A</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M270.41,-153.67C270.41,-153.67 109.38,-153.67 109.38,-153.67 103.38,-153.67 97.37,-147.67 97.37,-141.67 97.37,-141.67 97.37,-114.46 97.37,-114.46 97.37,-108.46 103.37,-102.46 109.37,-102.46 109.37,-102.46 270.41,-102.46 270.41,-102.46 276.41,-102.46 282.41,-108.46 282.41,-114.46 282.41,-114.46 282.41,-141.67 282.41,-141.67 282.41,-147.67 276.41,-153.67 270.41,-153.67"/>
<text xml:space="preserve" text-anchor="middle" x="189.89" y="-137.69" font-family="DejaVu Sans" font-size="10.00">A</text>
<text xml:space="preserve" text-anchor="middle" x="189.89" y="-124.94" font-family="DejaVu Sans" font-size="10.00">x = (3,33; 1), Schranke Z ≤ 20,67</text>
<text xml:space="preserve" text-anchor="middle" x="189.89" y="-112.19" font-family="DejaVu Sans" font-size="10.00">x1 gebrochen — verzweigen</text>
</g>
<!-- P₀&#45;&gt;A -->
<g id="edge1" class="edge">
<title>P₀&#45;&gt;A</title>
<path fill="none" stroke="#5c6380" d="M262.42,-204.17C250.24,-191.56 235.36,-176.15 222.26,-162.58"/>
<polygon fill="#5c6380" stroke="#5c6380" points="224.88,-160.26 215.42,-155.5 219.84,-165.12 224.88,-160.26"/>
<text xml:space="preserve" text-anchor="middle" x="256.68" y="-176.37" font-family="DejaVu Sans" font-size="9.00">x2 ≤ 1</text>
</g>
<!-- B -->
<g id="node5" class="node">
<title>B</title>
<path fill="#fffbeb" stroke="#b45309" stroke-width="2" d="M439.41,-153.67C439.41,-153.67 326.38,-153.67 326.38,-153.67 320.38,-153.67 314.38,-147.67 314.38,-141.67 314.38,-141.67 314.38,-114.46 314.38,-114.46 314.38,-108.46 320.38,-102.46 326.38,-102.46 326.38,-102.46 439.41,-102.46 439.41,-102.46 445.41,-102.46 451.41,-108.46 451.41,-114.46 451.41,-114.46 451.41,-141.67 451.41,-141.67 451.41,-147.67 445.41,-153.67 439.41,-153.67"/>
<text xml:space="preserve" text-anchor="middle" x="382.89" y="-137.69" font-family="DejaVu Sans" font-size="10.00">B</text>
<text xml:space="preserve" text-anchor="middle" x="382.89" y="-124.94" font-family="DejaVu Sans" font-size="10.00">Z = 18 ≤ Incumbent 20</text>
<text xml:space="preserve" text-anchor="middle" x="382.89" y="-112.19" font-family="DejaVu Sans" font-size="10.00">→ gekappt</text>
</g>
<!-- P₀&#45;&gt;B -->
<g id="edge4" class="edge">
<title>P₀&#45;&gt;B</title>
<path fill="none" stroke="#5c6380" d="M311.12,-204.17C323.17,-191.56 337.9,-176.15 350.87,-162.58"/>
<polygon fill="#5c6380" stroke="#5c6380" points="353.25,-165.15 357.63,-155.5 348.19,-160.31 353.25,-165.15"/>
<text xml:space="preserve" text-anchor="middle" x="353.15" y="-176.37" font-family="DejaVu Sans" font-size="9.00">x2 ≥ 2</text>
</g>
<!-- A1 -->
<g id="node3" class="node">
<title>A1</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M161.79,-51.21C161.79,-51.21 12,-51.21 12,-51.21 6,-51.21 0,-45.21 0,-39.21 0,-39.21 0,-12 0,-12 0,-6 6,0 12,0 12,0 161.79,0 161.79,0 167.79,0 173.79,-6 173.79,-12 173.79,-12 173.79,-39.21 173.79,-39.21 173.79,-45.21 167.79,-51.21 161.79,-51.21"/>
<text xml:space="preserve" text-anchor="middle" x="86.89" y="-35.23" font-family="DejaVu Sans" font-size="10.00">A1</text>
<text xml:space="preserve" text-anchor="middle" x="86.89" y="-22.48" font-family="DejaVu Sans" font-size="10.00">x = (3; 1), Z = 19</text>
<text xml:space="preserve" text-anchor="middle" x="86.89" y="-9.73" font-family="DejaVu Sans" font-size="10.00">ganzzahlig — neuer Incumbent</text>
</g>
<!-- A&#45;&gt;A1 -->
<g id="edge2" class="edge">
<title>A&#45;&gt;A1</title>
<path fill="none" stroke="#5c6380" d="M163.9,-101.71C150.85,-88.98 134.87,-73.4 120.86,-59.74"/>
<polygon fill="#5c6380" stroke="#5c6380" points="123.56,-57.48 113.96,-53 118.68,-62.49 123.56,-57.48"/>
<text xml:space="preserve" text-anchor="middle" x="156.86" y="-73.91" font-family="DejaVu Sans" font-size="9.00">x1 ≤ 3</text>
</g>
<!-- A2 -->
<g id="node4" class="node">
<title>A2</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M367.79,-51.21C367.79,-51.21 218,-51.21 218,-51.21 212,-51.21 206,-45.21 206,-39.21 206,-39.21 206,-12 206,-12 206,-6 212,0 218,0 218,0 367.79,0 367.79,0 373.79,0 379.79,-6 379.79,-12 379.79,-12 379.79,-39.21 379.79,-39.21 379.79,-45.21 373.79,-51.21 367.79,-51.21"/>
<text xml:space="preserve" text-anchor="middle" x="292.89" y="-35.23" font-family="DejaVu Sans" font-size="10.00">A2</text>
<text xml:space="preserve" text-anchor="middle" x="292.89" y="-22.48" font-family="DejaVu Sans" font-size="10.00">x = (4; 0), Z = 20</text>
<text xml:space="preserve" text-anchor="middle" x="292.89" y="-9.73" font-family="DejaVu Sans" font-size="10.00">ganzzahlig — neuer Incumbent</text>
</g>
<!-- A&#45;&gt;A2 -->
<g id="edge3" class="edge">
<title>A&#45;&gt;A2</title>
<path fill="none" stroke="#5c6380" d="M215.89,-101.71C228.94,-88.98 244.92,-73.4 258.93,-59.74"/>
<polygon fill="#5c6380" stroke="#5c6380" points="261.11,-62.49 265.83,-53 256.23,-57.48 261.11,-62.49"/>
<text xml:space="preserve" text-anchor="middle" x="259.86" y="-73.91" font-family="DejaVu Sans" font-size="9.00">x1 ≥ 4</text>
</g>
<!-- ergebnis -->
<g id="node6" class="node">
<title>ergebnis</title>
<polygon fill="#f8fafc" stroke="#94a3b8" points="567.36,-248.53 400.44,-248.53 400.44,-212.53 573.36,-212.53 573.36,-242.53 567.36,-248.53"/>
<polyline fill="none" stroke="#94a3b8" points="567.36,-248.53 567.36,-242.53"/>
<polyline fill="none" stroke="#94a3b8" points="573.36,-242.53 567.36,-242.53"/>
<text xml:space="preserve" text-anchor="middle" x="486.89" y="-227.4" font-family="DejaVu Sans" font-size="10.00">Optimum: x* = (4; 0), Z* = 20</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB