Let’s consider the “making tea” example from our lesson on project networks . We have a directed, weighted network that looks like this:
Imagine that you and a friend are on a team, racing to make a cup of tea as fast as you can. One of you is going to boil the water while the other is going to add the tea to the pot. What is the minimum time required to make a cup of tea? Let's focus on the first set of tasks:
At each stage all dependent activities must be completed before the next step can begin. So while it was seem counter-intuitive, the longest path through a project network will give the minimum possible completion time for the project.
This path through the whole network is called the critical path. For our example above, this looks like:
It goes from start to finish, highlighting the critical tasks. Any delay in any task along this path means a delay overall project. The minimum completion time for a project is the length of the critical path. For our example the minimum time to complete making a cup of tea is: 20+30+10+120+8+5+5=198 \text{ s}.
In the “making tea” example the critical path was easy to spot. Finding the critical path in the network below is a little more complicated.
There are twelve tasks in all. Which tasks are the most critical, where delays are costly? Which tasks can be delayed without impacting the overall finish time? To figure this out, we are going to do a forward and backward scan.
Start by putting a little box both above and below each vertex (you can put just one for the Start and Finish):
The top boxes will be used for the forward scan and the bottom boxes for the backward scan.
In the forward scan we calculate the earliest possible time for each task to begin, once all its predecessors are complete.
We put a 0 in the Start box and move along each task, adding up how long it would take to start the next task as we go, and writing it in the top box for each vertex. If there is only one arrowhead pointing at a vertex, just take the number at the previous vertex and add the task time to get the new number. Here are the first seven boxes filled in:
Reading along the top:
we can start C after 1 day (we have to wait for A),
start both D and E after 1+7=8 days (we have to wait for A and then wait for C),
and start G after 8+7=15 days (wait for A and then C and then E).
Reading along the bottom:
we can start F after 4 days (wait for B),
start both J and K after 4+12=16 days (wait for B and then F),
and start M after 16+12=28 days (wait for B and then F and then K).
Now the remaining vertices have more than one arrowhead pointing at them. This means that more than one task is a dependency, so they all need to be completed before we continue.
Since they both need to be ready before moving on, we write the largest number, 25, in the box to indicate how long it takes before we can get started on H.
We do this for the rest of the mergers all the way to the finish - picking the largest sum along all the tasks before it.
The numbers in these boxes are the earliest start times for each activity - as long as everything goes to plan, each task can start on the day sitting above the vertex that it is drawn from. We can also tell that it will take 41 days for everything to be ready.
Now, we start our backwards scan. The backward scan will tell us the latest start times for each task. If each task begins no later than this time, then all remaining tasks can be completed without delaying the overall finish time.
The process is similar to forward scanning, but this time we start with the number on the right and subtract the task duration instead of adding. If there is only one edge coming out of the vertex we are heading towards, we simply subtract the task time.
Starting from the Finish vertex, here are the first four boxes from the backwards scan filled in:
When two or more edges emerge from the same vertex, we want to pick the smallest number.
By the end of this process, the numbers on the bottom of a vertex are the latest start times for the activity starting at this vertex - if this amount of time has passed and the task hasn’t begun, the whole project will be delayed.
Where there are multiple tasks starting at a vertex the latest start time relates to the latest start time of the most critical task leading from the vertex.
Taking a closer look at the network after completing the forward and backward scan, notice that there is a single path from start to finish through vertices where the earliest start time and the latest start time are the same - if we highlight this path, we have identified the critical path.
We can name the critical path by listing the task names: B\to F\to J\to L or just BFJL.
Note: In some cases there may be more than one critical path. We may also encounter networks that include dummy tasks. These tasks have a completion time of 0 and the forward and backward scan is performed as if these are regular tasks.
When we are forward scanning and backward scanning, we need to take care with vertices that have multiple arrows going in or out.
In some examples, instead of using a box above and below the vertex, project networks are drawn with a line inside the vertex circle or something else entirely. How we do it isn’t important, what we need are two places to put numbers at each vertex.
The three examples shown above are all equivalent indicate that the task coming out of this vertex has an earliest start time of 12 and latest start time of 17 (in the relevant time units).
In some cases, the vertex is numbered, as shown in the second and third examples where the vertex is number 3. The vertex numbering does not affect any time calculations.
Given the following network:
Find the earliest starting time (EST) for each vertex.
\text{Vertex} | \text{Start} | 1 | 2 | 3 | 4 | 5 | 6 | \text{Finish} |
---|---|---|---|---|---|---|---|---|
\text{EST} |
Now find the latest starting time (LST) for each vertex.
\text{Vertex} | \text{Start} | 1 | 2 | 3 | 4 | 5 | 6 | \text{Finish} |
---|---|---|---|---|---|---|---|---|
\text{EST} | 0 | 7 | 1 | 13 | 17 | 17 | 23 | 32 |
\text{LST} |
Determine the critical path through the network by listing the activities in order.
What is the duration of the critical path?
The critical path is the longest path through the network from start to finish. The critical path passes through all of the critical activities and its length is the minimum possible completion time for the project.
To complete a forwards scan to find the earliest start times (EST):
Start at the first vertex - it has an EST of 0.
The EST of the next vertex is equal to the sum of the EST of the previous vertex and duration of the activity between them.
If more than one activity lead to the same vertex, the maximum sum will be the EST of the following vertex.
Repeat until reaching the Finish vertex. The EST of the finish vertex gives the minimum completion time for the project.
To complete a backwards scan to find the latest start times (LST):
Begin at the Finish vertex. The LST of the finish vertex is equal to its EST.
The LST of the previous vertex is the difference between the LST of the current vertex and the duration of the activity between them.
If there is more than one activity starting at the same node, the minimum difference is the LST of the previous vertex.
Repeat until returning to the Start vertex. The LST of the Start vertex has to be 0.
The critical path will be the longest path through the network from start to finish. It will pass through all the critical activities which will have EST = LST. The duration of the critical path is the EST of the last node in the critical path.
Non-critical tasks have some flexibility in the time they take to complete before a delay to the entire project would result. The amount of leeway a task has before it would become critical is called the float time (sometimes called slack time).
Critical tasks have a float time of 0. Their earliest and latest start times are equal, so the tasks have no ability to allow for a delay without an overall delay for the entire project.
We can see how much delay a task can tolerate by calculating the difference between a task's earliest start time (EST) and latest start time (LST). For activities that are the only task leading from a vertex this is simply the difference between the two boxes on the vertex the activity is coming from.
For a general activity the float time can be calculated as follows:
Let's look again at our completed network and calculate the float times for non-critical tasks.
The non-critical tasks in this case are A,C,D,E,G,H,K, and M and their float times are shown below:
Activity | Calculation | Float time (days) |
---|---|---|
A | 7-0-1 | 6 |
C | 14-1-7 | 6 |
D | 31-8-15 | 8 |
E | 21-8-7 | 6 |
G | 31-15-10 | 6 |
H | 32-25-1 | 6 |
K | 36-16-12 | 8 |
M | 41-28-5 | 8 |
Some observations:
The critical tasks B,F,J, and L have a float time of 0 and cannot have any delay without causing delay to the entire project.
Tasks on the path A,C,E,G,H all have a float time of 6. In fact, these float times are shared along this path. For example, if task A takes 7 days instead of 1, all subsequent tasks must be started on their latest start date in order to avoid delays.
Tasks on the path K,M both have a float time of 8 days. Again this float time is shared across both tasks. For example, if task K was delayed by 5 days then task M would then have a reduced float time of 3 days.
Task D has a float time of 8 days, this means the task can take up to 23 days to complete before becoming critical and any further delay would delay the entire project.
In the following network the critical path has been highlighted in red:
List all non-critical activities.
Find the float time for each non-critical activity.
A small swimming club is planning a competition. The various tasks that need to be completed in preparation for the competition, A-M, are described in the precedence table below:
Job | Time (days) | Prerequisites | Earliest Start Time | Latest Start Time |
---|---|---|---|---|
A | 2 | \text{NONE} | 0 | 7 |
B | 3 | A | 2 | 9 |
C | 8 | \text{NONE} | 0 | 0 |
D | 7 | \text{NONE} | 0 | 1 |
E | 7 | A | 2 | 9 |
F | 5 | E | 9 | 16 |
G | 9 | B,H,J | 12 | 12 |
H | 4 | C | 8 | 8 |
I | 6 | F,G | 21 | 21 |
J | 4 | D | 7 | 8 |
K | 5 | H,J | 12 | 16 |
L | 2 | I | 27 | 27 |
M | 8 | K | 17 | 21 |
Select all jobs from the following options that are on the critical path.
Calculate the minimum completion time for the competition preparation.
Task J is delayed by 3 days, what effect will this have on the minimum completion time?
Float time is the amount of delay a task can tolerate. This is the difference of a task's EST from LST.
For a general activity the float time can be calculated as follows:
\text{Float time $=$ LST$_2$ $-$ EST$_1$ $-$ Activity time}
Having just looked at forward and backward scanning, identifying the critical path and calculating float times, we can now asses the impact delays and changes may have on the project. Keep the following in mind when assessing changes:
If a critical task is delayed by a given amount of time the entire project will also be delayed by the same amount.
If a critical task is reduced, provided there is only one critical path, the completion time of the project will be reduced. However, the full reduction may not be realised as the critical path may change. In this case, we must carefully analyse the network to see if there are further changes. This may involve doing a partial or full re-scan of the network.
If a non-critical task is delayed by less than its float time there will be no delay to the overall project completion time.
Once a non-critical task is delayed by its float time it becomes critical and any further delay will delay the entire project.
When analysing a project network it is good practice to think of what limitations the method has, as well as limitations and assumptions that may be particular to the given situation. Some questions to consider which may highlight some assumptions are:
Is there enough staff, machinery and work space for tasks to run concurrently where possible?
Is it likely there will be no delays, such as weather delays on a building site?
Can each activity start immediately after its dependent tasks are completed?
Are there allowances for breaks, shift changes?
Are all staff at an experience level to complete the tasks in the time stated?
The network displays the times (in hours) in the production process for a toy manufacturer's new toy. The forwards and backwards scan with critical path highlighted is shown.
If task M is delayed by 4 hours, what will be the new completion time for a toy?
If task H is delayed by 4 hours, what impact on the completion time will this have?
What is the most that task E can be reduced by and still have an effect on the overall completion time?
If task L is delayed by 2 hours it becomes critical and the network will contain 2 critical paths. What is the second critical path formed?
Projects have limitations and assumptions that should be considered in order to complete the project.