Question 10 of 10: CPM Project Network and Crashing LP Formulation
Nivaar worked solution (AI-drafted; not reviewed by a licensed engineer)
Notes on this paper
National Exams — May 2019 — 17-Ind-A1 Operations Research. Three-hour, open-book exam (any non-communicating calculator permitted); the paper totals 175 marks across 10 questions and only 100 marks are required, so a candidate would normally answer a subset — all ten are solved below for completeness.
Reference texts: Hillier & Lieberman, Introduction to Operations Research (11th ed., McGraw-Hill) — linear programming & the simplex method (ch. 3–4), duality & sensitivity analysis (ch. 6), dynamic programming (ch. 11), network optimization & CPM/PERT project crashing (ch. 9–10), queueing theory incl. finite-source (machine-repair) models (ch. 17), decision analysis & the value of information (ch. 15–16), Markov chains (ch. 16), Monte Carlo simulation (ch. 20). Nahmias, Production and Operations Analysis — deterministic EOQ inventory models with and without planned shortages.
Given. 9 tasks with min (crash) time, normal time, marginal crashing cost $b_{i,j}$, and predecessors as tabulated.
Find. (a) The project (AON) diagram, earliest/latest times, and the critical path at normal durations. (b) An LP (not solved) for choosing activity durations to meet a specified deadline at minimum crashing cost.
Approach. (a) Forward pass (earliest start/finish) then backward pass (latest start/finish) using NORMAL durations; zero-slack tasks are critical. (b) Standard CPM time-cost trade-off (crashing) LP: one duration variable per activity bounded between its crash and normal time, one event-time variable per node enforcing precedence, and the deadline as an upper bound on the final event time.
AON project network at normal durations. Red nodes/arrows = critical path (zero slack); blue = non-critical (positive slack).
(a) Forward pass (earliest start/finish, normal durations $d_A{=}3,d_B{=}4,d_C{=}2,d_D{=}5,d_E{=}6,d_F{=}2,d_G{=}4,d_H{=}3,d_I{=}5$):
Forward pass (ES = max EF of predecessors)
Task
A
B
C
D
E
F
G
H
I
ES
0
0
3
3
5
11
11
13
15
EF
3
4
5
8
11
13
15
16
20
Project duration = latest EF among tasks with no successors = $\max(16_H,\,20_I)=\boxed{20\text{ days}}$.
Backward pass (LF = min LS of successors; terminal tasks H, I both get $LF=20$):
Backward pass and slack (LS = LF − duration; slack = LS − ES)
(b) Crashing LP — decision variables. Let $x_j$ = the actual (chosen) duration of activity $j\in\{A,\dots,I\}$, bounded between its crash and normal time; let $y_i$ = the event (start) time of the node beginning activity $i$'s successors (equivalently, the earliest time all of $i$'s predecessors can finish under the chosen durations), with $y_{\text{start}}=0$ and $y_{\text{finish}}$ = project completion time.
Objective — minimize total crashing cost (each day saved below normal costs $b_j$):
$$\min Z=\sum_{j\in\{A,\dots,I\}} b_j\,(\text{normal}_j-x_j)$$
$$=4(3{-}x_A){+}1(4{-}x_B){+}1(2{-}x_C){+}1(5{-}x_D){+}3(6{-}x_E){+}7(2{-}x_F){+}9(4{-}x_G){+}5(3{-}x_H){+}8(5{-}x_I)$$
Duration-bound constraints (each activity between its crash/min and normal time):
$$1\le x_A\le3,\quad 2\le x_B\le4,\quad 0.5\le x_C\le2,\quad 2\le x_D\le5,\quad 1\le x_E\le6,$$
$$1\le x_F\le2,\quad 3\le x_G\le4,\quad 2\le x_H\le3,\quad 4\le x_I\le5$$
Precedence (event-timing) constraints, one per (predecessor, successor) arc — a successor's start event cannot occur before its predecessor finishes:
$$y_C\ge y_A+x_A,\quad y_D\ge y_A+x_A,\quad y_E\ge y_B+x_B,\quad y_E\ge y_C+x_C,$$
$$y_F\ge y_D+x_D,\quad y_F\ge y_E+x_E,\quad y_G\ge y_D+x_D,\quad y_G\ge y_E+x_E,$$
$$y_H\ge y_F+x_F,\quad y_I\ge y_G+x_G$$
plus $y_A=y_B=0$ (no predecessors) and the project finishes when both terminal tasks H and I are done: $y_{\text{finish}}\ge y_H+x_H,\ y_{\text{finish}}\ge y_I+x_I$.
Deadline constraint and non-negativity, for a specified deadline $T$:
$$y_{\text{finish}}\le T,\qquad x_j\ge 0,\ y_i\ge 0\ \ \forall j,i$$
(Not solved, per the question — this LP would be re-solved for whatever deadline $T$ is specified, e.g. $T<20$ to force crashing below the normal 20-day duration found in part (a).)