Ich arbeite an einer PHP-Anwendung für ein Unternehmen für häusliche Pflege. Das Unternehmen hat x Pflegekräfte, die jede Woche die Häuser von x Dienstleistungsnutzern (Kunden) besuchen sollen. Jeder Dienstleistungsnutzer hat einen festen "Zeitplan", wann er besucht werden soll, der Zeiten und die Besuchsdauer in Minuten enthält.
So könnte ein Dienstleistungsnutzer zum Beispiel folgenden Zeitplan haben.
AM Lunch Tea Late Night Respite
Mon 30m - 30m 60m - -
Tue 30m - - 60m - -
Wed 20m 25m 30m 60m 120m -
Thu - - 30m - - -
Fri 30m 25m - - - -
Sat - - - - - -
Sun 20m 25m - - - -
Diese Zeiträume werden derzeit in einer Datenbank in folgendem Format gespeichert:
Table: Service_user_schedules
id service_user_id day period duration
Jede Woche füllen die Betreuerinnen und Betreuer eine Tabelle mit den Zeiten aus, in denen sie arbeiten können. Diese Daten werden dann in das System eingegeben und in der Datenbank in folgendem Format gespeichert:
Table: Carer_available_shifts
id carer_id day period
Das Problem ist nun, dass ich einen Controller erstellen muss, der diese Daten aufnimmt und den Dienstnutzern auf der Grundlage der von ihnen angegebenen Verfügbarkeit automatisch Betreuer zuweist. Dies muss bearbeitbar sein, so dass der Benutzer für den Fall, dass niemand für einen bestimmten Betreuer verfügbar ist, einen auswählen kann, der nicht verfügbar ist, und er wird trotzdem zur Datenbank hinzugefügt.
Im Moment habe ich ein Durcheinander von Schleifen, Funktionen und Echos, um zu prüfen, ob Betreuer für einen bestimmten Dienstleistungsnutzer verfügbar sind, und um es editierbar zu machen.
Hat jemand diese Aufgabe schon einmal durchgeführt und wenn ja, haben Sie eine einfache Lösung gefunden? Ich würde es vorziehen, es objektorientiert zu machen, damit ich die gleiche generische Klasse wiederverwenden kann, aber im Moment bin ich völlig ratlos!
EDIT: Ich habe jetzt ein Kopfgeld auf diese Frage ausgesetzt. Ich recherchiere derzeit genetische Algorithmen (etwas, von dem ich noch nie gehört, geschweige denn verwendet habe!) als Lösung für dieses Problem auf der Grundlage einiger der Antworten. Ich würde gerne wissen, ob jemand von Ihnen andere Methoden zur Lösung dieser Art von Problem verwendet hat, oder wenn Sie genetische Algorithmen verwendet haben, könnten Sie eine weniger allgemeine Erklärung geben, wie Sie sie auf dieses spezielle Problem angewendet haben.
Ich gehe davon aus, dass diese Hürde bei vielen Bewerbungen im Bereich "Personalwesen" recht häufig vorkommt, und bin überrascht, wie wenig darüber im Internet diskutiert wird!
UPDATE
Für dieses spezielle Projekt werde ich wohl die von Tak beschriebene Datenbankmethode verwenden, aber möglicherweise in Zukunft auf die Verwendung von GAs umsteigen, wenn ich mehr Entwicklungszeit zur Verfügung habe.
Ich bin jetzt etwas ratlos, wem ich das Kopfgeld zukommen lassen soll. duedl0r hat sich mit seiner (oder ihrer) Antwort viel Mühe gegeben. Sie hat mir einen großartigen Einblick in die Welt der genetischen Algorithmen gegeben - eine Problemlösungsmethode, mit der ich zuvor noch nie in Berührung gekommen war. Die Antwort von Tak liefert jedoch die Lösung, die ich für dieses Projekt verwenden werde. Daher habe ich die Prämie an Tak vergeben.