To explore how DS/machine learning and optimisation can work together to solve problems such as last mile delivery or rostering, let’s explore a new problem: staffing a call centre. For this example, our aim is to ensure enough staff are available to minimise wait times for customers but also minimise time staff are idle. This will allow us to serve our customers at the lowest cost to the business.

Assuming that you know key variables and constraints such as:

- The shift schedule and how many employees need to be on each shift based on:
- Expected call volumes
- Average time taken to respond to a customer

- How many employees are available
- How many hours a week each employee can or needs to work (based on contracts)

Then this information can be fed into a** mathematical optimiser **to assign staff to shifts in the most feasible way.

To solve this problem using **traditional machine learning**, you would need historical examples of how staff were assigned to shifts that the algorithm can learn from to allocate the next set of shifts. The output from examining the historical data would be a prediction of what the next best shift assignments would be. This prediction could help guide you in deciding the best shift assignment but isn’t well equipped to handle the intricate sets of decisions that dictate shift assignments in the same way optimisation can.

As a machine learning model is based on historical data, the model is limited to past examples in finding the most optimal roster that exists while an optimiser looks at all possibilities for the next roster. Further, if there are any changes to the system such as staff being sick or call volumes suddenly changing, the resulting model may no longer be valid while an optimiser would easily adapt to the new information and regenerate a feasible roster.

One exciting new field of machine learning research that could be applied to help solve this problem is **reinforcement learning** however, this is a topic for another blog!