diff --git a/OR_HTML_04/Operations_Research_mit_Python_Version_04.pdf b/OR_HTML_04/Operations_Research_mit_Python_Version_04.pdf index 881a63c..c1c0d3c 100644 Binary files a/OR_HTML_04/Operations_Research_mit_Python_Version_04.pdf and b/OR_HTML_04/Operations_Research_mit_Python_Version_04.pdf differ diff --git a/OR_HTML_04/anhang-loesungen.html b/OR_HTML_04/anhang-loesungen.html index 13e7cc0..4e11112 100644 --- a/OR_HTML_04/anhang-loesungen.html +++ b/OR_HTML_04/anhang-loesungen.html @@ -260,7 +260,8 @@

Erwartung: Das Ergebnis liegt zwischen Lesart A und B — die Regel bindet stärker als „ein Auftrag genügt”, aber schwächer als „alle Aufträge”. Der Lehrpunkt ist nicht die Zahl, sondern dass sich zwischen zwei Lesarten beliebig fein abstufen lässt, sobald man sie einmal als Ungleichung geschrieben hat.

4.4 — Zwei Ziele gleichzeitig. Bei \lambda = 0 ergibt sich der DB-Plan (78 500 € DB), bei großem \lambda der Umsatzplan (66 000 € DB). Dazwischen kippt es an genau einer Stelle — und zwar sprunghaft, nicht allmählich: Weil die Entscheidungsvariablen binär sind, gibt es nur endlich viele Pläne, und der Wechsel erfolgt, sobald ein anderer Plan den höheren gewichteten Wert hat.

Der Kippwert sagt dem Betrieb etwas Konkretes: „Erst wenn Ihnen ein Euro Umsatz mehr wert ist als λ Euro Deckungsbeitrag, ändert sich Ihr Plan.” Das ist eine Frage, die ein Kaufmann beantworten kann — anders als „welche Gewichtung hätten Sie gern?“.

-

4.5 — Die Anforderung schreiben. Eine tragfähige Anforderung enthält mindestens:

+

4.5 — Übersetzen, wo es nicht eindeutig ist. (a) Drei Lesarten von „gleichmäßig ausgelastet”: (1) Spannweite minimieren\max_i a_i - \min_i a_i. Bestraft Ausreißer nach beiden Seiten; ein einzelner Untätiger ist genauso schlimm wie ein Überlasteter. (2) Den Schlechtestgestellten verbessern\max_i a_i minimieren (B11). Interessiert sich nicht dafür, wie ungleich die übrigen liegen, solange die Spitze sinkt. (3) Abweichung vom Mittel minimieren\sum_i |a_i - \bar a| (B10). Verteilt die Last am gleichmäßigsten, kann aber die Spitze höher lassen als (2). Wo es sichtbar wird: Bei fünf Monteuren mit 8, 8, 8, 8 und 16 Stunden senkt (2) die 16 zuerst; bei 4, 8, 8, 8, 12 tut (1) am meisten gegen die Spreizung, während (2) kaum etwas findet. Und wenn ein Monteur aus guten Gründen nur halbtags da ist, bestrafen (1) und (3) genau das — (2) nicht. (b) Hart: w_k \le 3 für jeden Kunden k. Weich: w_k \le 3 + s_k mit s_k \ge 0 und Strafkosten c \cdot s_k in der Zielfunktion (B8, B18). Die Frage an den Betrieb ist die dritte der vier: Was passiert, wenn es einmal nicht geht? Führt die Antwort zu „dann müssen wir eben” — weich. Führt sie zu „das darf nicht passieren, dann rufen wir an und verschieben” — dann ist auch das ein Prozess, und die Bedingung bleibt weich, nur mit sehr hohen Strafkosten. Wirklich hart ist sie nur, wenn ein Verstoß rechtlich unmöglich ist. (c) Individuell. Prüfkriterium: Wird eine Wendung gefunden, die zwei vertretbare Modelle zulässt — und wird benannt, wer die Wahl treffen muss? Die häufigsten Kandidaten in echten Anforderungen sind „in der Regel”, „zeitnah”, „vergleichbar” und jede Zahl ohne Bezugszeitraum.

+

4.6 — Die Anforderung schreiben. Eine tragfähige Anforderung enthält mindestens:

  • 4.5 Der Gesprächsleitfaden
  • -
  • 4.6 Übungsaufgaben
  • -
  • 4.7 Finde den Denkfehler
  • -
  • 4.8 Micro-Quiz
  • -
  • 4.9 Selbsttest
  • -
  • 4.10 Zusammenfassung
  • +
  • 4.6 Deutsch — OR: ein Übersetzungslexikon +
  • +
  • 4.7 Übungsaufgaben
  • +
  • 4.8 Finde den Denkfehler
  • +
  • 4.9 Micro-Quiz
  • +
  • 4.10 Selbsttest
  • +
  • 4.11 Zusammenfassung
  • Teil II: Die Kernverfahren der deterministischen Optimierung
  • Kapitel 5: Lineare Programmierung — Simplex, Dualität und Schattenpreise @@ -1582,7 +1587,7 @@ Alles bereit — Sie können mit dem ersten Kapitel beginnen.

    Pfad D — Quantitative Finance (ca. 30 Stunden)

    Kapitel 1Kapitel 2Kapitel 11 (QP, KKT) → Kapitel 18 (Daten, Shrinkage) → Kapitel 19 (Markowitz) → Kapitel 20 (CVaR) → Kapitel 21 (Backtest) → Projekt P6 (Portfolio-Rebalancer) oder P7 (Risikoreport). Wichtig: Überspringen Sie Kapitel 18 nicht. Wer direkt bei Markowitz einsteigt, optimiert Schätzrauschen und wundert sich über absurde Gewichte.

    Pfad E — Ich habe morgen ein konkretes Problem (2–4 Stunden)

    -

    Lesen Sie Abschnitt 1.5 (die vier Bausteine), dann Anhang B (Modellierungsmuster) und suchen Sie dort das Muster, das zu Ihrem Problem passt. Von jedem Muster führt ein Verweis in das zuständige Kapitel. Wie die gewählte Bibliothek es schreibt, steht in Anhang D (Spickzettel); wenn etwas nicht läuft, in Anhang C (Fehlerdiagnose).

    +

    Lesen Sie Abschnitt 1.5 (die vier Bausteine) und Abschnitt 4.6 (welcher Satz welcher Baustein ist), dann Anhang B (Modellierungsmuster) und suchen Sie dort das Muster, das zu Ihrem Problem passt. Von jedem Muster führt ein Verweis in das zuständige Kapitel. Wie die gewählte Bibliothek es schreibt, steht in Anhang D (Spickzettel); wenn etwas nicht läuft, in Anhang C (Fehlerdiagnose).

    Pfad F — Vom Prototyp in den Betrieb (ca. 15 Stunden)

    Für alle, deren Modell rechnet und die es jetzt jemand anderem übergeben müssen: Kapitel 22 (die fünf Praxisfallen, or_kern.py, Erklärbarkeit) → Kapitel 23 (Testsuite, Mutationstest, Benchmark, HTTP-Dienst) → Anhang C als Nachschlagewerk für den Ernstfall, dann Projekt P11 (Vom Skript zum Dienst). Setzt voraus, dass Sie mindestens einen der Pfade B, C oder D hinter sich haben — P11 baut auf einem Modell auf, das Sie schon haben.

    Der Kern in einem Satz: Ein Modell, das nur auf Ihrem Rechner und nur mit Ihren Daten läuft, ist ein Prototyp — kein System.

    @@ -6928,6 +6933,7 @@ Deckungsbeitrag maximieren -> BD Umsatz 40,000 DB 19,000
  • … erkennen, dass ein Satz wie „Stammkunden dürfen wir nicht verlieren” mehrere Lesarten hat, und den Unterschied in Euro beziffern.
  • … begründen, wann eine Regel hart und wann sie weich sein muss — und was eine harte Regel im Betrieb anrichtet, wenn sie einmal nicht erfüllbar ist.
  • … einen Kennzahlen-Fehlanreiz benennen, bevor er in die Zielfunktion gerät.
  • +
  • … einen Satz aus einer Besprechung in den passenden Modellierungsbaustein übersetzen — und die fünf Wendungen erkennen, bei denen genau das nicht geht, ohne vorher nachzufragen.

  • 4.3 Ein Satz ist noch kein Modell

    @@ -7450,7 +7456,219 @@ Lesart C (weich): loesbar - 66,000 EUR Deckungsbeitrag, 1 Stammauftrag abgelehnt

    Frage 5 ist die wichtigste. Sie verwandelt eine abstrakte Zielangabe in einen konkreten Plan, den man ablehnen kann — und Ablehnung ist die einzige Form von Anforderungsklärung, die zuverlässig funktioniert.


    -

    4.6 Übungsaufgaben

    +

    4.6 Deutsch — OR: ein Übersetzungslexikon

    +

    Die zwölf Fragen liefern Sätze. Sätze sind noch kein Modell — aber die meisten von ihnen haben eine Standardübersetzung, und wer sie kennt, spart sich das Nachdenken für die Fälle, in denen es keine gibt.

    +

    Die Tabelle liest sich von links nach rechts: Was in der Besprechung gesagt wird, was es bedeutet, und welcher Baustein daraus wird. Die B-Nummern verweisen auf Anhang B, wo jedes Muster mit Formulierung und Code steht.

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Was gesagt wirdWas gemeint istBaustein
    „Wir haben nur 400 Stunden.”eine Obergrenze, die nicht überschritten werden darfharte Kapazitätsgrenze \le b (Kapitel 5)
    „Mehr als zwei Millionen gibt es nicht.”dasselbe, auf GeldBudgetlimit (B27)
    „Möglichst nicht über 40 Stunden.”eine Grenze, die im Notfall gebrochen werden darfweiche Grenze mit Strafkosten (B8)
    „Wir können nur ganze Kisten liefern.”die Menge ist nicht teilbarGanzzahligkeitsbedingung (Kapitel 6)
    „Wenn wir die Anlage nutzen, fallen Fixkosten an.”Kosten, die erst ab der ersten Einheit anfallenAktivierungsschalter (B1)
    „Entweder gar nicht oder mindestens 50.”kein Betrieb im Kleinensemikontinuierliche Variable (B2)
    „Wenn wir A bauen, brauchen wir auch B.”eine FolgeverpflichtungImplikation (B3)
    „Höchstens drei Positionen im Depot.”eine Obergrenze auf die Anzahl, nicht die MengeKardinalität (B6)
    „Der Anteil muss mindestens 30 % betragen.”eine Bedingung auf ein VerhältnisVerhältnis-Bedingung (B12)
    „Jeder Auftrag genau einem Mitarbeiter.”eine vollständige, eindeutige ZuordnungZuordnung 1:1 (B23)
    „Eine Maschine kann nur eines gleichzeitig.”zeitliche AusschließlichkeitNichtüberlappung (B14)
    „B kann erst nach A.”eine ReihenfolgeVorrangbeziehung (B13)
    „Höchstens fünf Tage am Stück.”eine Bedingung über ein gleitendes Fenstergleitendes Fenster (B16)
    „Umstellen kostet uns eine halbe Stunde.”reihenfolgeabhängige KostenUmrüstkosten (B17), Rüstzeit als Kapazität (B26)
    „Was reinkommt, muss auch wieder raus.”Erhaltung an jedem KnotenFlusserhaltung (B22)
    „Notfalls brechen wir die Regel.”die Bedingung ist weich, aber teuerSchlupfvariablen (B18)
    „Erst Termintreue, dann Kosten.”eine Rangfolge zwischen Zielenhierarchische Ziele (B19)
    „Es soll gerecht zugehen.”den Schlechtestgestellten verbessernMin/Max in der Zielfunktion (B11)
    „Was brächte uns eine zusätzliche Stunde?”die Frage nach dem Grenzwert einer RessourceSchattenpreis (Kapitel 5, Abschnitt 22.4)
    „Mit 95 % Sicherheit muss es halten.”eine Zusage auf eine Quote, nicht auf einen MittelwertChance Constraint (Abschnitt 12.7)
    „Wir sichern uns gegen Schätzfehler ab.”gegen die ungünstigste Parameterlage planenWorst-Case-Abzug (B21)
    +

    Fünf Wendungen, bei denen die Übersetzung eine Entscheidung erzwingt

    +

    Die Tabelle oben tut so, als sei die Zuordnung eindeutig. Bei den folgenden fünf ist sie es nicht — und das Nachfragen ist die eigentliche Modellierungsarbeit:

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    WendungDie Frage, die dahinter steckt
    „möglichst”Hart oder weich? Und wenn weich: Was darf ein Verstoß kosten? Ohne Zahl ist „möglichst” keine Bedingung, sondern eine Stimmung.
    „nicht mehr als drei pro Woche”Je Person oder über alle zusammen? Kalenderwoche oder gleitende sieben Tage? Beide Lesarten sind vertretbar und ergeben verschiedene Modelle.
    „im Durchschnitt”Fast immer eine Falle. Der Durchschnittskunde kauft nie — siehe Abschnitt 12.3. Gemeint ist meist ein Quantil („in 9 von 10 Fällen”).
    „so schnell wie möglich”Welche Zahl? Ende des letzten Auftrags, Summe aller Fertigstellungszeiten oder größte Verspätung? Drei Zielfunktionen, drei verschiedene Pläne.
    „fair”Den Schlechtesten verbessern, die Spannweite verkleinern oder gleiche Anteile erzwingen? Erst die Wahl macht daraus ein Modell — und sie gehört dem Betrieb, nicht dem Modellierer.
    +
    +

    🎯 Der Nutzen dieser Liste Sie ersetzt kein Nachdenken. Sie sorgt dafür, dass das Nachdenken an den richtigen vier oder fünf Stellen stattfindet, statt an allen zwanzig gleichzeitig.

    +
    +

    Und die Gegenrichtung: OR — Deutsch

    +

    Dieselbe Barriere gibt es rückwärts. Diese Sätze haben sich bewährt, wenn ein Ergebnis jemandem erklärt werden muss, der das Modell nicht kennt:

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FachbegriffWas Sie in der Besprechung sagen
    Schattenpreis / Dualwert„Die nächste Stunde auf dieser Maschine wäre uns 9 € wert.”
    bindende Bedingung mit Dualwert 0„Die Regel berührt den Plan, kostet uns aber nichts — dort zu verhandeln bringt nichts.”
    INFEASIBLE„Ihre Regeln widersprechen sich.” Nicht: „Der Computer schafft es nicht.”
    Optimalitätslücke von 2 %„Besser als das hier geht es höchstens um 2 % — und die liegen unter unserer Datenungenauigkeit.”
    CVaR„Wenn es schiefgeht, verlieren wir im Mittel so viel.” (Der VaR sagt nur, ob es schiefgeht.)
    EVPI„Selbst eine perfekte Prognose wäre uns höchstens so viel wert.”
    Relaxation„Wir haben die Regel probeweise gelockert, um zu sehen, was sie kostet.”
    Chance Constraint„Der Plan hält in 95 von 100 Fällen — und der nächste Prozentpunkt kostet …”
    +
    +

    4.7 Übungsaufgaben

    Lösungen: Abschnitt A.4.

    @@ -7458,9 +7676,10 @@ Lesart C (weich): loesbar - 66,000 EUR Deckungsbeitrag, 1 Stammauftrag abgelehnt

    Aufgabe 4.2 ⭐ — Frage 5 anwenden. Ein Krankenhaus möchte „die Wartezeiten in der Notaufnahme senken”. Wenden Sie Frage 5 an: Welcher Plan käme heraus, wenn genau die durchschnittliche Wartezeit minimiert würde — und was wäre daran nicht akzeptabel?

    Aufgabe 4.3 ⭐⭐ — Der Kompromiss dazwischen. Zwischen Lesart A (12 500 €) und Lesart B (3 500 €) liegt Spielraum. Bauen Sie eine Variante, in der jeder Stammkunde mindestens die Hälfte seiner Auftragsstunden zugeteilt bekommt. Was kostet sie?

    Aufgabe 4.4 ⭐⭐ — Zwei Ziele gleichzeitig. Maximieren Sie \text{DB} + \lambda \cdot \text{Umsatz} für \lambda \in \{0; 0{,}1; 0{,}3; 1\} und tragen Sie die Ergebnisse als Tabelle auf. Ab welchem \lambda kippt der Plan von der DB- in die Umsatzlösung? Was sagt dieser Wert dem Betrieb?

    -

    Aufgabe 4.5 ⭐⭐⭐ — Die Anforderung schreiben. Formulieren Sie für den Fall dieses Kapitels eine vollständige, prüfbare Anforderung: Ziel, harte Regeln, weiche Regeln mit Strafgewichten, Verhalten bei Unlösbarkeit, auszuweisende Kennzahlen. Zwei Seiten genügen — sie sind mehr wert als zwei Wochen Programmierung.

    +

    Aufgabe 4.5 ⭐⭐ — Übersetzen, wo es nicht eindeutig ist. Übersetzen Sie mit Abschnitt 4.6: (a) „Die Monteure sollen möglichst gleichmäßig ausgelastet sein.” Nennen Sie drei Zielfunktionen, die alle „gleichmäßig” bedeuten können, und je einen Fall, in dem die Wahl den Plan sichtbar ändert. (b) „Kein Kunde darf länger als drei Tage warten.” Formulieren Sie die Bedingung einmal hart und einmal weich. Welche Frage müssen Sie dem Betrieb stellen, um zu entscheiden? (c) Suchen Sie in einer echten Anforderung aus Ihrem Umfeld einen Satz, der nach der Tabelle eindeutig aussieht, es aber nicht ist.

    +

    Aufgabe 4.6 ⭐⭐⭐ — Die Anforderung schreiben. Formulieren Sie für den Fall dieses Kapitels eine vollständige, prüfbare Anforderung: Ziel, harte Regeln, weiche Regeln mit Strafgewichten, Verhalten bei Unlösbarkeit, auszuweisende Kennzahlen. Zwei Seiten genügen — sie sind mehr wert als zwei Wochen Programmierung.


    -

    4.7 Finde den Denkfehler

    +

    4.8 Finde den Denkfehler

    🐛 „Die Engpassmaschine soll zu mindestens 92 % ausgelastet sein”

    Der Werkleiter formuliert eine klare, messbare, prüfbare Anforderung:

    @@ -7472,7 +7691,7 @@ Lesart C (weich): loesbar - 66,000 EUR Deckungsbeitrag, 1 Stammauftrag abgelehnt

    Ein Hinweis für den zweiten: Sehen Sie sich an, was das Modell im Abnahmetest tatsächlich geprüft hat — und rechnen Sie einen Monat durch, in dem weniger Anfragen hereinkommen.


    -

    4.8 Micro-Quiz

    +

    4.9 Micro-Quiz

    ❓ Drei Fragen

    1. Warum liefert „Umsatz maximieren” hier einen schlechteren Plan als „Deckungsbeitrag maximieren”, obwohl beide Modelle korrekt sind? a) Weil der Solver bei Umsatzzielen ungenauer rechnet. b) Weil alles, was nicht in der Zielfunktion steht, für das Modell wertlos ist — nicht weniger wichtig. c) Weil Umsatzdaten in der Praxis unzuverlässiger sind als Kostendaten.

    @@ -7480,7 +7699,7 @@ Lesart C (weich): loesbar - 66,000 EUR Deckungsbeitrag, 1 Stammauftrag abgelehnt

    3. Alle drei Zielgrößen erreichen 100 % Auslastung. Was folgt daraus? a) Die Auslastung war schon vorher optimal, das Projekt ist überflüssig. b) Bei knapper Kapazität ist volle Auslastung die Voreinstellung; zu entscheiden ist nur, womit die Maschine voll wird. c) Die Kapazitätsdaten sind vermutlich falsch erfasst.


    -

    4.9 Selbsttest

    +

    4.10 Selbsttest

    1. Warum ist „Was ist Ihnen wichtig?” eine schlechte Frage und „Welche Zahl steht im Jahresbericht?” eine gute?
    2. Nennen Sie zwei Kennzahlen aus Ihrem eigenen Arbeitsumfeld, deren Maximierung schaden würde.
    3. @@ -7489,13 +7708,14 @@ Lesart C (weich): loesbar - 66,000 EUR Deckungsbeitrag, 1 Stammauftrag abgelehnt
    4. Was antworten Sie auf die Frage „Was soll passieren, wenn es keine zulässige Lösung gibt?” — und warum ist „das kommt nicht vor” keine Antwort?

    -

    4.10 Zusammenfassung

    +

    4.11 Zusammenfassung


    @@ -29384,7 +29604,8 @@ Das zugehoerige Dockerfile ist kurz genug, um es ganz zu zeigen:

    Erwartung: Das Ergebnis liegt zwischen Lesart A und B — die Regel bindet stärker als „ein Auftrag genügt”, aber schwächer als „alle Aufträge”. Der Lehrpunkt ist nicht die Zahl, sondern dass sich zwischen zwei Lesarten beliebig fein abstufen lässt, sobald man sie einmal als Ungleichung geschrieben hat.

    4.4 — Zwei Ziele gleichzeitig. Bei \lambda = 0 ergibt sich der DB-Plan (78 500 € DB), bei großem \lambda der Umsatzplan (66 000 € DB). Dazwischen kippt es an genau einer Stelle — und zwar sprunghaft, nicht allmählich: Weil die Entscheidungsvariablen binär sind, gibt es nur endlich viele Pläne, und der Wechsel erfolgt, sobald ein anderer Plan den höheren gewichteten Wert hat.

    Der Kippwert sagt dem Betrieb etwas Konkretes: „Erst wenn Ihnen ein Euro Umsatz mehr wert ist als λ Euro Deckungsbeitrag, ändert sich Ihr Plan.” Das ist eine Frage, die ein Kaufmann beantworten kann — anders als „welche Gewichtung hätten Sie gern?“.

    -

    4.5 — Die Anforderung schreiben. Eine tragfähige Anforderung enthält mindestens:

    +

    4.5 — Übersetzen, wo es nicht eindeutig ist. (a) Drei Lesarten von „gleichmäßig ausgelastet”: (1) Spannweite minimieren\max_i a_i - \min_i a_i. Bestraft Ausreißer nach beiden Seiten; ein einzelner Untätiger ist genauso schlimm wie ein Überlasteter. (2) Den Schlechtestgestellten verbessern\max_i a_i minimieren (B11). Interessiert sich nicht dafür, wie ungleich die übrigen liegen, solange die Spitze sinkt. (3) Abweichung vom Mittel minimieren\sum_i |a_i - \bar a| (B10). Verteilt die Last am gleichmäßigsten, kann aber die Spitze höher lassen als (2). Wo es sichtbar wird: Bei fünf Monteuren mit 8, 8, 8, 8 und 16 Stunden senkt (2) die 16 zuerst; bei 4, 8, 8, 8, 12 tut (1) am meisten gegen die Spreizung, während (2) kaum etwas findet. Und wenn ein Monteur aus guten Gründen nur halbtags da ist, bestrafen (1) und (3) genau das — (2) nicht. (b) Hart: w_k \le 3 für jeden Kunden k. Weich: w_k \le 3 + s_k mit s_k \ge 0 und Strafkosten c \cdot s_k in der Zielfunktion (B8, B18). Die Frage an den Betrieb ist die dritte der vier: Was passiert, wenn es einmal nicht geht? Führt die Antwort zu „dann müssen wir eben” — weich. Führt sie zu „das darf nicht passieren, dann rufen wir an und verschieben” — dann ist auch das ein Prozess, und die Bedingung bleibt weich, nur mit sehr hohen Strafkosten. Wirklich hart ist sie nur, wenn ein Verstoß rechtlich unmöglich ist. (c) Individuell. Prüfkriterium: Wird eine Wendung gefunden, die zwei vertretbare Modelle zulässt — und wird benannt, wer die Wahl treffen muss? Die häufigsten Kandidaten in echten Anforderungen sind „in der Regel”, „zeitnah”, „vergleichbar” und jede Zahl ohne Bezugszeitraum.

    +

    4.6 — Die Anforderung schreiben. Eine tragfähige Anforderung enthält mindestens: