Bessere Verteilung: Strafen/Mutation, plus Abstammungsbaum mit Id-Herkunft

Weniger vermeidbare Gruppentrennungen:
- strafen.cfg: Tischbesetzung bestraft jetzt gestaffelt nach freien
  Plaetzen (teilbelegte Tische am teuersten, mit Fallback auf den
  naechstkleineren Eintrag), Trennungsstrafen deutlich erhoeht - so
  werden Gruppen nicht mehr getrennt, obwohl leere Tische danebenstehen
- gibPunkte('Tischbesetzung') mit Naechst-kleiner-Fallback
- mutieren() setzt geraeumte Gruppen groesste-zuerst neu
  (GruppenSetzen(GrosseZuerst=True)), damit grosse Gruppen die frei
  gewordenen ganzen Tische bekommen und wieder zusammenkommen
  (uebrig bleiben nur physisch unvermeidbare Trennungen, Gruppe > Tisch)

Abstammungsbaum (neuer Schalter --show-lineage -> Abstammung.svg):
- neue Klasse ga.Abstammung zeichnet den vollen Mutationsbaum aller
  Loesungen; der Ast der finalen besten Loesung ist hervorgehoben und
  mit ihrer Id beschriftet
- hierarchische Loesungs-Ids (Farm._WurzelId/_KindId): Wurzel '7',
  Mutationskind '7.2', dessen Kind '7.2.1' - die ganze Abstammung ist
  direkt aus der Id ablesbar

