Ich beschäftige mich gerade mit einem relativ komplizierten Problem: Ich habe eine Menge von Personen gegeben, die in einer Datei ihre erste und ihre zweite Präferenz angegeben haben, wann sie am liebsten arbeiten wollen. Ich als fiktiver Arbeitgeber speichere alle Wochentage und die Anzahl der an diesem Tag nötigen Arbeitskräfte. Ich sollte die Tage so verteilen, dass so viele wie möglich zufrieden sind. (normalerweise werden weniger Tage angeboten als mögliche Arbeitskräfte vorhanden sind).
Ich habe bereits eine Funktion geschrieben, die pro Person und Präferenz je 2 Punkte gibt, falls es sich dabei um die erste Präferenz handelt, 1 Punkt falls es sich um die 2.Präferenz handelt und 0 Punkt für alle nicht gewählten Tage.
Ich erhalte dann also beispielsweise sowas als "Zwischenergebnis":
Code: Alles auswählen
{'samstag': 5, 'sonntag': 7, 'montag': 8, 'donnerstag': 7}
Zwischenzeitlich habe ich auch noch das probiert:
Code: Alles auswählen
>>> import itertools
>>> for schedule in itertools.permutations('Bob Sue Jim Tony Alice Zane Tim'.split()):
... print(schedule)
...
('Bob', 'Sue', 'Jim', 'Tony', 'Alice', 'Zane', 'Tim')
('Bob', 'Sue', 'Jim', 'Tony', 'Alice', 'Tim', 'Zane')
('Bob', 'Sue', 'Jim', 'Tony', 'Zane', 'Alice', 'Tim')
('Bob', 'Sue', 'Jim', 'Tony', 'Zane', 'Tim', 'Alice')
('Bob', 'Sue', 'Jim', 'Tony', 'Tim', 'Alice', 'Zane')
('Bob', 'Sue', 'Jim', 'Tony', 'Tim', 'Zane', 'Alice')
('Bob', 'Sue', 'Jim', 'Alice', 'Tony', 'Zane', 'Tim')
ABER: So kanns nicht funktionieren, weil ich je nach dem auch mehrere Leute pro Tag "brauche". Und mit dem obigen System ist jeweils nur eine Person pro Tag möglich.
Ja, wie ihr seht, wäre ich sehr dankbar für brauchbare Inputs
Evtl. habe ich mich auch völlig verfahren mit diesem Lösungsweg - wenns einen einfacheren / anderen Weg gibt, der aber ganz unterschiedlich zu dem hier ist: egal, ich bin einfach an einer sauberen, brauchbaren Lösung interessiert
Vielen Dank.