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

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View file

@ -0,0 +1,48 @@
<?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: d01 Pages: 1 -->
<svg width="507pt" height="87pt"
viewBox="7.00 7.00 500.00 79.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 75.48)">
<title>d01</title>
<!-- desk -->
<g id="node1" class="node">
<title>desk</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M117.42,-64.28C117.42,-64.28 12,-64.28 12,-64.28 6,-64.28 0,-58.28 0,-52.28 0,-52.28 0,-12 0,-12 0,-6 6,0 12,0 12,0 117.42,0 117.42,0 123.42,0 129.42,-6 129.42,-12 129.42,-12 129.42,-52.28 129.42,-52.28 129.42,-58.28 123.42,-64.28 117.42,-64.28"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-44.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">DESKRIPTIV</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Business Intelligence</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">„Was ist passiert?“</text>
</g>
<!-- pred -->
<g id="node2" class="node">
<title>pred</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M300.34,-64.28C300.34,-64.28 184.42,-64.28 184.42,-64.28 178.42,-64.28 172.42,-58.28 172.42,-52.28 172.42,-52.28 172.42,-12 172.42,-12 172.42,-6 178.42,0 184.42,0 184.42,0 300.34,0 300.34,0 306.34,0 312.34,-6 312.34,-12 312.34,-12 312.34,-52.28 312.34,-52.28 312.34,-58.28 306.34,-64.28 300.34,-64.28"/>
<text xml:space="preserve" text-anchor="start" x="203.75" y="-44.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">PRÄDIKTIV</text>
<text xml:space="preserve" text-anchor="start" x="185.38" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Data Science / ML</text>
<text xml:space="preserve" text-anchor="start" x="185.38" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">„Was wird geschehen?“</text>
</g>
<!-- desk&#45;&gt;pred -->
<g id="edge1" class="edge">
<title>desk&#45;&gt;pred</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M130.13,-32.14C139.73,-32.14 149.74,-32.14 159.65,-32.14"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="159.62,-35.29 168.62,-32.14 159.62,-28.99 159.62,-35.29"/>
</g>
<!-- pres -->
<g id="node3" class="node">
<title>pres</title>
<path fill="#7c3aed" stroke="#7c3aed" stroke-width="2" d="M472.76,-64.28C472.76,-64.28 367.34,-64.28 367.34,-64.28 361.34,-64.28 355.34,-58.28 355.34,-52.28 355.34,-52.28 355.34,-12 355.34,-12 355.34,-6 361.34,0 367.34,0 367.34,0 472.76,0 472.76,0 478.76,0 484.76,-6 484.76,-12 484.76,-12 484.76,-52.28 484.76,-52.28 484.76,-58.28 478.76,-64.28 472.76,-64.28"/>
<text xml:space="preserve" text-anchor="start" x="372.42" y="-44.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">PRÄSKRIPTIV</text>
<text xml:space="preserve" text-anchor="start" x="368.3" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">Operations Research</text>
<text xml:space="preserve" text-anchor="start" x="368.3" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">„Was sollen wir tun?“</text>
</g>
<!-- pred&#45;&gt;pres -->
<g id="edge2" class="edge">
<title>pred&#45;&gt;pres</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M313.31,-32.14C322.97,-32.14 332.93,-32.14 342.7,-32.14"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="342.46,-35.29 351.46,-32.14 342.46,-28.99 342.46,-35.29"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View file

@ -0,0 +1,58 @@
<?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: d02 Pages: 1 -->
<svg width="447pt" height="271pt"
viewBox="7.00 7.00 439.00 264.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 260.04)">
<title>d02</title>
<!-- param -->
<g id="node1" class="node">
<title>param</title>
<path fill="#fffbeb" stroke="#d97706" stroke-width="2" d="M292.54,-248.84C292.54,-248.84 128.62,-248.84 128.62,-248.84 122.62,-248.84 116.62,-242.84 116.62,-236.84 116.62,-236.84 116.62,-206.56 116.62,-206.56 116.62,-200.56 122.62,-194.56 128.62,-194.56 128.62,-194.56 292.54,-194.56 292.54,-194.56 298.54,-194.56 304.54,-200.56 304.54,-206.56 304.54,-206.56 304.54,-236.84 304.54,-236.84 304.54,-242.84 298.54,-248.84 292.54,-248.84"/>
<text xml:space="preserve" text-anchor="start" x="167.08" y="-228.85" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#d97706">PARAMETER</text>
<text xml:space="preserve" text-anchor="start" x="129.58" y="-204.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Konstanten, Daten, Preise, Limits</text>
</g>
<!-- var -->
<g id="node2" class="node">
<title>var</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M314.29,-151.56C314.29,-151.56 106.88,-151.56 106.88,-151.56 100.88,-151.56 94.88,-145.56 94.88,-139.56 94.88,-139.56 94.88,-109.28 94.88,-109.28 94.88,-103.28 100.88,-97.28 106.88,-97.28 106.88,-97.28 314.29,-97.28 314.29,-97.28 320.29,-97.28 326.29,-103.28 326.29,-109.28 326.29,-109.28 326.29,-139.56 326.29,-139.56 326.29,-145.56 320.29,-151.56 314.29,-151.56"/>
<text xml:space="preserve" text-anchor="start" x="107.83" y="-131.57" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">ENTSCHEIDUNGSVARIABLEN</text>
<text xml:space="preserve" text-anchor="start" x="107.83" y="-107.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">x₁, x₂, …, xₙ : Was wird gesteuert?</text>
</g>
<!-- param&#45;&gt;var -->
<g id="edge1" class="edge">
<title>param&#45;&gt;var</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M210.58,-193.65C210.58,-184.6 210.58,-174.32 210.58,-164.53"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="213.74,-164.56 210.59,-155.56 207.44,-164.56 213.74,-164.56"/>
</g>
<!-- ziel -->
<g id="node3" class="node">
<title>ziel</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M181.17,-54.28C181.17,-54.28 12,-54.28 12,-54.28 6,-54.28 0,-48.28 0,-42.28 0,-42.28 0,-12 0,-12 0,-6 6,0 12,0 12,0 181.17,0 181.17,0 187.17,0 193.17,-6 193.17,-12 193.17,-12 193.17,-42.28 193.17,-42.28 193.17,-48.28 187.17,-54.28 181.17,-54.28"/>
<text xml:space="preserve" text-anchor="start" x="42.58" y="-34.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#059669">ZIELFUNKTION</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Minimiere Kosten / Maximiere ROI</text>
</g>
<!-- var&#45;&gt;ziel -->
<g id="edge2" class="edge">
<title>var&#45;&gt;ziel</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M178.22,-96.37C165.71,-85.91 151.23,-73.81 137.97,-62.73"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="140.28,-60.55 131.35,-57.2 136.24,-65.39 140.28,-60.55"/>
</g>
<!-- neben -->
<g id="node4" class="node">
<title>neben</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M412.17,-54.28C412.17,-54.28 237,-54.28 237,-54.28 231,-54.28 225,-48.28 225,-42.28 225,-42.28 225,-12 225,-12 225,-6 231,0 237,0 237,0 412.17,0 412.17,0 418.17,0 424.17,-6 424.17,-12 424.17,-12 424.17,-42.28 424.17,-42.28 424.17,-48.28 418.17,-54.28 412.17,-54.28"/>
<text xml:space="preserve" text-anchor="start" x="245.46" y="-34.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">NEBENBEDINGUNGEN</text>
<text xml:space="preserve" text-anchor="start" x="237.96" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Harte Schranken: Budget, Kapazität</text>
</g>
<!-- var&#45;&gt;neben -->
<g id="edge3" class="edge">
<title>var&#45;&gt;neben</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M242.95,-96.37C255.46,-85.91 269.94,-73.81 283.2,-62.73"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="284.93,-65.39 289.82,-57.2 280.89,-60.55 284.93,-65.39"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View file

@ -0,0 +1,40 @@
<?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: d22 Pages: 1 -->
<svg width="359pt" height="248pt"
viewBox="7.00 7.00 352.00 241.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 236.51)">
<title>d22</title>
<!-- primal -->
<g id="node1" class="node">
<title>primal</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M302.3,-225.31C302.3,-225.31 34.12,-225.31 34.12,-225.31 28.12,-225.31 22.12,-219.31 22.12,-213.31 22.12,-213.31 22.12,-153.03 22.12,-153.03 22.12,-147.03 28.12,-141.03 34.12,-141.03 34.12,-141.03 302.3,-141.03 302.3,-141.03 308.3,-141.03 314.3,-147.03 314.3,-153.03 314.3,-153.03 314.3,-213.31 314.3,-213.31 314.3,-219.31 308.3,-225.31 302.3,-225.31"/>
<text xml:space="preserve" text-anchor="start" x="35.09" y="-205.32" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">PRIMALES PROBLEM &#160;(Unternehmer)</text>
<text xml:space="preserve" text-anchor="start" x="35.09" y="-181.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Maximiere Gewinn aus Produkten</text>
<text xml:space="preserve" text-anchor="start" x="35.09" y="-171.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Zielfunktion: &#160;&#160;max &#160;cᵀx</text>
<text xml:space="preserve" text-anchor="start" x="35.09" y="-161.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Restriktionen: &#160;A x ≤ b</text>
<text xml:space="preserve" text-anchor="start" x="35.09" y="-151.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Variablen: &#160;x ≥ 0 &#160;(Produktionsmengen)</text>
</g>
<!-- dual -->
<g id="node2" class="node">
<title>dual</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M324.42,-84.28C324.42,-84.28 12,-84.28 12,-84.28 6,-84.28 0,-78.28 0,-72.28 0,-72.28 0,-12 0,-12 0,-6 6,0 12,0 12,0 324.42,0 324.42,0 330.42,0 336.42,-6 336.42,-12 336.42,-12 336.42,-72.28 336.42,-72.28 336.42,-78.28 330.42,-84.28 324.42,-84.28"/>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-64.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">DUALES PROBLEM &#160;(Ressourcen&#45;Bewerter)</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-40.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Minimiere Bewertung der Ressourcen</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-30.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Zielfunktion: &#160;&#160;min &#160;bᵀy</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Restriktionen: &#160;Aᵀy ≥ c</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Variablen: &#160;y ≥ 0 &#160;(Schattenpreise)</text>
</g>
<!-- primal&#45;&gt;dual -->
<g id="edge1" class="edge">
<title>primal&#45;&gt;dual</title>
<path fill="none" stroke="#7c3aed" stroke-width="2.4" d="M168.21,-127.45C168.21,-117.65 168.21,-107.44 168.21,-97.65"/>
<polygon fill="#7c3aed" stroke="#7c3aed" stroke-width="2.4" points="165.06,-127.45 168.21,-136.45 171.36,-127.45 165.06,-127.45"/>
<polygon fill="#7c3aed" stroke="#7c3aed" stroke-width="2.4" points="171.36,-97.72 168.21,-88.72 165.06,-97.72 171.36,-97.72"/>
<text xml:space="preserve" text-anchor="middle" x="193.71" y="-109.53" font-family="DejaVu Sans" font-size="10.00" fill="#7c3aed"> &#160;Dualität &#160;</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View file

@ -0,0 +1,50 @@
<?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: d09 Pages: 1 -->
<svg width="393pt" height="321pt"
viewBox="7.00 7.00 386.00 314.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 310.04)">
<title>d09</title>
<!-- store -->
<g id="node1" class="node">
<title>store</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M290.3,-298.84C290.3,-298.84 80.63,-298.84 80.63,-298.84 74.63,-298.84 68.63,-292.84 68.63,-286.84 68.63,-286.84 68.63,-246.56 68.63,-246.56 68.63,-240.56 74.63,-234.56 80.63,-234.56 80.63,-234.56 290.3,-234.56 290.3,-234.56 296.3,-234.56 302.3,-240.56 302.3,-246.56 302.3,-246.56 302.3,-286.84 302.3,-286.84 302.3,-292.84 296.3,-298.84 290.3,-298.84"/>
<text xml:space="preserve" text-anchor="start" x="111.96" y="-278.85" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">CONSTRAINT STORE</text>
<text xml:space="preserve" text-anchor="start" x="81.59" y="-254.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Domain x₁ ∈ {1, 2, 3, 4}, &#160;x₂ ∈ {2, 3, 4, 5}</text>
<text xml:space="preserve" text-anchor="start" x="81.59" y="-244.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Constraint: x₁ + x₂ = 7</text>
</g>
<!-- prop -->
<g id="node2" class="node">
<title>prop</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M331.92,-191.56C331.92,-191.56 39,-191.56 39,-191.56 33,-191.56 27,-185.56 27,-179.56 27,-179.56 27,-129.28 27,-129.28 27,-123.28 33,-117.28 39,-117.28 39,-117.28 331.92,-117.28 331.92,-117.28 337.92,-117.28 343.92,-123.28 343.92,-129.28 343.92,-129.28 343.92,-179.56 343.92,-179.56 343.92,-185.56 337.92,-191.56 331.92,-191.56"/>
<text xml:space="preserve" text-anchor="start" x="39.96" y="-171.57" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">CONSTRAINT PROPAGATION &#160;(Filterung)</text>
<text xml:space="preserve" text-anchor="start" x="39.96" y="-147.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">• x₁ = 1 ⇒ x₂ = 6 &#160;(nicht in Domain!)</text>
<text xml:space="preserve" text-anchor="start" x="39.96" y="-137.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e"> &#160;⟶ entferne 1 aus Domain(x₁)</text>
<text xml:space="preserve" text-anchor="start" x="39.96" y="-127.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">• Reduziert: x₁ ∈ {2, 3, 4}, x₂ ∈ {3, 4, 5}</text>
</g>
<!-- store&#45;&gt;prop -->
<g id="edge1" class="edge">
<title>store&#45;&gt;prop</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M185.46,-233.8C185.46,-224.58 185.46,-214.29 185.46,-204.28"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="188.61,-204.33 185.46,-195.33 182.31,-204.33 188.61,-204.33"/>
</g>
<!-- sat -->
<g id="node3" class="node">
<title>sat</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M358.92,-74.28C358.92,-74.28 12,-74.28 12,-74.28 6,-74.28 0,-68.28 0,-62.28 0,-62.28 0,-12 0,-12 0,-6 6,0 12,0 12,0 358.92,0 358.92,0 364.92,0 370.92,-6 370.92,-12 370.92,-12 370.92,-62.28 370.92,-62.28 370.92,-68.28 364.92,-74.28 358.92,-74.28"/>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-54.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#7c3aed">SAT&#45;SEARCH &amp; CONFLICT LEARNING &#160;(Nogoods)</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-30.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">• Bei Widerspruch lernt der SAT&#45;Core eine Klausel</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e"> &#160;(„diese Belegung nie wieder prüfen“)</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">• Non&#45;chronological Backtracking</text>
</g>
<!-- prop&#45;&gt;sat -->
<g id="edge2" class="edge">
<title>prop&#45;&gt;sat</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M185.46,-116.31C185.46,-106.95 185.46,-96.76 185.46,-86.92"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="188.61,-87.21 185.46,-78.21 182.31,-87.21 188.61,-87.21"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View file

