What Is Scheduling?¶
Definition of Scheduling¶
Scheduling is the process of assigning jobs (activities) to people (resources) in the most efficient way possible, according to a defined set of constraints.
Here is an example. What is the most efficient way of allocating these activities

to these three people

given that all the work must be completed within one working day?
Here is one solution:

But this is not necessarily the best solution. It depends on what you mean by "the best". For instance, the best way to schedule these activities if you just want to minimise travel is like this:

However, this solution is a lot less fair to the people doing the work.
Business Requirements¶
This immediately highlights the need to be clear about why you have bought the scheduling system, and what are you trying to achieve with it. For instance, you may have bought the system for one or more of the following reasons:
- To reduce the distance travelled by our mobile workforce
- To enable our workforce to complete more work each day
- To reduce the number of sub-contractors we need to hire each day
- To balance the work fairly between our staff
- To arrive at all jobs on time, within the agreed time limits
- To be able to see where everyone is and what they're doing
- To reduce the number of staff needed to manage our mobile workforce
- To enable us to cope with the growing workload which we are expecting
At the beginning of a project it is important to establish an overall goal for the system, so that the scheduling system can be configured to aim for this goal.
Non-Geographic Scheduling¶
So far, we've said that resources are people and activities are jobs that are distributed geographically, but that need not be the case. Resources don't have to be people: they can be teams, machinery or timetable slots for instance; and likewise Activities may be any sort of work or operation that takes up the time of Resources. The activities may all be in the same location, or have no location at all.
The Dynamic Scheduling Engine is a generic optimisation engine which has over 30 different algorithms within it. It finds the best solution to the problem that is given to it whilst obeying the defined constraints. It has been used to optimise manufacturing, timetabling and aircraft scheduling. Please contact the IFS Scheduling team for further details.
The Scaling Problem¶
One of the challenges with scheduling is that there are lots of different ways of scheduling the activities to the resources. For instance, for the example above, there are 43 billion different ways of scheduling the 12 activities to 3 resources. The following table shows how the number of possible schedules increases dramatically as the number of activities increases (with 3 resources):
| Activities | Possible Schedules |
|---|---|
| 1 | 3 |
| 2 | 12 |
| 3 | 60 |
| 4 | 360 |
| 5 | 2,520 |
| 6 | 20,160 |
| 10 | 239,500,800 |
| 20 | 562,000,363,888,803,840,000 |
| 30 | 131,565,418,466,846,765,083,609,006,080,000,000 |
By the time we have 30 activities it is not possible to check every schedule, even if we could use every computer in the world for a year!
For this reason the IFS Scheduling product does not try to evaluate every schedule: it generates a good, basic schedule, and then experiments to see if it can improve this schedule by making small changes to it. This approach works very well, but it has the following consequences:
- There is no clear point at which the schedule is "complete": it continually improves in the background.
- Each time you run the scheduling engine you may get a different result, even though nothing has changed!