2017-11-15 3 views
0

Nach der Krankenschwester Scheduling-Beispiel von here, ich versuche, das Problem mehr Einschränkungen hinzufügen. Zum Beispiel: Krankenschwester A kann am Montag nicht in Schicht 2 und 3 arbeiten, Krankenschwester B kann nur Schicht 1 und 3 über alle Tage hinweg arbeiten.Google ODER Tools: Employee Scheduling mit Verfügbarkeitseinschränkung

Wie würde man eine Einschränkung wie diese implementieren?

Wenn es in OR-Tools nicht möglich ist, geben Sie bitte Vorschläge, wie ich sowas implementieren kann.

Antwort

1

Für Ihre Beispiele, alles, was Sie tun müssen, ist eine Einschränkung hinzufügen, die von der Verschiebung verhindert auf diese spezielle Krankenschwester zugewiesen wird:

solver.Add(shifts[(2, 1)] != 3) # Nurse 2 cannot be assigned shift 3 on day 1 

Allgemeiner:

solver.Add(shifts[(j, i)] != n) # Nurse j cannot be assigned shift n on day i 

Offensichtlich Sie wollen um dies in einer Schleife zu tun, um es wenn möglich zu vereinfachen.

+0

Danke! Es funktionierte, wusste nicht, dass es so einfach war. Und hier habe ich ihre C++ Dokumentation nach Dingen wie 'MakeLessThanOrEqualTo' durchforstet –