Why Bulk-Scheduling doesn’t work and what you can do about it…
So, I probably need to start with a disclaimer. I have never spent a significant portion of my day trying to schedule and re-schedule activities based on changing circumstances.
That said, I’ve probably spent a good few man-months over the last twenty years watching other people doing this in the process of trying to find better ways of achieving the same or better outcomes in order to free them of the tyranny of repetitive and un-rewarding activities. I’m obviously not the only person who has noticed this and who has tried to find solutions to this common, persistent issue. However, quite interestingly (if you are a bit of a systems geek) the approach to trying to fix the problem often has more to do with the type of system being used than the parameters of the problem itself.
So what are the approaches taken and how do they differ?
Throw computers at it…
This is obviously metaphorical. In this approach Data on previous performance (if available) and all current activities is used to train a Machine Learning Algorithm that once trained is used to continuously adjust scheduling based on how ever many factors you have managed to define. It spends its’ time re-scheduling from whatever horizon you have set forwards, leaving only current operational schedules to be managed by supervisors or planners dealing with the current workload.
Throw resources at it…
In this approach you either have a flexible workforce, or the ability to get capacity on demand – whether from subcontractors or casual labor. Typically used when the revenue is based on timely performance (and so the economics dictate you can adopt this path) and where the knowledge and experience of the workforce is less important than their ability to be at a given place at a given time with the appropriate resource.
Throttle demand…
In this approach, whatever the marketplace is (and this pretty much assumes you dominate the marketplace) you just increase the pricing or decrease the zone of operation until demand drops off to meet the supply you have available. Great when you are dealing with real-time scheduling, not so much if you need to offer a continuous service with future bookings.
Standardize Supply…
In this approach you focus on units of work, standardizing them and making them big-enough that you effectively over-allocate time for all jobs, giving you a degree of “flex” in a normal work-day that can be used to deal with unexpected disruptions or urgent jobs.
Reality
Unless you control the marketplace you operate in, have a very standard delivery model, provide a service that is largely unaffected by external factors and can scale supply instantly to meet demand, then chances are you need a combination of approaches to help meet the need for flexibility, without incurring significant overhead.
Our Ideal Approach
Don’t schedule unless you have to….prioritize. It’s very difficult and time and resource-consuming to re-allocate resources if you have hundreds of resources and thousands of jobs to complete in a day and you have hard allocated jobs to crews/people.
By prioritizing instead of scheduling you introduce a degree of flexibility into the who-does-what-when-where algorithm as you can have a number of factors affecting the priority of a Job. A Job that is overdue can be higher priority than Job that still hasn’t reached its’ service-by date. A Job that can only be done between 15:00 and 17:00 should be a higher priority leading up to that window than something that can be done any time. With no hard allocation, Job "schedules" adapt continuously to the available workforce and conditions with no resource or effort required.
Don’t make your crews all the same. Distinguish between them. If there is no difference between the certifications / qualifications / licenses and plant / resources available to all work crews – and multiple depots (so geography) play no part in the equation – then consider allocating a percentage of your crews to be more “reactive” dealing with high-priority works rather than the same scheduled maintenance work. This can be a rotating allocation if you want to keep people on their toes. Alternatively, consider creating zones and splitting crews between them, with “parent-zones” that own multiple zones used for sets of crews to mix things up. By not having all your crews working in the same manner, you effectively create a degree of flex within the workforce capable of dealing with demand spikes.
Pre-define your Jobs with primary, secondary and tertiary resource requirements, so crews with the right resource to match primary requirements are preferred over those with secondary & tertiary requirements, but that no one who meets the requirements is excluded from taking the Job.
Make appointments when required. Fixed time & date appointments cannot be prioritized in a queue and should be hard-allocated to the appropriate resources. But when they are, make sure that the system has the supporting logic to ensure they can’t take Jobs before their appointments that have the potential to disrupt the appointment.
Quantify what factors affect your ability to carry out Jobs efficiently and try and source an effective way of measuring an alerting on those factors in order to adjust your prioritization. (think weather, traffic, air quality, accessibility, light, etc.)
If you combine and harness all these elements, you will move towards more productive, intelligent and reactive Data Driven Servicing.