For a finish-to-start PERT network, calculate each activity's expected duration, run a forward pass for early times, run a backward pass for late times, and mark activities with zero total float as critical. In the worked instrument-commissioning schedule below, the expected project duration is 19.17 days; the critical path is A-C-D-F-G; task B has 0.67 day of total float, and task E has 1.00 day.
Scope and terms before the calculation
NASA describes a network schedule as a way to express activity dependencies and calculate project duration, critical activities, and float. The U.S. Department of Energy's project-scheduling tutorial separates the two passes: the forward pass calculates Early Start (ES) and Early Finish (EF), while the backward pass calculates Late Start (LS) and Late Finish (LF).
This example combines those network calculations with classic three-point PERT estimates:
- Optimistic (
O) is the short duration under favorable stated conditions. - Most likely (
M) is the modal working estimate, not an arithmetic midpoint. - Pessimistic (
P) is the long duration under unfavorable stated conditions. - Expected duration (
te) is the classic weighted estimate(O + 4M + P) / 6. - Total float is
LS - ES, equivalentlyLF - EF: how long an activity can move without moving the modeled project finish. - Critical path is the longest dependent path through this deterministic network. With no imposed date constraints, its activities have zero total float.
All durations here are fictional working days. Every dependency is Finish-to-Start with zero lag, the network starts at time zero, resources are assumed available, and no calendar, progress, hard constraint, rework loop, or correlation is modeled. The example schedules a plan; it does not forecast a guaranteed completion date.
Inputs and three-point arithmetic
For every activity, use the same two formulas:
te = (O + 4M + P) / 6
variance = ((P - O) / 6)^2
The DOE tutorial documents the weighted-mean formula. Schematex 1.0.9 also reports the classic variance approximation for each O/M/P triple. For task B, Site readiness:
te_B = (3 + 4×5 + 9) / 6
= 32 / 6
= 5.3333 days
variance_B = ((9 - 3) / 6)^2
= 1.0000 day^2
Apply the same arithmetic before rounding display values:
| ID | Activity | Predecessor(s) | O / M / P (days) | te (days) | Variance (day²) |
|---|---|---|---|---|---|
| A | Requirements review | — | 2 / 3 / 4 | 3.0000 | 0.1111 |
| B | Site readiness | A | 3 / 5 / 9 | 5.3333 | 1.0000 |
| C | Equipment configuration | A | 4 / 6 / 8 | 6.0000 | 0.4444 |
| D | Interface verification | B, C | 2 / 4 / 6 | 4.0000 | 0.4444 |
| E | Operator training | C | 2 / 3 / 4 | 3.0000 | 0.1111 |
| F | Acceptance test | D, E | 3 / 5 / 7 | 5.0000 | 0.4444 |
| G | Handover | F | 1 / 1 / 2 | 1.1667 | 0.0278 |
The estimates must satisfy O ≤ M ≤ P, use one time unit, and describe the same scope and resource assumptions. A mathematically valid triple cannot repair a missing predecessor or an undefined activity.
Reproducible Schematex source
pert "Instrument commissioning"
unit: days
direction: TB
critical-tolerance: 0.01
task A "Requirements review" duration: 2/3/4
task B "Site readiness" duration: 3/5/9 after: A
task C "Equipment configuration" duration: 4/6/8 after: A
task D "Interface verification" duration: 2/4/6 after: B, C
task E "Operator training" duration: 2/3/4 after: C
task F "Acceptance test" duration: 3/5/7 after: D, E
task G "Handover" duration: 1/1/2 after: F
This source was validated and rendered with Schematex 1.0.9 on August 16, 2026. Its PERT syntax reference defines duration: O/M/P, computes te, performs both passes, and places the six calculated fields in each activity box. critical-tolerance: 0.01 prevents harmless floating-point residue from hiding a mathematically zero-float path.
Forward pass: calculate the earliest finish
For an activity with no predecessor, ES = 0. For every other Finish-to-Start activity, ES is the largest EF among its predecessors. Then EF = ES + te.
A: ES 0.00 → EF 3.00
B: ES 3.00 → EF 8.33
C: ES 3.00 → EF 9.00
D: ES max(8.33, 9.00) = 9.00 → EF 13.00
E: ES 9.00 → EF 12.00
F: ES max(13.00, 12.00) = 13.00 → EF 18.00
G: ES 18.00 → EF 19.17
The merge at D matters: Site readiness finishes at 8.33, but Equipment configuration finishes at 9.00, so D cannot start before day 9.00. The later predecessor controls the merge. The same rule makes D, not E, control the start of Acceptance test at day 13.00.
Backward pass: expose float and the critical path
Start at the modeled project finish: LF_G = 19.1667. For each activity, LS = LF - te. Moving backward, an activity's LF is the smallest LS among its successors.
| ID | ES | EF | LS | LF | Total float | Critical? |
|---|---|---|---|---|---|---|
| A | 0.00 | 3.00 | 0.00 | 3.00 | 0.00 | yes |
| B | 3.00 | 8.33 | 3.67 | 9.00 | 0.67 | no |
| C | 3.00 | 9.00 | 3.00 | 9.00 | 0.00 | yes |
| D | 9.00 | 13.00 | 9.00 | 13.00 | 0.00 | yes |
| E | 9.00 | 12.00 | 10.00 | 13.00 | 1.00 | no |
| F | 13.00 | 18.00 | 13.00 | 18.00 | 0.00 | yes |
| G | 18.00 | 19.17 | 18.00 | 19.17 | 0.00 | yes |
The zero-float chain is therefore A-C-D-F-G. Its unrounded expected durations reconcile to the project result:
te_project = 3 + 6 + 4 + 5 + 7/6
= 115/6
= 19.1667 days
≈ 19.17 days
Task B may move by 0.6667 day before it delays D. Task E may move by 1.0000 day before it delays F. GAO cautions that total float is shared along a path: spending it on one activity leaves less flexibility for downstream work. Float is schedule flexibility, not free labor or permission to ignore the task.
Checks that should pass before using the result
Recalculate the table or inspect the SVG's machine-readable task attributes, then verify:
- For every task,
EF - ES = teandLF - LS = te. LS - ES = LF - EF = total float.- Every Finish-to-Start successor begins no earlier than every predecessor finishes.
- Both merge nodes use the maximum predecessor
EFin the forward pass. - The critical chain is continuous from project start to finish and sums to
19.1667 daysbefore display rounding. - Noncritical tasks B and E have nonnegative float of
0.6667and1.0000 day; no unexplained negative float appears. - Increasing B's most-likely duration from
5to7days makes B finish at9.67, shifts the critical branch through B, and increases the project result to19.83 days. A static picture that does not respond has not preserved the schedule logic.
Common failures are adding parallel durations instead of taking the later merge, rounding activity durations before the passes, treating float as independent on every activity, omitting a handoff, and calling the most visually prominent path “critical” without computing late times.
Why 19.17 days is not a completion confidence
The PERT weighted mean and summed critical-path variance are compact approximations. For this path, Schematex reports:
critical-path variance
= 0.1111 + 0.4444 + 0.4444 + 0.4444 + 0.0278
= 1.4722 day^2
critical-path σ = sqrt(1.4722) = 1.2134 days ≈ 1.21 days
That σ is not enough to claim “95% likely by” any date. GAO-16-89G describes schedule risk analysis as a statistical simulation over uncertain activity durations, risks, and network logic; it also warns that parallel-path merge bias and changing critical paths matter. Correlation, discrete risk events, resource limits, calendars, and alternate paths are absent here. Treat 19.17 days as the expected-duration result of the stated deterministic approximation, not as a probability-backed promise.
Paste the source into the Schematex playground, confirm the invariants above, and then replace one fictional triple at a time with an estimate whose scope, owner, evidence, calendar, and uncertainty basis are documented. If the network will support a committed date, export it to a controlled scheduling and risk-analysis process rather than extending this teaching model past its boundary.