Glossar-Links: Fachbegriffe im Fließtext automatisch verlinken

Auto-Linking im Build: Glossar-Begriffe werden im Fließtext automatisch
erkannt und als Link auf den Glossar-Eintrag gesetzt — erste Nennung je
Begriff je Datei, dezent gestrichelte Unterstreichung im HTML, hyperref
im PDF. Kein manuelles Markieren bei Textänderungen nötig.

Neue Infrastruktur:
- glossar_eintraege_04.py: glossar_slug() + LINK_TEXTE-Map (automatisch
  generiert aus EINTRAEGEN + Abkürzungs-Extraktion)
- erzeuge_glossar_04.py: jeder Eintrag bekommt {#gloss:<slug>}-Anchor
- build_version_04.py: resolve_glossar() — Auto-Linking + {gl:}-Marke
- web_04/site.css: .glossar-link (dezent, nicht wie Navigationslink)

5 neue Glossar-Einträge (waren als Begriff im Text, aber nicht im Glossar):
Solver, Scheduling, Graphen, Backtest, DCP (Disciplined Convex Programming)

Schutzmechanismen:
- Code-Blöcke, Inline-Code, {idx:}/{ref:}-Marken, Markdown-Links und
  Überschriften werden nicht verlinkt
- Verschachtelung verhindert: 'CP-SAT-Solver' als Ganzes, nicht 'CP'+[
  -'SAT'+[-'Solver'
- 'OR' als 2-Zeichen-Abkürzung nicht auto-verlinkt (False Positive in
  'OR-Tools'); {gl:OR} als manuelle Marke
- Glossar selbst nicht auto-verlinkt (sonst Self-Links)
- reflow_markdown(): ::: als Block-Grenze (sonst kollabiert fenced div)

619 Glossar-Links im Gesamtdokument, 239 Anchor im Glossar, 34 im Vorwort.
This commit is contained in:
dschlueter 2026-09-10 17:40:29 +02:00
commit e8abb66d75
52 changed files with 4316 additions and 1921 deletions

View file

@ -175,8 +175,8 @@
</blockquote>
<p><strong>Ausgangslage.</strong> Morgens um 7:15 Uhr meldet sich die dritte Lehrkraft krank. Die stellvertretende Schulleitung hat 20 Minuten, um einen Vertretungsplan zu erstellen, der Qualifikationen, Arbeitszeiten, bereits geleistete Vertretungen und persönliche Wünsche berücksichtigt.</p>
<p><strong>Daten.</strong> Stundenplan (CSV: Klasse, Tag, Stunde, Fach, Lehrkraft, Raum) — in diesem Projektordner erzeugen die Skripte <code>stundenplan*.py</code> genau solche Dateien und eignen sich als Datenquelle. Zusätzlich: Qualifikationsmatrix, Deputate, Abwesenheitsmeldungen.</p>
<p><strong>Modellskizze.</strong> * Variablen: <span class="math inline">x_{p,s} \in \{0,1\}</span> — Person <span class="math inline">p</span> übernimmt Slot <span class="math inline">s</span>. * Hart: genau eine Person je Slot; Qualifikation; keine Doppelbelegung; Höchstzahl Vertretungsstunden; Ruhezeiten. * Weich: Vorbelastung, Freistundenlöcher, Fachnähe, Wünsche, Fairness über die Woche. * Solver: CP-SAT.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Läuft in unter 10 Sekunden für eine ganze Schule (60 Lehrkräfte, 30 Slots). - [ ] Liefert <strong>immer</strong> einen Plan — auch wenn nicht alle Slots besetzbar sind (Relaxation). - [ ] Weist je Zuweisung eine Begründung aus. - [ ] Ausgabe als CSV <strong>und</strong> als lesbare Tagestabelle. - [ ] Vergleich gegen die manuelle Lösung: Wie viele Wünsche werden erfüllt?</p>
<p><strong>Modellskizze.</strong> * Variablen: <span class="math inline">x_{p,s} \in \{0,1\}</span> — Person <span class="math inline">p</span> übernimmt Slot <span class="math inline">s</span>. * Hart: genau eine Person je Slot; Qualifikation; keine Doppelbelegung; Höchstzahl Vertretungsstunden; Ruhezeiten. * Weich: Vorbelastung, Freistundenlöcher, Fachnähe, Wünsche, Fairness über die Woche. * <a href="anhang-glossar.md#gloss:solver" class="glossar-link">Solver</a>: <a href="anhang-glossar.md#gloss:cp-sat" class="glossar-link">CP-SAT</a>.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Läuft in unter 10 Sekunden für eine ganze Schule (60 Lehrkräfte, 30 Slots). - [ ] Liefert <strong>immer</strong> einen Plan — auch wenn nicht alle Slots besetzbar sind (<a href="anhang-glossar.md#gloss:relaxation" class="glossar-link">Relaxation</a>). - [ ] Weist je Zuweisung eine Begründung aus. - [ ] Ausgabe als CSV <strong>und</strong> als lesbare Tagestabelle. - [ ] Vergleich gegen die manuelle Lösung: Wie viele Wünsche werden erfüllt?</p>
<p><strong>Stolperfallen.</strong> * Zu viele harte Regeln → <code>INFEASIBLE</code> an genau dem Tag, an dem man das System braucht. * Fairness nur über einen Tag statt über die Woche → dieselbe Person trifft es ständig. * Akzeptanz: Ohne Begründungsanzeige wird der Plan überschrieben.</p>
<p><strong>Erweiterungen.</strong> Mehrtagesplanung; Raumkonflikte; Springerstunden; Schnittstelle zum Schulverwaltungsprogramm.</p>
<hr />
@ -185,9 +185,9 @@
<p><strong>Schwierigkeit:</strong> ⭐⭐⭐ · <strong>Kapitel:</strong> <a href="milp.html#kap-milp">Kapitel 6</a>, <a href="cpsat.html#kap-cpsat">Kapitel 7</a>, <a href="praxisfallen.html#kap-praxisfallen">Kapitel 22</a> · <strong>Zeit:</strong> ca. 20 Stunden</p>
</blockquote>
<p><strong>Ausgangslage.</strong> 25 Pflegekräfte, drei Schichten täglich, 28-Tage-Zyklus. Es gelten Arbeitszeitgesetz, Tarifvertrag, Qualifikationsmix und individuelle Wünsche.</p>
<p><strong>Modellskizze.</strong> * Variablen: <span class="math inline">x_{p,t,s} \in \{0,1\}</span> — Person, Tag, Schicht. * Hart: Mindestbesetzung je Schicht <strong>und</strong> Qualifikationsmix (mindestens eine examinierte Kraft); nach Nachtschicht ≥ 2 freie Tage; höchstens 6 Arbeitstage in Folge; monatliche Sollstunden ± 10 %. * Weich: Wunschfrei, gleichmäßige Wochenendverteilung, ungeteilte Dienste, stabile Schichtfolgen (nicht FrühNachtFrüh). * Solver: CP-SAT mit Intervall- und Cumulative-Constraints.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Alle gesetzlichen Regeln nachweislich eingehalten (per <code>assert</code> geprüft). - [ ] Wunscherfüllungsquote wird ausgewiesen und ist fair verteilt (Gini-Koeffizient). - [ ] Läuft in unter 60 Sekunden. - [ ] Bei Unlösbarkeit: Notfallplan plus benannte Ursache.</p>
<p><strong>Stolperfallen.</strong> Der 28-Tage-Zyklus erzeugt viele Variablen (25 × 28 × 3 = 2100) — Symmetriebrechung und gute Suchheuristiken werden wichtig. Fairness über einen Monat ist etwas anderes als Fairness über eine Woche.</p>
<p><strong>Modellskizze.</strong> * Variablen: <span class="math inline">x_{p,t,s} \in \{0,1\}</span> — Person, Tag, Schicht. * Hart: Mindestbesetzung je Schicht <strong>und</strong> Qualifikationsmix (mindestens eine examinierte Kraft); nach Nachtschicht ≥ 2 freie Tage; höchstens 6 Arbeitstage in Folge; monatliche Sollstunden ± 10 %. * Weich: Wunschfrei, gleichmäßige Wochenendverteilung, ungeteilte Dienste, stabile Schichtfolgen (nicht FrühNachtFrüh). * Solver: <a href="anhang-glossar.md#gloss:constraint-programming-cp" class="glossar-link">CP</a>-<a href="anhang-glossar.md#gloss:sat-boolean-satisfiability" class="glossar-link">SAT</a> mit Intervall- und Cumulative-Constraints.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Alle gesetzlichen Regeln nachweislich eingehalten (per <code>assert</code> geprüft). - [ ] Wunscherfüllungsquote wird ausgewiesen und ist fair verteilt (<a href="anhang-glossar.md#gloss:gini-koeffizient" class="glossar-link">Gini-Koeffizient</a>). - [ ] Läuft in unter 60 Sekunden. - [ ] Bei Unlösbarkeit: Notfallplan plus benannte Ursache.</p>
<p><strong>Stolperfallen.</strong> Der 28-Tage-Zyklus erzeugt viele Variablen (25 × 28 × 3 = 2100) — <a href="anhang-glossar.md#gloss:symmetriebrechung" class="glossar-link">Symmetriebrechung</a> und gute Suchheuristiken werden wichtig. Fairness über einen Monat ist etwas anderes als Fairness über eine Woche.</p>
<hr />
<h2 id="p3-tourenplanung-für-einen-lieferdienst">P3 — Tourenplanung für einen Lieferdienst</h2>
<blockquote>
@ -195,7 +195,7 @@
</blockquote>
<p><strong>Ausgangslage.</strong> Ein regionaler Lieferdienst fährt täglich 4080 Adressen mit 4 Fahrzeugen an. Kunden haben Zeitfenster, Fahrzeuge Kapazitäten, Fahrer Arbeitszeiten.</p>
<p><strong>Daten.</strong> Adressen aus einer CSV; Entfernungen über OpenStreetMap (<code>osmnx</code>, <code>openrouteservice</code>) oder als Luftlinie mit Umwegfaktor 1,3 als Näherung.</p>
<p><strong>Modellskizze.</strong> OR-Tools Routing-Bibliothek mit Kapazitäts- und Zeitdimension; Metaheuristik <code>GUIDED_LOCAL_SEARCH</code>, Zeitlimit 30 Sekunden.</p>
<p><strong>Modellskizze.</strong> <a href="anhang-glossar.md#gloss:or-tools" class="glossar-link">OR-Tools</a> <a href="anhang-glossar.md#gloss:routing-bibliothek" class="glossar-link">Routing-Bibliothek</a> mit Kapazitäts- und Zeitdimension; <a href="anhang-glossar.md#gloss:metaheuristik" class="glossar-link">Metaheuristik</a> <code>GUIDED_LOCAL_SEARCH</code>, Zeitlimit 30 Sekunden.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Alle Kunden werden innerhalb ihrer Zeitfenster beliefert. - [ ] Vergleich gegen die bisherige manuelle Tourenplanung: Ersparnis in km und Minuten. - [ ] Kartendarstellung der Touren (<code>folium</code>). - [ ] Robust gegen Ausfall eines Fahrzeugs (Neuplanung in unter 30 s).</p>
<p><strong>Stolperfallen.</strong> Luftlinie unterschätzt Fahrzeiten systematisch — mit realistischem Umwegfaktor arbeiten oder echte Routing-Distanzen holen. Zeitfenster, die physisch nicht erreichbar sind, führen zu „keine Lösung“ ohne Erklärung: Vorabprüfung einbauen (siehe <a href="graphen.html#kap-graphen">Kapitel 8</a>).</p>
<hr />
@ -205,14 +205,14 @@
</blockquote>
<p><strong>Ausgangslage.</strong> Ein Handelsunternehmen prüft, welche von 12 möglichen Lagerstandorten eröffnet werden sollen, um 60 Filialen zu versorgen.</p>
<p><strong>Modellskizze.</strong> Kombiniertes Standort- und Transportproblem: * <span class="math inline">y_j \in \{0,1\}</span> — Lager <span class="math inline">j</span> eröffnen (Fixkosten). * <span class="math inline">x_{ij} \ge 0</span> — Menge von Lager <span class="math inline">j</span> zu Filiale <span class="math inline">i</span>. * Kopplung: <span class="math inline">x_{ij} \le M\,y_j</span>; Kapazität je Lager; Bedarfsdeckung je Filiale. * Ziel: Fixkosten + Transportkosten minimieren.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Sensitivitätsanalyse: Wie verändert sich die Lösung bei ±20 % Transportkosten? - [ ] Was-wäre-wenn: Standort X wird politisch vorgegeben — was kostet das? - [ ] Kartendarstellung mit Zuordnungslinien. - [ ] Amortisationsrechnung über 10 Jahre.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] <a href="anhang-glossar.md#gloss:sensitivitaetsanalyse" class="glossar-link">Sensitivitätsanalyse</a>: Wie verändert sich die Lösung bei ±20 % Transportkosten? - [ ] Was-wäre-wenn: Standort X wird politisch vorgegeben — was kostet das? - [ ] Kartendarstellung mit Zuordnungslinien. - [ ] Amortisationsrechnung über 10 Jahre.</p>
<p><strong>Stolperfallen.</strong> Big-M zu groß wählen (<a href="milp.html#kap-milp">Kapitel 6</a>) — hier ist die Lagerkapazität die natürliche Wahl. Fixkosten sind einmalig, Transportkosten laufend: <strong>Barwerte rechnen</strong>, nicht einfach addieren.</p>
<hr />
<h2 id="p5-produktionsplanung-mit-rüstkosten">P5 — Produktionsplanung mit Rüstkosten</h2>
<blockquote>
<p><strong>Schwierigkeit:</strong> ⭐⭐⭐ · <strong>Kapitel:</strong> <a href="lp.html#kap-lp">Kapitel 5</a>, <a href="milp.html#kap-milp">Kapitel 6</a>, <a href="cpsat.html#kap-cpsat">Kapitel 7</a> · <strong>Zeit:</strong> ca. 18 Stunden</p>
</blockquote>
<p><strong>Ausgangslage.</strong> Eine Fertigung produziert 15 Varianten auf 4 Maschinen. Jeder Produktwechsel kostet Rüstzeit; die Rüstzeit hängt von der Reihenfolge ab.</p>
<p><strong>Ausgangslage.</strong> Eine Fertigung produziert 15 Varianten auf 4 Maschinen. Jeder Produktwechsel kostet <a href="anhang-glossar.md#gloss:ruestzeit" class="glossar-link">Rüstzeit</a>; die Rüstzeit hängt von der Reihenfolge ab.</p>
<p><strong>Modellskizze.</strong> Los- und Reihenfolgeplanung: * Variablen: Produktionsmengen, Rüstentscheidungen, Reihenfolge (Intervallvariablen). * Hart: Bedarfsdeckung je Periode, Maschinenkapazität, Mindestlosgrößen. * Ziel: Rüst- + Lager- + Fehlmengenkosten minimieren. * Solver: CP-SAT mit <code>AddNoOverlap</code> und reihenfolgeabhängigen Übergangszeiten.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Gantt-Diagramm der Maschinenbelegung. - [ ] Vergleich gegen die aktuelle Praxis (Ersparnis in Rüststunden). - [ ] Schattenpreise: Welche Maschine ist der Engpass, was wäre eine zusätzliche Schicht wert?</p>
<hr />
@ -222,8 +222,8 @@
<p>⚠️ <strong>Keine Anlageberatung.</strong> Dieses Projekt dient dem Methodenverständnis. Setzen Sie kein echtes Geld auf ein selbstgebautes Modell, dessen Grenzen Sie nicht vollständig verstehen.</p>
</blockquote>
<p><strong>Ausgangslage.</strong> Ein Privatdepot aus 1015 ETFs und Einzeltiteln soll quartalsweise zurückgeführt werden — unter Berücksichtigung von Ordergebühren, Mindestordergrößen und der Steuerfreibetragsnutzung.</p>
<p><strong>Modellskizze.</strong> * Variablen: Zielgewichte <span class="math inline">w_i</span>; Binärvariablen für „Position wird gehandelt“. * Hart: Vollinvestition, keine Leerverkäufe, Positionsobergrenzen, Mindestordergröße (semikontinuierlich, <a href="milp.html#kap-milp">Kapitel 6</a>), höchstens <span class="math inline">K</span> Transaktionen je Rebalancing. * Ziel: erwartete Rendite Risikoterm Transaktionskosten Steuerwirkung. * Solver: CVXPY (konvexer Teil) oder MIQP für die Kardinalität.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Toleranzband: Es wird nur gehandelt, wenn die Abweichung &gt; 5 Prozentpunkte beträgt. - [ ] Alle Kosten (Ordergebühr, Spread, Steuer) sind explizit ausgewiesen. - [ ] Backtest über 5 Jahre mit Lookahead-Selbsttest. - [ ] Vergleich gegen: nie rebalancen, jährlich rebalancen, Gleichgewichtung. - [ ] Bericht, den ein Nicht-Fachmann versteht.</p>
<p><strong>Modellskizze.</strong> * Variablen: Zielgewichte <span class="math inline">w_i</span>; Binärvariablen für „Position wird gehandelt“. * Hart: Vollinvestition, keine Leerverkäufe, Positionsobergrenzen, Mindestordergröße (semikontinuierlich, <a href="milp.html#kap-milp">Kapitel 6</a>), höchstens <span class="math inline">K</span> Transaktionen je <a href="anhang-glossar.md#gloss:rebalancing" class="glossar-link">Rebalancing</a>. * Ziel: erwartete Rendite Risikoterm <a href="anhang-glossar.md#gloss:transaktionskosten" class="glossar-link">Transaktionskosten</a> Steuerwirkung. * Solver: <a href="anhang-glossar.md#gloss:cvxpy" class="glossar-link">CVXPY</a> (konvexer Teil) oder <a href="anhang-glossar.md#gloss:miqp" class="glossar-link">MIQP</a> für die Kardinalität.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Toleranzband: Es wird nur gehandelt, wenn die Abweichung &gt; 5 Prozentpunkte beträgt. - [ ] Alle Kosten (Ordergebühr, Spread, Steuer) sind explizit ausgewiesen. - [ ] <a href="anhang-glossar.md#gloss:backtest" class="glossar-link">Backtest</a> über 5 Jahre mit Lookahead-Selbsttest. - [ ] Vergleich gegen: nie rebalancen, jährlich rebalancen, Gleichgewichtung. - [ ] Bericht, den ein Nicht-Fachmann versteht.</p>
<p><strong>Stolperfallen.</strong> Steuern sind pfadabhängig (FIFO, Freibetrag) und passen nicht sauber in ein einperiodiges Modell — Näherung wählen und die Näherung <strong>dokumentieren</strong>. Und: Wenn Ihre Strategie die Gleichgewichtung nicht schlägt, ist das ein Ergebnis, kein Misserfolg.</p>
<hr />
<h2 id="p7-risikoreport-mit-cvar-und-stresstests">P7 — Risikoreport mit CVaR und Stresstests</h2>
@ -231,16 +231,16 @@
<p><strong>Schwierigkeit:</strong> ⭐⭐ · <strong>Kapitel:</strong> <a href="unsicherheit.html#kap-unsicherheit">Kapitel 12</a>, <a href="finanzdaten.html#kap-finanzdaten">Kapitel 18</a>, <a href="cvar.html#kap-cvar">Kapitel 20</a> · <strong>Zeit:</strong> ca. 12 Stunden</p>
</blockquote>
<p><strong>Ausgangslage.</strong> Für ein bestehendes Portfolio soll ein monatlicher Risikobericht entstehen.</p>
<p><strong>Inhalte des Berichts.</strong> * VaR und CVaR auf 95 % und 99 %, historisch <strong>und</strong> Monte-Carlo-simuliert. * Risikobeiträge je Position (<em>marginal CVaR</em>): Wer treibt das Risiko? * Stresstests: Was passiert bei 20 % Aktienmarkt, +200 Basispunkten Zins, Korrelationsanstieg auf 0,9? * Historische Szenarien nachspielen (2008, März 2020). * Konzentrationskennzahlen (Herfindahl-Index, effektive Titelzahl).</p>
<p><strong>Inhalte des Berichts.</strong> * <a href="anhang-glossar.md#gloss:value-at-risk-var" class="glossar-link">VaR</a> und <a href="anhang-glossar.md#gloss:conditional-value-at-risk-cvar" class="glossar-link">CVaR</a> auf 95 % und 99 %, historisch <strong>und</strong> Monte-Carlo-simuliert. * Risikobeiträge je Position (<em>marginal CVaR</em>): Wer treibt das Risiko? * Stresstests: Was passiert bei 20 % Aktienmarkt, +200 Basispunkten Zins, Korrelationsanstieg auf 0,9? * Historische Szenarien nachspielen (2008, März 2020). * Konzentrationskennzahlen (<a href="anhang-glossar.md#gloss:herfindahl-index" class="glossar-link">Herfindahl-Index</a>, effektive Titelzahl).</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Bericht als PDF, automatisch erzeugt. - [ ] Alle Kennzahlen mit zwei unabhängigen Methoden berechnet und verglichen. - [ ] Klartext-Zusammenfassung: „Im schlechtesten Prozent der Monate verlieren Sie typischerweise X €.“</p>
<p><strong>Stolperfallen.</strong> Die Wurzel-Zeit-Regel bei CVaR (<a href="cvar.html#kap-cvar">Kapitel 20</a>) — nicht blind anwenden. Korrelationen sind in Krisen andere als im Mittel: Stresstest mit erhöhten Korrelationen rechnen.</p>
<p><strong>Stolperfallen.</strong> Die <a href="anhang-glossar.md#gloss:wurzel-zeit-regel" class="glossar-link">Wurzel-Zeit-Regel</a> bei CVaR (<a href="cvar.html#kap-cvar">Kapitel 20</a>) — nicht blind anwenden. Korrelationen sind in Krisen andere als im Mittel: Stresstest mit erhöhten Korrelationen rechnen.</p>
<hr />
<h2 id="p9-wenn-der-solver-aussteigt-tourenplanung-in-echtgröße">P9 — Wenn der Solver aussteigt: Tourenplanung in Echtgröße</h2>
<blockquote>
<p><strong>Schwierigkeit:</strong> ⭐⭐⭐ · <strong>Kapitel:</strong> <a href="graphen.html#kap-graphen">Kapitel 8</a>, <a href="metaheuristiken.html#kap-metaheuristiken">Kapitel 9</a> · <strong>Zeit:</strong> ca. 18 Stunden</p>
</blockquote>
<p><strong>Ausgangslage.</strong> P3 hat funktioniert — mit 30 Kunden. Der Auftraggeber kommt mit 400 zurück, und derselbe Code liefert nach zwanzig Minuten noch keine Lösung. Das ist keine Panne, sondern der erwartbare Umschlagpunkt.</p>
<p><strong>Modellskizze.</strong> Zwei Verfahren am <strong>selben</strong> Problem, verglichen unter <strong>gleichem Zeitbudget</strong>: * Exakt: MILP oder CP-SAT wie in P3, mit Zeitlimit und protokolliertem Gap. * Heuristisch: Startlösung mit einer Faustregel, dann Verbesserung durch Simulated Annealing oder Large Neighborhood Search (<a href="metaheuristiken.html#kap-metaheuristiken">Kapitel 9</a>). * Messgröße ist nicht „wer gewinnt”, sondern <strong>ab welcher Instanzgröße</strong> sich das Blatt wendet.</p>
<p><strong>Modellskizze.</strong> Zwei Verfahren am <strong>selben</strong> Problem, verglichen unter <strong>gleichem Zeitbudget</strong>: * Exakt: <a href="anhang-glossar.md#gloss:gemischt-ganzzahlige-optimierung-milp" class="glossar-link">MILP</a> oder CP-SAT wie in P3, mit Zeitlimit und protokolliertem Gap. * Heuristisch: Startlösung mit einer Faustregel, dann Verbesserung durch <a href="anhang-glossar.md#gloss:simulated-annealing" class="glossar-link">Simulated Annealing</a> oder Large Neighborhood Search (<a href="metaheuristiken.html#kap-metaheuristiken">Kapitel 9</a>). * Messgröße ist nicht „wer gewinnt”, sondern <strong>ab welcher Instanzgröße</strong> sich das Blatt wendet.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Eine Tabelle über mindestens vier Instanzgrößen: exakt gegen heuristisch, jeweils Zielwert und Laufzeit. - [ ] Der Umschlagpunkt ist auf ±50 Kunden eingegrenzt und <strong>benannt</strong>. - [ ] Bei kleinen Instanzen wird gegen die bewiesen optimale Lösung geprüft — sonst weiß niemand, wie gut die Heuristik wirklich ist. - [ ] Fester Seed, reproduzierbarer Lauf; das Zugbudget ist fix, nicht die Uhrzeit.</p>
<blockquote>
<p>⚠️ <strong>Die Falle, in die hier fast jeder tappt:</strong> die Heuristik nur auf großen Instanzen zu testen, wo man das Optimum nicht kennt. Dann sieht jede Lösung gut aus.</p>
@ -252,7 +252,7 @@
</blockquote>
<p><strong>Ausgangslage.</strong> Die Geschäftsführung will „günstiger <strong>und</strong> grüner”. Beides zugleich gibt es nicht — und die übliche Antwort, beide Ziele mit Gewichten zu verrechnen, verdeckt genau die Frage, um die es geht.</p>
<p><strong>Modellskizze.</strong> Ein Transport-, Beschaffungs- oder Produktionsmodell mit zwei Zielen: * Erst beide Ziele <strong>einzeln</strong> optimieren — das gibt die Eckpunkte und damit den Rahmen. * Dann die Front über das <span class="math inline">\varepsilon</span>-Constraint-Verfahren abfahren (<a href="mehrziel.html#kap-mehrziel">Kapitel 14</a>): ein Ziel minimieren, das andere als Nebenbedingung schrittweise verschärfen. * Ergebnis ist <strong>keine Lösung, sondern eine Kurve</strong> — plus die Angabe, was jeder eingesparte Kilogramm CO₂ an Mehrkosten bedeutet.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Die Pareto-Front ist berechnet und gezeichnet, nicht nur beschrieben. - [ ] Für mindestens zwei Punkte ist der Aufpreis je eingesparter Einheit ausgerechnet. - [ ] Es ist geprüft und dokumentiert, welche Punkte der Front eine <strong>gewichtete Summe niemals</strong> finden würde — und warum. - [ ] Die Entscheidungsvorlage nennt drei Punkte zur Auswahl, nicht dreißig.</p>
<p><strong>Abnahmekriterien.</strong> - [ ] Die <a href="anhang-glossar.md#gloss:pareto-front" class="glossar-link">Pareto-Front</a> ist berechnet und gezeichnet, nicht nur beschrieben. - [ ] Für mindestens zwei Punkte ist der Aufpreis je eingesparter Einheit ausgerechnet. - [ ] Es ist geprüft und dokumentiert, welche Punkte der Front eine <strong>gewichtete Summe niemals</strong> finden würde — und warum. - [ ] Die Entscheidungsvorlage nennt drei Punkte zur Auswahl, nicht dreißig.</p>
<hr />
<h2 id="p11-vom-skript-zum-dienst-das-modell-übergeben">P11 — Vom Skript zum Dienst: das Modell übergeben</h2>
<blockquote>
@ -307,7 +307,7 @@
</tr>
<tr class="odd">
<td>Speiseplan unter Nährwert- und Budgetgrenzen</td>
<td>LP</td>
<td><a href="anhang-glossar.md#gloss:lineare-programmierung-lp" class="glossar-link">LP</a></td>
<td><a href="lp.html#kap-lp">Kapitel 5</a></td>
</tr>
<tr class="even">