You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have been looking into your ‘MinHoursRoster’, which does exactly what it is supposed do to. However, realistic workforce planning is conducted most often on a weekly basis. Therefore, I would like o ask you to create a ‘WeeklyRoster’ tool that would look like the existing ‘MinHoursRoster’ but with following three major differences :
Instead of a number of days, the user should be able to create a roster based on a number of weeks (each week made up of 7 days)
When entering a number of ‘max_rest’ days (from 0 as no resting day and 7 as the maximum number of resting days per week), whenever the ‘max_rest’ days >= 2, such two resting days should be combined to simulate the weekend (or its replacing two days) according to a revolving scheme to be calculated by the logic. I think this could be done by adapting your ‘MinHoursRoster’ code as follows :
def optimize_max_resting(shifts, num_days, max_resting):
resting_days = 0
for i in range(num_days):
if shifts[i] == 0:
resting_days += 1
if resting_days >= 2:
return True
else:
resting_days = 0
if max_resting > 2:
return True
return False
Finally, the shifts should remain stable throughout the week for each individual resource (and not having such a resource switch between 2, 3 or even 4 shifts (or more) during the days he/she will be planned for each week. E.g. someone should work 5 days the same shift during the same week in which he/she has 2 resting days. Next week this could be another shift, but always the same shift within this second week, and so on. I think this could be done by adapting your ‘MinHoursRoster’ code as follows :
def optimize_shifts(shifts, max_consecutive_shifts):
consecutive_shifts = 0
for i in range(len(shifts)):
if shifts[i] == 1:
consecutive_shifts += 1
if consecutive_shifts >= max_consecutive_shifts:
if i + 1 < len(shifts) and shifts[i + 1] == 0:
consecutive_shifts = 0
else:
return False
else:
consecutive_shifts = 0
return True
I am not proficient enough to start tampering with your code, but it would be greatly appreciated if you could look into this. Creating a ‘WeeklyRoster’ tool would be a great addition to pyworkforce, I think since it would mimic more closely real life situations.
The text was updated successfully, but these errors were encountered:
Hello Rodrigo,
I have been looking into your ‘MinHoursRoster’, which does exactly what it is supposed do to. However, realistic workforce planning is conducted most often on a weekly basis. Therefore, I would like o ask you to create a ‘WeeklyRoster’ tool that would look like the existing ‘MinHoursRoster’ but with following three major differences :
Instead of a number of days, the user should be able to create a roster based on a number of weeks (each week made up of 7 days)
When entering a number of ‘max_rest’ days (from 0 as no resting day and 7 as the maximum number of resting days per week), whenever the ‘max_rest’ days >= 2, such two resting days should be combined to simulate the weekend (or its replacing two days) according to a revolving scheme to be calculated by the logic. I think this could be done by adapting your ‘MinHoursRoster’ code as follows :
def optimize_max_resting(shifts, num_days, max_resting):
resting_days = 0
for i in range(num_days):
if shifts[i] == 0:
resting_days += 1
if resting_days >= 2:
return True
else:
resting_days = 0
if max_resting > 2:
return True
return False
Finally, the shifts should remain stable throughout the week for each individual resource (and not having such a resource switch between 2, 3 or even 4 shifts (or more) during the days he/she will be planned for each week. E.g. someone should work 5 days the same shift during the same week in which he/she has 2 resting days. Next week this could be another shift, but always the same shift within this second week, and so on. I think this could be done by adapting your ‘MinHoursRoster’ code as follows :
def optimize_shifts(shifts, max_consecutive_shifts):
consecutive_shifts = 0
for i in range(len(shifts)):
if shifts[i] == 1:
consecutive_shifts += 1
if consecutive_shifts >= max_consecutive_shifts:
if i + 1 < len(shifts) and shifts[i + 1] == 0:
consecutive_shifts = 0
else:
return False
else:
consecutive_shifts = 0
return True
I am not proficient enough to start tampering with your code, but it would be greatly appreciated if you could look into this. Creating a ‘WeeklyRoster’ tool would be a great addition to pyworkforce, I think since it would mimic more closely real life situations.
The text was updated successfully, but these errors were encountered: