Over the years, I have written a number of schedule risk analysis programs, the latest being Full Monte for Microsoft Project. From time to time, I have been asked why they never take resource scheduling into account.
There are actually two problems. The more fundamental one is that there is a mismatch between the assumptions made in resource leveling and those made in risk analysis. Most, if not all, resource-scheduling algorithms do their scheduling in some priority order, which generally favors tasks with less total float. This means that they make decisions on tasks which may be well in the future before they make decisions on earlier tasks, and they do this on the assumption that they know when these tasks will be available for scheduling (i.e. when their predecessors are complete). Risk analysis, on the other hand, is all about the fact that we cannot know this with any certainty.
(Risk+ used to take resources into account, but this was more or less by accident, since it uses the Project engine to do its analysis. For example, Risk+ would sample all the durations and pass them to Project for processing. Projects would simulate resource leveling decisions in the future, based upon these sampled durations, which, in reality, could not be known at the time…which, frankly, makes no sense.)
The other reason is more practical. The uncertainty over when tasks are available for scheduling means that the order of execution of the tasks can vary considerably (though nonsensically, given the first problem) between iterations. This results in the dates often having multi-modal distributions, and results which are very hard to interpret meaningfully.
I have been contemplating the first of these problems for a while, and have come to the conclusion that the only sensible way to deal with it would be to simulate the decisions that a project manager would make, based only upon the information he would have at the time. The simplest approach would be similar to a job-shop scheduling algorithm, in which the next job for a particular resource would be selected only from those jobs already available. A more sophisticated approach which might be applied to one or two very special resources (e.g. drilling rigs which are expensive and need to be booked well in advance) would be to make decisions based upon appropriate percentiles of when the job would be ready to start.
While all this would perhaps lead to a more realistic simulation, it would not fulfill the normal “optimization” objective of resource scheduling. But if you believe that task durations are subject to uncertainty, does this optimization really make sense?
I would be very interested to hear readers’ views on this. Comments below are very welcome.
Image courtesy JaseMan @Flickr