Chapter Contents |
Previous |
Next |

The CPM Procedure |

PROC CPM computes the early start schedule as well as the late start
schedule for the project.
The project start date is used as the starting point
for the calculation of the early start schedule, while the project
completion date is used in the computation of the late start schedule.
The early start time (E_START) for
all *start* activities (those activities with no predecessors)
in the project
is set to be equal to the value of
the DATE parameter (if the FINISHBEFORE option is not specified).
The early
finish time (E_FINISH) for each start activity is computed as
E_START + *dur* , where *dur* is the activity's
duration (as specified in the Activity data set).
For each of the other activities in the network, the early start time
is computed as the maximum of the early finish time of all
its immediate predecessors.

The project finish time is computed as the
maximum of the early finish time of all the activities
in the network. The
late finish time (L_FINISH) for all the *finish* activities
(those activities with no successors) in the
project is set to be equal to the project finish time. The late start
time (L_START)
is computed as L_FINISH - *dur*. For each of the other
activities in the network, the late finish time is computed as the
minimum of the late start time of all its immediate successors.
If the FIXFINISH option is specified, the
late finish time for each finish activity is set to be equal to its
early finish time. In other words, the finish activities are
not allowed to float to the end of the project.

Once the early and late start schedules have been computed, the procedure computes the free and total float times for each activity. Free float (F_FLOAT) is defined as the maximum delay that can be allowed in an activity without delaying a successor activity. Total float (T_FLOAT) is calculated as the difference between the activity's late finish time and early finish time; it indicates the amount of time by which an activity can be delayed without delaying the entire project.

An activity that has zero T_FLOAT is said to be *critical*.
As a result of the forward and backward pass computations just
described, there is at least one path in the project network
that contains only critical activities. This path is called the
*critical path*. The duration of the project is
equal to the length of the critical path.

If the FBDATE= option is also specified, the project finish time
is set equal to the value of the FBDATE= option. The backward pass
computation is initiated by setting the late finish time for all the
finish activities in the project to be equal to *fbdate*.
If the project finish time, as computed from the forward
pass calculations, is different from *fbdate*, the longest
path in the network may no longer have 0 total float. In such a
situation, the critical path is defined to be the path in the network
with the least total float. Activities with negative T_FLOAT are
referred to as *supercritical* activities.
**Note:** An important requirement for a project network is that it should
be *acyclic* (cycles are not allowed).
A network is said to contain a *cycle* (or *loop*)
if the precedence relationships starting
from an activity loops back to the same activity. The forward and
backward pass computations cannot be performed for a cyclic network.
If the project network has a cycle, the CPM procedure stops processing
after identifying the cycle.

Chapter Contents |
Previous |
Next |
Top |

Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.