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>
163 lines
12 KiB
XML
163 lines
12 KiB
XML
<?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-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->f2 -->
|
|
<g id="edge2" class="edge">
|
|
<title>f1->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-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->routing -->
|
|
<g id="edge1" class="edge">
|
|
<title>f1->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->f3 -->
|
|
<g id="edge4" class="edge">
|
|
<title>f2->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-dann, entweder-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->f4 -->
|
|
<g id="edge3" class="edge">
|
|
<title>f2->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->f5 -->
|
|
<g id="edge7" class="edge">
|
|
<title>f3->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->teil3 -->
|
|
<g id="edge8" class="edge">
|
|
<title>f3->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-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-SAT)</text>
|
|
</g>
|
|
<!-- f4->cpsat -->
|
|
<g id="edge5" class="edge">
|
|
<title>f4->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-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->milp -->
|
|
<g id="edge6" class="edge">
|
|
<title>f4->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-Cost-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->netz -->
|
|
<g id="edge9" class="edge">
|
|
<title>f5->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->lp -->
|
|
<g id="edge10" class="edge">
|
|
<title>f5->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>
|