Tests (15 gruen), README und CLAUDE.md aktualisiert; Beispiele mit den
neuen Strafen und beiden Grafiken neu berechnet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Michael Stangl
2026-07-11 22:38:43 +02:00
parent 644f61ef6b
commit 6710d4f06a
28 changed files with 3908 additions and 1468 deletions
+105 -105
View File
@@ -1,38 +1,36 @@
[1]
Dieter Sommer = Hof 1, Tisch 1, Nummer 1
Dennis Kraus = Hof 1, Tisch 1, Nummer 2
Julia Brandt = Hof 1, Tisch 1, Nummer 3
Helga Brandt = Hof 1, Tisch 1, Nummer 4
Kathrin Brandt = Hof 1, Tisch 1, Nummer 5
Daniel Brandt = Hof 1, Tisch 1, Nummer 6
Daniel Sommer = Hof 1, Tisch 1, Nummer 1
Werner Stein = Hof 1, Tisch 1, Nummer 2
Helga Brandt = Hof 1, Tisch 1, Nummer 3
Rainer Aksoy = Hof 1, Tisch 1, Nummer 4
Dieter Sommer = Hof 1, Tisch 1, Nummer 5
Sarah Winkler = Hof 1, Tisch 1, Nummer 6
Werner Brandt = Hof 1, Tisch 1, Nummer 7
Melanie Kraus = Hof 1, Tisch 1, Nummer 8
Tobias Frank = Hof 1, Tisch 1, Nummer 9
Sarah Winkler = Hof 1, Tisch 1, Nummer 10
Daniel Sommer = Hof 1, Tisch 1, Nummer 11
Tobias Frank = Hof 1, Tisch 1, Nummer 8
Renate Aksoy = Hof 1, Tisch 1, Nummer 9
Julia Brandt = Hof 1, Tisch 1, Nummer 10
Guenter Schwarz = Hof 1, Tisch 1, Nummer 11
Renate Sommer = Hof 1, Tisch 1, Nummer 12
[2]
Dennis Sommer = Hof 1, Tisch 2, Nummer 1
Lina Sommer = Hof 1, Tisch 2, Nummer 2
Lena Brandt = Hof 1, Tisch 2, Nummer 3
Nicole Sommer = Hof 1, Tisch 2, Nummer 4
Andreas Brandt = Hof 1, Tisch 2, Nummer 5
Theo Brandt = Hof 1, Tisch 2, Nummer 6
Sarah Kuhn = Hof 1, Tisch 2, Nummer 1
Heinz Fischer = Hof 1, Tisch 2, Nummer 2
Timo Kuhn = Hof 1, Tisch 2, Nummer 3
Yusuf Schwarz = Hof 1, Tisch 2, Nummer 4
Dennis Sommer = Hof 1, Tisch 2, Nummer 5
Jennifer Sommer = Hof 1, Tisch 2, Nummer 6
Sarah Schwarz = Hof 1, Tisch 2, Nummer 7
Helga Fischer = Hof 1, Tisch 2, Nummer 8
[3]
Stefanie Busch = Hof 1, Tisch 3, Nummer 1
Svenja Vogel = Hof 1, Tisch 3, Nummer 2
Sergej Berger = Hof 1, Tisch 3, Nummer 3
Andreas Koch = Hof 1, Tisch 3, Nummer 4
Dennis Schmidt = Hof 1, Tisch 3, Nummer 5
Giovanna Koch = Hof 1, Tisch 3, Nummer 6
Horst Aydin = Hof 1, Tisch 3, Nummer 1
Ursula Aydin = Hof 1, Tisch 3, Nummer 2
[4]
Gast Musikverein = Hof 1, Tisch 4, Nummer 1
Sergej Berger = Hof 1, Tisch 4, Nummer 1
Gast Musikverein = Hof 1, Tisch 4, Nummer 2
Gast Musikverein = Hof 1, Tisch 4, Nummer 3
Gast Musikverein = Hof 1, Tisch 4, Nummer 4
Stefanie Busch = Hof 1, Tisch 4, Nummer 3
Julia Esposito = Hof 1, Tisch 4, Nummer 4
Gast Musikverein = Hof 1, Tisch 4, Nummer 5
Gast Musikverein = Hof 1, Tisch 4, Nummer 6
Gast Musikverein = Hof 1, Tisch 4, Nummer 7
@@ -40,115 +38,117 @@
[5]
Gast Musikverein = Hof 1, Tisch 5, Nummer 1
Melanie Peters = Hof 1, Tisch 5, Nummer 2
Yusuf Peters = Hof 1, Tisch 5, Nummer 3
Gast Musikverein = Hof 1, Tisch 5, Nummer 2
Gast Musikverein = Hof 1, Tisch 5, Nummer 3
Gast Musikverein = Hof 1, Tisch 5, Nummer 4
Gast Musikverein = Hof 1, Tisch 5, Nummer 5
Gast Musikverein = Hof 1, Tisch 5, Nummer 6
Gast Musikverein = Hof 1, Tisch 5, Nummer 7
Gast Musikverein = Hof 1, Tisch 5, Nummer 8
[6]
Sofia Brandt = Hof 1, Tisch 6, Nummer 1
Milan Brandt = Hof 1, Tisch 6, Nummer 2
Anja Brandt = Hof 1, Tisch 6, Nummer 3
[7]
[8]
Patrick Simon = Hof 1, Tisch 8, Nummer 1
Julia Esposito = Hof 1, Tisch 8, Nummer 2
Giovanna Kovac = Hof 1, Tisch 8, Nummer 3
Andreas Koch = Hof 1, Tisch 8, Nummer 1
Yusuf Peters = Hof 1, Tisch 8, Nummer 2
Giovanna Koch = Hof 1, Tisch 8, Nummer 3
Svenja Vogel = Hof 1, Tisch 8, Nummer 4
Melanie Peters = Hof 1, Tisch 8, Nummer 5
Giovanna Kovac = Hof 1, Tisch 8, Nummer 6
Patrick Simon = Hof 1, Tisch 8, Nummer 7
Dennis Schmidt = Hof 1, Tisch 8, Nummer 8
[9]
Stefanie Simon = Hof 1, Tisch 9, Nummer 1
Sven Fischer = Hof 1, Tisch 9, Nummer 2
Daniel Wagner = Hof 1, Tisch 9, Nummer 3
Stefan Klein = Hof 1, Tisch 9, Nummer 4
Elif Demir = Hof 1, Tisch 9, Nummer 5
Jennifer Simon = Hof 1, Tisch 9, Nummer 6
Timo Frank = Hof 1, Tisch 9, Nummer 7
Andreas Stein = Hof 1, Tisch 9, Nummer 8
Erika Frank = Hof 1, Tisch 9, Nummer 1
Gerhard Erdem = Hof 1, Tisch 9, Nummer 2
Rainer Erdem = Hof 1, Tisch 9, Nummer 3
Wolfgang Hansen = Hof 1, Tisch 9, Nummer 4
Brigitte Franke = Hof 1, Tisch 9, Nummer 5
Hannelore Barth = Hof 1, Tisch 9, Nummer 6
Wolfgang Meyer = Hof 1, Tisch 9, Nummer 7
Gisela Esposito = Hof 1, Tisch 9, Nummer 8
[10]
Brigitte Franke = Hof 1, Tisch 10, Nummer 1
Wolfgang Hansen = Hof 1, Tisch 10, Nummer 2
Gisela Esposito = Hof 1, Tisch 10, Nummer 3
Erika Frank = Hof 1, Tisch 10, Nummer 4
Rainer Erdem = Hof 1, Tisch 10, Nummer 5
Gerhard Erdem = Hof 1, Tisch 10, Nummer 6
Hannelore Barth = Hof 1, Tisch 10, Nummer 7
Wolfgang Meyer = Hof 1, Tisch 10, Nummer 8
Elif Demir = Hof 1, Tisch 10, Nummer 1
Daniel Wagner = Hof 1, Tisch 10, Nummer 2
Stefan Klein = Hof 1, Tisch 10, Nummer 3
Sven Fischer = Hof 1, Tisch 10, Nummer 4
Stefanie Simon = Hof 1, Tisch 10, Nummer 5
Timo Frank = Hof 1, Tisch 10, Nummer 6
Jennifer Simon = Hof 1, Tisch 10, Nummer 7
Andreas Stein = Hof 1, Tisch 10, Nummer 8
[11]
Sarah Kuhn = Hof 1, Tisch 11, Nummer 1
Marco Meyer = Hof 1, Tisch 11, Nummer 2
Sandra Meyer = Hof 1, Tisch 11, Nummer 3
Jennifer Sommer = Hof 1, Tisch 11, Nummer 4
Dennis Sommer = Hof 1, Tisch 11, Nummer 5
Timo Kuhn = Hof 1, Tisch 11, Nummer 6
Yusuf Vogel = Hof 1, Tisch 11, Nummer 7
Sandra Vogel = Hof 1, Tisch 11, Nummer 8
Daniel Horn = Hof 1, Tisch 11, Nummer 1
Olga Hansen = Hof 1, Tisch 11, Nummer 2
Daniel Brandt = Hof 1, Tisch 11, Nummer 3
Markus Schmitt = Hof 1, Tisch 11, Nummer 4
Kathrin Brandt = Hof 1, Tisch 11, Nummer 5
Olga Yilmaz = Hof 1, Tisch 11, Nummer 6
Milan Lange = Hof 1, Tisch 11, Nummer 7
Nadine Frank = Hof 1, Tisch 11, Nummer 8
[12]
Olga Hansen = Hof 1, Tisch 12, Nummer 1
Yusuf Schwarz = Hof 1, Tisch 12, Nummer 2
Nadine Frank = Hof 1, Tisch 12, Nummer 3
Olga Yilmaz = Hof 1, Tisch 12, Nummer 4
Sarah Schwarz = Hof 1, Tisch 12, Nummer 5
Daniel Horn = Hof 1, Tisch 12, Nummer 6
Markus Schmitt = Hof 1, Tisch 12, Nummer 7
Milan Lange = Hof 1, Tisch 12, Nummer 8
Nicole Dietrich = Hof 1, Tisch 12, Nummer 1
Christian Esposito = Hof 1, Tisch 12, Nummer 2
Matthias Polat = Hof 1, Tisch 12, Nummer 3
Dennis Kraus = Hof 1, Tisch 12, Nummer 4
Melanie Kraus = Hof 1, Tisch 12, Nummer 5
Timo Wagner = Hof 1, Tisch 12, Nummer 6
Nicole Fischer = Hof 1, Tisch 12, Nummer 7
Lena Hoffmann = Hof 1, Tisch 12, Nummer 8
[13]
Christian Esposito = Hof 1, Tisch 13, Nummer 1
Matthias Polat = Hof 1, Tisch 13, Nummer 2
Ursula Aydin = Hof 1, Tisch 13, Nummer 3
Nicole Dietrich = Hof 1, Tisch 13, Nummer 4
Lena Hoffmann = Hof 1, Tisch 13, Nummer 5
Horst Aydin = Hof 1, Tisch 13, Nummer 6
Timo Wagner = Hof 1, Tisch 13, Nummer 7
Nicole Fischer = Hof 1, Tisch 13, Nummer 8
Monika Demir = Hof 1, Tisch 13, Nummer 1
Ingrid Demir = Hof 1, Tisch 13, Nummer 2
Christian Meyer = Hof 1, Tisch 13, Nummer 3
Jennifer Dietrich = Hof 1, Tisch 13, Nummer 4
Stefan Kuhn = Hof 1, Tisch 13, Nummer 5
Hannelore Demir = Hof 1, Tisch 13, Nummer 6
Stefanie Roth = Hof 1, Tisch 13, Nummer 7
Svenja Horn = Hof 1, Tisch 13, Nummer 8
[14]
Stefanie Roth = Hof 1, Tisch 14, Nummer 1
Stefan Kuhn = Hof 1, Tisch 14, Nummer 2
Monika Demir = Hof 1, Tisch 14, Nummer 3
Svenja Horn = Hof 1, Tisch 14, Nummer 4
Christian Meyer = Hof 1, Tisch 14, Nummer 5
Ingrid Demir = Hof 1, Tisch 14, Nummer 6
Jennifer Dietrich = Hof 1, Tisch 14, Nummer 7
Hannelore Demir = Hof 1, Tisch 14, Nummer 8
Dennis Sommer = Hof 1, Tisch 14, Nummer 1
Lina Sommer = Hof 1, Tisch 14, Nummer 2
Marco Meyer = Hof 1, Tisch 14, Nummer 3
Nicole Sommer = Hof 1, Tisch 14, Nummer 4
Anja Brandt = Hof 1, Tisch 14, Nummer 5
Sofia Brandt = Hof 1, Tisch 14, Nummer 6
Milan Brandt = Hof 1, Tisch 14, Nummer 7
Sandra Meyer = Hof 1, Tisch 14, Nummer 8
[15]
Heinz Fischer = Hof 1, Tisch 15, Nummer 1
Werner Stein = Hof 1, Tisch 15, Nummer 2
Renate Aksoy = Hof 1, Tisch 15, Nummer 3
Heinz Tran = Hof 1, Tisch 15, Nummer 4
Rainer Aksoy = Hof 1, Tisch 15, Nummer 5
Erika Erdem = Hof 1, Tisch 15, Nummer 6
Guenter Schwarz = Hof 1, Tisch 15, Nummer 7
Helga Fischer = Hof 1, Tisch 15, Nummer 8
Sandra Vogel = Hof 1, Tisch 15, Nummer 1
Andreas Brandt = Hof 1, Tisch 15, Nummer 2
Theo Brandt = Hof 1, Tisch 15, Nummer 3
Erika Erdem = Hof 1, Tisch 15, Nummer 4
Heinz Tran = Hof 1, Tisch 15, Nummer 5
Yusuf Vogel = Hof 1, Tisch 15, Nummer 6
Lena Brandt = Hof 1, Tisch 15, Nummer 7
[16]
Max Sommer = Hof 1, Tisch 16, Nummer 1
Anton Brandt = Hof 1, Tisch 16, Nummer 1
Elias Schwarz = Hof 1, Tisch 16, Nummer 2
Felix Brandt = Hof 1, Tisch 16, Nummer 3
Mila Meyer = Hof 1, Tisch 16, Nummer 4
Greta Brandt = Hof 1, Tisch 16, Nummer 5
Emil Sommer = Hof 1, Tisch 16, Nummer 3
Ida Sommer = Hof 1, Tisch 16, Nummer 4
Theo Sommer = Hof 1, Tisch 16, Nummer 5
Leni Kuhn = Hof 1, Tisch 16, Nummer 6
Frieda Brandt = Hof 1, Tisch 16, Nummer 7
Liam Schwarz = Hof 1, Tisch 16, Nummer 8
Ida Sommer = Hof 1, Tisch 16, Nummer 9
Theo Sommer = Hof 1, Tisch 16, Nummer 10
Emil Sommer = Hof 1, Tisch 16, Nummer 11
Matteo Kraus = Hof 1, Tisch 16, Nummer 12
Anton Brandt = Hof 1, Tisch 16, Nummer 13
Matteo Kraus = Hof 1, Tisch 16, Nummer 8
Greta Brandt = Hof 1, Tisch 16, Nummer 9
Max Sommer = Hof 1, Tisch 16, Nummer 10
Liam Schwarz = Hof 1, Tisch 16, Nummer 11
Mila Meyer = Hof 1, Tisch 16, Nummer 12
Felix Brandt = Hof 1, Tisch 16, Nummer 13
[17]
Anton Vogel = Hof 1, Tisch 17, Nummer 1
Paul Brandt = Hof 1, Tisch 17, Nummer 2
Max Vogel = Hof 1, Tisch 17, Nummer 3
Ben Brandt = Hof 1, Tisch 17, Nummer 4
Anton Meyer = Hof 1, Tisch 17, Nummer 5
Ida Meyer = Hof 1, Tisch 17, Nummer 6
Max Vogel = Hof 1, Tisch 17, Nummer 1
Ben Brandt = Hof 1, Tisch 17, Nummer 2
Paul Brandt = Hof 1, Tisch 17, Nummer 3
Ida Meyer = Hof 1, Tisch 17, Nummer 4
Anton Vogel = Hof 1, Tisch 17, Nummer 5
Anton Meyer = Hof 1, Tisch 17, Nummer 6