SKEDSOFT

Operations Research

Backward Pass:

  • The backward pass goes from the final task to the initial task, visiting every task in every path and setting the LS and LF dates on the tasks.
  • It’s similar to the forward pass in that when it arrives at a task, it may change that task’s LS and LF dates and that change must be carried back. The difference is:
  • The forward pass sets the task’s latest ES, as determined by the EFs of its predecessors
  • The backward pass sets the task’s earliest LF, as determined by the LSs of its successors.
  • The reason for the backward pass’s rule for setting LF is not as obvious as the forward pass’s rule. Any start date, ES or LS, must be after the corresponding finish dates of all of the task’s predecessors. To maintain this consistency, the backward pass must set a task’s LF to a value that’s earlier than the LS of any of that task’s successors.
  • If the task has already been visited and this visit doesn’t change its dates, there is no need to go backward from this task, since nothing beyond it will change either.

 

The steps of this pass are:

1.Set the final task’s LF = the task’s EF.

2.Calculate the task’s LS = LF - duration 1

3.Calculate an LF for the task’s predecessors; LFpredecessor = LStask - 1

4.Visit all of the task’s predecessors. If the predecessor’s current LF is greater than the LF from step 3:

a.Replace the current LF with the step 3 value.

b.Repeat steps 2–4 for the current task’s predecessors, unless there are no more because the first task has been reached.

5.Go back down the path just completed to a task with unvisited predecessors.

6.Repeat steps 4–5 until all predecessors have been visited, which will cover all paths from those predecessors to the initial task.

When the backward pass is finished, the initial task’s EF and LF should be equal. It is on the critical path, just like the final task, and it has no float. If EF and LF are different, an error was made in one of the passes.