Phase 6.2: Constraint Attribution und Managementbericht
Neuer Abschnitt im Kapitel Praxisfallen plus Constraint_Attribution.py (75. Programm). Setzt den fehlenden Teil von Paket 3 aus Verbesserungen_02.md um. Die Luecke, die es schliesst: Erklaerbarkeit.py beantwortet "warum DIESE Zuweisung?", Konfliktsuche.py "warum geht es GAR NICHT?". Der haeufigste Fall der Praxis lag dazwischen und hatte kein Werkzeug - das Modell rechnet, der Plan ist zulaessig, und trotzdem enttaeuschend, nur weiss niemand woran es liegt. Gerechnet wird auf derselben Fabrik wie die Konfliktsuche, nach der Reparatur: Dort war die Lackierkapazitaet von 150 Stunden der Kern des Widerspruchs (2*40 + 3*30 = 170 > 150), eine zweite Schicht bringt sie auf 210. Damit laesst sich dieselbe Instanz ueber zwei Kapitel verfolgen - erst "warum nicht?", dann "was kostet was?". Drei gemessene Befunde: * Bindend heisst nicht teuer: Fuenf Bedingungen binden, "Lackierbudget Schicht 2" mit einem Schattenpreis von 0,00 EUR. * Der Schattenpreis ist eine Momentaufnahme: Fuer die Lackiererei verspricht die Hochrechnung 4,00 * 30 = 120 EUR, gemessen kommen 60 EUR; der Preis gilt exakt bis +15 Stunden. Die Ranglisten drehen sich dabei um - nach Schattenpreis fuehrt der Traegervertrag (18 EUR/Stueck), nach tatsaechlicher Wirkung die Montage-Sonderschicht (450 EUR). * Ein Wunsch kann unmoeglich statt teuer sein: "mindestens 55 Rahmen" ist INFEASIBLE, blockiert von drei Bedingungen gemeinsam. Mit +15 Stunden Lackierkapazitaet wird er erfuellbar und kostet dann nichts - der Plan waehlt diese Menge von sich aus. Der Konflikt bestand nie zwischen Vertrieb und Produktion. Der Managementbericht entsteht aus genau diesen Zahlen; kein Satz enthaelt eine Zahl, die nicht vorher gerechnet wurde. Voraussetzung ist der sprechende Name jeder Bedingung - aus A_ub[7] wird kein Satz. Dazu die Grenze, als Warnkasten und als Uebungsaufgabe: Der Bericht erklaert das Modell, nicht die Wirklichkeit. Steigt der Deckungsbeitrag von Deckel von 9 auf 20 EUR, kippt der Plan (Rahmen auf das Vertragsminimum 40, Deckel auf die Marktgrenze 120), "Kapazitaet Lackieren" hoert auf zu binden, "Liefervertrag Rahmen" faengt damit an - und der Satz "Teuerste Bindung ist Liefervertrag Traeger" steht woertlich unveraendert im Bericht, waehrend die Zahl dahinter von 18 auf 58 EUR springt. Die Zaehlprobe aus 6.1a hat sich sofort bewaehrt: Nach dem Einbau der Uebungsaufgabe meldete --check "6 Loesungen, das Kapitel aber 7 Aufgaben", bevor die Loesung geschrieben war. Mitgezogen: Kapitelkopf, Lernziele, Selbsttest, Zusammenfassung, Vorwort-Programmverzeichnis, Vorwaertsverweis aus Falle 2, Uebungsaufgabe und Loesung in Anhang A. Stand: 294 Abschnitte, 725 Querverweise, 328 Indexmarken, 75 Programme, 139 Aufgaben mit 139 Loesungen, 33 pytest-Tests, PDF 737 Seiten, 68 netzfreie Programme fehlerfrei. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
cc990c2998
commit
dd4acda129
26 changed files with 7048 additions and 3815 deletions
69
PROGRESS.md
69
PROGRESS.md
|
|
@ -77,14 +77,14 @@ sie unerwartet ab, ist etwas kaputtgegangen.
|
|||
| Kapiteldateien | 22 | **31** |
|
||||
| Kapitel | 15 | **23** |
|
||||
| Anhänge | 4 | **5** |
|
||||
| Zeilen im Gesamtdokument | 11 082 | **27 401** |
|
||||
| Größe des Gesamtdokuments | 606 KB | **1 536 KB** |
|
||||
| Hauptüberschriften | 131 | **289** |
|
||||
| registrierte Abschnitte | 122 | **293** |
|
||||
| aufgelöste Querverweise | 314 | **720** (0 unaufgelöst) |
|
||||
| Indexmarken | 295 | **327** |
|
||||
| Beispielprogramme | 41 | **74** (alle lauffähig) |
|
||||
| PDF-Seiten | — | **725** |
|
||||
| Zeilen im Gesamtdokument | 11 082 | **27 868** |
|
||||
| Größe des Gesamtdokuments | 606 KB | **1 565 KB** |
|
||||
| Hauptüberschriften | 131 | **297** |
|
||||
| registrierte Abschnitte | 122 | **294** |
|
||||
| aufgelöste Querverweise | 314 | **725** (0 unaufgelöst) |
|
||||
| Indexmarken | 295 | **328** |
|
||||
| Beispielprogramme | 41 | **75** (alle lauffähig) |
|
||||
| PDF-Seiten | — | **737** |
|
||||
| Notebooks | — | **25** |
|
||||
| Plotly-Figuren | — | **4** |
|
||||
| Diagramme (SVG) | 26 | **32**, davon **18** mit Generatorskript (15 Skripte) |
|
||||
|
|
@ -1512,6 +1512,59 @@ den Aufgabentiteln ab (gekürzt: „Zweistufiges Modell rechnen" → „Zweistuf
|
|||
Nummer wieder stimmt, ist sie der Schlüssel; das Angleichen wäre eine rein redaktionelle
|
||||
Runde.
|
||||
|
||||
### ✅ 6.2 Constraint Attribution und Managementbericht ({ref:kap:praxisfallen})
|
||||
|
||||
Neuer Abschnitt {ref:sec:praxisfallen-attribution} plus `Constraint_Attribution.py`
|
||||
(75. Programm). Setzt Paket 3 aus `Verbesserungen_02.md` um — den Teil, der noch fehlte.
|
||||
|
||||
**Die Lücke, die es schließt.** Zwei Fälle waren abgedeckt: `Erklaerbarkeit.py` beantwortet
|
||||
„warum **diese** Zuweisung?", `Konfliktsuche.py` „warum geht es **gar nicht**?". Der
|
||||
häufigste Fall der Praxis lag dazwischen und hatte kein Werkzeug: *Das Modell rechnet, der
|
||||
Plan ist zulässig — und trotzdem enttäuschend, nur weiß niemand woran es liegt.*
|
||||
|
||||
**Dieselbe Fabrik wie die Konfliktsuche, nach der Reparatur.** Dort war die Lackierkapazität
|
||||
von 150 Stunden der Kern des Widerspruchs ($2 \cdot 40 + 3 \cdot 30 = 170 > 150$); eine
|
||||
zweite Schicht bringt sie auf 210, der Mindestumsatz sinkt auf 10 000 €. Damit kann ein
|
||||
Leser dieselben 14 benannten Bedingungen über zwei Kapitel hinweg verfolgen — erst
|
||||
„warum nicht?", dann „was kostet was?".
|
||||
|
||||
**Drei gemessene Befunde:**
|
||||
|
||||
1. **Bindend heißt nicht teuer.** Fünf Bedingungen binden, „Lackierbudget Schicht 2" mit
|
||||
einem Schattenpreis von **0,00 €**. Dieselbe Unterscheidung, die `Erklaerbarkeit.py` an
|
||||
einer einzelnen Zuweisung zeigt — hier im Dualwert eines LP.
|
||||
2. **Der Schattenpreis ist eine Momentaufnahme.** Für die Lackiererei verspricht die
|
||||
Hochrechnung $4{,}00 \cdot 30 = 120$ €, gemessen kommen **60 €**; der Preis gilt exakt
|
||||
bis **+15 Stunden**. Die zweite Hälfte der Sonderschicht wäre bezahlt und wirkungslos.
|
||||
Und die Ranglisten drehen sich: nach Schattenpreis führt der Trägervertrag (18 €/Stück),
|
||||
nach tatsächlicher Wirkung die Montage-Sonderschicht (450 €).
|
||||
3. **Ein Wunsch kann unmöglich statt teuer sein.** „Mindestens 55 Rahmen" ist `INFEASIBLE`,
|
||||
blockiert von **drei** Bedingungen gemeinsam (jede einzeln entfernt macht ihn möglich) —
|
||||
die Deletion-Filter-Struktur, angewandt auf einen Wunsch statt auf einen Widerspruch. Mit
|
||||
+15 Stunden Lackierkapazität wird er erfüllbar und kostet dann **nichts**: Der Plan wählt
|
||||
diese Menge von sich aus. Der Konflikt bestand nie zwischen Vertrieb und Produktion.
|
||||
|
||||
**Der Managementbericht** entsteht in Teil (4) aus genau diesen Zahlen — kein Satz enthält
|
||||
eine Zahl, die nicht vorher gerechnet wurde, auch nicht die Rangfolge und nicht die Namen
|
||||
der blockierenden Bedingungen. Voraussetzung dafür ist der sprechende Name jeder Bedingung;
|
||||
aus `A_ub[7]` wird kein Satz.
|
||||
|
||||
**Und die Grenze, die dazugehört** — als ⚠️-Kasten und als Übungsaufgabe: Ein solcher
|
||||
Bericht erklärt das **Modell**, nicht die Wirklichkeit. Die Aufgabe lässt den
|
||||
Deckungsbeitrag von *Deckel* von 9 € auf 20 € steigen. Gemessen: Der Plan kippt (Rahmen auf
|
||||
das Vertragsminimum 40, Deckel auf die Marktgrenze 120), „Kapazität Lackieren" hört auf zu
|
||||
binden, „Liefervertrag Rahmen" fängt damit an — **und der Satz „Teuerste Bindung ist
|
||||
Liefervertrag Träger" steht wörtlich unverändert im Bericht**, während die Zahl dahinter von
|
||||
18 € auf 58 € springt. Ein Bericht, der sich nicht ändert, ist kein Beweis dafür, dass sich
|
||||
nichts geändert hat.
|
||||
|
||||
**Die neue Zählprobe aus 6.1a hat sich sofort bewährt:** Nach dem Einbau der Übungsaufgabe
|
||||
meldete `--check` „6 Loesungen, das Kapitel aber 7 Aufgaben", bevor die Lösung geschrieben
|
||||
war. Genau der Fall, für den sie gebaut wurde.
|
||||
|
||||
Stand danach: 294 Abschnitte, 725 Querverweise, 328 Indexmarken, **75** Programme,
|
||||
139 Aufgaben mit 139 Lösungen, PDF **737** Seiten.
|
||||
|
||||
---
|
||||
|
||||
## 8. Commit-Historie des V04-Strangs
|
||||
|
|
|
|||
Loading…
Reference in a new issue