This commit is contained in:
Ross
2021-06-07 23:23:12 +01:00
parent 2847e1c987
commit 5c54257065
6 changed files with 717 additions and 561 deletions
+6 -4
View File
@@ -93,7 +93,7 @@ class RotaBuilder(object):
ltft_balance_offset=4,
max_night_frequency=2,
max_weekend_frequency=2,
use_previous_shifts=True,
use_previous_shifts=False,
):
print("Start time: {}".format(datetime.datetime.now()))
@@ -120,6 +120,7 @@ class RotaBuilder(object):
self.rota_days_length)
self.unavailable_to_work = set()
self.unavailable_to_work_reason = {}
self.pref_not_to_work = {}
self.work_requests = set()
self.work_requests_map = {}
@@ -138,7 +139,7 @@ class RotaBuilder(object):
self.max_weekend_frequency = max_weekend_frequency
self.constraint_options = {
"limit_to_1_st1_on_nights": True,
"limit_to_1_st2_on_nights": True,
"ensure_1_st4_plus_on_nights": True,
"ensure_derriford_reg_for_nights": True,
"balance_nights": True,
@@ -452,7 +453,7 @@ class RotaBuilder(object):
workers_required,
site_required,
) in self.get_required_workers_and_site_combinations():
# print(week, day, shift, self.workers_required, site_required)
print(week, day, shift, workers_required, site_required)
self.model.constraints.add(workers_required == sum(
self.model.works[worker.id, week, day, shift]
for worker in self.workers if worker.site in site_required))
@@ -511,7 +512,7 @@ class RotaBuilder(object):
return sum(model.shift_week_worker_assigned[shift, week, w.id]
for w in single_workers) <= 1
if self.constraint_options["limit_to_1_st1_on_nights"]:
if self.constraint_options["limit_to_1_st2_on_nights"]:
self.model.night_shifts_max_st_constraint = Constraint(
[week for week in self.weeks],
[
@@ -1423,6 +1424,7 @@ class RotaBuilder(object):
w = defaultdict(list)
for worker in self.workers:
print(worker)
w[worker.site].append(worker)
l = []