Personnel Staffing Optimization
Using Integer Programming

Here is a hypothetical example that assigns employees to work shifts in a way that minimizes
total weekly salary costs. We have simplified the problem somewhat (eliminating the scheduling of meal
breaks, multiple daily shifts, etc.), but in practice we could include all of those details.
This table shows the basic setup of the problem. The table cells containing green zeroes (the decision
variable) are the cells that the model will solve for; the cells containing the red zeroes will also change,
reflecting the final number of workers assigned to each day's shift; the blue cell represents the objective (wage
cost minimization):
This table makes several things apparent:
 Each worker will work no more than five days a week (union rules)
 Workers who work only on weekdays receive a weekly salary of $550; workers who work
either Saturdays or Sundays get an additional $50 per week above the weekdayonly rate; workers who
work Saturdays and Sundays get an additional $100 above the weekday rate (again, union
rules)
 Staffing needs vary by day of the week, with the fewest workers needed on Sundays and the most workers
needed on Mondays
Because we cannot physically assign a partial worker to a shift, the number of workers must always be a whole
number, or integer. Therefore this is an integer programming problem, which means that in order to cover
all shifts with at least the required number of workers, the solution may show some slight overstaffing on one
or more days.
Here is the solution to the staffing problem:
Note, among other things, that for the minimized total weekly payroll of $20,200:
 Only six distinct shifts are needed, not seven (shift 6 is assigned no workers)
 Wednesday is the only day of the week for which the model produces a slight overstaffing (21 needed, 23
assigned); and because weekdays are least costly in terms of wages, this assignment minimizes the cost
Return to Optimization Programming main page
