operations_research/OR_HTML_04/programme
Repository files (latest commit first)
Filename Latest commit message Latest commit date
dschlueter 293370b7a1 Phase 6.3: Parallelitaet und Determinismus - gemessen statt behauptet
Neuer Abschnitt im CP-SAT-Kapitel plus Parallele_Suche.py (76. Programm).
Setzt Paket 2 aus Verbesserungen_02.md um.

Was fehlte, war nicht die Regel, sondern die Messung: Das Buch setzt an acht
Stellen num_workers = 1 mit dem Kommentar "fuer eine reproduzierbare
Ausgabe", nachgeprueft hatte es nie jemand. Gerechnet wird auf demselben
Job-Shop wie das Intervallvariablen-Kapitel, nur gross genug, dass die Suche
arbeitet: 12 Auftraege, 10 Maschinen, 120 Arbeitsgaenge.

Zwei Befunde, beide staerker als die Behauptung:

* Die Beschleunigung ist ueberlinear. Acht Arbeiter waren im abgedruckten
  Lauf nicht achtmal, sondern 12,3-mal schneller als einer. Kein Messfehler:
  CP-SAT vervielfacht nicht dieselbe Suche, sondern laesst verschiedene
  Strategien nebeneinander laufen, die einander ihre Schranken mitteilen.
* Der Seed genuegt nicht - und zwar schon ab ZWEI Arbeitern. Ein Arbeiter:
  1 Plan aus 4 Laeufen. Zwei Arbeiter: 3 verschiedene Plaene aus 4 Laeufen,
  bei identischem random_seed und identischem Zielwert 183.

Die vollstaendige Antwort kam erst ueber die Uebungsaufgabe: Mit
num_workers = 1, aber fuenf verschiedenen Seeds ergeben sich ebenfalls fuenf
verschiedene Plaene. Keiner der beiden Parameter sichert die
Reproduzierbarkeit allein - erst die Kombination traegt.

Weiter fuer die Aufgabe gemessen: Der Gewinn kehrt sich um (auf 24 Kernen
Faktor 10,2 bei 8 Arbeitern, 12,3 bei 16, 9,0 bei 24) - "so viele Arbeiter
wie Kerne" ist damit widerlegt. Und bei 15 Auftraegen laeuft ein Arbeiter
ins 60-s-Limit (FEASIBLE, Makespan 200), waehrend acht OPTIMAL mit
demselben Makespan 200 nach 26,4 s melden: Der Unterschied liegt nicht in
der Loesung, sondern im Beweis, dass es keine bessere gibt.

Die abgedruckte Ausgabe traegt die Kennzeichnung "Laufzeiten und die Zahl
der verschiedenen Plaene sind hardwareabhaengig" - nach dem Muster, das das
Testing-Kapitel fuer Benchmark_Skalierung.py schon verwendet. Der Vergleich
des extrahierten Programms mit dem Abdruck weicht denn auch in genau einer
Zelle ab (4 statt 3 verschiedene Plaene bei 4 Arbeitern); Zielwert und
Struktur sind identisch. Hier ist die Nichtreproduzierbarkeit der
abgedruckten Zahl die Aussage selbst.

Mitgezogen: Kapitelkopf, Lernziele, Selbsttest, Zusammenfassung,
Vorwort-Programmverzeichnis, Uebungsaufgabe und Loesung in Anhang A, ein
Verweis aus dem bestehenden Callout zu mehrdeutigen Optima und einer aus
Warmstart_Effekt.py im MILP-Kapitel (dort nach Regel 12 der Kapitelname).

Stand: 295 Abschnitte, 730 Querverweise, 328 Indexmarken, 76 Programme,
140 Aufgaben mit 140 Loesungen, 33 pytest-Tests, PDF 744 Seiten, 69
netzfreie Programme fehlerfrei.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 11:19:53 +02:00
..
Backtest_Fallen.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Bausteine_Vorlage.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Bellman_Minimalbeispiel.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Benchmark_Skalierung.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Betriebsueberwachung.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Big_M_Falle.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Bot_Allokation.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Brute_Force_Vergleich.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Chance_Constraints.py Phase 6.1: Chance Constraints - die Zusage "mit 95 % Sicherheit" 2026-09-08 01:57:19 +02:00
Constraint_Attribution.py Phase 6.2: Constraint Attribution und Managementbericht 2026-09-08 10:30:33 +02:00
CP_SAT_Statusfaelle.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
CP_SAT_Vertretungssystem.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
CVaR_Portfolio.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Data_Snooping.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Diversifikation_Demo.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Dualitaet_Nachweis.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Ein_System_Vier_Ansaetze.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Entropie_Maximierte_Allokation.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Erklaerbarkeit.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Excel_Bruecke.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Finanzdaten_Ledoit_Wolf.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Fluch_des_Durchschnitts.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Infeasibility_Diagnose.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Installationstest.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
JobShop_Intervalle.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
KKT_Nachweis.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Konfliktsuche.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Konvexitaet_Demo.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Kovarianz_Falle.py Sechster und siebter Fund: die letzten handgeschriebenen Nummern 2026-09-08 09:52:41 +02:00
Kraftwerkseinsatz.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Large_Neighborhood_Search.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Lokale_Optima_Multistart.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Markowitz_CVXPY.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Matrixform.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Mehrperiodige_Order_Execution.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Mehrziel_Pareto.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Metaheuristik_vs_Exakt.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
MILP_Portfolio_Fixgebuehren.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Min_Cost_Flow.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Modellierungsschichten.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Monte_Carlo.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Mutationstest.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Optimierungsdienst.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
or_kern.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Parallele_Suche.py Phase 6.3: Parallelitaet und Determinismus - gemessen statt behauptet 2026-09-08 11:19:53 +02:00
Predict_then_Optimize.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Propagation_Demo.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
QP_Grundlagen.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
QuantitativeTradingEngine.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Renditen_Vergleich.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Renditeschaetzung_Falle.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Robuste_Optimierung.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Rucksack.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Runden_Gegenbeispiel.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Schaetzrauschen_Demo.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Sensitivitaetsanalyse.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Simplex_Tableau_LP.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Simulated_Annealing.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Skalierung_Kondition.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Solver_Wahl.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Solverstatus_und_Gap.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Solverwechsel_CPSAT_HiGHS.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Spaltengenerierung.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Stochastische_Optimierung.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Strafgewichte.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Strukturbruecke.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
test_or_kern.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Toleranzen_und_Entartung.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
VaR_CVaR_Demo.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Vektorisierte_Modellgenerierung.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Visualisierung_Loesungsraum.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Vom_Wunsch_zum_Modell.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
VRP_Flotten_Routing.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
VRP_Kapazitaetsfalle.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00
Warmstart_Effekt.py Phase 6.3: Parallelitaet und Determinismus - gemessen statt behauptet 2026-09-08 11:19:53 +02:00
Zuordnung_Ungarisch.py Version 04 als eigenes Repository 2026-09-08 01:20:09 +02:00