@ -0,0 +1,45 @@
<?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: d13 Pages: 1 -->
<svg width="568pt" height="178pt"
viewBox="7.00 7.00 561.00 170.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 166.48)">
<title>d13</title>
<!-- t -->
<g id="node1" class="node">
<title>t</title>
<polygon fill="#7c3aed" stroke="none" points="12.96,-112.14 12.96,-146.64 532.71,-146.64 532.71,-112.14 12.96,-112.14"/>
<polygon fill="none" stroke="#7c3aed" points="12.96,-112.14 12.96,-146.64 532.71,-146.64 532.71,-112.14 12.96,-112.14"/>
<text xml:space="preserve" text-anchor="start" x="132.96" y="-126.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">ANSÄTZE FÜR UNBEKANNTE ZUKUNFT</text>
<polygon fill="#eef2ff" stroke="none" points="12.96,-80.64 12.96,-112.14 168.21,-112.14 168.21,-80.64 12.96,-80.64"/>
<polygon fill="none" stroke="#7c3aed" points="12.96,-80.64 12.96,-112.14 168.21,-112.14 168.21,-80.64 12.96,-80.64"/>
<text xml:space="preserve" text-anchor="start" x="46.33" y="-93.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#4338ca">MONTE CARLO</text>
<polygon fill="#ecfeff" stroke="none" points="168.21,-80.64 168.21,-112.14 366.96,-112.14 366.96,-80.64 168.21,-80.64"/>
<polygon fill="none" stroke="#7c3aed" points="168.21,-80.64 168.21,-112.14 366.96,-112.14 366.96,-80.64 168.21,-80.64"/>
<text xml:space="preserve" text-anchor="start" x="177.21" y="-93.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#0891b2">STOCHASTISCHES RECOURSE</text>
<polygon fill="#ecfdf5" stroke="none" points="366.96,-80.64 366.96,-112.14 532.71,-112.14 532.71,-80.64 366.96,-80.64"/>
<polygon fill="none" stroke="#7c3aed" points="366.96,-80.64 366.96,-112.14 532.71,-112.14 532.71,-80.64 366.96,-80.64"/>
<text xml:space="preserve" text-anchor="start" x="375.96" y="-93.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#059669">ROBUSTE OPTIMIERUNG</text>
<polygon fill="#ffffff" stroke="none" points="12.96,-8.64 12.96,-80.64 168.21,-80.64 168.21,-8.64 12.96,-8.64"/>
<polygon fill="none" stroke="#7c3aed" points="12.96,-8.64 12.96,-80.64 168.21,-80.64 168.21,-8.64 12.96,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-61.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Simuliert Szenarien</text>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-47.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Misst Verlustverteilung</text>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-34.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Reine Evaluierung,</text>
<text xml:space="preserve" text-anchor="start" x="36.21" y="-20.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e"> &#160;keine Optimierung</text>
<polygon fill="#ffffff" stroke="none" points="168.21,-8.64 168.21,-80.64 366.96,-80.64 366.96,-8.64 168.21,-8.64"/>
<polygon fill="none" stroke="#7c3aed" points="168.21,-8.64 168.21,-80.64 366.96,-80.64 366.96,-8.64 168.21,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="177.21" y="-61.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Entscheidet Stufe 1</text>
<text xml:space="preserve" text-anchor="start" x="177.21" y="-47.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Passt in Stufe 2 an</text>
<text xml:space="preserve" text-anchor="start" x="177.21" y="-34.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Optimiert Erwartungswert</text>
<text xml:space="preserve" text-anchor="start" x="197.46" y="-20.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e"> &#160;über alle Szenarien</text>
<polygon fill="#ffffff" stroke="none" points="366.96,-8.64 366.96,-80.64 532.71,-80.64 532.71,-8.64 366.96,-8.64"/>
<polygon fill="none" stroke="#7c3aed" points="366.96,-8.64 366.96,-80.64 532.71,-80.64 532.71,-8.64 366.96,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="375.96" y="-61.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Sucht den Worst&#45;Case</text>
<text xml:space="preserve" text-anchor="start" x="375.96" y="-47.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">• Keine Verteilungs&#45;</text>
<text xml:space="preserve" text-anchor="start" x="396.96" y="-34.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e"> &#160;annahme nötig</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View file

@ -0,0 +1,61 @@
<?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: d14 Pages: 1 -->
<svg width="543pt" height="97pt"
viewBox="7.00 7.00 536.00 89.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 85.48)">
<title>d14</title>
<!-- S0 -->
<g id="node1" class="node">
<title>S0</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M92.67,-74.28C92.67,-74.28 12,-74.28 12,-74.28 6,-74.28 0,-68.28 0,-62.28 0,-62.28 0,-12 0,-12 0,-6 6,0 12,0 12,0 92.67,0 92.67,0 98.67,0 104.67,-6 104.67,-12 104.67,-12 104.67,-62.28 104.67,-62.28 104.67,-68.28 98.67,-74.28 92.67,-74.28"/>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-54.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">Zustand S₀</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-30.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">t = 0</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Aktion a₀</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Kosten C₀</text>
</g>
<!-- S1 -->
<g id="node2" class="node">
<title>S1</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M240.34,-74.28C240.34,-74.28 159.67,-74.28 159.67,-74.28 153.67,-74.28 147.67,-68.28 147.67,-62.28 147.67,-62.28 147.67,-12 147.67,-12 147.67,-6 153.67,0 159.67,0 159.67,0 240.34,0 240.34,0 246.34,0 252.34,-6 252.34,-12 252.34,-12 252.34,-62.28 252.34,-62.28 252.34,-68.28 246.34,-74.28 240.34,-74.28"/>
<text xml:space="preserve" text-anchor="start" x="160.63" y="-54.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">Zustand S₁</text>
<text xml:space="preserve" text-anchor="start" x="160.63" y="-30.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">t = 1</text>
<text xml:space="preserve" text-anchor="start" x="160.63" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Aktion a₁</text>
<text xml:space="preserve" text-anchor="start" x="160.63" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Kosten C₁</text>
</g>
<!-- S0&#45;&gt;S1 -->
<g id="edge1" class="edge">
<title>S0&#45;&gt;S1</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M105.51,-37.14C115.03,-37.14 125.06,-37.14 134.88,-37.14"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="134.67,-40.29 143.67,-37.14 134.67,-33.99 134.67,-40.29"/>
</g>
<!-- dots -->
<g id="node3" class="node">
<title>dots</title>
<text xml:space="preserve" text-anchor="middle" x="322.34" y="-30.14" font-family="DejaVu Sans" font-size="20.00" fill="#334155"></text>
</g>
<!-- S1&#45;&gt;dots -->
<g id="edge2" class="edge">
<title>S1&#45;&gt;dots</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M253.09,-37.14C263.45,-37.14 274.13,-37.14 283.89,-37.14"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="283.62,-40.29 292.62,-37.14 283.62,-33.99 283.62,-40.29"/>
</g>
<!-- ST -->
<g id="node4" class="node">
<title>ST</title>
<path fill="#059669" stroke="#059669" stroke-width="2" d="M509.01,-69.28C509.01,-69.28 404.34,-69.28 404.34,-69.28 398.34,-69.28 392.34,-63.28 392.34,-57.28 392.34,-57.28 392.34,-17 392.34,-17 392.34,-11 398.34,-5 404.34,-5 404.34,-5 509.01,-5 509.01,-5 515.01,-5 521.01,-11 521.01,-17 521.01,-17 521.01,-57.28 521.01,-57.28 521.01,-63.28 515.01,-69.28 509.01,-69.28"/>
<text xml:space="preserve" text-anchor="start" x="405.3" y="-49.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">Endzustand Sₜ</text>
<text xml:space="preserve" text-anchor="start" x="405.3" y="-25.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">t = T</text>
<text xml:space="preserve" text-anchor="start" x="405.3" y="-15.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">alles verkauft</text>
</g>
<!-- dots&#45;&gt;ST -->
<g id="edge3" class="edge">
<title>dots&#45;&gt;ST</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M349.17,-37.14C358.12,-37.14 368.66,-37.14 379.57,-37.14"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="379.47,-40.29 388.47,-37.14 379.47,-33.99 379.47,-40.29"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View file

@ -0,0 +1,61 @@
<?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: d15 Pages: 1 -->
<svg width="425pt" height="301pt"
viewBox="7.00 7.00 417.00 294.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 290.04)">
<title>d15</title>
<!-- S0 -->
<g id="node1" class="node">
<title>S0</title>
<path fill="#fff1f3" stroke="#e11d48" stroke-width="2" d="M302.29,-278.84C302.29,-278.84 88.88,-278.84 88.88,-278.84 82.88,-278.84 76.87,-272.84 76.87,-266.84 76.87,-266.84 76.87,-206.56 76.87,-206.56 76.87,-200.56 82.87,-194.56 88.87,-194.56 88.87,-194.56 302.29,-194.56 302.29,-194.56 308.29,-194.56 314.29,-200.56 314.29,-206.56 314.29,-206.56 314.29,-266.84 314.29,-266.84 314.29,-272.84 308.29,-278.84 302.29,-278.84"/>
<text xml:space="preserve" text-anchor="start" x="89.83" y="-258.85" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#e11d48">STICHPROBEN&#45;KOVARIANZ &#160;S</text>
<text xml:space="preserve" text-anchor="start" x="89.83" y="-234.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">• T &lt; N: singulär (Rang &lt; N)</text>
<text xml:space="preserve" text-anchor="start" x="89.83" y="-224.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">• T ≈ N: instabil, Eigenwerte streuen</text>
<text xml:space="preserve" text-anchor="start" x="89.83" y="-214.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">• kleine Eigenwerte unterschätzt</text>
<text xml:space="preserve" text-anchor="start" x="89.83" y="-204.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e"> &#160;⟶ Solver nutzt Scheinkorrelationen</text>
</g>
<!-- LW -->
<g id="node2" class="node">
<title>LW</title>
<path fill="#059669" stroke="#059669" stroke-width="2" d="M315.79,-151.56C315.79,-151.56 75.38,-151.56 75.38,-151.56 69.38,-151.56 63.37,-145.56 63.37,-139.56 63.37,-139.56 63.37,-109.28 63.37,-109.28 63.37,-103.28 69.37,-97.28 75.37,-97.28 75.37,-97.28 315.79,-97.28 315.79,-97.28 321.79,-97.28 327.79,-103.28 327.79,-109.28 327.79,-109.28 327.79,-139.56 327.79,-139.56 327.79,-145.56 321.79,-151.56 315.79,-151.56"/>
<text xml:space="preserve" text-anchor="start" x="76.33" y="-131.57" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">LEDOIT&#45;WOLF SHRINKAGE &#160;Σ(LW)</text>
<text xml:space="preserve" text-anchor="start" x="76.33" y="-107.42" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">Σ(LW) = (1 δ) · S &#160;+ &#160;δ · F</text>
</g>
<!-- S0&#45;&gt;LW -->
<g id="edge1" class="edge">
<title>S0&#45;&gt;LW</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M195.58,-193.69C195.58,-184.04 195.58,-173.82 195.58,-164.31"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="198.74,-164.35 195.59,-155.35 192.44,-164.35 198.74,-164.35"/>
</g>
<!-- S -->
<g id="node3" class="node">
<title>S</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M163.17,-54.28C163.17,-54.28 12,-54.28 12,-54.28 6,-54.28 0,-48.28 0,-42.28 0,-42.28 0,-12 0,-12 0,-6 6,0 12,0 12,0 163.17,0 163.17,0 169.17,0 175.17,-6 175.17,-12 175.17,-12 175.17,-42.28 175.17,-42.28 175.17,-48.28 169.17,-54.28 163.17,-54.28"/>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-34.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">Stichprobenmatrix S</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">unverzerrt, hohes Rauschen</text>
</g>
<!-- LW&#45;&gt;S -->
<g id="edge2" class="edge">
<title>LW&#45;&gt;S</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M164.93,-96.37C153.18,-86.01 139.62,-74.04 127.16,-63.05"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="129.42,-60.85 120.59,-57.26 125.26,-65.58 129.42,-60.85"/>
</g>
<!-- F -->
<g id="node4" class="node">
<title>F</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M390.29,-54.28C390.29,-54.28 218.88,-54.28 218.88,-54.28 212.88,-54.28 206.88,-48.28 206.88,-42.28 206.88,-42.28 206.88,-12 206.88,-12 206.88,-6 212.88,0 218.88,0 218.88,0 390.29,0 390.29,0 396.29,0 402.29,-6 402.29,-12 402.29,-12 402.29,-42.28 402.29,-42.28 402.29,-48.28 396.29,-54.28 390.29,-54.28"/>
<text xml:space="preserve" text-anchor="start" x="219.83" y="-34.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">Strukturiertes Target F</text>
<text xml:space="preserve" text-anchor="start" x="219.83" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">verzerrt, kein Rauschen</text>
</g>
<!-- LW&#45;&gt;F -->
<g id="edge3" class="edge">
<title>LW&#45;&gt;F</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M226.53,-96.37C238.38,-86.01 252.07,-74.04 264.65,-63.05"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="266.58,-65.54 271.29,-57.25 262.44,-60.8 266.58,-65.54"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

View file

@ -0,0 +1,96 @@
<?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: d19 Pages: 1 -->
<svg width="503pt" height="516pt"
viewBox="7.00 7.00 495.00 509.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 504.6)">
<title>d19</title>
<!-- s1 -->
<g id="node1" class="node">
<title>s1</title>
<path fill="#fffbeb" stroke="#d97706" stroke-width="2" d="M370.67,-493.4C370.67,-493.4 128,-493.4 128,-493.4 122,-493.4 116,-487.4 116,-481.4 116,-481.4 116,-441.12 116,-441.12 116,-435.12 122,-429.12 128,-429.12 128,-429.12 370.67,-429.12 370.67,-429.12 376.67,-429.12 382.67,-435.12 382.67,-441.12 382.67,-441.12 382.67,-481.4 382.67,-481.4 382.67,-487.4 376.67,-493.4 370.67,-493.4"/>
<text xml:space="preserve" text-anchor="start" x="128.96" y="-473.41" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#d97706">1 · HISTORISCHE DATENPIPELINE</text>
<text xml:space="preserve" text-anchor="start" x="128.96" y="-449.26" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Automatischer Download bereinigter</text>
<text xml:space="preserve" text-anchor="start" x="128.96" y="-439.26" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Kursdaten über 5 Jahre</text>
</g>
<!-- s2 -->
<g id="node2" class="node">
<title>s2</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M230.67,-386.12C230.67,-386.12 12,-386.12 12,-386.12 6,-386.12 0,-380.12 0,-374.12 0,-374.12 0,-333.84 0,-333.84 0,-327.84 6,-321.84 12,-321.84 12,-321.84 230.67,-321.84 230.67,-321.84 236.67,-321.84 242.67,-327.84 242.67,-333.84 242.67,-333.84 242.67,-374.12 242.67,-374.12 242.67,-380.12 236.67,-386.12 230.67,-386.12"/>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-366.13" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">2 · FAKTOR&#45;SCORING&#45;MODELL</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-341.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">121M Momentum</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-331.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">als Rendite&#45;Signal μₜ</text>
</g>
<!-- s1&#45;&gt;s2 -->
<g id="edge1" class="edge">
<title>s1&#45;&gt;s2</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M210.58,-428.39C197.67,-417.77 183.12,-405.8 169.58,-394.66"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="171.69,-392.32 162.73,-389.03 167.68,-397.18 171.69,-392.32"/>
</g>
<!-- s3 -->
<g id="node3" class="node">
<title>s3</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M468.29,-386.12C468.29,-386.12 286.38,-386.12 286.38,-386.12 280.38,-386.12 274.38,-380.12 274.38,-374.12 274.38,-374.12 274.38,-333.84 274.38,-333.84 274.38,-327.84 280.38,-321.84 286.38,-321.84 286.38,-321.84 468.29,-321.84 468.29,-321.84 474.29,-321.84 480.29,-327.84 480.29,-333.84 480.29,-333.84 480.29,-374.12 480.29,-374.12 480.29,-380.12 474.29,-386.12 468.29,-386.12"/>
<text xml:space="preserve" text-anchor="start" x="287.33" y="-366.13" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">3 · ROBUSTE KOVARIANZ</text>
<text xml:space="preserve" text-anchor="start" x="287.33" y="-341.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Ledoit&#45;Wolf&#45;Shrinkage auf</text>
<text xml:space="preserve" text-anchor="start" x="287.33" y="-331.98" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">rollierendem 252&#45;Tage&#45;Fenster</text>
</g>
<!-- s1&#45;&gt;s3 -->
<g id="edge2" class="edge">
<title>s1&#45;&gt;s3</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M288.09,-428.39C301,-417.77 315.55,-405.8 329.09,-394.66"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="330.99,-397.18 335.94,-389.03 326.98,-392.32 330.99,-397.18"/>
</g>
<!-- s4 -->
<g id="node4" class="node">
<title>s4</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M383.42,-278.84C383.42,-278.84 115.25,-278.84 115.25,-278.84 109.25,-278.84 103.25,-272.84 103.25,-266.84 103.25,-266.84 103.25,-226.56 103.25,-226.56 103.25,-220.56 109.25,-214.56 115.25,-214.56 115.25,-214.56 383.42,-214.56 383.42,-214.56 389.42,-214.56 395.42,-220.56 395.42,-226.56 395.42,-226.56 395.42,-266.84 395.42,-266.84 395.42,-272.84 389.42,-278.84 383.42,-278.84"/>
<text xml:space="preserve" text-anchor="start" x="116.21" y="-258.85" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#7c3aed">4 · OR&#45;OPTIMIERUNGSKERN (CVXPY)</text>
<text xml:space="preserve" text-anchor="start" x="116.21" y="-234.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Max. Momentum CVaR Reibung</text>
<text xml:space="preserve" text-anchor="start" x="116.21" y="-224.7" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Hard Constraints: Sektor&#45;Caps, No&#45;Short</text>
</g>
<!-- s2&#45;&gt;s4 -->
<g id="edge3" class="edge">
<title>s2&#45;&gt;s4</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M160.09,-321.11C173,-310.49 187.55,-298.52 201.09,-287.38"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="202.99,-289.9 207.94,-281.75 198.98,-285.04 202.99,-289.9"/>
</g>
<!-- s3&#45;&gt;s4 -->
<g id="edge4" class="edge">
<title>s3&#45;&gt;s4</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M338.58,-321.11C325.67,-310.49 311.12,-298.52 297.58,-287.38"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="299.69,-285.04 290.73,-281.75 295.68,-289.9 299.69,-285.04"/>
</g>
<!-- s5 -->
<g id="node5" class="node">
<title>s5</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M393.54,-171.56C393.54,-171.56 105.12,-171.56 105.12,-171.56 99.12,-171.56 93.12,-165.56 93.12,-159.56 93.12,-159.56 93.12,-119.28 93.12,-119.28 93.12,-113.28 99.12,-107.28 105.12,-107.28 105.12,-107.28 393.54,-107.28 393.54,-107.28 399.54,-107.28 405.54,-113.28 405.54,-119.28 405.54,-119.28 405.54,-159.56 405.54,-159.56 405.54,-165.56 399.54,-171.56 393.54,-171.56"/>
<text xml:space="preserve" text-anchor="start" x="106.08" y="-151.57" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">5 · REBALANCING &amp; ORDER&#45;EXECUTION</text>
<text xml:space="preserve" text-anchor="start" x="106.08" y="-127.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Monatliche Neugewichtung mit</text>
<text xml:space="preserve" text-anchor="start" x="106.08" y="-117.42" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">realer Transaktionskosten&#45;Verbuchung</text>
</g>
<!-- s4&#45;&gt;s5 -->
<g id="edge5" class="edge">
<title>s4&#45;&gt;s5</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M249.33,-213.83C249.33,-204.53 249.33,-194.21 249.33,-184.31"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="252.49,-184.58 249.34,-175.58 246.19,-184.58 252.49,-184.58"/>
</g>
<!-- s6 -->
<g id="node6" class="node">
<title>s6</title>
<path fill="#059669" stroke="#059669" stroke-width="2" d="M388.29,-64.28C388.29,-64.28 110.38,-64.28 110.38,-64.28 104.38,-64.28 98.37,-58.28 98.37,-52.28 98.37,-52.28 98.37,-12 98.37,-12 98.37,-6 104.37,0 110.37,0 110.37,0 388.29,0 388.29,0 394.29,0 400.29,-6 400.29,-12 400.29,-12 400.29,-52.28 400.29,-52.28 400.29,-58.28 394.29,-64.28 388.29,-64.28"/>
<text xml:space="preserve" text-anchor="start" x="111.33" y="-44.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">6 · LEISTUNGSREPORT &amp; BENCHMARK</text>
<text xml:space="preserve" text-anchor="start" x="111.33" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">Sharpe, Max Drawdown, CAGR</text>
<text xml:space="preserve" text-anchor="start" x="111.33" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#ffffff">vs. S&amp;P 500 (SPY)</text>
</g>
<!-- s5&#45;&gt;s6 -->
<g id="edge6" class="edge">
<title>s5&#45;&gt;s6</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M249.33,-106.55C249.33,-97.25 249.33,-86.93 249.33,-77.03"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="252.49,-77.3 249.34,-68.3 246.19,-77.3 252.49,-77.3"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

View file

@ -0,0 +1,81 @@
<?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: d18 Pages: 1 -->
<svg width="350pt" height="581pt"
viewBox="7.00 7.00 343.00 574.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 569.6)">
<title>d18</title>
<!-- s0 -->
<g id="node1" class="node">
<title>s0</title>
<path fill="#fffbeb" stroke="#d97706" stroke-width="2" d="M225.42,-558.4C225.42,-558.4 69.75,-558.4 69.75,-558.4 63.75,-558.4 57.75,-552.4 57.75,-546.4 57.75,-546.4 57.75,-506.12 57.75,-506.12 57.75,-500.12 63.75,-494.12 69.75,-494.12 69.75,-494.12 225.42,-494.12 225.42,-494.12 231.42,-494.12 237.42,-500.12 237.42,-506.12 237.42,-506.12 237.42,-546.4 237.42,-546.4 237.42,-552.4 231.42,-558.4 225.42,-558.4"/>
<text xml:space="preserve" text-anchor="start" x="87.59" y="-538.41" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#d97706">QUELL&#45;SYSTEME</text>
<text xml:space="preserve" text-anchor="start" x="70.71" y="-514.26" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">ERP / CRM / HR&#45;Kalender</text>
<text xml:space="preserve" text-anchor="start" x="70.71" y="-504.26" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Marktdaten&#45;Feeds / Broker&#45;APIs</text>
</g>
<!-- s1 -->
<g id="node2" class="node">
<title>s1</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M255.42,-437.37C255.42,-437.37 39.75,-437.37 39.75,-437.37 33.75,-437.37 27.75,-431.37 27.75,-425.37 27.75,-425.37 27.75,-385.09 27.75,-385.09 27.75,-379.09 33.75,-373.09 39.75,-373.09 39.75,-373.09 255.42,-373.09 255.42,-373.09 261.42,-373.09 267.42,-379.09 267.42,-385.09 267.42,-385.09 267.42,-425.37 267.42,-425.37 267.42,-431.37 261.42,-437.37 255.42,-437.37"/>
<text xml:space="preserve" text-anchor="start" x="40.71" y="-417.38" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#0891b2">DATA QUALITY &amp; SNAPSHOTS</text>
<text xml:space="preserve" text-anchor="start" x="40.71" y="-393.23" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Validierung (Pydantic / Pandera)</text>
<text xml:space="preserve" text-anchor="start" x="40.71" y="-383.23" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Unveränderlicher Planungs&#45;Snapshot</text>
</g>
<!-- s0&#45;&gt;s1 -->
<g id="edge1" class="edge">
<title>s0&#45;&gt;s1</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M147.59,-493.36C147.59,-480.02 147.59,-464.3 147.59,-449.91"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="150.74,-450.24 147.59,-441.24 144.44,-450.24 150.74,-450.24"/>
<text xml:space="preserve" text-anchor="middle" x="204.96" y="-462.62" font-family="DejaVu Sans" font-size="10.00" fill="#334155"> &#160;Events / REST / Polling</text>
</g>
<!-- s2 -->
<g id="node3" class="node">
<title>s2</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M267.42,-316.34C267.42,-316.34 27.75,-316.34 27.75,-316.34 21.75,-316.34 15.75,-310.34 15.75,-304.34 15.75,-304.34 15.75,-254.06 15.75,-254.06 15.75,-248.06 21.75,-242.06 27.75,-242.06 27.75,-242.06 267.42,-242.06 267.42,-242.06 273.42,-242.06 279.42,-248.06 279.42,-254.06 279.42,-254.06 279.42,-304.34 279.42,-304.34 279.42,-310.34 273.42,-316.34 267.42,-316.34"/>
<text xml:space="preserve" text-anchor="start" x="28.71" y="-296.35" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#4338ca">OPTIMIERUNGS&#45;WORKER (async)</text>
<text xml:space="preserve" text-anchor="start" x="28.71" y="-272.2" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Queue (Celery / Redis / Dramatiq)</text>
<text xml:space="preserve" text-anchor="start" x="28.71" y="-262.2" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Solver: OR&#45;Tools / HiGHS / CVXPY</text>
<text xml:space="preserve" text-anchor="start" x="28.71" y="-252.2" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Timeouts, Fallbacks, Diagnose</text>
</g>
<!-- s1&#45;&gt;s2 -->
<g id="edge2" class="edge">
<title>s1&#45;&gt;s2</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M147.59,-372.29C147.59,-359.17 147.59,-343.68 147.59,-329.18"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="150.74,-329.34 147.59,-320.34 144.44,-329.34 150.74,-329.34"/>
<text xml:space="preserve" text-anchor="middle" x="183.59" y="-341.59" font-family="DejaVu Sans" font-size="10.00" fill="#334155"> &#160;JSON&#45;Payload</text>
</g>
<!-- s3 -->
<g id="node4" class="node">
<title>s3</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M283.17,-185.31C283.17,-185.31 12,-185.31 12,-185.31 6,-185.31 0,-179.31 0,-173.31 0,-173.31 0,-133.03 0,-133.03 0,-127.03 6,-121.03 12,-121.03 12,-121.03 283.17,-121.03 283.17,-121.03 289.17,-121.03 295.17,-127.03 295.17,-133.03 295.17,-133.03 295.17,-173.31 295.17,-173.31 295.17,-179.31 289.17,-185.31 283.17,-185.31"/>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-165.32" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#7c3aed">DISPOSITION &amp; HUMAN&#45;IN&#45;THE&#45;LOOP</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-141.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Web&#45;UI / Dashboard</text>
<text xml:space="preserve" text-anchor="start" x="12.96" y="-131.17" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Freigabeprozess (Mensch bestätigt)</text>
</g>
<!-- s2&#45;&gt;s3 -->
<g id="edge3" class="edge">
<title>s2&#45;&gt;s3</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M147.59,-241.32C147.59,-227.74 147.59,-212.21 147.59,-198.07"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="150.74,-198.1 147.59,-189.1 144.44,-198.1 150.74,-198.1"/>
<text xml:space="preserve" text-anchor="middle" x="237.59" y="-210.56" font-family="DejaVu Sans" font-size="10.00" fill="#334155"> &#160;Ergebnis + Kostenzerlegung + Logs</text>
</g>
<!-- s4 -->
<g id="node5" class="node">
<title>s4</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M243.79,-64.28C243.79,-64.28 51.38,-64.28 51.38,-64.28 45.38,-64.28 39.38,-58.28 39.38,-52.28 39.38,-52.28 39.38,-12 39.38,-12 39.38,-6 45.38,0 51.38,0 51.38,0 243.79,0 243.79,0 249.79,0 255.79,-6 255.79,-12 255.79,-12 255.79,-52.28 255.79,-52.28 255.79,-58.28 249.79,-64.28 243.79,-64.28"/>
<text xml:space="preserve" text-anchor="start" x="59.84" y="-44.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#059669">AUSFÜHRUNGSSCHICHT</text>
<text xml:space="preserve" text-anchor="start" x="52.34" y="-20.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Kalender&#45;Sync / Push&#45;Benachrichtigung</text>
<text xml:space="preserve" text-anchor="start" x="52.34" y="-10.14" font-family="DejaVu Sans" font-size="10.00" fill="#1a1a2e">Broker&#45;Order&#45;Routing</text>
</g>
<!-- s3&#45;&gt;s4 -->
<g id="edge4" class="edge">
<title>s3&#45;&gt;s4</title>
<path fill="none" stroke="#334155" stroke-width="2" d="M147.59,-120.27C147.59,-106.93 147.59,-91.21 147.59,-76.82"/>
<polygon fill="#334155" stroke="#334155" stroke-width="2" points="150.74,-77.15 147.59,-68.15 144.44,-77.15 150.74,-77.15"/>
<text xml:space="preserve" text-anchor="middle" x="174.96" y="-89.53" font-family="DejaVu Sans" font-size="10.00" fill="#334155"> &#160;Audit&#45;Trail</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View file

