The critical path method, or critical path analysis, is an algorithm for scheduling a set of project activities. It is commonly used in conjunction with the program evaluation and review technique.
This is a python program that
- takes an activity table with each activity's predecessors and duration and stores it into a graph
- using a modified Breadth First Search algorithm to traverse the graph and determine the correct path
- calculates number of attributes for each activity following the selected path, these attributes are :
- DU = Activity Duration
- ES = Early Start Time
- EF = Early Finish Time
- LS = Late Start Time
- LF = Late Finish Time
- SK = Slack Value
- draws a plot showing the the graph, attributes for each node and critical path (green nodes),
Activity | Predecessors | Duration |
---|---|---|
A | - | 7 |
B | A | 9 |
C | A | 3 |
D | B | 8 |
E | C | 5 |
F | C | 4 |
G | D E F | 2 |
H | G | 1 |
Activity | Predecessors | Duration |
---|---|---|
A | - | 5 |
B | - | 4 |
C | A | 7 |
D | A | 3 |
E | B | 2 |
F | D | 9 |
G | B C | 8 |
Activity | Predecessors | Duration |
---|---|---|
A | - | 3 |
B | A | 4 |
C | A | 2 |
D | B | 5 |
E | C | 1 |
F | C | 2 |
G | D E | 4 |
H | F G | 3 |
Activity | Predecessors | Duration |
---|---|---|
A | - | 3 |
B | A | 60 |
C | A | 5 |
D | A | 15 |
E | B | 6 |
F | D | 40 |
G | C E | 10 |
H | F | 7 |
I | G | 6 |
J | H I | 12 |
Activity | Predecessors | Duration |
---|---|---|
A | - | 7 |
B | A | 7 |
C | B | 14 |
D | A | 14 |
E | D | 14 |
F | D | 14 |
G | E | 21 |
H | F | 7 |
I | G | 7 |
J | C H | 1 |
K | E | 7 |
L | E | 7 |
M | L | 7 |
N | I J K M | 7 |
Activity | Predecessors | Duration |
---|---|---|
A | - | 2 |
B | A | 4 |
C | B | 3 |
D | B | 2 |
E | C D | 10 |
F | B | 4 |
Activity | Predecessors | Duration |
---|---|---|
A | - | 16 |
B | - | 20 |
C | - | 30 |
D | B | 15 |
E | B | 10 |
F | D | 3 |
G | D | 16 |
H | A | 15 |
I | E F | 12 |
Activity | Predecessors | Duration |
---|---|---|
A | - | 8 |
B | - | 2 |
C | A | 5 |
D | B | 4 |
E | C D | 6 |
F | E | 7 |
G | D | 7 |
H | G | 5 |
I | E | 6 |
Activity | Predecessors | Optimistic Time | Most probable Time | Pessimistic Time |
---|---|---|---|---|
A | - | 6 | 9 | 12 |
B | A | 3 | 4 | 11 |
C | A | 2 | 5 | 14 |
D | B C | 4 | 6 | 8 |
E | C | 1 | 1.5 | 5 |
F | E | 5 | 6 | 7 |
G | D | 7 | 8 | 15 |
H | B | 1 | 2 | 3 |
| Variance | 7.22222222 | | Standard Deviation | 2.68741925 | | Propability on 26 day | 4.9% |
Used Tools:
- Python -obviously-
- Pandas: to import the data from csv files and store it in adjacency list for the graph
- Networkx: to make the graph, nodes, edges, colors, arrows and everything
- Graphviz: to calculate the positions for the graph nodes by "dot" engine
- Matplotlib: to draw all these stuff