Ich stehe vor einem Problem und bin mir nicht sicher, wie ich vorgehen soll. Ich muss einen Kalender für Mitarbeiter erstellen, die jeweils bestimmte (teilweise persönliche, teilweise gemeinsame) Arbeitsbedingungen haben.
Womit ich arbeite:
- Ich habe Ärzte
- Jeder Arzt muss 5 Tage die Woche arbeiten.
- Jeder Arzt muss 1 Nacht / Woche arbeiten
- Jeder Arzt muss die gleiche Anzahl von Nächten im Vergleich zu anderen Ärzten (oder so nah wie möglich) arbeiten
- Jeder Arzt muss eine gleiche Anzahl von Donnerstagnächten und Sonntagnächten im Vergleich zu anderen Ärzten (oder so nah wie möglich) arbeiten.
- Einige Ärzte können bestimmte Tage / Nächte nicht arbeiten (Eingabe durch Benutzer)
- Einige Ärzte möchten bestimmte Tage / Nächte arbeiten (Eingabe durch Benutzer)
- Einige Ärzte möchten bestimmte Tage / Nächte nicht arbeiten (Eingabe durch Benutzer)
Der fragliche Benutzer ist die Person, die mit dem Kalender befasst ist. Ich versuche, eine Lösung zu erstellen, die automatisch einen Kalender generiert, der alle Einschränkungen berücksichtigt. Die Lösung ist nur eine große Einstellungs-Eingabe "Ärzte hinzufügen" und "Einschränkungen hinzufügen" für jeden Arzt, dann eine Schaltfläche "Kalender generieren". Es ist wirklich grundlegend für den Benutzer.
Mein Problem :
Ich bin mir nicht sicher, wie ich die eigentliche Planung generieren soll, ich habe über neuronale Netze, genetische Algorithmen usw. gelesen und sie scheinen alle die richtige Lösung zu sein, aber auch nicht wirklich.
Wenn ich mir die GAs ansehe, werden sie dazu gebracht, eine Lösung für eine bestimmte Population (mein Problem) zu finden, aber die Startpopulation muss bereits die gegebenen Einschränkungen einhalten, die dann optimiert würden. In diesem Fall ist meine Startpopulation bereits die Lösung. Ich brauche es nicht, um "optimiert" zu werden. Es spielt keine Rolle, dass eine einzelne Person 3 Montagnächte hintereinander arbeitet, solange es richtig ist und andere die gleiche Menge arbeiten. Das bedeutet, dass andere Personen irgendwann auch 3 Montagnächte arbeiten und es in Ordnung ist. Was mich denken lässt, dass GA's für mich zu "fortgeschritten" sind, da mein Problem bereits mit dem Startpunkt eines GA gelöst ist.
Aber andererseits sieht GA wirklich wirklich so aus, als wären sie dafür gemacht, also verstehe ich es vielleicht nicht richtig?
Da ich noch nie GAs (oder neuronale Netze oder ähnliches) verwendet habe, möchte ich sichergehen, dass ich mich auf den richtigen Ansatz einlasse, bevor ich mich auf eine Lernkurve wie diese einlasse.
Meine Frage :
Was halten Sie für einen guten Ansatz / Algorithmus / eine gute Technik für ein Problem wie das meine? Gas? Neuronale Netze? Noch etwas ganz anderes?
Ich bin ganz offen für Details, aber ich denke, ich habe mich ziemlich klar ausgedrückt :)