Shift scheduling optimization: Generating shift types, planning for demand, and assigning workers

Solving a workforce scheduling problem? Not sure where to start? We walk through the basics and cover what you need to know about optimizing and automating shift scheduling.

If you’re faced with solving a shift scheduling problem, you’ll likely discover that the world of scheduling is a complex one with a variety of approaches to finding solutions – from prebuilt applications and industry-specific SaaS options to custom models and bespoke algorithms.

There are numerous types of scheduling problems (and categorizing them can get confusing), so let's narrow the scope a bit to get a starter foothold for understanding this space. In this post, we’ll talk specifically about scheduling problems that involve shifts. Types of questions that come up when solving shift scheduling problems include: 

  • What types of shifts should I generate to meet internal and external regulations? Are they fixed or flexible?
  • How many shifts do we need to cover demand?
  • How should I schedule workers to shifts to avoid under or overstaffing?

Shift scheduling problems tend to flow into one another — one solution provides the input for the next. Shift scheduling often starts with demand forecasting and ends with assigning workers to shifts. For instance, demand for package delivery will impact the number of driver shifts required and will require assigning available drivers to relevant shifts. Let’s look at a few real-world examples and focus on how to get started.

Types of shift scheduling problems

Solving a scheduling problem might mean planning shift types for restaurant employees or creating teaching rosters for a school system. You may know the problem by a few different names. Here are a few that might sound familiar:

  • Workforce scheduling
  • Employee rostering
  • Crew scheduling 
  • Driver scheduling
  • Nurse scheduling (from academic examples)

(We aren’t covering job shop scheduling in this post, but reach out to us if you’re interested in related use cases.)

Regardless of what you call it, scheduling is critical in industries like: 

  • Airlines
  • Call centers
  • Caretaking
  • Construction
  • Delivery
  • Education
  • Field service
  • Healthcare
  • Hospitality
  • Retail
  • Sports

In the scheduling problems listed above, there are common constraints to consider such as: 

  • Qualification or skill matching (e.g., licensed to drive certain vehicles)
  • Shift preferences (e.g., preference for afternoon or night shifts)
  • Continuity (e.g., home healthcare nurses taking care of the same patients)
  • Labor laws (e.g., minimum consecutive hours or days off)
  • Contractual agreements (e.g., break types)
  • Costs involved in employee activation (e.g., high demand)

And there are a whole lot of other questions in communities like StackExchange that ask about coffee house scheduling with lunch breaks, minimizing required resources for a service desk, timetabling for schools, and many more.

Solving shift scheduling problems

We’ll break down the shift scheduling process into three parts. These steps are sometimes combined, but for the sake of simplicity, we will dive into each one individually. 

Generate types of shifts

Goal: Shift generation seeks to create the best collection of shift types to use in shift planning (the next step).


  • Possible shift lengths
  • Worker types

You may also consider:

  • Time to ramp up and down 
  • Fixed and marginal costs of shifts (e.g., hourly pay and overtime pay)

Example: Shift types could be 1-hour, 4-hour, or 8-hour shifts. If you have salary-based employees, you may have fixed shifts like 9 am to 5 pm. If you have contracted workers or hourly employees, you may have flexible, more variable shifts. 

Decide how many of each shift to create

Goal: Shift planning (or shift creation) seeks to match the desired scheduled system supply (e.g., available shift types) to demand (e.g., orders per hour or workers required).


  • Shift types or shift templates
  • Potential start times for different shift types 
  • Expected demand per time unit 
  • Expected supply per time unit for each shift 

You may also consider:

  • Time horizons (e.g., schedules that repeat weekly)
  • Costs of excess supply and supply shortfall (e.g., oversupply and undersupply)

Example: Using forecasts, here’s what demand might look like for a given week.

Based on the demand above, this schedule depicts the required number of each shift type – showing the cost associated with individual shifts (e.g., employee pay) over the course of the week.

Assign workers to shifts

Goal: Shift assignment (or shift scheduling) seeks to assign available workers to open shifts. 


  • Shift start and end times
  • Worker availability and/or shift preferences

You may also consider:

  • Shift requirements regarding who can fill them (e.g., worker type or preference and qualifications)
  • Worker requirements that apply over the entire schedule (e.g., total hours worked)

Example: Once you know the number of shifts required (because you previously figured out the types of shifts you needed), you can assign qualified workers to those shifts.

Get started

Vertical-specific software offers solutions for scheduling problems by industry, while custom options involve more hands-on modeling but allow for greater flexibility to match unique objectives and requirements. Nextmv provides solutions that range from low-code SaaS to completely custom so you can see value quickly and adapt to meet unique needs as your business scales. 

Get started with the Nextmv Shift Scheduling app and then customize the code to meet your needs. Or use the Nextmv OR-Tools integration to solve your scheduling problem. A critical piece of developing a solution includes testing. Use acceptance tests to validate changes and shadow tests to see how a model performs in production conditions. 

Stay tuned for two new Nextmv scheduling apps coming soon! And, of course, please reach out to us anytime to chat about your decision optimization use case.

Video by:
No items found.