Chapter Three
Chapter Three
This chapter will introduce the fundamentals of scheduling methods. Our discussion will
generally assume that computer based scheduling programs will be applied. Consequently, the
wide variety of manual or mechanical scheduling techniques will not be discussed in any detail.
These manual methods are not as capable or as convenient as computer based scheduling. With
the availability of these computer based scheduling programs, it is important for managers to
understand the basic operations performed by scheduling programs. Moreover, even if formal
methods are not applied in particular cases, the conceptual framework of formal scheduling
methods provides a valuable reference for a manager. Accordingly, examples involving hand
calculations will be provided throughout the chapter to facilitate understanding.
In addition to assigning dates to project activities, project scheduling is intended to match the
resources of equipment, materials and labor with project work tasks over time. Good scheduling
can eliminate problems due to production bottlenecks, facilitate the timely procurement of
necessary materials, and otherwise insure the completion of a project as soon as possible. In
contrast, poor scheduling can result in considerable waste as laborers and equipment wait for the
availability of needed resources or the completion of preceding tasks. Delays in the completion
of an entire project due to poor scheduling can also create havoc for owners who are eager to
start using the constructed facilities.
With the background provided by the previous sections, we can formulate the critical path
scheduling mathematically. We shall present an algorithm or set of instructions for critical path
scheduling assuming an activity-on-branch project network. We also assume that all precedences
are of a finish-to-start nature, so that a succeeding activity cannot start until the completion of a
preceding activity. In a later section, we present a comparable algorithm for activity-on-node
representations with multiple precedence types.
Suppose that our project network has n+ 1 node, the initial event being 0 and the last event being
n. Let the time at which node events occur be x 1, x2,...., xn, respectively. The start of the project at
x0 will be defined as time 0. Nodal event times must be consistent with activity durations, so that
an activity's successor node event time must be larger than an activity's predecessor node event
time plus its duration. For an activity defined as starting from event i and ending at event j, this
relationship can be expressed as the inequality constraint, xj xi + Dij where Dij is the duration of
activity (i,j). This same expression can be written for every activity and must hold true in any
feasible schedule. Mathematically, then, the critical path scheduling problem is to minimize the
time of project completion (xn) subject to the constraints that each node completion event cannot
occur until each of the predecessor activities have been completed:
Minimize
(3.1)
subject to:
This is a linear programming problem since the objective value to be minimized and each of the
constraints is a linear equation. [1]
Rather than solving the critical path scheduling problem with a linear programming algorithm
(such as the Simplex method), more efficient techniques are available that take advantage of the
network structure of the problem. These solution methods are very efficient with respect to the
required computations, so that very large networks can be treated even with personal computers.
These methods also give some very useful information about possible activity schedules. The
programs can compute the earliest and latest possible starting times for each activity which are
consistent with completing the project in the shortest possible time. This calculation is of
particular interest for activities which are not on the critical path (or paths), since these activities
might be slightly delayed or re-scheduled overtime as a manager desires without delaying the
entire project.
An efficient solution process for critical path scheduling based upon node labeling is shown in
Table 3-1. Three algorithms appear in the table. The event numbering algorithm numbers the
nodes (or events) of the project such that the beginning event has a lower number than the ending
event for each activity. Technically, this algorithm accomplishes a "topological sort" of the
activities. The project start node is given number 0. As long as the project activities fulfill the
conditions for an activity-on-branch network, this type of numbering system is always possible.
Some software packages for critical path scheduling do not have this numbering algorithm
programmed, so that the construction project planners must insure that appropriate numbering is
done.
The earliest event time algorithm computes the earliest possible time, E(i), at which each event,
i, in the network can occur. Earliest event times are computed as the maximum of the earliest
start times plus activity durations for each of the activities immediately preceding an event. The
earliest start time for each activity (i,j) is equal to the earliest possible time for the preceding
event E(i):
(3.2)
The earliest finish time of each activity (i,j) can be calculated by:
(3.3)
Activities are identified in this algorithm by the predecessor node (or event) i and the successor
node j. The algorithm simply requires that each event in the network should be examined in turn
beginning with the project start (node 0).
The latest event time algorithm computes the latest possible time, L(j), at which each event j in
the network can occur, given the desired completion time of the project, L(n) for the last event n.
Usually, the desired completion time will be equal to the earliest possible completion time, so
that E(n) = L(n) for the final node n. The procedure for finding the latest event time is analogous
to that for the earliest event time except that the procedure begins with the final event and works
backwards through the project activities. Thus, the earliest event time algorithm is often called a
forward pass through the network, whereas the latest event time algorithm is the the backward
pass through the network. The latest finish time consistent with completion of the project in the
desired time frame of L(n) for each activity (i,j) is equal to the latest possible time L(j) for the
succeeding event:
(3.4)
The latest start time of each activity (i,j) can be calculated by:
The earliest start and latest finish times for each event are useful pieces of information in
developing a project schedule. Events which have equal earliest and latest times, E(i) = L(i), lie
on the critical path or paths. An activity (i,j) is a critical activity if it satisfies all of the following
conditions:
(3.6)
(3.7)
(3.8)
Hence, activities between critical events are also on a critical path as long as the activity's earliest
start time equals its latest start time, ES(i,j) = LS(i,j). To avoid delaying the project, all the
activities on a critical path should begin as soon as possible, so each critical activity (i,j) must be
scheduled to begin at the earliest possible start time, E(i).
Consider the network shown in Figure 3-4 in which the project start is given number 0. Then, the
only event that has each predecessor numbered is the successor to activity A, so it receives
number 1. After this, the only event that has each predecessor numbered is the successor to the
two activities B and C, so it receives number 2. The other event numbers resulting from the
algorithm are also shown in the figure. For this simple project network, each stage in the
numbering process found only one possible event to number at any time. With more than one
feasible event to number, the choice of which to number next is arbitrary. For example, if
activity C did not exist in the project for Figure 3-4, the successor event for activity A or for
activity B could have been numbered 1.
Figure 4-5 E(i) and L(i) Display for Hand Calculation of Critical Path for Activity-on-Branch
Representation
TABLE 4-2 Precedence Relations and Durations for a Nine Activity Project Example
Activity Description Predecessors Duration
A Site clearing --- 4
B Removal of trees --- 3
C General excavation A 8
D Grading general area A 7
E Excavation for trenches B, C 9
F Placing formwork and reinforcement for concrete B, C 12
G Installing sewer lines D, E 2
H Installing other utilities D, E 5
I Pouring concrete F, G 6
For the network in Figure 3-4 with activity durations in Table 3-2, the earliest event time
calculations proceed as follows:
Step 1 E(0) = 0
Step 2
j=1 E(1) = Max{E(0) + D01} = Max{ 0 + 4 } = 4
j=2 E(2) = Max{E(0) + D02; E(1) + D12} = Max{0 + 3; 4 + 8} = 12
j=3 E(3) = Max{E(1) + D13; E(2) + D23} = Max{4 + 7; 12 + 9} = 21
j=4 E(4) = Max{E(2) + D24; E(3) + D34} = Max{12 + 12; 21 + 2} = 24
j=5 E(5) = Max{E(3) + D35; E(4) + D45} = Max{21 + 5; 24 + 6} = 30
Thus, the minimum time required to complete the project is 30 since E(5) = 30. In this case, each
event had at most two predecessors.
For the "backward pass," the latest event time calculations are:
L(5) = E(5) = 30
Step 1
Step 2
In this example, E(0) = L(0), E(1) = L(1), E(2) = L(2), E(4) = L(4),and E(5) = L(5). As a result,
all nodes but node 3 are in the critical path. Activities on the critical path include A (0,1), C
(1,2), F (2,4) and I (4,5) as shown in Table 3-3.
TABLE 3-3 Identification of Activities on the Critical Path for a Nine-Activity Project
Duration Earliest start time Latest finish time Latest start time
Activity Dij E(i)=ES(i,j) L(j)=LF(i,j) LS(i,j)
A (0,1) 4 0* 4* 0
B (0,2) 3 0 12 9
C (1,2) 8 4* 12* 4
D (1,3) 7 4 22 15
E (2,3) 9 12 22 13
F (2,4) 12 12* 24* 12
G (3,4) 2 21 24 22
H (3,5) 5 21 30 25
I (4,5) 6 24 30* 24
Activities that have different early and late start times (i.e., ES(i,j) < LS(i,j)) can be scheduled to
start anytime between ES(i,j) and LS(i,j) as shown in Figure 10-6. The concept of float is to use
part or all of this allowable range to schedule an activity without delaying the completion of the
project. An activity that has the earliest time for its predecessor and successor nodes differing by
more than its duration possesses a window in which it can be scheduled. That is, if E(i) + D ij <
L(j), then some float is available in which to schedule this activity.
Float is a very valuable concept since it represents the scheduling flexibility or "maneuvering
room" available to complete particular tasks. Activities on the critical path do not provide any
flexibility for scheduling nor leeway in case of problems. For activities with some float, the
actual starting time might be chosen to balance work loads over time, to correspond with
material deliveries, or to improve the project's cash flow.
Of course, if one activity is allowed to float or change in the schedule, then the amount of float
available for other activities may decrease. Three separate categories of float are defined in
critical path scheduling:
1. Free float is the amount of delay which can be assigned to any one activity without
delaying subsequent activities. The free float, FF(i,j), associated with activity (i,j) is:
(10.9)
2. Independent float is the amount of delay which can be assigned to any one activity
without delaying subsequent activities or restricting the scheduling of preceding
activities. Independent float, IF(i,j), for activity (i,j) is calculated as:
3. Total float is the maximum amount of delay which can be assigned to any activity
without delaying the entire project. The total float, TF(i,j), for any activity (i,j) is
calculated as:
(3.11)
Each of these "floats" indicates an amount of flexibility associated with an activity. In all cases,
total float equals or exceeds free float, while independent float is always less than or equal to free
float. Also, any activity on a critical path has all three values of float equal to zero. The converse
of this statement is also true, so any activity which has zero total float can be recognized as being
on a critical path.
The various categories of activity float are illustrated in Figure 3-6 in which the activity is
represented by a bar which can move back and forth in time depending upon its scheduling start.
Three possible scheduled starts are shown, corresponding to the cases of starting each activity at
the earliest event time, E(i), the latest activity start time LS(i,j), and at the latest event time L(i).
The three categories of float can be found directly from this figure. Finally, a fourth bar is
included in the figure to illustrate the possibility that an activity might start, be temporarily
halted, and then re-start. In this case, the temporary halt was sufficiently short that it was less
than the independent float time and thus would not interfere with other activities. Whether or not
such work splitting is possible or economical depends upon the nature of the activity.
As shown in Table 3-3, activity D(1,3) has free and independent floats of 10 for the project
shown in Figure 3-4. Thus, the start of this activity could be scheduled anytime between time 4
and 14 after the project began without interfering with the schedule of other activities or with the
earliest completion time of the project. As the total float of 11 units indicates, the start of activity
D could also be delayed until time 15, but this would require that the schedule of other activities
be restricted. For example, starting activity D at time 15 would require that activity G would
begin as soon as activity D was completed. However, if this schedule was maintained, the overall
completion date of the project would not be changed.
As another example of critical path scheduling, consider the seven activities associated with the
fabrication of a steel component shown in Table 3-4. Figure 3-7 shows the network diagram
associated with these seven activities. Note that an additional dummy activity X has been added
to insure that the correct precedence relationships are maintained for activity E. A simple rule to
observe is that if an activity has more than one immediate predecessor and another activity has at
least one but not all of these predecessor activities as a predecessor, a dummy activity will be
The results of the earliest and latest event time algorithms (appearing in Table 3-1) are shown in
Table 3-5. The minimum completion time for the project is 32 days. In this small project, all of
the event nodes except node 1 are on the critical path, Table 3-6 shows the earliest and latest start
times for the various activities including the different categories of float. Activities C,E,F,G and
the dummy activity X are seen to lie on the critical path.
TABLE 3-6 Earliest Start, Latest Start and Activity Floats for a Seven Activity Project
Latest start time Free float
Activity Earliest start time ES(i,j) LS(i,j) Independent float Total float
A (0,1) 0 1 0 0 1
B (1,3) 6 7 1 0 1
C (0,2) 0 0 0 0 0
D (2,4) 8 12 4 4 4
E (3,4) 8 8 0 0 0
F (4,5) 17 17 0 0 0
G (5,6) 29 29 0 0 0
X (2,3) 8 8 0 0 0
Network diagrams for projects have already been introduced. These diagrams provide a powerful
visualization of the precedences and relationships among the various project activities. They are
a basic means of communicating a project plan among the participating planners and project
monitors. Project planning is often conducted by producing network representations of greater
and greater refinement until the plan is satisfactory.
A useful variation on project network diagrams is to draw a time-scaled network. The activity
diagrams shown in the previous section were topological networks in that only the relationship
between nodes and branches were of interest. The actual diagram could be distorted in any way
Figure 3-8 Illustration of a Time Scaled Network Diagram with Nine Activities
Another useful graphical representation tool is a bar or Gantt chart illustrating the scheduled time
for each activity. The bar chart lists activities and shows their scheduled start, finish and
duration. An illustrative bar chart for the nine activity project appearing in Figure 3-4 is shown in
Figure 3-9. Activities are listed in the vertical axis of this figure, while time since project
commencement is shown along the horizontal axis. During the course of monitoring a project,
useful additions to the basic bar chart include a vertical line to indicate the current time plus
small marks to indicate the current state of work on each activity. In Figure 3-9, a hypothetical
project state after 4 periods is shown. The small "v" marks on each activity represent the current
state of each activity.
Bar charts are particularly helpful for communicating the current state and schedule of activities
on a project. As such, they have found wide acceptance as a project representation tool in the
field. For planning purposes, bar charts are not as useful since they do not indicate the
precedence relationships among activities. Thus, a planner must remember or record separately
that a change in one activity's schedule may require changes to successor activities. There have
been various schemes for mechanically linking activity bars to represent precedences, but it is
now easier to use computer based tools to represent such relationships.
Other graphical representations are also useful in project monitoring. Time and activity graphs
are extremely useful in portraying the current status of a project as well as the existence of
activity float. For example, Figure 3-10 shows two possible schedules for the nine activity
project described in Table 9-1 and shown in the previous figures. The first schedule would occur
if each activity was scheduled at its earliest start time, ES(i,j) consistent with completion of the
project in the minimum possible time. With this schedule, Figure 3-10 shows the percent of
project activity completed versus time. The second schedule in Figure3-10 is based on latest
possible start times for each activity, LS(i,j). The horizontal time difference between the two
feasible schedules gives an indication of the extent of possible float. If the project goes according
to plan, the actual percentage completion at different times should fall between these curves. In
practice, a vertical axis representing cash expenditures rather than percent completed is often
used in developing a project representation of this type. For this purpose, activity cost estimates
are used in preparing a time versus completion graph. Separate "S-curves" may also be prepared
Figure 3-10 Example of Percentage Completion versus Time for Alternative Schedules with a
Nine Activity Project.
Time versus completion curves are also useful in project monitoring. Not only the history of the
project can be indicated, but the future possibilities for earliest and latest start times. For
example, Figure 3-11 illustrates a project that is forty percent complete after eight days for the
nine activity example. In this case, the project is well ahead of the original schedule; some
activities were completed in less than their expected durations. The possible earliest and latest
start time schedules from the current project status are also shown on the figure.
Figure 3-11 Illustration of Actual Percentage Completion versus Time for a Nine Activity
Project Underway.
Graphs of resource use over time are also of interest to project planners and managers. An
example of resource use is shown in Figure 3-12 for the resource of total employment on the site
of a project. This graph is prepared by summing the resource requirements for each activity at
each time period for a particular project schedule. With limited resources of some kind, graphs of
this type can indicate when the competition for a resource is too large to accommodate; in cases
of this kind, resource constrained scheduling may be necessary as described in Section 10.9.
Even without fixed resource constraints, a scheduler tries to avoid extreme fluctuations in the
demand for labor or other resources since these fluctuations typically incur high costs for
training, hiring, transportation, and management. Thus, a planner might alter a schedule through
the use of available activity floats so as to level or smooth out the demand for resources.
Resource graphs such as Figure 3-12 provide an invaluable indication of the potential trouble
spots and the success that a scheduler has in avoiding them.
Figure 3-12 Illustration of Resource Use over Time for a Nine Activity Project
A common difficulty with project network diagrams is that too much information is available for
easy presentation in a network. In a project with, say, five hundred activities, drawing activities
so that they can be seen without a microscope requires a considerable expanse of paper. A large
project might require the wall space in a room to include the entire diagram. On a computer
display, a typical restriction is that less than twenty activities can be successfully displayed at the
same time. The problem of displaying numerous activities becomes particularly acute when
accessory information such as activity identifying numbers or phrases, durations and resources
are added to the diagram.
One practical solution to this representation problem is to define sets of activities that can be
represented together as a single activity. That is, for display purposes, network diagrams can be
produced in which one "activity" would represent a number of real sub-activities. For example,
an activity such as "foundation design" might be inserted in summary diagrams. In the actual
project plan, this one activity could be sub-divided into numerous tasks with their own
precedences, durations and other attributes. These sub-groups are sometimes termed fragnets for
fragments of the full network. The result of this organization is the possibility of producing
diagrams that summarize the entire project as well as detailed representations of particular sets of
activities. The hierarchy of diagrams can also be introduced to the production of reports so that
summary reports for groups of activities can be produced. Thus, detailed representations of
particular activities such as plumbing might be prepared with all other activities either omitted or
summarized in larger, aggregate activity representations. The CSI/MASTERSPEC activity
An example figure of a sub-network appears in Figure 3-13. Summary displays would include
only a single node A to represent the set of activities in the sub-network. Note that precedence
relationships shown in the master network would have to be interpreted with care since a
particular precedence might be due to an activity that would not commence at the start of activity
on the sub-network.
The use of graphical project representations is an important and extremely useful aid to planners
and managers. Of course, detailed numerical reports may also be required to check the
peculiarities of particular activities. But graphs and diagrams provide an invaluable means of
rapidly communicating or understanding a project schedule. With computer based storage of
basic project data, graphical output is readily obtainable and should be used whenever possible.
Finally, the scheduling procedure described in Section 3.3 simply counted days from the initial
starting point. Practical scheduling programs include a calendar conversion to provide calendar
dates for scheduled work as well as the number of days from the initiation of the project. This
conversion can be accomplished by establishing a one-to-one correspondence between project
dates and calendar dates. For example, project day 2 would be May 4 if the project began at time
0 on May 2 and no holidays intervened. In this calendar conversion, weekends and holidays
would be excluded from consideration for scheduling, although the planner might overrule this
feature. Also, the number of work shifts or working hours in each day could be defined, to
Back to top
For manual application of the critical path algorithm shown in Table 3-7, it is helpful to draw a
square of four entries, representing the ES(i), EF(i), LS(i) and LF (i) as shown in Figure 3-14.
During the forward pass, the boxes for ES(i) and EF(i) are filled in. As an exercise for the reader,
the seven activity network in Figure 3-3 can be scheduled. Results should be identical to those
obtained for the activity-on-branch calculations.
Figure3-14 ES, EF, LS and LF Display for Hand Calculation of Critical Path for Activity-on-
Node Representation
Building on the critical path scheduling calculations described in the previous sections, some
additional capabilities are useful. Desirable extensions include the definition of allowable
windows for activities and the introduction of more complicated precedence relationships among
activities. For example, a planner may wish to have an activity of removing formwork from a
new building component follow the concrete pour by some pre-defined lag period to allow
setting. This delay would represent a required gap between the completion of a preceding
activity and the start of a successor. The scheduling calculations to accommodate these
complications will be described in this section. Again, the standard critical path scheduling
assumptions of fixed activity durations and unlimited resource availability will be made here,
although these assumptions will be relaxed in later sections.
Direct,or.finish-to-start.leads
The successor activity cannot start until the preceding activity is complete by at
least the prescribed lead time (FS). Thus, the start of a successor activity must
exceed the finish of the preceding activity by at least FS.
Start-to-start.leads
The successor activity cannot start until work on the preceding activity has been
underway by at least the prescribed lead time (SS).
Finish-to-finish.leadss
The successor activity must have at least FF periods of work remaining at the completion
of the preceding activity.
While the eight precedence relationships in Table 3-8 are all possible, the most common
precedence relationship is the straightforward direct precedence between the finish of a
preceding activity and the start of the successor activity with no required gap (so FS = 0).
The computations with these lead and lag constraints are somewhat more complicated variations
on the basic calculations defined in Table 10-1 for critical path scheduling. For example, a start-
to-start lead would modify the calculation of the earliest start time to consider whether or not the
necessary lead constraint was met:
(3.12)
where SSij represents a start-to-start lead between activity (i,j) and any of the activities starting at
event j.
The possibility of interrupting or splitting activities into two work segments can be particularly
important to insure feasible schedules in the case of numerous lead or lag constraints. With
activity splitting, an activity is divided into two sub-activities with a possible gap or idle time
between work on the two subactivities. The computations for scheduling treat each sub-activity
separately after a split is made. Splitting is performed to reflect available scheduling flexibility or
to allow the development of a feasible schedule. For example, splitting may permit scheduling
the early finish of a successor activity at a date later than the earliest start of the successor plus
its duration. In effect, the successor activity is split into two segments with the later segment
scheduled to finish after a particular time. Most commonly, this occurs when a constraint
involving the finish time of two activities determines the required finish time of the successor.
When this situation occurs, it is advantageous to split the successor activity into two so the first
Finally, the definition of activity windows can be extremely useful. An activity window defines a
permissible period in which a particularly activity may be scheduled. To impose a window
constraint, a planner could specify an earliest possible start time for an activity (WES) or a latest
possible completion time (WLF). Latest possible starts (WLS) and earliest possible finishes
(WEF) might also be imposed. In the extreme, a required start time might be insured by setting
the earliest and latest window start times equal (WES = WLS). These window constraints would
be in addition to the time constraints imposed by precedence relationships among the various
project activities. Window constraints are particularly useful in enforcing milestone completion
requirements on project activities. For example, a milestone activity may be defined with no
duration but a latest possible completion time. Any activities preceding this milestone activity
cannot be scheduled for completion after the milestone date. Window constraints are actually a
special case of the other precedence constraints summarized above: windows are constraints in
which the precedecessor activity is the project start. Thus, an earliest possible start time window
(WES) is a start-to-start lead.
One related issue is the selection of an appropriate network representation. Generally, the
activity-on-branch representation will lead to a more compact diagram and is also consistent with
other engineering network representations of structures or circuits. [3] For example, the nine
activities shown in Figure 10-4 result in an activity-on-branch network with six nodes and nine
branches. In contrast, the comparable activity-on-node network shown in Figure 9-6 has eleven
nodes (with the addition of a node for project start and completion) and fifteen branches. The
activity-on-node diagram is more complicated and more difficult to draw, particularly since
branches must be drawn crossing one another. Despite this larger size, an important practical
reason to select activity-on-node diagrams is that numerous types of precedence relationships are
easier to represent in these diagrams. For example, different symbols might be used on each of
the branches in Figure 9-6 to represent direct precedences, start-to-start precedences, start-to-
finish precedences, etc. Alternatively, the beginning and end points of the precedence links can
indicate the type of lead or lag precedence relationship. Another advantage of activity-on-node
representations is that the introduction of dummy links as in Figure 10-1 is not required. Either
representation can be used for the critical path scheduling computations described earlier. In the
absence of lead and lag precedence relationships, it is more common to select the compact
activity-on-branch diagram, although a unified model for this purpose is described in Chapter 11.
Of course, one reason to pick activity-on-branch or activity-on-node representations is that
particular computer scheduling programs available at a site are based on one representation or
the other. Since both representations are in common use, project managers should be familiar
with either network representation.
Table 3-9 contains an algorithmic description of the calculations required for critical path
scheduling with leads, lags and windows. This description assumes an activity-on-node project
network representation, since this representation is much easier to use with complicated
precedence relationships. The possible precedence relationships accomadated by the procedure
contained in Table 3-9 are finish-to-start leads, start-to-start leads, finish-to-finish lags and start-
to-finish lags. Windows for earliest starts or latest finishes are also accomodated. Incorporating
other precedence and window types in a scheduling procedure is also possible as. With an
activity-on-node representation, we assume that an initiation and a termination activity are
included to mark the beginning and end of the project. The set of procedures described in Table
10-9 does not provide for automatic splitting of activities.
TABLE 3-9 Critical Path Scheduling Algorithms with Leads, Lags and Windows (Activity-on-
Node Representations)
Activity Numbering Algorithm
Step 1: Give the starting activity number 0.
Step 2: Give the next number to any unnumbered activity whose predecessor activities
are each already numbered.
Repeat Step 2 until all activities are numbered.
Forward Pass Computations
Step 0: Set the earliest start and the earliest finish of the initial activity to zero:
(ES(0) = EF(0) = 0).
Repeat the following steps for each activity k = 0,1,2,...,m:
Step 1: Compute the earliest start time (ES(k)) of activity k:
ES(k) = Maximum {0; WES(k) for the earliest start window time,
WEF(k) - D(k) for the earliest finish window time;
EF(i) + FS(i,k) for each preceding activity with a F-S constraint;
ES(i) + SS(i,k) for each preceding activity with a S-S constraint;
EF(i) + FF(i,k) - D(k) for each preceding activity with a F-F constraint;
ES(i) + SF(i,k) - D(k) for each preceding activity with a S-F constraint.}
Step 2: Compute the earliest finish time EF(k) of activity k:
EF(k) = ES(k) + D(k).
Backward Pass Computations
Step 0: Set the latest finish and latest start of the terminal activity to the early start time:
LF(m) = LS(m) = ES(m) = EF(m)
Repeat the following steps for each activity in reverse order, k = m-1,m-2,...,2,1,0: Step 1:
Compute the latest finish time for activity k:
LF(k) = Min{ LF(m), WLF(k) for the latest finish window time;
WLS(k) + D(k) for the latest start window time;
LS(j) - FS(k,j) for each succeeding activity with a F-S constraint;
LF(j) - FF(k,j) for each succeeding activity with a FF constraint;
The first step in the scheduling algorithm is to sort activities such that no higher numbered
activity precedes a lower numbered activity. With numbered activities, durations can be denoted
D(k), where k is the number of an activity. Other activity information can also be referenced by
the activity number. Note that node events used in activity-on-branch representations are not
required in this case.
The forward pass calculations compute an earliest start time (ES(k)) and an earliest finish time
(EF(k)) for each activity in turn (Table 3-9). In computing the earliest start time of an activity k,
the earliest start window time (WES), the earliest finish window time (WEF), and each of the
various precedence relationships must be considered. Constraints on finish times are included by
identifying minimum finish times and then subtracting the activity duration. A default earliest
start time of day 0 is also insured for all activities. A second step in the procedure is to identify
each activity's earliest finish time (EF(k)).
The backward pass calculations proceed in a manner very similar to those of the forward pass
(Table 3-9). In the backward pass, the latest finish and the latest start times for each activity are
calculated. In computing the latest finish time, the latest start time is identified which is
consistent with precedence constraints on an activity's starting time. This computation requires a
minimization over applicable window times and all successor activities. A check for a feasible
activity schedule can also be imposed at this point: if the late start time is less than the early start
time (LS(k) < ES(k)), then the activity schedule is not possible.
The result of the forward and backward pass calculations are the earliest start time, the latest start
time, the earliest finish time, and the latest finish time for each activity. The activity float is
computed as the latest start time less the earliest start time. Note that window constraints may be
instrumental in setting the amount of float, so that activities without any float may either lie on
the critical path or be constrained by an allowable window.
To consider the possibility of activity splitting, the various formulas for the forward and
backward passes in Table 10-9 must be modified. For example, in considering the possibility of
activity splitting due to start-to-start lead (SS), it is important to ensure that the preceding activity
has been underway for at least the required lead period. If the preceding activity was split and the
first sub-activity was not underway for a sufficiently long period, then the following activity
cannot start until the first plus the second sub-activities have been underway for a period equal to
SS(i,k). Thus, in setting the earliest start time for an activity, the calculation takes into account
the duration of the first subactivity (DA(i)) for preceding activities involving a start-to-start lead.
Algebraically, the term in the earliest start time calculation pertaining to start-to-start precedence
constraints (ES(i) + SS(i,k)) has two parts with the possibility of activity splitting:
The computation of earliest finish time involves similar considerations, except that the finish-to-
finish and start-to-finish lag constraints are involved. In this case, a maximization over the
following terms is required:
Finally, the necessity to split an activity is also considered. If the earliest possible finish time is
greater than the earliest start time plus the activity duration, then the activity must be split.
Another possible extension of the scheduling computations in Table 3-9 would be to include a
duration modification capability during the forward and backward passes. This capability would
permit alternative work calendars for different activities or for modifications to reflect effects of
time of the year on activity durations. For example, the duration of outside work during winter
months would be increased. As another example, activities with weekend work permitted might
have their weekday durations shortened to reflect weekend work accomplishments.
With a start-to-start precedence constraint with a two day lead, the scheduling calculations are:
ES(0) = 0
ES(1) = 0
EF(1) = ES(1) + D(1) = 0 + 5 = 5
ES(2) = ES(1) + SS(1,2) = 0 + 2 = 2
EF(2) = ES(2) + D(2) = 2 + 5 = 7
ES(3) = EF(2) + FS(2,3) = 7 + 0 = 7.
Finally, suppose that a finish-to-finish precedence relationship exists between activity 1 and
activity 2 with a two day lag. The scheduling calculations are:
ES(0) = 0 = EF(0)
ES(1) = EF(0) + FS(0,1) = 0 + 0 = 0
EF(1) = ES(1) + D(1) = 0 + 5 = 5
ES(2) = EF(1) + FF(1,2) - D(2) = 5 + 2 - 5 = 2
EF(2) = ES(2) + D(2) = 2 + 5 = 7
ES(3) = EF(2) + FS(2,3) = 7 + 0 = 7 = EF(3)
In this case, the earliest finish for activity 2 is on day seven to allow the necessary two day lag
from the completion of activity 1. The minimum project completion time is again seven days.
As a second example of the scheduling computations involved in the presence of leads, lags and
windows, we shall perform the calculations required for the project shown in Figure 3-15. Start
and end activities are included in the project diagram, making a total of eleven activities. The
various windows and durations for the activities are summarized in Table 3-10 and the
precedence relationships appear in Table 3-11. Only earliest start (WES) and latest finish (WLF)
window constraints are included in this example problem. All four types of precedence
relationships are included in this project. Note that two activities may have more than one type of
precedence relationship at the same time; in this case, activities 2 and 5 have both S-S and F-F
precedences. In Figure 3-15, the different precedence relationships are shown by links
connecting the activity nodes. The type of precedence relationship is indicated by the beginning
or end point of each arrow. For example, start-to-start precedences go from the left portion of the
preceding activity to the left portion of the following activity. Application of the activity sorting
algorithm (Table 3-9) reveals that the existing activity numbers are appropriate for the critical
path algorithm. These activity numbers will be used in the forward and backward pass
calculations.
TABLE 10-10 Predecessors, Successors, Windows and Durations for an Example Project
Activity Earliest Start Latest Finish Activity
Number Predecessors Successors Window Window Duration
0 --- 1, 2, 4 --- --- 0
1 0 3, 4, 6 --- --- 2
2 0 5 --- --- 5
3 1 6 2 --- 4
4 0 7, 8 --- --- 3
5 2, 2 7, 8 --- 16 5
6 1, 3 9 6 16 6
7 4, 5 9 --- --- 2
8 4, 5 10 --- --- 4
9 6, 7 10 --- 16 5
10 8, 9 --- --- --- 0
During the forward pass calculations (Table 10-9), the earliest start and earliest finish times are
computed for each activity. The relevant calculations are:
ES(0) = EF(0) = 0
ES(1) = Max{0; EF(0) + FS(0,1)} = Max {0; 0 + 0} = 0.
EF(1) = ES(1) + D(1) = 0 + 2 = 2
ES(2) = Max{0; EF(0) + FS(0,1)} = Max{0; 0 + 0} = 0.
EF(2) = ES(2) + D(2) = 0 + 5 = 5
ES(3) = Max{0; WES(3); ES(1) + SS(1,3)} = Max{0; 2; 0 + 1} = 2.
EF(3) = ES(3) + D(3) = 2 + 4 = 6
Note that in the calculation of the earliest start for activity 3, the start was delayed to be
consistent with the earliest start time window.
As the result of these computations, the earliest project completion time is found to be 16 days.
The earliest and latest start times for each of the activities are summarized in Table 10-12.
Activities without float are 0, 1, 6, 9 and 10. These activities also constitute the critical path in
the project. Note that activities 6 and 9 are related by a finish-to-finish precedence with a 4 day
lag. Decreasing this lag would result in a reduction in the overall project duration.
TABLE 10-12 Summary of Activity Start and Finish Times for an Example Problem
Activity Earliest Start Latest Start Float
0 0 0 0
1 0 0 0
2 0 1 1
3 0 2 2
4 0 6 6
5 2 3 1
6 6 6 0
7 8 9 1
8 5 12 7
9 11 11 0
10 16 16 0
Back to top
Resource oriented scheduling also is appropriate in cases in which unique resources are to be
used. For example, scheduling excavation operations when one only excavator is available is
simply a process of assigning work tasks or job segments on a day by day basis while insuring
that appropriate precedence relationships are maintained. Even with more than one resource, this
manual assignment process may be quite adequate. However, a planner should be careful to
insure that necessary precedences are maintained.
One possible simplification of the resource oriented scheduling problem is to ignore precedence
relationships. In some applications, it may be impossible or unnecessary to consider precedence
constraints among activities. In these cases, the focus of scheduling is usually on efficient
utilization of project resources. To insure minimum cost and delay, a project manager attempts to
minimize the amount of time that resources are unused and to minimize the waiting time for
The simplest form of resource oriented scheduling is a reservation system for particular
resources. In this case, competing activities or users of a resource pre-arrange use of the resource
for a particular time period. Since the resource assignment is known in advance, other users of
the resource can schedule their activities more effectively. The result is less waiting or "queuing"
for a resource. It is also possible to inaugurate a preference system within the reservation process
so that high-priority activities can be accomadated directly.
In the more general case of multiple resources and specialized tasks, practical resource
constrained scheduling procedures rely on heuristic procedures to develop good but not
necessarily optimal schedules. While this is the occasion for considerable anguish among
researchers, the heuristic methods will typically give fairly good results. An example heuristic
method is provided in the next section. Manual methods in which a human scheduler revises a
critical path schedule in light of resource constraints can also work relatively well. Given that
much of the data and the network representation used in forming a project schedule are
uncertain, the results of applying heuristic procedures may be quite adequate in practice.
A recent construction project for a high-rise building complex in New York City was severely
limited in the space available for staging materials for hauling up the building. On the four
building site, thirty-eight separate cranes and elevators were available, but the number of
movements of men, materials and equipment was expected to keep the equipment very busy.
With numerous sub-contractors desiring the use of this equipment, the potential for delays and
waiting in the limited staging area was considerable. By implementing a crane reservation
system, these problems were nearly entirely avoided. The reservation system required
contractors to telephone one or more days in advance to reserve time on a particular crane. Time
were available on a first-come, first-served basis (i.e. first call, first choice of available slots).
Penalties were imposed for making an unused reservation. The reservation system was also
computerized to permit rapid modification and updating of information as well as the provision
of standard reservation schedules to be distributed to all participants.
Suppose that a project manager has eleven pipe sections for which necessary support structures
and materials are available in a particular week. To work on these eleven pipe sections, five
crews are available. The allocation problem is to assign the crews to the eleven pipe sections.
This allocation would consist of a list of pipe sections allocated to each crew for work plus a
In the previous example, suppose that a mathematical model and solution was desired. For this
purpose, we define a binary (i.e. 0 or 1 valued) decision variable for each pipe section and crew,
xij, where xij = 1 implies that section i was assigned to crew j and xij = 0 implied that section i was
not assigned to crew j. The time required to complete each section is t i. The overall time to
complete the nine sections is denoted z. In this case, the problem of minimizing overall
completion time is:
Minimize z
subject to the constraints:
The previous section outlined resource oriented approaches to the scheduling problem. In this
section, we shall review some general approaches to integrating both concerns in scheduling.
Two problems arise in developing a resource constrained project schedule. First, it is not
necessarily the case that a critical path schedule is feasible. Because one or more resources might
be needed by numerous activities, it can easily be the case that the shortest project duration
identified by the critical path scheduling calculation is impossible. The difficulty arises because
critical path scheduling assumes that no resource availability problems or bottlenecks will arise.
Finding a feasible or possible schedule is the first problem in resource constrained scheduling.
Of course, there may be a numerous possible schedules which conform with time and resource
constraints. As a second problem, it is also desirable to determine schedules which have low
costs or, ideally, the lowest cost.
Numerous heuristic methods have been suggested for resource constrained scheduling. Many
begin from critical path schedules which are modified in light of the resource constraints. Others
begin in the opposite fashion by introducing resource constraints and then imposing precedence
constraints on the activities. Still others begin with a ranking or classification of activities into
priority groups for special attention in scheduling. [7] One type of heuristic may be better than
another for different types of problems. Certainly, projects in which only an occasional resource
constraint exists might be best scheduled starting from a critical path schedule. At the other
extreme, projects with numerous important resource constraints might be best scheduled by
considering critical resources first. A mixed approach would be to proceed simultaneously
considering precedence and resource constraints.
The order in which resources are considered in this scheduling process may influence the
ultimate schedule. A good heuristic to employ in deciding the order in which resources are to be
considered is to consider more important resources first. More important resources are those that
have high costs or that are likely to represent an important bottleneck for project completion.
Once important resources are scheduled, other resource allocations tend to be much easier. The
resulting scheduling procedure is described in Table 3-14.
The late start time heuristic described in Table 3-14 is only one of many possible scheduling
rules. It has the advantage of giving priority to activities which must start sooner to finish the
project on time. However, it is myopic in that it doesn't consider trade-offs among resource types
nor the changes in the late start time that will be occurring as activities are shifted later in time.
More complicated rules can be devised to incorporate broader knowledge of the project schedule.
These complicated rules require greater computational effort and may or may not result in
scheduling improvements in the end.
Step 3:
Start at the project beginning, so set t = 0.
Step 4:
Compute the demand for resource i at time t by summing up the
requirements for resource i for all activities scheduled to be underway
at time t.
t+1.
Step 5:
Repeat step 4 for each project period in turn, setting t = t+1.
As an example of resource constrained scheduling, we shall re-examine the nine activity project
discussed in Section 10.3. To begin with, suppose that four workers and two pieces of equipment
such as backhoes are available for the project. The required resources for each of the nine project
activities are summarized in Table 10-15. Graphs of resource requirements over the 30 day
project duration are shown in Figure 10-17. Equipment availability in this schedule is not a
problem. However, on two occasions, more than the four available workers are scheduled for
work. Thus, the existing project schedule is infeasible and should be altered.
TABLE 3-15 Resources Required and Starting Times for a Nine Activity Project
Activity Workers Required Equipment Required Earliest Start Time Latest Start Time Duration
A 2 0 0 0 4
B 2 1 0 9 3
C 2 1 4 4 8
D 2 1 4 15 7
E 2 1 12 13 9
F 2 0 12 12 12
G 2 1 21 22 2
H 2 1 21 25 5
I 4 1 24 24 6
Figure 3-17 Resources Required over Time for Nine Activity Project: Schedule I
The first resource problem occurs on day 21 when activity F is underway and activities G and H
are scheduled to start. Applying the latest start time heuristic to decide which activity should
start, the manager should re-schedule activity H since it has a later value of LS(i,j), i.e., day 25
versus day 22 as seen in Table3-15. Two workers become available on day 23 after the
completion of activity G. Since activity H is the only activity which is feasible at that time, it is
scheduled to begin. Two workers also become available on day 24 at the completion of activity
F. At this point, activity I is available for starting. If possible, it would be scheduled to begin
As another example, suppose that only one piece of equipment was available for the project. As
seen in Figure 3-17, the original schedule would have to be significantly modified in this case.
Application of the resource constrained scheduling heuristic proceeds as follows as applied to the
original project schedule:
1. On day 4, activities D and C are both scheduled to begin. Since activity D has a larger
value of late start time, it should be re-scheduled.
2. On day 12, activities D and E are available for starting. Again based on a later value of
late start time (15 versus 13), activity D is deferred.
3. On day 21, activity E is completed. At this point, activity D is the only feasible activity
and it is scheduled for starting.
4. On day 28, the planner can start either activity G or activity H. Based on the later start
time heuristic, activity G is chosen to start.
5. On completion of activity G at day 30, activity H is scheduled to begin.
The resulting profile of resource use is shown in Figure 3-18. Note that activities F and I were
not considered in applying the heuristic since these activities did not require the special
equipment being considered. In the figure, activity I is scheduled after the completion of activity
H due to the requirement of 4 workers for this activity. As a result, the project duration has
increased to 41 days. During much of this time, all four workers are not assigned to an activity.
At this point, a prudent planner would consider whether or not it would be cost effective to
obtain an additional piece of equipment for the project.
Figure 3-18 Resources Required over Time for Nine Activity Project: Schedule II