# Strafpunkte-Profile ("Vorgehen") fuer die Bewertung einer Sitzplatzverteilung. # # Jede Sektion ist EIN vollstaendiges Bewertungsprofil mit allen Angaben. So # lassen sich mehrere Vorgehensweisen nebeneinander pflegen und speichern. Per # Schalter --strafen waehlt man ein Profil; ohne Schalter wird # [default] verwendet. # # Schluessel je Profil: # Anzahl_Trennungen_N = { Gruppengroesse:Strafpunkte, .. } # Strafpunkte fuer das Aufteilen einer Gruppe (N = Anzahl der Trennungen, # also auf N+1 Tische verteilt), gestaffelt nach Gruppengroesse. Fehlt ein # exakter Gruppengroessen-Eintrag, wird auf die naechstkleinere Groesse # zurueckgegriffen. Mindestens Anzahl_Trennungen_1 sollte gesetzt sein. # NichtNachbar = Strafe, wenn zwei Gruppenteile nicht am Nachbartisch sitzen # Allein = Strafe, wenn eine Person ohne Gruppenmitglied am Tisch sitzt # TischWertigkeiten = { freiePlaetze:Strafpunkte, .. } fuer freie Sitze an einem # (teil-)belegten Tisch. Fehlt ein exakter Eintrag, gilt der # naechstkleinere. Teilbelegte Tische sind am schlechtesten # (dort passt keine ganze Gruppe mehr hin), daher steigt die # Strafe mit den freien Plaetzen; ein komplett leerer Tisch # (hoechster Schluessel) ist etwas besser, aber nicht gratis, # damit sich das Zusammenziehen von Gruppen lohnt. # Optional; fehlt der ganze Schluessel, werden freie Plaetze # gar nicht bestraft -> mehr Teilbelegungen moeglich. # AbstandFaktor = Strafpunkte je normierter Abstandseinheit (0..100) zwischen # getrennten Teilen einer Gruppe. Der Abstand ist auf die # maximale Ausdehnung der Tischanordnung normiert (100 = # ein Teil ganz links/oben, der andere ganz rechts/unten). # AbstandFaktor=-0.2 kostet den Maximalabstand also -20. # Optional; fehlt der Schluessel, wird der Abstand nicht # bestraft (Faktor 0). # Standardprofil: Trennungen sind bewusst teuer, damit eine Gruppe lieber # zusammen an einem teilbelegten Tisch sitzt, als neben einem leeren getrennt zu # werden. [default] Anzahl_Trennungen_1={ 2:-25, 3:-22, 4:-18, 6:-14, 8:-12, 10:-10 } Anzahl_Trennungen_2={ 3:-40, 4:-30, 6:-22, 8:-18, 10:-14 } Anzahl_Trennungen_3={ 4:-60, 6:-40, 8:-30, 10:-20 } NichtNachbar=-3 Allein=-30 TischWertigkeiten={ 1:-3, 2:-3, 4:-5, 6:-6, 8:-4 } AbstandFaktor=-0.2 # Beispiel fuer ein alternatives Vorgehen: Trennungen sind guenstiger, der # Abstand wird nicht bestraft, und freie Plaetze werden gar nicht bestraft # (TischWertigkeiten fehlt bewusst) — so sind mehr Teilbelegungen moeglich. # Nuetzlich fuer grosse Saele, in denen sich Gruppen kaum ungeteilt platzieren # lassen. Aufruf: --strafen locker [locker] Anzahl_Trennungen_1={ 2:-12, 3:-10, 4:-8, 6:-6, 8:-5, 10:-4 } Anzahl_Trennungen_2={ 3:-20, 4:-16, 6:-12, 8:-9, 10:-7 } Anzahl_Trennungen_3={ 4:-30, 6:-22, 8:-16, 10:-12 } NichtNachbar=-2 Allein=-20 AbstandFaktor=0.0