staff scheduling
DESCRIPTION
STAFF SCHEDULINGTRANSCRIPT
STAFF SCHEDULING
Burcu Felekoğlu 2000503024Sema Eroğlu 1999503081Yuri Volkov 2000503076
Overview
What is Staff Scheduling? Types of Staff Scheduling Problems Application Areas Solution Techniques Modeling Approach A Real Time Problem in USPS Expression in Lingo Discussion of Solution
What is Staff Scheduling? Staff scheduling problems are
concerned with scheduling a workforce so as to meet demand which varies with the time of day and with the day of week.
The major challenge is providing a reasonable labor cost and customer satisfaction while meeting this varying demand.
Types of Staff Scheduling Problems
There are three kinds of staffing problems
Shift scheduling Days-on scheduling problem Tour scheduling problem
Shift Scheduling
It includes finding the optimal crew size and assigning each member of the crew to various shifts during the day.
Days-on scheduling
This kind of scheduling requires to define the working days and not working days of employees in their work schedules in order to satisfy their days-off requirement.
Tour scheduling It contains both shift scheduling and
days-on scheduling and it provides to plan working days of each employee in a planned period which is covered by the schedule.
The objective of the tour scheduling problem is to find the least costly way to staff the system at the targeted levels by determining the ideal number of employees to be assigned to each feasible work schedule.
Break window
A break must be given in all shifts which are longer than a specific number of periods.
These breaks generally can start after a specific time and must finish before another specific time; in literature this interval is called as break window.
Application Areas
Some of application areas of staff scheduling are;
Hospitals (especially in nurse scheduling) Mail processing organizations Hub of trucking systems Airlines Call centers Catering and house keeping workforce in the
hospitality industry
Solution Techniques
Integer linear programming; to achieve an optimal schedule,
Heuristics; to reach good, if not optimal, solutions to very complex situations.
Combinations of linear programming and heuristics.
Modeling Approaches
Constraints Hard Constaints Soft Constaints Sequence Constaints Incompatibility Constaints
Objectives Cost, Fairness, Soft constraint violations
A Real Problem in USPS
An employee works 8 ½ consecutive hours which includes a ½ h allowance for a lunch break.
The organization operates 24 h a day, 7 days a week.
The workday has 48 periods, each 30 min. long.
The model includes 9 different full-time shifts whose start times are:
Shift Type Start Times Shift Length
Full time
7:00, 8:00, 9:00 (a.m.)
8 ½ hour (17 periods)
3:00, 4:00, 5:00 (p.m.)
8:30, 9:30,10:30 (p.m.)
For every worker a break window of 4 periods is assigned between 9th and 12th period.
Each worker works 5 days a week. The goal is to minimize the total
weekly cost of the workforce
Expression in Lingo SETS: days/sat, sun, mon, tue, wed, thu, fri/; shifts/1..9/ : start, total; periods/1..48/; shift_x_day(shifts, days): number; period_x_day(periods, days): required,
breaks; covers(shifts, periods): cover; n_m_set/1..9/:n, m; ENDSETS
DATA: required = 4 4 7 7 7 7 6 7 4 9 9 10 10 9 6 4 8 8 9 9 8 ………………………………………; start = 1 3 5 17 19 21 28 30 32; n = 12 14 16 28 30 32 39 41 43; m = 9 11 13 25 27 29 36 38 40; ENDDATA
min = @sum(shifts(f):total(f)); (1)
@for(days(d): @for(periods(t): @sum(shifts(f):cover(f, t)*number(f, d)) - breaks(t, d) >= required(t, d))); (2)
@for(shifts(f): total(f) >= 0.20*@sum(days(d):number(f, d))); (3)
@for(shifts(f): @for(days(d): total(f) >= number(f, d))); (4)
@for(covers(f, t)|t #le# (start(f) + 16) #and# t #ge# start(f): cover(f, t) = 1);
@for(covers(f, t)|t #gt# (start(f) + 16) #or# t #lt# start(f) : cover(f, t) = 0);
@for(cover(f, t)| t #ge# (start(f) + 8) #and# t #le# (start(f) + 11) : break_window(f, t) = 1);
@for(cover(f, t)| t #lt# (start(f) + 8) #or# t #gt# (start(f) + 11) : break_window(f, t) = 0);
@for(period_x_day(t, d) | @sum(shifts(f): break_window(f, t) #le# 0: breaks(t, d) = 0);
@for(shifts(f):@gin(total(f))); (8)
@for(shift_x_day(f, d):@gin(number(f, d))); (8)
@for(days(d):@sum(shifts(f):number(f, d)) = @sum(periods(t)| t #ge# 9 #and# t #le# 40: breaks(t, d))); (7)
@for(days(d):@for(n_m_set(i):@sum(periods(t)|t #ge# 9 #and# t #le# n(i):breaks(t, d)) >= @sum(shifts(f)|(start(f) + 8) #ge# 9 #and# (start(f) + 11) #le# n(i): number(f, d)))); (5)
@for(days(d):@for(n_m_set(i):@sum(periods(t)|t #ge# m(i) #and# t #le# 40:breaks(t, d)) >= @sum(shifts(f)|(start(f) + 8) #ge# m(i) #and# (start(f) + 11) #le# 40: number(f, d)))); (6)
Discussion of Solution.
Shift Type (f)
Total Enrolled (wf)
Number of employees working on each weekday(d) (xfd )
Sat Sun Mon Tue Wed Thu Fri
1 15 9* 4 13 9 15 14 11
2 4 4 3 0 4 0 3 3
3 7 2 1 7 7 7 5 6
4 21 21 3 13 13 16 18 21
5 9** 1 6 9 9 9 9 2
6 10 2 1 10 10 10 8 9
7 10 2 4 9 7 9 8 8
8 11 7 1 8 10 10 11 5
9 39 26 7 30 30 33 33 34
Periods (t)Number of breaks initiated on period (t) on each weekday(d) (fd )
Sat Sun Mon Tue Wed Thu Fri
1
8
9 10 3 14 14 15 13
10 9 14 13 15 15
11 6 1 8 9 9 8
12 6 1 7 8 9 6 8
13 6 1 8 7 8
Thank YouWe wish you a happy
new year!