@ -0,0 +1,49 @@
<?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: d17 Pages: 1 -->
<svg width="654pt" height="232pt"
viewBox="7.00 7.00 646.00 224.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 220.48)">
<title>d17</title>
<!-- t -->
<g id="node1" class="node">
<title>t</title>
<polygon fill="#1a1a2e" stroke="none" points="12.96,-166.14 12.96,-200.64 618.21,-200.64 618.21,-166.14 12.96,-166.14"/>
<polygon fill="none" stroke="#1a1a2e" points="12.96,-166.14 12.96,-200.64 618.21,-200.64 618.21,-166.14 12.96,-166.14"/>
<text xml:space="preserve" text-anchor="start" x="191.83" y="-180.29" font-family="DejaVu Sans" font-weight="bold" font-size="13.00" fill="#ffffff">DIE 5 FALLSTRICKE IN DER PRAXIS</text>
<polygon fill="#fff1f3" stroke="none" points="12.96,-134.64 12.96,-166.14 230.46,-166.14 230.46,-134.64 12.96,-134.64"/>
<polygon fill="none" stroke="#1a1a2e" points="12.96,-134.64 12.96,-166.14 230.46,-166.14 230.46,-134.64 12.96,-134.64"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-147.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#e11d48">1. &#160;INFEASIBILITY&#45;FALLE</text>
<polygon fill="#ffffff" stroke="none" points="230.46,-134.64 230.46,-166.14 618.21,-166.14 618.21,-134.64 230.46,-134.64"/>
<polygon fill="none" stroke="#1a1a2e" points="230.46,-134.64 230.46,-166.14 618.21,-166.14 618.21,-134.64 230.46,-134.64"/>
<text xml:space="preserve" text-anchor="start" x="239.46" y="-146.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">Unlösbare Modelle durch starre, widersprüchliche Hard Constraints</text>
<polygon fill="#fffbeb" stroke="none" points="12.96,-103.14 12.96,-134.64 230.46,-134.64 230.46,-103.14 12.96,-103.14"/>
<polygon fill="none" stroke="#1a1a2e" points="12.96,-103.14 12.96,-134.64 230.46,-134.64 230.46,-103.14 12.96,-103.14"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-116.19" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#d97706">2. &#160;ERKLÄRBARKEITS&#45;LÜCKE</text>
<polygon fill="#ffffff" stroke="none" points="230.46,-103.14 230.46,-134.64 618.21,-134.64 618.21,-103.14 230.46,-103.14"/>
<polygon fill="none" stroke="#1a1a2e" points="230.46,-103.14 230.46,-134.64 618.21,-134.64 618.21,-103.14 230.46,-103.14"/>
<text xml:space="preserve" text-anchor="start" x="239.46" y="-115.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">Mangelnde Akzeptanz wegen fehlender Begründungen (Black&#45;Box)</text>
<polygon fill="#f5f3ff" stroke="none" points="12.96,-71.64 12.96,-103.14 230.46,-103.14 230.46,-71.64 12.96,-71.64"/>
<polygon fill="none" stroke="#1a1a2e" points="12.96,-71.64 12.96,-103.14 230.46,-103.14 230.46,-71.64 12.96,-71.64"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-84.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#7c3aed">3. &#160;OVERFITTING / REGIME&#45;SHIFT</text>
<polygon fill="#ffffff" stroke="none" points="230.46,-71.64 230.46,-103.14 618.21,-103.14 618.21,-71.64 230.46,-71.64"/>
<polygon fill="none" stroke="#1a1a2e" points="230.46,-71.64 230.46,-103.14 618.21,-103.14 618.21,-71.64 230.46,-71.64"/>
<text xml:space="preserve" text-anchor="start" x="239.46" y="-83.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">Perfekt auf die Vergangenheit optimiert scheitert in Krisen</text>
<polygon fill="#ecfeff" stroke="none" points="12.96,-40.14 12.96,-71.64 230.46,-71.64 230.46,-40.14 12.96,-40.14"/>
<polygon fill="none" stroke="#1a1a2e" points="12.96,-40.14 12.96,-71.64 230.46,-71.64 230.46,-40.14 12.96,-40.14"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-53.19" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#0891b2">4. &#160;DATENVERZUG / LOOKAHEAD</text>
<polygon fill="#ffffff" stroke="none" points="230.46,-40.14 230.46,-71.64 618.21,-71.64 618.21,-40.14 230.46,-40.14"/>
<polygon fill="none" stroke="#1a1a2e" points="230.46,-40.14 230.46,-71.64 618.21,-71.64 618.21,-40.14 230.46,-40.14"/>
<text xml:space="preserve" text-anchor="start" x="239.46" y="-52.19" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">Signale nutzen Daten, die zum Handlungszeitpunkt fehlten</text>
<polygon fill="#eef2ff" stroke="none" points="12.96,-8.64 12.96,-40.14 230.46,-40.14 230.46,-8.64 12.96,-8.64"/>
<polygon fill="none" stroke="#1a1a2e" points="12.96,-8.64 12.96,-40.14 230.46,-40.14 230.46,-8.64 12.96,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="21.96" y="-21.69" font-family="DejaVu Sans" font-weight="bold" font-size="11.00" fill="#4338ca">5. &#160;LAUFZEIT&#45;EXPLOSION</text>
<polygon fill="#ffffff" stroke="none" points="230.46,-8.64 230.46,-40.14 618.21,-40.14 618.21,-8.64 230.46,-8.64"/>
<polygon fill="none" stroke="#1a1a2e" points="230.46,-8.64 230.46,-40.14 618.21,-40.14 618.21,-8.64 230.46,-8.64"/>
<text xml:space="preserve" text-anchor="start" x="239.46" y="-20.69" font-family="DejaVu Sans" font-size="11.00" fill="#1a1a2e">NP&#45;schwere Modelle verfehlen reale Timeouts bei Wachstum</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View file

@ -0,0 +1,95 @@
<?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="633pt" height="201pt"
viewBox="0.00 0.00 633.00 201.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 196.84)">
<text xml:space="preserve" text-anchor="middle" x="312.56" y="-177.44" font-family="DejaVu Sans" font-size="12.00">Kostenminimaler Fluss: 140 € für 30 Einheiten</text>
<text xml:space="preserve" text-anchor="middle" x="312.56" y="-163.19" font-family="DejaVu Sans" font-size="12.00">Kantenbeschriftung: Fluss / Kapazität, Kosten je Einheit</text>
<!-- Werk_A -->
<g id="node1" class="node">
<title>Werk_A</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M87.54,-156.34C87.54,-156.34 12,-156.34 12,-156.34 6,-156.34 0,-150.34 0,-144.34 0,-144.34 0,-117.13 0,-117.13 0,-111.13 6,-105.13 12,-105.13 12,-105.13 87.54,-105.13 87.54,-105.13 93.54,-105.13 99.54,-111.13 99.54,-117.13 99.54,-117.13 99.54,-144.34 99.54,-144.34 99.54,-150.34 93.54,-156.34 87.54,-156.34"/>
<text xml:space="preserve" text-anchor="middle" x="49.77" y="-140.36" font-family="DejaVu Sans" font-size="10.00">Werk A</text>
<text xml:space="preserve" text-anchor="middle" x="49.77" y="-127.61" font-family="DejaVu Sans" font-size="10.00">Angebot +20</text>
<text xml:space="preserve" text-anchor="middle" x="49.77" y="-114.86" font-family="DejaVu Sans" font-size="10.00">Knotenpreis 4 €</text>
</g>
<!-- Umschlag -->
<g id="node3" class="node">
<title>Umschlag</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M375.83,-83.34C375.83,-83.34 300.29,-83.34 300.29,-83.34 294.29,-83.34 288.29,-77.34 288.29,-71.34 288.29,-71.34 288.29,-44.13 288.29,-44.13 288.29,-38.13 294.29,-32.13 300.29,-32.13 300.29,-32.13 375.83,-32.13 375.83,-32.13 381.83,-32.13 387.83,-38.13 387.83,-44.13 387.83,-44.13 387.83,-71.34 387.83,-71.34 387.83,-77.34 381.83,-83.34 375.83,-83.34"/>
<text xml:space="preserve" text-anchor="middle" x="338.06" y="-67.36" font-family="DejaVu Sans" font-size="10.00">Umschlag</text>
<text xml:space="preserve" text-anchor="middle" x="338.06" y="-54.61" font-family="DejaVu Sans" font-size="10.00">Durchleitung</text>
<text xml:space="preserve" text-anchor="middle" x="338.06" y="-41.86" font-family="DejaVu Sans" font-size="10.00">Knotenpreis 0 €</text>
</g>
<!-- Werk_A&#45;&gt;Umschlag -->
<g id="edge1" class="edge">
<title>Werk_A&#45;&gt;Umschlag</title>
<path fill="none" stroke="#b45309" stroke-width="4" d="M100.31,-118.1C147.88,-105.97 220.02,-87.58 272.16,-74.29"/>
<polygon fill="#b45309" stroke="#b45309" stroke-width="4" points="272.95,-77.69 281.78,-71.83 271.23,-70.91 272.95,-77.69"/>
<text xml:space="preserve" text-anchor="middle" x="193.91" y="-109.82" font-family="DejaVu Sans" font-size="9.00" fill="#b45309">15 / 15, 2 € &#160;⟵ voll</text>
</g>
<!-- Kunde_1 -->
<g id="node4" class="node">
<title>Kunde_1</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M613.12,-156.34C613.12,-156.34 533.83,-156.34 533.83,-156.34 527.83,-156.34 521.83,-150.34 521.83,-144.34 521.83,-144.34 521.83,-117.13 521.83,-117.13 521.83,-111.13 527.83,-105.13 533.83,-105.13 533.83,-105.13 613.12,-105.13 613.12,-105.13 619.12,-105.13 625.12,-111.13 625.12,-117.13 625.12,-117.13 625.12,-144.34 625.12,-144.34 625.12,-150.34 619.12,-156.34 613.12,-156.34"/>
<text xml:space="preserve" text-anchor="middle" x="573.47" y="-140.36" font-family="DejaVu Sans" font-size="10.00">Kunde 1</text>
<text xml:space="preserve" text-anchor="middle" x="573.47" y="-127.61" font-family="DejaVu Sans" font-size="10.00">Bedarf &#45;15</text>
<text xml:space="preserve" text-anchor="middle" x="573.47" y="-114.86" font-family="DejaVu Sans" font-size="10.00">Knotenpreis &#45;1 €</text>
</g>
<!-- Werk_A&#45;&gt;Kunde_1 -->
<g id="edge2" class="edge">
<title>Werk_A&#45;&gt;Kunde_1</title>
<path fill="none" stroke="#0891b2" stroke-width="2.5" d="M100.32,-130.74C195.01,-130.74 401.63,-130.74 507.34,-130.74"/>
<polygon fill="#0891b2" stroke="#0891b2" stroke-width="2.5" points="507.17,-134.24 517.17,-130.74 507.17,-127.24 507.17,-134.24"/>
<text xml:space="preserve" text-anchor="middle" x="338.06" y="-133.44" font-family="DejaVu Sans" font-size="9.00" fill="#334155">5 / 10, 5 €</text>
</g>
<!-- Werk_B -->
<g id="node2" class="node">
<title>Werk_B</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M87.54,-57.34C87.54,-57.34 12,-57.34 12,-57.34 6,-57.34 0,-51.34 0,-45.34 0,-45.34 0,-18.13 0,-18.13 0,-12.13 6,-6.13 12,-6.13 12,-6.13 87.54,-6.13 87.54,-6.13 93.54,-6.13 99.54,-12.13 99.54,-18.13 99.54,-18.13 99.54,-45.34 99.54,-45.34 99.54,-51.34 93.54,-57.34 87.54,-57.34"/>
<text xml:space="preserve" text-anchor="middle" x="49.77" y="-41.36" font-family="DejaVu Sans" font-size="10.00">Werk B</text>
<text xml:space="preserve" text-anchor="middle" x="49.77" y="-28.61" font-family="DejaVu Sans" font-size="10.00">Angebot +10</text>
<text xml:space="preserve" text-anchor="middle" x="49.77" y="-15.86" font-family="DejaVu Sans" font-size="10.00">Knotenpreis 4 €</text>
</g>
<!-- Werk_B&#45;&gt;Umschlag -->
<g id="edge3" class="edge">
<title>Werk_B&#45;&gt;Umschlag</title>
<path fill="none" stroke="#cbd5e1" stroke-dasharray="5,2" d="M100.31,-36.24C149.22,-40.68 224.08,-47.48 276.49,-52.24"/>
<polygon fill="#cbd5e1" stroke="#cbd5e1" points="275.86,-55.69 286.14,-53.11 276.5,-48.72 275.86,-55.69"/>
<text xml:space="preserve" text-anchor="middle" x="193.91" y="-52.03" font-family="DejaVu Sans" font-size="9.00" fill="#94a3b8">0 / 10, 4 € &#160;(ungenutzt)</text>
</g>
<!-- Kunde_2 -->
<g id="node5" class="node">
<title>Kunde_2</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M613.12,-57.34C613.12,-57.34 533.83,-57.34 533.83,-57.34 527.83,-57.34 521.83,-51.34 521.83,-45.34 521.83,-45.34 521.83,-18.13 521.83,-18.13 521.83,-12.13 527.83,-6.13 533.83,-6.13 533.83,-6.13 613.12,-6.13 613.12,-6.13 619.12,-6.13 625.12,-12.13 625.12,-18.13 625.12,-18.13 625.12,-45.34 625.12,-45.34 625.12,-51.34 619.12,-57.34 613.12,-57.34"/>
<text xml:space="preserve" text-anchor="middle" x="573.47" y="-41.36" font-family="DejaVu Sans" font-size="10.00">Kunde 2</text>
<text xml:space="preserve" text-anchor="middle" x="573.47" y="-28.61" font-family="DejaVu Sans" font-size="10.00">Bedarf &#45;15</text>
<text xml:space="preserve" text-anchor="middle" x="573.47" y="-15.86" font-family="DejaVu Sans" font-size="10.00">Knotenpreis &#45;3 €</text>
</g>
<!-- Werk_B&#45;&gt;Kunde_2 -->
<g id="edge4" class="edge">
<title>Werk_B&#45;&gt;Kunde_2</title>
<path fill="none" stroke="#b45309" stroke-width="4" d="M100.44,-22.29C166.16,-10.96 285.65,5.56 387.83,-2.49 427.11,-5.58 470.66,-12.32 505.6,-18.55"/>
<polygon fill="#b45309" stroke="#b45309" stroke-width="4" points="504.58,-21.92 515.04,-20.27 505.84,-15.03 504.58,-21.92"/>
<text xml:space="preserve" text-anchor="middle" x="338.06" y="-5.19" font-family="DejaVu Sans" font-size="9.00" fill="#b45309">10 / 10, 6 € &#160;⟵ voll</text>
</g>
<!-- Umschlag&#45;&gt;Kunde_1 -->
<g id="edge5" class="edge">
<title>Umschlag&#45;&gt;Kunde_1</title>
<path fill="none" stroke="#0891b2" stroke-width="2.5" d="M388.56,-73.22C423.4,-84.11 470.35,-98.8 508.09,-110.6"/>
<polygon fill="#0891b2" stroke="#0891b2" stroke-width="2.5" points="506.83,-113.87 517.41,-113.52 508.91,-107.19 506.83,-113.87"/>
<text xml:space="preserve" text-anchor="middle" x="454.83" y="-103.48" font-family="DejaVu Sans" font-size="9.00" fill="#334155">10 / 20, 1 €</text>
</g>
<!-- Umschlag&#45;&gt;Kunde_2 -->
<g id="edge6" class="edge">
<title>Umschlag&#45;&gt;Kunde_2</title>
<path fill="none" stroke="#0891b2" stroke-width="2.5" d="M388.56,-52.22C423.24,-48.36 469.94,-43.16 507.6,-38.96"/>
<polygon fill="#0891b2" stroke="#0891b2" stroke-width="2.5" points="507.71,-42.47 517.26,-37.89 506.94,-35.52 507.71,-42.47"/>
<text xml:space="preserve" text-anchor="middle" x="454.83" y="-50.53" font-family="DejaVu Sans" font-size="9.00" fill="#334155">5 / 10, 3 €</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View file

@ -0,0 +1,103 @@
<?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="709pt" height="369pt"
viewBox="0.00 0.00 709.00 369.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 364.66)">
<text xml:space="preserve" text-anchor="middle" x="350.58" y="-344.31" font-family="DejaVu Sans" font-size="13.00">Die Schichten von or_kern.py — alle Pfeile zeigen nach innen</text>
<!-- io -->
<g id="node1" class="node">
<title>io</title>
<path fill="#fffbeb" stroke="#b45309" stroke-width="2" d="M248.04,-237.7C248.04,-237.7 12,-237.7 12,-237.7 6,-237.7 0,-231.7 0,-225.7 0,-225.7 0,-198.49 0,-198.49 0,-192.49 6,-186.49 12,-186.49 12,-186.49 248.04,-186.49 248.04,-186.49 254.04,-186.49 260.04,-192.49 260.04,-198.49 260.04,-198.49 260.04,-225.7 260.04,-225.7 260.04,-231.7 254.04,-237.7 248.04,-237.7"/>
<text xml:space="preserve" text-anchor="middle" x="130.02" y="-221.72" font-family="DejaVu Sans" font-size="10.00">Ein&#45; und Ausgabe</text>
<text xml:space="preserve" text-anchor="middle" x="130.02" y="-208.97" font-family="DejaVu Sans" font-size="10.00">lade_produktionsproblem() · schreibe_ergebnis()</text>
<text xml:space="preserve" text-anchor="middle" x="130.02" y="-196.22" font-family="DejaVu Sans" font-size="10.00">Excel, CSV — die Wirklichkeit des Anwenders</text>
</g>
<!-- dom -->
<g id="node5" class="node">
<title>dom</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M465.04,-139.24C465.04,-139.24 271,-139.24 271,-139.24 265,-139.24 259,-133.24 259,-127.24 259,-127.24 259,-100.03 259,-100.03 259,-94.03 265,-88.03 271,-88.03 271,-88.03 465.04,-88.03 465.04,-88.03 471.04,-88.03 477.04,-94.03 477.04,-100.03 477.04,-100.03 477.04,-127.24 477.04,-127.24 477.04,-133.24 471.04,-139.24 465.04,-139.24"/>
<text xml:space="preserve" text-anchor="middle" x="368.02" y="-123.26" font-family="DejaVu Sans" font-size="10.00">Domäne</text>
<text xml:space="preserve" text-anchor="middle" x="368.02" y="-110.51" font-family="DejaVu Sans" font-size="10.00">Produkt · Produktionsproblem</text>
<text xml:space="preserve" text-anchor="middle" x="368.02" y="-97.76" font-family="DejaVu Sans" font-size="10.00">validiert (Pydantic), kennt keinen Solver</text>
</g>
<!-- io&#45;&gt;dom -->
<g id="edge1" class="edge">
<title>io&#45;&gt;dom</title>
<path fill="none" stroke="#5c6380" d="M153.56,-185.74C166.52,-171.78 180.02,-157.24 180.02,-157.24 180.02,-157.24 210.63,-150.3 247.15,-142.03"/>
<polygon fill="#5c6380" stroke="#5c6380" points="247.66,-145.5 256.64,-139.88 246.11,-138.67 247.66,-145.5"/>
<text xml:space="preserve" text-anchor="middle" x="235.52" y="-159.94" font-family="DejaVu Sans" font-size="9.00">liest ein, schreibt zurück</text>
</g>
<!-- bau -->
<g id="node2" class="node">
<title>bau</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M432.04,-336.16C432.04,-336.16 256,-336.16 256,-336.16 250,-336.16 244,-330.16 244,-324.16 244,-324.16 244,-296.95 244,-296.95 244,-290.95 250,-284.95 256,-284.95 256,-284.95 432.04,-284.95 432.04,-284.95 438.04,-284.95 444.04,-290.95 444.04,-296.95 444.04,-296.95 444.04,-324.16 444.04,-324.16 444.04,-330.16 438.04,-336.16 432.04,-336.16"/>
<text xml:space="preserve" text-anchor="middle" x="344.02" y="-320.18" font-family="DejaVu Sans" font-size="10.00">Modellbauer — austauschbar</text>
<text xml:space="preserve" text-anchor="middle" x="344.02" y="-307.43" font-family="DejaVu Sans" font-size="10.00">loese_mit_glop() · loese_mit_scipy()</text>
<text xml:space="preserve" text-anchor="middle" x="344.02" y="-294.68" font-family="DejaVu Sans" font-size="10.00">je Solver einer, gleiche Signatur</text>
</g>
<!-- erg -->
<g id="node4" class="node">
<title>erg</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M588.66,-237.7C588.66,-237.7 437.38,-237.7 437.38,-237.7 431.38,-237.7 425.38,-231.7 425.38,-225.7 425.38,-225.7 425.38,-198.49 425.38,-198.49 425.38,-192.49 431.38,-186.49 437.38,-186.49 437.38,-186.49 588.66,-186.49 588.66,-186.49 594.66,-186.49 600.66,-192.49 600.66,-198.49 600.66,-198.49 600.66,-225.7 600.66,-225.7 600.66,-231.7 594.66,-237.7 588.66,-237.7"/>
<text xml:space="preserve" text-anchor="middle" x="513.02" y="-221.72" font-family="DejaVu Sans" font-size="10.00">Ergebnis — solverunabhängig</text>
<text xml:space="preserve" text-anchor="middle" x="513.02" y="-208.97" font-family="DejaVu Sans" font-size="10.00">SolverStatus · Loesung</text>
<text xml:space="preserve" text-anchor="middle" x="513.02" y="-196.22" font-family="DejaVu Sans" font-size="10.00">fünf Bibliotheken, eine Sprache</text>
</g>
<!-- bau&#45;&gt;erg -->
<g id="edge3" class="edge">
<title>bau&#45;&gt;erg</title>
<path fill="none" stroke="#5c6380" d="M388.87,-283.96C410.25,-271.76 436.01,-257.05 458.51,-244.21"/>
<polygon fill="#5c6380" stroke="#5c6380" points="459.99,-247.39 466.94,-239.39 456.52,-241.31 459.99,-247.39"/>
<text xml:space="preserve" text-anchor="middle" x="446.34" y="-258.4" font-family="DejaVu Sans" font-size="9.00">liefert</text>
</g>
<!-- bau&#45;&gt;dom -->
<g id="edge2" class="edge">
<title>bau&#45;&gt;dom</title>
<path fill="none" stroke="#5c6380" d="M336.56,-284.02C330.52,-263.37 323.02,-237.7 323.02,-237.7 323.02,-237.7 323.02,-186.49 323.02,-186.49 323.02,-186.49 334.57,-168.05 345.97,-149.85"/>
<polygon fill="#5c6380" stroke="#5c6380" points="348.88,-151.79 351.22,-141.45 342.95,-148.07 348.88,-151.79"/>
<text xml:space="preserve" text-anchor="middle" x="368.02" y="-209.17" font-family="DejaVu Sans" font-size="9.00">baut das Modell aus</text>
</g>
<!-- pruef -->
<g id="node3" class="node">
<title>pruef</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M689.16,-336.16C689.16,-336.16 546.88,-336.16 546.88,-336.16 540.88,-336.16 534.88,-330.16 534.88,-324.16 534.88,-324.16 534.88,-296.95 534.88,-296.95 534.88,-290.95 540.88,-284.95 546.88,-284.95 546.88,-284.95 689.16,-284.95 689.16,-284.95 695.16,-284.95 701.16,-290.95 701.16,-296.95 701.16,-296.95 701.16,-324.16 701.16,-324.16 701.16,-330.16 695.16,-336.16 689.16,-336.16"/>
<text xml:space="preserve" text-anchor="middle" x="618.02" y="-320.18" font-family="DejaVu Sans" font-size="10.00">Abnahmeprüfung</text>
<text xml:space="preserve" text-anchor="middle" x="618.02" y="-307.43" font-family="DejaVu Sans" font-size="10.00">pruefe_loesung()</text>
<text xml:space="preserve" text-anchor="middle" x="618.02" y="-294.68" font-family="DejaVu Sans" font-size="10.00">prüft die Lösung OHNE Solver</text>
</g>
<!-- pruef&#45;&gt;erg -->
<g id="edge5" class="edge">
<title>pruef&#45;&gt;erg</title>
<path fill="none" stroke="#5c6380" d="M590.16,-283.96C577.48,-272.31 562.32,-258.39 548.81,-245.97"/>
<polygon fill="#5c6380" stroke="#5c6380" points="551.49,-243.69 541.76,-239.5 546.76,-248.84 551.49,-243.69"/>
<text xml:space="preserve" text-anchor="middle" x="579.92" y="-258.4" font-family="DejaVu Sans" font-size="9.00">prüft</text>
</g>
<!-- pruef&#45;&gt;dom -->
<g id="edge4" class="edge">
<title>pruef&#45;&gt;dom</title>
<path fill="none" stroke="#5c6380" d="M616.98,-284.06C615.52,-248.01 613.02,-186.49 613.02,-186.49 613.02,-186.49 534.17,-163.36 465.93,-143.35"/>
<polygon fill="#5c6380" stroke="#5c6380" points="467.12,-140.05 456.54,-140.6 465.15,-146.77 467.12,-140.05"/>
<text xml:space="preserve" text-anchor="middle" x="642.02" y="-209.17" font-family="DejaVu Sans" font-size="9.00">prüft gegen</text>
</g>
<!-- erg&#45;&gt;dom -->
<!-- regel -->
<g id="node6" class="node">
<title>regel</title>
<polygon fill="#f8fafc" stroke="#94a3b8" points="487.85,-51.03 242.19,-51.03 242.19,0 493.85,0 493.85,-45.03 487.85,-51.03"/>
<polyline fill="none" stroke="#94a3b8" points="487.85,-51.03 487.85,-45.03"/>
<polyline fill="none" stroke="#94a3b8" points="493.85,-45.03 487.85,-45.03"/>
<text xml:space="preserve" text-anchor="start" x="255.14" y="-33.84" font-family="DejaVu Sans" font-size="9.00">Die Domäne importiert nichts von außen.</text>
<text xml:space="preserve" text-anchor="start" x="255.14" y="-22.59" font-family="DejaVu Sans" font-size="9.00">Deshalb kostet ein Solverwechsel eine Funktion —</text>
<text xml:space="preserve" text-anchor="start" x="255.14" y="-11.34" font-family="DejaVu Sans" font-size="9.00">und kein einziges Fachdetail.</text>
</g>
<!-- dom&#45;&gt;regel -->
<g id="edge7" class="edge">
<title>dom&#45;&gt;regel</title>
<path fill="none" stroke="#94a3b8" stroke-dasharray="5,2" d="M368.02,-87.26C368.02,-75.95 368.02,-62.67 368.02,-51.41"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View file

@ -0,0 +1,144 @@
<?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="496pt" height="553pt"
viewBox="0.00 0.00 496.00 553.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 549.04)">
<text xml:space="preserve" text-anchor="middle" x="244.04" y="-528.69" font-family="DejaVu Sans" font-size="13.00">Optimierungsdienst: warum die Antwort 202 lautet, nicht 200</text>
<!-- klient -->
<g id="node1" class="node">
<title>klient</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M237.91,-520.54C237.91,-520.54 129.38,-520.54 129.38,-520.54 123.38,-520.54 117.37,-514.54 117.37,-508.54 117.37,-508.54 117.37,-494.08 117.37,-494.08 117.37,-488.08 123.37,-482.08 129.38,-482.08 129.38,-482.08 237.91,-482.08 237.91,-482.08 243.91,-482.08 249.91,-488.08 249.91,-494.08 249.91,-494.08 249.91,-508.54 249.91,-508.54 249.91,-514.54 243.91,-520.54 237.91,-520.54"/>
<text xml:space="preserve" text-anchor="middle" x="183.64" y="-504.56" font-family="DejaVu Sans" font-size="10.00">Aufrufer</text>
<text xml:space="preserve" text-anchor="middle" x="183.64" y="-491.81" font-family="DejaVu Sans" font-size="10.00">(curl, Fachanwendung)</text>
</g>
<!-- post -->
<g id="node2" class="node">
<title>post</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M394.04,-445.08C394.04,-445.08 283.25,-445.08 283.25,-445.08 277.25,-445.08 271.25,-439.08 271.25,-433.08 271.25,-433.08 271.25,-418.62 271.25,-418.62 271.25,-412.62 277.25,-406.62 283.25,-406.62 283.25,-406.62 394.04,-406.62 394.04,-406.62 400.04,-406.62 406.04,-412.62 406.04,-418.62 406.04,-418.62 406.04,-433.08 406.04,-433.08 406.04,-439.08 400.04,-445.08 394.04,-445.08"/>
<text xml:space="preserve" text-anchor="middle" x="338.64" y="-429.1" font-family="DejaVu Sans" font-size="10.00">POST /plaene</text>
<text xml:space="preserve" text-anchor="middle" x="338.64" y="-416.35" font-family="DejaVu Sans" font-size="10.00">JSON mit dem Problem</text>
</g>
<!-- klient&#45;&gt;post -->
<g id="edge1" class="edge">
<title>klient&#45;&gt;post</title>
<path fill="none" stroke="#5c6380" d="M223.96,-481.2C243.53,-471.93 267.24,-460.69 288.02,-450.85"/>
<polygon fill="#5c6380" stroke="#5c6380" points="289.35,-454.08 296.89,-446.64 286.35,-447.76 289.35,-454.08"/>
</g>
<!-- get -->
<g id="node7" class="node">
<title>get</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M157.29,-44.75C157.29,-44.75 12,-44.75 12,-44.75 6,-44.75 0,-38.75 0,-32.75 0,-32.75 0,-18.28 0,-18.28 0,-12.28 6,-6.29 12,-6.29 12,-6.29 157.29,-6.29 157.29,-6.29 163.29,-6.29 169.29,-12.29 169.29,-18.29 169.29,-18.29 169.29,-32.75 169.29,-32.75 169.29,-38.75 163.29,-44.75 157.29,-44.75"/>
<text xml:space="preserve" text-anchor="middle" x="84.64" y="-28.77" font-family="DejaVu Sans" font-size="10.00">GET /plaene/{id}</text>
<text xml:space="preserve" text-anchor="middle" x="84.64" y="-16.02" font-family="DejaVu Sans" font-size="10.00">laeuft · fertig · fehlgeschlagen</text>
</g>
<!-- klient&#45;&gt;get -->
<g id="edge7" class="edge">
<title>klient&#45;&gt;get</title>
<path fill="none" stroke="#5c6380" d="M157.63,-481.2C128,-459.44 83.64,-426.85 83.64,-426.85 83.64,-426.85 83.64,-426.85 83.64,-116.51 83.64,-116.51 84.02,-83.05 84.31,-56.94"/>
<polygon fill="#5c6380" stroke="#5c6380" points="87.8,-57.15 84.42,-47.11 80.81,-57.07 87.8,-57.15"/>
<text xml:space="preserve" text-anchor="middle" x="107.27" y="-255.9" font-family="DejaVu Sans" font-size="9.00">fragt nach</text>
</g>
<!-- gesund -->
<g id="node8" class="node">
<title>gesund</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M233.79,-445.08C233.79,-445.08 133.5,-445.08 133.5,-445.08 127.5,-445.08 121.5,-439.08 121.5,-433.08 121.5,-433.08 121.5,-418.62 121.5,-418.62 121.5,-412.62 127.5,-406.62 133.5,-406.62 133.5,-406.62 233.79,-406.62 233.79,-406.62 239.79,-406.62 245.79,-412.62 245.79,-418.62 245.79,-418.62 245.79,-433.08 245.79,-433.08 245.79,-439.08 239.79,-445.08 233.79,-445.08"/>
<text xml:space="preserve" text-anchor="middle" x="183.64" y="-429.1" font-family="DejaVu Sans" font-size="10.00">GET /gesundheit</text>
<text xml:space="preserve" text-anchor="middle" x="183.64" y="-416.35" font-family="DejaVu Sans" font-size="10.00">für die Überwachung</text>
</g>
<!-- klient&#45;&gt;gesund -->
<g id="edge9" class="edge">
<title>klient&#45;&gt;gesund</title>
<path fill="none" stroke="#5c6380" stroke-dasharray="1,5" d="M183.64,-481.39C183.64,-474.08 183.64,-465.53 183.64,-457.39"/>
<polygon fill="#5c6380" stroke="#5c6380" points="187.15,-457.47 183.65,-447.47 180.15,-457.47 187.15,-457.47"/>
</g>
<!-- valid -->
<g id="node3" class="node">
<title>valid</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M317.6,-354.68C317.6,-354.68 249.15,-325.6 249.15,-325.6 243.63,-323.26 243.63,-318.56 249.15,-316.22 249.15,-316.22 317.6,-287.14 317.6,-287.14 323.12,-284.8 334.17,-284.8 339.69,-287.14 339.69,-287.14 408.14,-316.22 408.14,-316.22 413.66,-318.56 413.66,-323.26 408.14,-325.6 408.14,-325.6 339.69,-354.68 339.69,-354.68 334.17,-357.02 323.12,-357.02 317.6,-354.68"/>
<text xml:space="preserve" text-anchor="middle" x="328.64" y="-324.16" font-family="DejaVu Sans" font-size="10.00">Pydantic prüft</text>
<text xml:space="preserve" text-anchor="middle" x="328.64" y="-311.41" font-family="DejaVu Sans" font-size="10.00">die Eingabe</text>
</g>
<!-- post&#45;&gt;valid -->
<g id="edge2" class="edge">
<title>post&#45;&gt;valid</title>
<path fill="none" stroke="#5c6380" d="M336.81,-405.97C335.82,-395.73 334.54,-382.58 333.29,-369.73"/>
<polygon fill="#5c6380" stroke="#5c6380" points="336.81,-369.71 332.35,-360.1 329.84,-370.39 336.81,-369.71"/>
</g>
<!-- fehler -->
<g id="node4" class="node">
<title>fehler</title>
<path fill="#fffbeb" stroke="#b45309" stroke-width="2" d="M247.29,-235.2C247.29,-235.2 144,-235.2 144,-235.2 138,-235.2 132,-229.2 132,-223.2 132,-223.2 132,-195.99 132,-195.99 132,-189.99 138,-183.99 144,-183.99 144,-183.99 247.29,-183.99 247.29,-183.99 253.29,-183.99 259.29,-189.99 259.29,-195.99 259.29,-195.99 259.29,-223.2 259.29,-223.2 259.29,-229.2 253.29,-235.2 247.29,-235.2"/>
<text xml:space="preserve" text-anchor="middle" x="195.64" y="-219.22" font-family="DejaVu Sans" font-size="10.00">422</text>
<text xml:space="preserve" text-anchor="middle" x="195.64" y="-206.47" font-family="DejaVu Sans" font-size="10.00">Fehler benannt,</text>
<text xml:space="preserve" text-anchor="middle" x="195.64" y="-193.72" font-family="DejaVu Sans" font-size="10.00">bevor ein Solver läuft</text>
</g>
<!-- valid&#45;&gt;fehler -->
<g id="edge3" class="edge">
<title>valid&#45;&gt;fehler</title>
<path fill="none" stroke="#5c6380" d="M297.8,-294.56C279.3,-279.35 255.57,-259.85 235.64,-243.47"/>
<polygon fill="#5c6380" stroke="#5c6380" points="237.9,-240.8 227.95,-237.15 233.46,-246.2 237.9,-240.8"/>
<text xml:space="preserve" text-anchor="middle" x="277.28" y="-255.9" font-family="DejaVu Sans" font-size="9.00">ungültig</text>
</g>
<!-- an -->
<g id="node5" class="node">
<title>an</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M361.16,-228.83C361.16,-228.83 296.12,-228.83 296.12,-228.83 290.12,-228.83 284.12,-222.83 284.12,-216.83 284.12,-216.83 284.12,-202.37 284.12,-202.37 284.12,-196.37 290.12,-190.37 296.12,-190.37 296.12,-190.37 361.16,-190.37 361.16,-190.37 367.16,-190.37 373.16,-196.37 373.16,-202.37 373.16,-202.37 373.16,-216.83 373.16,-216.83 373.16,-222.83 367.16,-228.83 361.16,-228.83"/>
<text xml:space="preserve" text-anchor="middle" x="328.64" y="-212.85" font-family="DejaVu Sans" font-size="10.00">202 Accepted</text>
<text xml:space="preserve" text-anchor="middle" x="328.64" y="-200.1" font-family="DejaVu Sans" font-size="10.00">+ Auftrags&#45;ID</text>
</g>
<!-- valid&#45;&gt;an -->
<g id="edge4" class="edge">
<title>valid&#45;&gt;an</title>
<path fill="none" stroke="#5c6380" d="M328.64,-281.37C328.64,-268.14 328.64,-253.53 328.64,-241.03"/>
<polygon fill="#5c6380" stroke="#5c6380" points="332.15,-241.33 328.65,-231.33 325.15,-241.33 332.15,-241.33"/>
<text xml:space="preserve" text-anchor="middle" x="341.77" y="-255.9" font-family="DejaVu Sans" font-size="9.00">gültig</text>
</g>
<!-- an&#45;&gt;klient -->
<g id="edge6" class="edge">
<title>an&#45;&gt;klient</title>
<path fill="none" stroke="#5c6380" stroke-dasharray="5,2" d="M355.98,-229.66C386.49,-250.95 431.64,-282.45 431.64,-282.45 431.64,-282.45 431.64,-359.37 431.64,-359.37 431.64,-359.37 418.64,-445.08 418.64,-445.08 418.64,-445.08 329.88,-465.94 261.46,-482.02"/>
<polygon fill="#5c6380" stroke="#5c6380" points="261.08,-478.52 252.15,-484.21 262.68,-485.33 261.08,-478.52"/>
<text xml:space="preserve" text-anchor="middle" x="458.46" y="-380.07" font-family="DejaVu Sans" font-size="9.00">sofort zurück</text>
</g>
<!-- rechne -->
<g id="node6" class="node">
<title>rechne</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M368.54,-136.74C368.54,-136.74 266.75,-136.74 266.75,-136.74 260.75,-136.74 254.75,-130.74 254.75,-124.74 254.75,-124.74 254.75,-110.28 254.75,-110.28 254.75,-104.28 260.75,-98.28 266.75,-98.28 266.75,-98.28 368.54,-98.28 368.54,-98.28 374.54,-98.28 380.54,-104.28 380.54,-110.28 380.54,-110.28 380.54,-124.74 380.54,-124.74 380.54,-130.74 374.54,-136.74 368.54,-136.74"/>
<text xml:space="preserve" text-anchor="middle" x="317.64" y="-120.76" font-family="DejaVu Sans" font-size="10.00">Hintergrundrechnung</text>
<text xml:space="preserve" text-anchor="middle" x="317.64" y="-108.01" font-family="DejaVu Sans" font-size="10.00">rechne() → or_kern</text>
</g>
<!-- an&#45;&gt;rechne -->
<g id="edge5" class="edge">
<title>an&#45;&gt;rechne</title>
<path fill="none" stroke="#5c6380" d="M326.31,-189.49C324.87,-177.67 322.98,-162.22 321.34,-148.76"/>
<polygon fill="#5c6380" stroke="#5c6380" points="324.84,-148.59 320.16,-139.09 317.9,-149.44 324.84,-148.59"/>
<text xml:space="preserve" text-anchor="middle" x="338.14" y="-157.44" font-family="DejaVu Sans" font-size="9.00">startet</text>
</g>
<!-- rechne&#45;&gt;get -->
<g id="edge8" class="edge">
<title>rechne&#45;&gt;get</title>
<path fill="none" stroke="#5c6380" stroke-dasharray="5,2" d="M258.5,-97.33C231.69,-88.64 205.89,-80.28 205.89,-80.28 205.89,-80.28 170.63,-64.64 138.14,-50.24"/>
<polygon fill="#5c6380" stroke="#5c6380" points="139.68,-47.09 129.12,-46.24 136.84,-53.49 139.68,-47.09"/>
<text xml:space="preserve" text-anchor="middle" x="258.77" y="-71.73" font-family="DejaVu Sans" font-size="9.00">hinterlegt das Ergebnis</text>
</g>
<!-- regel -->
<g id="node9" class="node">
<title>regel</title>
<polygon fill="#f8fafc" stroke="#94a3b8" points="434.48,-51.03 194.81,-51.03 194.81,0 440.48,0 440.48,-45.03 434.48,-51.03"/>
<polyline fill="none" stroke="#94a3b8" points="434.48,-51.03 434.48,-45.03"/>
<polyline fill="none" stroke="#94a3b8" points="440.48,-45.03 434.48,-45.03"/>
<text xml:space="preserve" text-anchor="start" x="207.77" y="-33.84" font-family="DejaVu Sans" font-size="9.00">Eine Optimierung dauert Sekunden bis Minuten.</text>
<text xml:space="preserve" text-anchor="start" x="207.77" y="-22.59" font-family="DejaVu Sans" font-size="9.00">Synchron beantwortet, blockiert sie den Dienst</text>
<text xml:space="preserve" text-anchor="start" x="207.77" y="-11.34" font-family="DejaVu Sans" font-size="9.00">und läuft in jedes Gateway&#45;Timeout.</text>
</g>
<!-- rechne&#45;&gt;regel -->
<g id="edge10" class="edge">
<title>rechne&#45;&gt;regel</title>
<path fill="none" stroke="#94a3b8" stroke-dasharray="5,2" d="M317.64,-97.42C317.64,-84.01 317.64,-65.93 317.64,-51.39"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View file

@ -0,0 +1,163 @@
<?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="740pt" height="532pt"
viewBox="0.00 0.00 740.00 532.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 527.75)">
<text xml:space="preserve" text-anchor="middle" x="365.89" y="-507.4" font-family="DejaVu Sans" font-size="13.00">Welches Werkzeug passt zu meinem Problem? (Teil II)</text>
<!-- f1 -->
<g id="node1" class="node">
<title>f1</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="538.52,-499.25 434,-470.87 538.52,-442.49 643.04,-470.87 538.52,-499.25"/>
<text xml:space="preserve" text-anchor="middle" x="538.52" y="-474.12" font-family="DejaVu Sans" font-size="10.00">Fahrzeuge, Depots,</text>
<text xml:space="preserve" text-anchor="middle" x="538.52" y="-461.37" font-family="DejaVu Sans" font-size="10.00">Zeitfenster?</text>
</g>
<!-- f2 -->
<g id="node2" class="node">
<title>f2</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="422.52,-399.24 270.75,-370.86 422.52,-342.48 574.29,-370.86 422.52,-399.24"/>
<text xml:space="preserve" text-anchor="middle" x="422.52" y="-374.11" font-family="DejaVu Sans" font-size="10.00">Ja/Nein&#45;Entscheidungen,</text>
<text xml:space="preserve" text-anchor="middle" x="422.52" y="-361.36" font-family="DejaVu Sans" font-size="10.00">Zuordnungen, Reihenfolgen?</text>
</g>
<!-- f1&#45;&gt;f2 -->
<g id="edge2" class="edge">
<title>f1&#45;&gt;f2</title>
<path fill="none" stroke="#5c6380" d="M513.35,-448.6C497.2,-434.96 475.99,-417.04 458.13,-401.95"/>
<polygon fill="#5c6380" stroke="#5c6380" points="460.72,-399.55 450.82,-395.77 456.2,-404.9 460.72,-399.55"/>
<text xml:space="preserve" text-anchor="middle" x="493.75" y="-417.94" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
<!-- routing -->
<g id="node6" class="node">
<title>routing</title>
<path fill="#fffbeb" stroke="#b45309" stroke-width="2" d="M696.16,-390.09C696.16,-390.09 610.88,-390.09 610.88,-390.09 604.88,-390.09 598.88,-384.09 598.88,-378.09 598.88,-378.09 598.88,-363.63 598.88,-363.63 598.88,-357.63 604.88,-351.63 610.88,-351.63 610.88,-351.63 696.16,-351.63 696.16,-351.63 702.16,-351.63 708.16,-357.63 708.16,-363.63 708.16,-363.63 708.16,-378.09 708.16,-378.09 708.16,-384.09 702.16,-390.09 696.16,-390.09"/>
<text xml:space="preserve" text-anchor="middle" x="653.52" y="-374.11" font-family="DejaVu Sans" font-size="10.00">OR&#45;Tools Routing</text>
<text xml:space="preserve" text-anchor="middle" x="653.52" y="-361.36" font-family="DejaVu Sans" font-size="10.00">(Kapitel Graphen)</text>
</g>
<!-- f1&#45;&gt;routing -->
<g id="edge1" class="edge">
<title>f1&#45;&gt;routing</title>
<path fill="none" stroke="#5c6380" d="M563.47,-448.6C580.84,-433.8 604.13,-413.96 622.66,-398.16"/>
<polygon fill="#5c6380" stroke="#5c6380" points="624.84,-400.9 630.18,-391.75 620.3,-395.57 624.84,-400.9"/>
<text xml:space="preserve" text-anchor="middle" x="603.22" y="-417.94" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- f3 -->
<g id="node3" class="node">
<title>f3</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="264.52,-286.48 122.5,-258.1 264.52,-229.72 406.54,-258.1 264.52,-286.48"/>
<text xml:space="preserve" text-anchor="middle" x="264.52" y="-261.35" font-family="DejaVu Sans" font-size="10.00">Zielfunktion und alle</text>
<text xml:space="preserve" text-anchor="middle" x="264.52" y="-248.6" font-family="DejaVu Sans" font-size="10.00">Nebenbedingungen linear?</text>
</g>
<!-- f2&#45;&gt;f3 -->
<g id="edge4" class="edge">
<title>f2&#45;&gt;f3</title>
<path fill="none" stroke="#5c6380" d="M390.93,-347.71C366.19,-330.38 331.63,-306.14 304.89,-287.4"/>
<polygon fill="#5c6380" stroke="#5c6380" points="307.23,-284.76 297.03,-281.89 303.21,-290.5 307.23,-284.76"/>
<text xml:space="preserve" text-anchor="middle" x="367.42" y="-317.93" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
<!-- f4 -->
<g id="node4" class="node">
<title>f4</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="581.52,-299.23 431.25,-258.1 581.52,-216.97 731.79,-258.1 581.52,-299.23"/>
<text xml:space="preserve" text-anchor="middle" x="581.52" y="-267.73" font-family="DejaVu Sans" font-size="10.00">Logische Regeln</text>
<text xml:space="preserve" text-anchor="middle" x="581.52" y="-254.98" font-family="DejaVu Sans" font-size="10.00">(wenn&#45;dann, entweder&#45;oder)</text>
<text xml:space="preserve" text-anchor="middle" x="581.52" y="-242.23" font-family="DejaVu Sans" font-size="10.00">oder Zeitplanung?</text>
</g>
<!-- f2&#45;&gt;f4 -->
<g id="edge3" class="edge">
<title>f2&#45;&gt;f4</title>
<path fill="none" stroke="#5c6380" d="M454.31,-347.71C476.01,-332.6 505.23,-312.24 530.19,-294.85"/>
<polygon fill="#5c6380" stroke="#5c6380" points="532.08,-297.8 538.29,-289.22 528.08,-292.06 532.08,-297.8"/>
<text xml:space="preserve" text-anchor="middle" x="501" y="-317.93" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- f5 -->
<g id="node5" class="node">
<title>f5</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="134.52,-151.22 0,-122.84 134.52,-94.46 269.04,-122.84 134.52,-151.22"/>
<text xml:space="preserve" text-anchor="middle" x="134.52" y="-126.09" font-family="DejaVu Sans" font-size="10.00">Nur Fluss oder</text>
<text xml:space="preserve" text-anchor="middle" x="134.52" y="-113.34" font-family="DejaVu Sans" font-size="10.00">Zuordnung im Netzwerk?</text>
</g>
<!-- f3&#45;&gt;f5 -->
<g id="edge7" class="edge">
<title>f3&#45;&gt;f5</title>
<path fill="none" stroke="#5c6380" d="M241.58,-233.58C220.32,-211.79 188.55,-179.22 165.14,-155.22"/>
<polygon fill="#5c6380" stroke="#5c6380" points="167.78,-152.92 158.29,-148.21 162.77,-157.81 167.78,-152.92"/>
<text xml:space="preserve" text-anchor="middle" x="211.05" y="-181.17" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- teil3 -->
<g id="node11" class="node">
<title>teil3</title>
<path fill="#fffbeb" stroke="#b45309" stroke-width="2" d="M379.16,-140.84C379.16,-140.84 305.88,-140.84 305.88,-140.84 299.88,-140.84 293.88,-134.84 293.88,-128.84 293.88,-128.84 293.88,-116.84 293.88,-116.84 293.88,-110.84 299.88,-104.84 305.88,-104.84 305.88,-104.84 379.16,-104.84 379.16,-104.84 385.16,-104.84 391.16,-110.84 391.16,-116.84 391.16,-116.84 391.16,-128.84 391.16,-128.84 391.16,-134.84 385.16,-140.84 379.16,-140.84"/>
<text xml:space="preserve" text-anchor="middle" x="342.52" y="-119.72" font-family="DejaVu Sans" font-size="10.00">weiter in Teil III</text>
</g>
<!-- f3&#45;&gt;teil3 -->
<g id="edge8" class="edge">
<title>f3&#45;&gt;teil3</title>
<path fill="none" stroke="#5c6380" d="M279.19,-232.03C292.65,-209.05 312.53,-175.07 326.42,-151.35"/>
<polygon fill="#5c6380" stroke="#5c6380" points="329.36,-153.26 331.39,-142.86 323.31,-149.72 329.36,-153.26"/>
<text xml:space="preserve" text-anchor="middle" x="324.81" y="-181.17" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
<!-- cpsat -->
<g id="node7" class="node">
<title>cpsat</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M532.16,-142.07C532.16,-142.07 452.88,-142.07 452.88,-142.07 446.88,-142.07 440.88,-136.07 440.88,-130.07 440.88,-130.07 440.88,-115.61 440.88,-115.61 440.88,-109.61 446.88,-103.61 452.88,-103.61 452.88,-103.61 532.16,-103.61 532.16,-103.61 538.16,-103.61 544.16,-109.61 544.16,-115.61 544.16,-115.61 544.16,-130.07 544.16,-130.07 544.16,-136.07 538.16,-142.07 532.16,-142.07"/>
<text xml:space="preserve" text-anchor="middle" x="492.52" y="-126.09" font-family="DejaVu Sans" font-size="10.00">CP&#45;SAT</text>
<text xml:space="preserve" text-anchor="middle" x="492.52" y="-113.34" font-family="DejaVu Sans" font-size="10.00">(Kapitel CP&#45;SAT)</text>
</g>
<!-- f4&#45;&gt;cpsat -->
<g id="edge5" class="edge">
<title>f4&#45;&gt;cpsat</title>
<path fill="none" stroke="#5c6380" d="M558.6,-222.78C543.99,-200.91 525.3,-172.91 511.52,-152.29"/>
<polygon fill="#5c6380" stroke="#5c6380" points="514.5,-150.44 506.03,-144.07 508.67,-154.33 514.5,-150.44"/>
<text xml:space="preserve" text-anchor="middle" x="546.1" y="-181.17" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- milp -->
<g id="node8" class="node">
<title>milp</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M685.54,-142.07C685.54,-142.07 581.5,-142.07 581.5,-142.07 575.5,-142.07 569.5,-136.07 569.5,-130.07 569.5,-130.07 569.5,-115.61 569.5,-115.61 569.5,-109.61 575.5,-103.61 581.5,-103.61 581.5,-103.61 685.54,-103.61 685.54,-103.61 691.54,-103.61 697.54,-109.61 697.54,-115.61 697.54,-115.61 697.54,-130.07 697.54,-130.07 697.54,-136.07 691.54,-142.07 685.54,-142.07"/>
<text xml:space="preserve" text-anchor="middle" x="633.52" y="-126.09" font-family="DejaVu Sans" font-size="10.00">MILP: HiGHS / CP&#45;SAT</text>
<text xml:space="preserve" text-anchor="middle" x="633.52" y="-113.34" font-family="DejaVu Sans" font-size="10.00">(Kapitel MILP)</text>
</g>
<!-- f4&#45;&gt;milp -->
<g id="edge6" class="edge">
<title>f4&#45;&gt;milp</title>
<path fill="none" stroke="#5c6380" d="M595.87,-220.33C604.1,-199.24 614.29,-173.11 622,-153.37"/>
<polygon fill="#5c6380" stroke="#5c6380" points="625.18,-154.85 625.55,-144.26 618.66,-152.3 625.18,-154.85"/>
<text xml:space="preserve" text-anchor="middle" x="642.97" y="-192.42" font-family="DejaVu Sans" font-size="9.00">nein</text>
<text xml:space="preserve" text-anchor="middle" x="642.97" y="-181.17" font-family="DejaVu Sans" font-size="9.00">(Fixkosten,</text>
<text xml:space="preserve" text-anchor="middle" x="642.97" y="-169.92" font-family="DejaVu Sans" font-size="9.00">Kardinalität)</text>
</g>
<!-- netz -->
<g id="node9" class="node">
<title>netz</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M116.29,-51.21C116.29,-51.21 16.75,-51.21 16.75,-51.21 10.75,-51.21 4.75,-45.21 4.75,-39.21 4.75,-39.21 4.75,-12 4.75,-12 4.75,-6 10.75,0 16.75,0 16.75,0 116.29,0 116.29,0 122.29,0 128.29,-6 128.29,-12 128.29,-12 128.29,-39.21 128.29,-39.21 128.29,-45.21 122.29,-51.21 116.29,-51.21"/>
<text xml:space="preserve" text-anchor="middle" x="66.52" y="-35.23" font-family="DejaVu Sans" font-size="10.00">Spezialalgorithmus:</text>
<text xml:space="preserve" text-anchor="middle" x="66.52" y="-22.48" font-family="DejaVu Sans" font-size="10.00">Min&#45;Cost&#45;Flow,</text>
<text xml:space="preserve" text-anchor="middle" x="66.52" y="-9.73" font-family="DejaVu Sans" font-size="10.00">Ungarische Methode</text>
</g>
<!-- f5&#45;&gt;netz -->
<g id="edge9" class="edge">
<title>f5&#45;&gt;netz</title>
<path fill="none" stroke="#5c6380" d="M117.36,-97.81C109.4,-86.66 99.78,-73.19 91.07,-60.99"/>
<polygon fill="#5c6380" stroke="#5c6380" points="94.16,-59.3 85.51,-53.19 88.47,-63.37 94.16,-59.3"/>
<text xml:space="preserve" text-anchor="middle" x="106.31" y="-69.91" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- lp -->
<g id="node10" class="node">
<title>lp</title>
<path fill="#eef2ff" stroke="#4338ca" stroke-width="2" d="M242.04,-51.21C242.04,-51.21 165,-51.21 165,-51.21 159,-51.21 153,-45.21 153,-39.21 153,-39.21 153,-12 153,-12 153,-6 159,0 165,0 165,0 242.04,0 242.04,0 248.04,0 254.04,-6 254.04,-12 254.04,-12 254.04,-39.21 254.04,-39.21 254.04,-45.21 248.04,-51.21 242.04,-51.21"/>
<text xml:space="preserve" text-anchor="middle" x="203.52" y="-35.23" font-family="DejaVu Sans" font-size="10.00">LP: scipy.linprog</text>
<text xml:space="preserve" text-anchor="middle" x="203.52" y="-22.48" font-family="DejaVu Sans" font-size="10.00">oder highspy</text>
<text xml:space="preserve" text-anchor="middle" x="203.52" y="-9.73" font-family="DejaVu Sans" font-size="10.00">(Kapitel LP)</text>
</g>
<!-- f5&#45;&gt;lp -->
<g id="edge10" class="edge">
<title>f5&#45;&gt;lp</title>
<path fill="none" stroke="#5c6380" d="M151.93,-97.81C160.01,-86.66 169.77,-73.19 178.61,-60.99"/>
<polygon fill="#5c6380" stroke="#5c6380" points="181.23,-63.34 184.26,-53.19 175.56,-59.23 181.23,-63.34"/>
<text xml:space="preserve" text-anchor="middle" x="182.9" y="-69.91" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View file

@ -0,0 +1,163 @@
<?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="990pt" height="408pt"
viewBox="0.00 0.00 990.00 408.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 403.74)">
<text xml:space="preserve" text-anchor="middle" x="490.89" y="-383.39" font-family="DejaVu Sans" font-size="13.00">Welches Werkzeug passt zu meinem Problem? (Teil III)</text>
<!-- g1 -->
<g id="node1" class="node">
<title>g1</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="510.89,-375.24 395.88,-346.86 510.89,-318.48 625.91,-346.86 510.89,-375.24"/>
<text xml:space="preserve" text-anchor="middle" x="510.89" y="-350.11" font-family="DejaVu Sans" font-size="10.00">Sind die Daten sicher</text>
<text xml:space="preserve" text-anchor="middle" x="510.89" y="-337.36" font-family="DejaVu Sans" font-size="10.00">bekannt?</text>
</g>
<!-- g2 -->
<g id="node2" class="node">
<title>g2</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="370.89,-275.23 259.62,-234.1 370.89,-192.97 482.16,-234.1 370.89,-275.23"/>
<text xml:space="preserve" text-anchor="middle" x="370.89" y="-243.72" font-family="DejaVu Sans" font-size="10.00">Entscheidung fällt in</text>
<text xml:space="preserve" text-anchor="middle" x="370.89" y="-230.97" font-family="DejaVu Sans" font-size="10.00">mehreren Stufen</text>
<text xml:space="preserve" text-anchor="middle" x="370.89" y="-218.22" font-family="DejaVu Sans" font-size="10.00">über die Zeit?</text>
</g>
<!-- g1&#45;&gt;g2 -->
<g id="edge2" class="edge">
<title>g1&#45;&gt;g2</title>
<path fill="none" stroke="#5c6380" d="M483.9,-324.5C464.33,-309.02 437.44,-287.74 414.8,-269.83"/>
<polygon fill="#5c6380" stroke="#5c6380" points="417.23,-267.3 407.22,-263.84 412.89,-272.79 417.23,-267.3"/>
<text xml:space="preserve" text-anchor="middle" x="463.18" y="-293.93" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
<!-- g4 -->
<g id="node4" class="node">
<title>g4</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="651.89,-275.23 506.88,-234.1 651.89,-192.97 796.91,-234.1 651.89,-275.23"/>
<text xml:space="preserve" text-anchor="middle" x="651.89" y="-243.72" font-family="DejaVu Sans" font-size="10.00">Zielfunktion konvex?</text>
<text xml:space="preserve" text-anchor="middle" x="651.89" y="-230.97" font-family="DejaVu Sans" font-size="10.00">(Quadrate, Normen,</text>
<text xml:space="preserve" text-anchor="middle" x="651.89" y="-218.22" font-family="DejaVu Sans" font-size="10.00">log/exp konvex kombiniert)</text>
</g>
<!-- g1&#45;&gt;g4 -->
<g id="edge1" class="edge">
<title>g1&#45;&gt;g4</title>
<path fill="none" stroke="#5c6380" d="M538.08,-324.5C556.93,-309.7 582.53,-289.59 604.67,-272.2"/>
<polygon fill="#5c6380" stroke="#5c6380" points="606.71,-275.05 612.41,-266.12 602.38,-269.54 606.71,-275.05"/>
<text xml:space="preserve" text-anchor="middle" x="580.92" y="-293.93" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- g3 -->
<g id="node3" class="node">
<title>g3</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="155.89,-149.72 40.88,-121.34 155.89,-92.96 270.91,-121.34 155.89,-149.72"/>
<text xml:space="preserve" text-anchor="middle" x="155.89" y="-124.59" font-family="DejaVu Sans" font-size="10.00">Wahrscheinlichkeiten</text>
<text xml:space="preserve" text-anchor="middle" x="155.89" y="-111.84" font-family="DejaVu Sans" font-size="10.00">bekannt?</text>
</g>
<!-- g2&#45;&gt;g3 -->
<g id="edge4" class="edge">
<title>g2&#45;&gt;g3</title>
<path fill="none" stroke="#5c6380" d="M324.77,-209.34C288.68,-190.75 238.71,-165 202.5,-146.35"/>
<polygon fill="#5c6380" stroke="#5c6380" points="204.51,-143.45 194.02,-141.98 201.3,-149.67 204.51,-143.45"/>
<text xml:space="preserve" text-anchor="middle" x="266.7" y="-168.42" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
<!-- dp -->
<g id="node6" class="node">
<title>dp</title>
<path fill="#fffbeb" stroke="#b45309" stroke-width="2" d="M452.16,-140.57C452.16,-140.57 307.62,-140.57 307.62,-140.57 301.62,-140.57 295.62,-134.57 295.62,-128.57 295.62,-128.57 295.62,-114.11 295.62,-114.11 295.62,-108.11 301.62,-102.11 307.62,-102.11 307.62,-102.11 452.16,-102.11 452.16,-102.11 458.16,-102.11 464.16,-108.11 464.16,-114.11 464.16,-114.11 464.16,-128.57 464.16,-128.57 464.16,-134.57 458.16,-140.57 452.16,-140.57"/>
<text xml:space="preserve" text-anchor="middle" x="379.89" y="-124.59" font-family="DejaVu Sans" font-size="10.00">Dynamische Programmierung</text>
<text xml:space="preserve" text-anchor="middle" x="379.89" y="-111.84" font-family="DejaVu Sans" font-size="10.00">(Bellman)</text>
</g>
<!-- g2&#45;&gt;dp -->
<g id="edge3" class="edge">
<title>g2&#45;&gt;dp</title>
<path fill="none" stroke="#5c6380" d="M374.12,-193.43C375.21,-179.97 376.41,-165.17 377.44,-152.57"/>
<polygon fill="#5c6380" stroke="#5c6380" points="380.91,-153.05 378.23,-142.8 373.93,-152.48 380.91,-153.05"/>
<text xml:space="preserve" text-anchor="middle" x="379.95" y="-168.42" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- stoch -->
<g id="node7" class="node">
<title>stoch</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M137.79,-38.46C137.79,-38.46 12,-38.46 12,-38.46 6,-38.46 0,-32.46 0,-26.46 0,-26.46 0,-12 0,-12 0,-6 6,0 12,0 12,0 137.79,0 137.79,0 143.79,0 149.79,-6 149.79,-12 149.79,-12 149.79,-26.46 149.79,-26.46 149.79,-32.46 143.79,-38.46 137.79,-38.46"/>
<text xml:space="preserve" text-anchor="middle" x="74.89" y="-22.48" font-family="DejaVu Sans" font-size="10.00">Zweistufige stochastische</text>
<text xml:space="preserve" text-anchor="middle" x="74.89" y="-9.73" font-family="DejaVu Sans" font-size="10.00">Optimierung, Szenarien</text>
</g>
<!-- g3&#45;&gt;stoch -->
<g id="edge5" class="edge">
<title>g3&#45;&gt;stoch</title>
<path fill="none" stroke="#5c6380" d="M136.9,-96.87C125.02,-82.18 109.66,-63.19 97.2,-47.79"/>
<polygon fill="#5c6380" stroke="#5c6380" points="100.21,-45.95 91.2,-40.38 94.76,-50.35 100.21,-45.95"/>
<text xml:space="preserve" text-anchor="middle" x="123.99" y="-62.79" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- robust -->
<g id="node8" class="node">
<title>robust</title>
<path fill="#f5f3ff" stroke="#7c3aed" stroke-width="2" d="M289.16,-38.46C289.16,-38.46 186.62,-38.46 186.62,-38.46 180.62,-38.46 174.62,-32.46 174.62,-26.46 174.62,-26.46 174.62,-12 174.62,-12 174.62,-6 180.62,0 186.62,0 186.62,0 289.16,0 289.16,0 295.16,0 301.16,-6 301.16,-12 301.16,-12 301.16,-26.46 301.16,-26.46 301.16,-32.46 295.16,-38.46 289.16,-38.46"/>
<text xml:space="preserve" text-anchor="middle" x="237.89" y="-22.48" font-family="DejaVu Sans" font-size="10.00">Robuste Optimierung</text>
<text xml:space="preserve" text-anchor="middle" x="237.89" y="-9.73" font-family="DejaVu Sans" font-size="10.00">(Worst Case)</text>
</g>
<!-- g3&#45;&gt;robust -->
<g id="edge6" class="edge">
<title>g3&#45;&gt;robust</title>
<path fill="none" stroke="#5c6380" d="M174.91,-97.12C186.94,-82.44 202.54,-63.39 215.21,-47.93"/>
<polygon fill="#5c6380" stroke="#5c6380" points="217.69,-50.42 221.32,-40.47 212.28,-45.98 217.69,-50.42"/>
<text xml:space="preserve" text-anchor="middle" x="246.16" y="-68.41" font-family="DejaVu Sans" font-size="9.00">nein,</text>
<text xml:space="preserve" text-anchor="middle" x="246.16" y="-57.16" font-family="DejaVu Sans" font-size="9.00">nur Bandbreiten</text>
</g>
<!-- g5 -->
<g id="node5" class="node">
<title>g5</title>
<polygon fill="#eef2ff" stroke="#4338ca" stroke-width="1.6" points="646.89,-149.72 492.88,-121.34 646.89,-92.96 800.91,-121.34 646.89,-149.72"/>
<text xml:space="preserve" text-anchor="middle" x="646.89" y="-124.59" font-family="DejaVu Sans" font-size="10.00">Quadratisch mit</text>
<text xml:space="preserve" text-anchor="middle" x="646.89" y="-111.84" font-family="DejaVu Sans" font-size="10.00">linearen Nebenbedingungen?</text>
</g>
<!-- g4&#45;&gt;g5 -->
<g id="edge7" class="edge">
<title>g4&#45;&gt;g5</title>
<path fill="none" stroke="#5c6380" d="M650.08,-192.8C649.61,-182.57 649.12,-171.61 648.66,-161.44"/>
<polygon fill="#5c6380" stroke="#5c6380" points="652.16,-161.32 648.21,-151.48 645.17,-161.63 652.16,-161.32"/>
<text xml:space="preserve" text-anchor="middle" x="653" y="-168.42" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- nichtkonvex -->
<g id="node11" class="node">
<title>nichtkonvex</title>
<path fill="#fffbeb" stroke="#b45309" stroke-width="2" d="M969.79,-146.94C969.79,-146.94 838,-146.94 838,-146.94 832,-146.94 826,-140.94 826,-134.94 826,-134.94 826,-107.73 826,-107.73 826,-101.73 832,-95.73 838,-95.73 838,-95.73 969.79,-95.73 969.79,-95.73 975.79,-95.73 981.79,-101.73 981.79,-107.73 981.79,-107.73 981.79,-134.94 981.79,-134.94 981.79,-140.94 975.79,-146.94 969.79,-146.94"/>
<text xml:space="preserve" text-anchor="middle" x="903.89" y="-130.97" font-family="DejaVu Sans" font-size="10.00">scipy.optimize.minimize</text>
<text xml:space="preserve" text-anchor="middle" x="903.89" y="-118.22" font-family="DejaVu Sans" font-size="10.00">mit mehreren Startpunkten</text>
<text xml:space="preserve" text-anchor="middle" x="903.89" y="-105.47" font-family="DejaVu Sans" font-size="10.00">— nur lokales Optimum!</text>
</g>
<!-- g4&#45;&gt;nichtkonvex -->
<g id="edge8" class="edge">
<title>g4&#45;&gt;nichtkonvex</title>
<path fill="none" stroke="#5c6380" d="M708.45,-208.24C746.01,-191.73 795.56,-169.96 835.36,-152.46"/>
<polygon fill="#5c6380" stroke="#5c6380" points="836.65,-155.72 844.4,-148.49 833.83,-149.31 836.65,-155.72"/>
<text xml:space="preserve" text-anchor="middle" x="810.22" y="-168.42" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
<!-- qp -->
<g id="node9" class="node">
<title>qp</title>
<path fill="#ecfeff" stroke="#0891b2" stroke-width="2" d="M611.91,-38.46C611.91,-38.46 531.88,-38.46 531.88,-38.46 525.88,-38.46 519.88,-32.46 519.88,-26.46 519.88,-26.46 519.88,-12 519.88,-12 519.88,-6 525.88,0 531.88,0 531.88,0 611.91,0 611.91,0 617.91,0 623.91,-6 623.91,-12 623.91,-12 623.91,-26.46 623.91,-26.46 623.91,-32.46 617.91,-38.46 611.91,-38.46"/>
<text xml:space="preserve" text-anchor="middle" x="571.89" y="-22.48" font-family="DejaVu Sans" font-size="10.00">QP über CVXPY</text>
<text xml:space="preserve" text-anchor="middle" x="571.89" y="-9.73" font-family="DejaVu Sans" font-size="10.00">(OSQP, Clarabel)</text>
</g>
<!-- g5&#45;&gt;qp -->
<g id="edge9" class="edge">
<title>g5&#45;&gt;qp</title>
<path fill="none" stroke="#5c6380" d="M628.36,-95.59C617.68,-81.34 604.22,-63.38 593.13,-48.57"/>
<polygon fill="#5c6380" stroke="#5c6380" points="595.93,-46.47 587.13,-40.57 590.33,-50.67 595.93,-46.47"/>
<text xml:space="preserve" text-anchor="middle" x="617.64" y="-62.79" font-family="DejaVu Sans" font-size="9.00">ja</text>
</g>
<!-- konvex -->
<g id="node10" class="node">
<title>konvex</title>
<path fill="#ecfdf5" stroke="#059669" stroke-width="2" d="M782.91,-38.46C782.91,-38.46 660.88,-38.46 660.88,-38.46 654.88,-38.46 648.88,-32.46 648.88,-26.46 648.88,-26.46 648.88,-12 648.88,-12 648.88,-6 654.88,0 660.88,0 660.88,0 782.91,0 782.91,0 788.91,0 794.91,-6 794.91,-12 794.91,-12 794.91,-26.46 794.91,-26.46 794.91,-32.46 788.91,-38.46 782.91,-38.46"/>
<text xml:space="preserve" text-anchor="middle" x="721.89" y="-22.48" font-family="DejaVu Sans" font-size="10.00">CVXPY</text>
<text xml:space="preserve" text-anchor="middle" x="721.89" y="-9.73" font-family="DejaVu Sans" font-size="10.00">— prüft Konvexität selbst</text>
</g>
<!-- g5&#45;&gt;konvex -->
<g id="edge10" class="edge">
<title>g5&#45;&gt;konvex</title>
<path fill="none" stroke="#5c6380" d="M665.43,-95.59C676.11,-81.34 689.57,-63.38 700.66,-48.57"/>
<polygon fill="#5c6380" stroke="#5c6380" points="703.46,-50.67 706.66,-40.57 697.86,-46.47 703.46,-50.67"/>
<text xml:space="preserve" text-anchor="middle" x="705.25" y="-62.79" font-family="DejaVu Sans" font-size="9.00">nein</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 98 KiB