Project management represents a project as a network of activities and events, used to schedule and analyze the project’s timeline.
A project completes only when every activity finishes. Since activities have predecessors, the project duration is bounded by its slowest chain of dependent activities, the path from initial to final event with the largest sum of durations.
Activity
A task consuming time and resources. Represented as an arrow between 2 events.
Predecessor
An activity that must finish before another can start.
Successor
An activity that cannot start until another finishes.
Chain
A sequence of activities in which each is a predecessor of the next.
Dummy Activity
Consumes 0 time and resources. Added only to preserve correct precedence when 2 activities share the same start and end events, or to represent a precedence relationship the diagram couldn’t otherwise express.
Logical Dummy
A dummy activity that represents a precedence relationship between activities. It shows that one activity must finish before another can start, without implying any additional activity.
Identity Dummy
A dummy activity that distinguishes activities with the same start and end events. It preserves the rule that no 2 activities can share both events.
Event
An instantaneous point in time marking the start or completion of one or more activities. Represented as a node.
An event isn’t a task and consumes no time or resources itself. It’s a milestone: the moment every activity ending there has finished, so every activity starting there is now free to begin.
Incoming Activity
An activity ending at that event.
Outgoing Activity
An activity starting at that event.
Network Construction Rules
- Every activity has exactly one start and one end event.
- No 2 activities can share both the same start and end event (use a dummy activity to separate them).
- The network must have no cycles: an event can’t depend on an activity that (directly or indirectly) depends on it.
Critical Path Method
Critical Path Method finds that duration, and identifies the activities on that slowest chain.
Course Scope
Network analysis is treated through the LP approach in this course. Dijkstra’s algorithm was not covered in class.
Earliest Start Time
is the largest total duration of any chain that ends at a predecessor of , or if has no predecessors.
Earliest Finish Time
, the earliest time activity can end.
When 2 activities affect the start of a milestone, the milestone’s earliest start time is the maximum of the 2 incoming early finish times. Reordering a dummy arrow can change an intermediate milestone value without changing the actual activity’s early finish time or the total project duration.
Latest Start Time
, the latest time activity can begin without delaying the project.
Latest Finish Time
is the project duration minus the largest total duration of any chain that starts at a successor of , or the project duration if has no successors.
Project Duration
The largest total duration of any chain of activities. Every activity on that chain must finish in sequence before the project ends.
Critical Path
The chain of activities from the initial to the final event in which every activity has total float . Delaying any activity on the critical path delays the entire project.
Every activity still has to complete for the project to finish, not only the ones on the critical path. An activity off the critical path has slack, room to start later or take longer without pushing the project duration past what the critical path already fixes.
Steps
- Forward pass
Compute and for every activity, from the first activity to the last. - Backward pass
Compute and for every activity, from the last activity back to the first. Each uses its own , so no step needs a value that is computed later. - Project duration is the largest .
- Critical path
The activities with total float .
Float
The slack in an activity’s schedule, how much it can be delayed without consequence. 0 for every activity on the critical path.
For an activity starting at event and ending at event , with duration :
Total Float
How much an activity can be delayed without delaying the project’s completion. Delaying it by more than its total float may still delay other activities.
Free Float
Here ranges over the successors of . If has no successors, use the project duration in place of .
How much an activity can be delayed without delaying the earliest start of any following activity.
Independent Float
Here ranges over the successors of , and ranges over every activity starting at event . Use the project duration in place of if has no successors.
How much an activity can be delayed without affecting any preceding or following activity’s float. Negative values are treated as 0.
Worked Example
A project has 6 activities. The table gives the duration and predecessors of each activity.
| Activity | Duration | Predecessor |
|---|---|---|
| 4 | none | |
| 3 | none | |
| 2 | ||
| 5 | ||
| 3 | , | |
| 4 |
Construct the network from the table, one activity at a time, then compute the earliest and latest times of every activity and the floats.
Solution Reveal Hide
runs from event 1 to event 2, duration .
runs from event 1 to event 3, duration .
runs from event 2 to event 4, duration . It starts only after finishes.
runs from event 3 to event 4, duration . It consumes no time or resources.
runs from event 3 to event 5, duration .
runs from event 4 to event 6, duration . Its predecessors are and .
depends on both and , but ‘s arrow already ends at event 3, where starts, and an activity can only have one end event. Merging events 3 and 4 would make depend on too. The dummy makes wait for without making wait for .
runs from event 5 to event 6, duration . The network is complete.
Each event gets 2 squares above it. The left square holds the earliest finish time (), and the right square the latest finish time, .
The forward pass fills from event 1 to event 6, over the activities entering event . The backward pass fills from event 6 back to event 1, over the activities leaving event .
Event 1 has no predecessors, so . Each of events 2 and 3 has a single incoming activity from event 1, so and .
Event 4 waits for both incoming activities, and the dummy . .
Event 5 has the single incoming activity , so .
. The project duration is .
Event 6 has no successors, so is the project duration, .
.
.
Event 3 has 2 outgoing activities, the dummy and , so the smaller value wins. .
.
Event 1 has 2 outgoing activities, and . .
Every float can be read from the graph. For an activity from event to event with duration , use the boxes at its two events:
- The EF box at is the earliest the activity can start.
- The LF box at is the latest the activity can finish.
- The EF box at is the earliest any successor of the activity can start.
- The LF box at is the latest any predecessor of the activity can finish.
This gives the three floats directly:
For , which runs from event 1 to event 2 with , the boxes show , , and .
- Total float is
- Free float is
- Independent float is
For , which runs from event 2 to event 4 with , the boxes show , , and .
- Total float is
- Free float is
- Independent float is
For , which runs from event 4 to event 6 with , the boxes show , , and .
- Total float is
- Free float is
- Independent float is
The other activities are read the same way.