Fair Shift Distribution
I have a slightly modified version of nurse_sat https://github.com/google/or-tools/blob/master/examples/python/nurses_sat.py where I have a dictionary of key - value pares of (day,
Solution 1:
fairshift = {}
for n in range(num_nurses):
for s in range(num_shifts):
sum_of_shifts[(n, s)] = model.NewIntVar(0, num_days, 'sum_of_shifts_%i_%i' % (n, s))
model.Add(sum_of_shifts[(n, s)] == sum(shifts[(d, n, s)] for d in range(num_days)))
for s in range(num_shifts):
min_fair_shift = model.NewIntVar(0, num_days, 'min_fair_shift_%i' % s)
max_fair_shift = model.NewIntVar(0, num_days, 'max_fair_shift_%i' % s)
model.AddMinEquality(min_fair_shift, [sum_of_shifts[(n, s)] for n in range(num_nurses)])
model.AddMaxEquality(max_fair_shift, [sum_of_shifts[(n, s)] for n in range(num_nurses)])
model.Add(max_fair_shift - min_fair_shift <= 1)
Post a Comment for "Fair Shift Distribution"