Tuesday, 8 September 2026

Quantitative Techniques


JHARKHAND UNIVERSITY OF TECHNOLOGY (JUT), RANCHI

Department of Mechanical Engineering

 

 

PEMC4001

Quantitative Techniques in Project Management

Integrated Course Framework & Practical Laboratory Manual

Experiment No. 1 — Optimization of Mechanical Production Mix and Sensitivity Analysis using Linear Programming and Computational Solvers

 

Programme: M.Tech — Project Engineering & Management (PEM), Batch 2024–26

Prepared by: Vimal Noble

Affiliated Institute: Birsa Institute of Technology (BIT), Sindri


 

Document Roadmap

This manual is organized in a single continuous sequence that mirrors the actual decision-science workflow: mathematical foundations first, followed by each solution technique in the order a project manager would need it, then the fully worked Ranchi workshop case study, the hands-on lab experiment built on that same case, and finally validation and assessment. Every later section reuses the notation and results established earlier, so the document is intended to be read start to finish rather than as independent modules.

Part

Sections

Purpose

I — Foundations

1

LP structure, primal-dual formulation

II — Solution Techniques

2 – 12

MILP, Goal Programming, Sensitivity, DP, Queuing, Inventory, Networks, MST, Game Theory, Routing, Simulation

III — Applied Case Study

13

Worked numerical example carried through every technique

IV — Practical Laboratory

14 – 21

Full lab experiment: formulation → graphical solution → duality proof → code → parametric checks → viva

V — Assurance

22 – 24

Validation protocol, assumption register, final assessment

 

Part I — Mathematical Foundations

1. Linear Programming Structure & Duality

Every quantitative decision problem in this manual reduces to mapping real engineering constraints onto an analytical space. The standard primal production problem, with n decision variables and m constraints, is:

Maximize  Z = cᵀx   subject to   Ax ≤ b,  x ≥ 0

      x ∈ ℝⁿ — vector of production / project quantities

      c ∈ ℝⁿ — unit contribution margin vector

      A ∈ ℝᵐˣⁿ — technological coefficient matrix

      b ∈ ℝᵐ — resource availability capacity vector

1.1 Dual Formulation

The dual problem yields shadow prices y ∈ ℝᵐ, the marginal economic value of relaxing each constraint by one unit:

Minimize  W = bᵀy   subject to   Aᵀy ≥ c,  y ≥ 0

Why this matters for the rest of the document

Sections 4 (Sensitivity), 13 (Case Study) and the Lab Module (Section 15 onward) all reuse this exact primal-dual pair — the Ranchi workshop numbers are substituted directly into A, b, and c defined here.

Part II — Solution Techniques

2. Integer & Mixed-Integer Programming (IP / MILP)

When decision variables represent discrete physical entities — heavy machinery, turbine units, facility construction — fractional values such as xⱼ = 2.5 are physically meaningless.

Solution Techniques

      Branch and Bound — relax to continuous LP, then partition the feasible region by imposing xⱼ ≤ ⌊xⱼ*⌋ and xⱼ ≥ ⌈xⱼ*⌉ on each fractional variable.

      Gomory's Cutting Plane — successively adds linear cuts to the LP relaxation that eliminate non-integer extreme points without excluding any valid integer solution.

3. Multi-Objective & Goal Programming

Engineering projects rarely operate under a single objective. Goal Programming (GP) converts rigid constraints into flexible target goals using explicit deviation variables.

fₖ(x) + d⁻ₖ − d⁺ₖ = gₖ ,   d⁻ₖ·d⁺ₖ = 0 ,  d⁻ₖ, d⁺ₖ ≥ 0

      d⁻ₖ — under-achievement of goal k (below target)

      d⁺ₖ — over-achievement of goal k (above target)

3.1 Non-Preemptive (Weighted) Goal Programming

Minimizes a single composite penalty, with weights wₖ reflecting relative managerial priority:

Minimize  Z = Σₖ wₖ (d⁻ₖ + d⁺ₖ)

3.2 Preemptive (Lexicographic) Goal Programming

Establishes an absolute priority hierarchy P₁ ≫ P₂ ≫ P₃ — goals at priority level P₁ must be satisfied completely before any lower level is evaluated:

Minimize  Z = P₁(d⁻₁+d⁺₁) + P₂(d⁻₂+d⁺₂) + P₃(d⁻₃+d⁺₃) + …

4. Parametric Programming & Sensitivity Analysis

Parametric programming evaluates the stability region when objective coefficients or the resource vector fluctuate continuously over an interval t ∈ [0, 1]:

b(t) = b + tΔb ,   t ∈ [0, 1]

The current basis B remains optimal while B⁻¹(b + tΔb) ≥ 0, which defines an allowable range [Δbᵢ⁻, Δbᵢ⁺] for each resource. Staying inside this range avoids costly re-optimization during volatile supply-chain price fluctuations or material-availability shocks.

Distinguishing two related ideas

Parametric sensitivity is continuous variation of a single RHS or cost coefficient within the current basis; scenario analysis (used in Section 19) tests discrete, named what-if situations that may cross into a new basis entirely. Both are used later in the Ranchi case, and the lab explicitly separates them.

5. Dynamic Programming (DP) & Stage-Wise Optimization

Dynamic Programming decomposes multi-stage project allocation problems using Bellman's Principle of Optimality: whatever the initial state and decision are, the remaining decisions must constitute an optimal policy with respect to the state resulting from the first decision.

[ Stage 1: Design ] --> [ Stage 2: Manufacturing ] --> [ Stage 3: Testing ]
   State s1, x1            State s2, x2                 State s3, x3

Backward-induction recurrence for a capital budget S distributed across N stages:

fₙ(s) = max over xₙ [ Rₙ(xₙ) + fₙ₋₁(s − xₙ) ]

      s — available state resource (e.g. remaining capital)

      xₙ — decision variable (budget allocated to stage n)

      Rₙ(xₙ) — return realized at stage n

      fₙ(s) — cumulative optimal value with n stages remaining

6. Stochastic Queuing Systems & Capacity Planning

Project maintenance and service facilities are modeled with Kendall's notation M/M/1: GD/∞/∞ — Poisson arrivals (λ), exponential service (μ), and traffic intensity ρ = λ/μ < 1.

Metric

Formula

Meaning

Utilization

ρ = λ / μ

Fraction of time server is busy

State probability

Pₙ = (1 − ρ) ρⁿ

Probability of n jobs in system

Units in system

L = ρ / (1 − ρ)

Average number in system

Units in queue

Lq = ρ² / (1 − ρ)

Average number waiting

Wait in system

W = L / λ

Little's Law

Wait in queue

Wq = Lq / λ

Little's Law

7. Classical Inventory Optimization & Extensions

Inventory models balance ordering expense against holding cost to determine the optimal replenishment cycle.

7.1 Economic Order Quantity (EOQ)

TC(Q) = DS/Q + HQ/2      Q* = √(2DS / H)

      D — annual demand (units)

      S — ordering cost per batch (₹/order)

      H — holding cost per unit per year (₹/unit/year)

7.2 Extensions

      Economic Production Quantity (EPQ), finite production rate p, demand rate d:   Q*ₚ = √( 2DS / [H(1 − d/p)] )

      Safety Stock under demand uncertainty:   SS = Z_α · σ_LT, where Z_α is the service factor and σ_LT the standard deviation of lead-time demand.

8. Network Theory & Flow Optimization

Network models optimize continuous flow and routing efficiency across geographically dispersed project sites. For a directed graph G = (V, E) with arc capacity c(u,v):

      Capacity constraint:  0 ≤ f(u,v) ≤ c(u,v)

      Flow conservation:  Σᵤ f(u,v) = Σw f(v,w)  for every v ∈ V \ {s, t}

Max-Flow Min-Cut Theorem: the maximum value of an s–t flow equals the minimum capacity of an s–t cut. Solved via Ford-Fulkerson / Edmonds-Karp.

9. Minimum Spanning Tree (MST) Optimization

For connecting spatially distributed site offices, utilities, or pipelines with zero redundancy at minimum cost, find T ⊂ E with |T| = |V| − 1 edges, no cycles, minimizing Σₑ∈T w(e).

      Prim's Algorithm — grows a single tree from an arbitrary root, greedily adding the minimum-weight edge to a non-tree vertex. O(|E| log|V|).

      Kruskal's Algorithm — sorts all edges by weight and adds the lightest edge that does not form a cycle, using Union-Find. O(|E| log|E|).

10. Game Theory & Strategic Bidding Systems

Game Theory models competitive engineering tendering and pricing under uncertainty. For a 2×2 zero-sum payoff matrix A = [aᵢⱼ] between Contractor A (row) and Contractor B (column):

If no pure-strategy saddle point exists (max-min ≠ min-max), the optimal mixed strategies p = (p₁,p₂) and q = (q₁,q₂) are found via linear programming, and the value of the game is:

V = pᵀ A q

11. Logistics & Combinatorial Routing (TSP & VRP)

Routing problems optimize the transit of equipment, materials, and inspection engineers across dispersed nodes. For n sites with distance matrix dᵢⱼ:

Minimize  Σᵢⱼ dᵢⱼ xᵢⱼ    subject to   Σⱼxᵢⱼ = 1,  Σᵢxᵢⱼ = 1,  xᵢⱼ ∈ {0,1}

Miller–Tucker–Zemlin (MTZ) subtour elimination introduces auxiliary continuous variables uᵢ to prevent disconnected sub-loops. The Vehicle Routing Problem (VRP) extends this with vehicle capacity Cₖ and customer demand qᵢ:

Σᵢ qᵢ yᵢₖ ≤ Cₖ   for each vehicle k

12. Stochastic Simulation Modelling (Monte Carlo)

When project parameters exhibit high continuous variance — weather disruption, material-supply volatility — deterministic models fail. Monte Carlo simulation samples the parameter space via probability density functions.

Probability
Density
  ^           Beta/PERT Distribution
  |                 *
  |               *   *
  |             *       *
  |           *           *
  0 +-------*---------------+-------> Duration
           Optimistic   Pessimistic

Three-point PERT/Beta fit and simulation workflow:

Tₑ = (O + 4M + P) / 6 ,   σ² = ((P − O)/6)²

      Draw pseudorandom numbers uᵢ ~ U(0,1)

      Transform via inverse CDF: Xᵢ = F⁻¹(uᵢ)

      Run N = 10,000 iterations to derive the empirical completion-probability distribution P(T ≤ T_target)

      For risk reporting, extend beyond the mean: report the 5th–95th percentile range and, where losses are possible, Value-at-Risk (VaR) / Conditional VaR (CVaR) rather than the expected value alone.

Part III — Applied Case Study

13. Worked Example: Ranchi Precision Engineering Workshop

Every technique above is now grounded in a single running numerical example, carried forward unchanged into the laboratory module. A precision engineering workshop in Ranchi produces two components:

Product

CNC Machine Time

Skilled Labour Time

Contribution Margin

A — Valve Housing

2 hr / unit

1 hr / unit

₹40 / unit

B — Pump Impeller

1 hr / unit

2 hr / unit

₹30 / unit

Weekly capacity: 100 CNC machine hours and 80 skilled labour hours.

13.1 Formulation

Maximize  Z = 40x₁ + 30x₂

      Machine:   2x₁ + x₂ ≤ 100

      Labour:    x₁ + 2x₂ ≤ 80

      Non-negativity:   x₁, x₂ ≥ 0

13.2 Extreme-Point Evaluation

Corner Point

Coordinates (x₁, x₂)

Z = 40x₁ + 30x₂

Status

Origin O

(0, 0)

₹0

Idle facility

Point A

(50, 0)

₹2,000

Machine constraint binding

Point B

(0, 40)

₹1,200

Labour constraint binding

Point C

(40, 20)

₹2,200

Optimal — both constraints binding

Carried forward

This exact (A, b, c) triple and its optimum C(40, 20), Z*=₹2,200 is reused without modification through the Duality proof (§16), Parametric checks (§19), and the Python solver (§20).

Part IV — Practical Laboratory Manual

14. Practical Experiment No. 1

Field

Detail

Course Code

PEMC4001 — Quantitative Techniques in Project Management

Department

Mechanical Engineering, JUT Ranchi

Programme

M.Tech — Project Engineering & Management (PEM)

Title

Optimization of Mechanical Production Mix and Sensitivity Analysis using Linear Programming and Computational Solvers

15. Aim & Objectives

      Formulate a real-world multi-resource manufacturing problem as a standard LP model.

      Determine the optimal product mix graphically and computationally (Simplex / Python / Excel Solver).

      Calculate shadow prices (dual values) of the constrained capacity resources.

      Conduct parametric sensitivity analysis on profit margins and resource limits to assess project risk.

      Verify convergence with a computational solver and interpret complementary slackness and reduced costs.

16. Apparatus / Computational Tools

Category

Requirement

Hardware

Desktop / laptop, Intel i5 / AMD Ryzen 5 or higher, minimum 8 GB RAM

Programming

Python 3.x — pulp, scipy.optimize, matplotlib, numpy

Spreadsheet

Microsoft Excel with Solver Add-in, or OpenSolver

17. Graphical Solution Procedure

17.1 Boundary Identification

Convert each inequality to an equality to find the boundary lines on the (x₁, x₂) plane:

      Machine line L₁: 2x₁ + x₂ = 100    (0, 100) and (50, 0)

      Labour line L₂: x₁ + 2x₂ = 80    (0, 40) and (80, 0)

17.2 Intersection Point C

Solve the two binding constraints simultaneously. Multiply the labour equation by 2:

2x₁ + 4x₂ = 160   (labour ×2)
− (2x₁ + x₂ = 100)  (machine)
───────────────────
3x₂ = 60    x₂* = 20

Substituting back into the machine equation gives 2x₁ + 20 = 100, so x₁* = 40. This reproduces the Point C found in Section 13.2.

18. Resource Utilization & Slack

Corner Point

Machine Hrs Used

Labour Hrs Used

Profit (₹)

Remarks

O (0,0)

0

0

0

Idle facility

A (50,0)

100

50

2,000

Machine limit reached

B (0,40)

40

80

1,200

Labour limit reached

C (40,20)

100

80

2,200

OPTIMAL — both binding, zero slack

At C(40, 20), Slack_Machine = 100 − (2·40+20) = 0 and Slack_Labour = 80 − (40+2·20) = 0 — both resources operate at 100% utilization.

19. Duality, Shadow Prices & Sensitivity

19.1 Complementary Slackness

Since x₁* = 40 > 0 and x₂* = 20 > 0, complementary slackness forces both dual constraints to hold as equalities:

2y₁ + y₂ = 40
y₁ + 2y₂ = 30

Multiplying the second equation by 2 and subtracting the first: 3y₂ = 20, so y₂* = 6.67, and back-substitution gives y₁* = 16.67.

19.2 Strong Duality Check

Z* = 40(40) + 30(20) = ₹2,200
W* = 100(16.67) + 80(6.67) = ₹2,200
  Z* = W*  (strong duality confirmed)

19.3 Economic Interpretation & Reduced Cost

Resource

Capacity

Slack

Shadow Price

Allowable Increase

Allowable Decrease

Machine Hours

100 hr

0 (binding)

₹16.67 / hr

+60 hr

−60 hr

Labour Hours

80 hr

0 (binding)

₹6.67 / hr

+120 hr

−30 hr

Both x₁ and x₂ are basic (positive) variables, so their reduced costs are zero by definition — the shadow prices above already fully allocate the ₹2,200 optimum across the two binding resources, and no further improvement is available without relaxing a constraint.

19.4 Parametric Scenario Checks

      Machine capacity +10 hr (b₁ = 110): new intersection x₁ = 46.67, x₂ = 16.67, Z = ₹2,366.67 — gain of ₹16.67, exactly matching y₁*.

      Labour capacity +10 hr (b₂ = 90): new intersection x₁ = 36.67, x₂ = 26.67, Z = ₹2,266.67 — gain of ₹6.67, exactly matching y₂*.

Managerial Implication

If additional machine capacity can be purchased below ₹16.67/hr, or labour below ₹6.67/hr, the corresponding investment strictly increases weekly project profit. Machine expansion should be prioritized first, since y₁* > y₂*.

20. Computational Verification (Python / PuLP)

The script below solves the primal LP, extracts dual values, verifies strong duality within numerical tolerance, and plots the feasible region.

import pulp, numpy as np, matplotlib.pyplot as plt
 
# 1. Primal model
model = pulp.LpProblem("PEMC4001_Ranchi_Workshop", pulp.LpMaximize)
x1 = pulp.LpVariable("Product_A", lowBound=0)   # Valve Housing
x2 = pulp.LpVariable("Product_B", lowBound=0)   # Pump Impeller
 
model += 40 * x1 + 30 * x2, "Total_Profit"
model += 2 * x1 + 1 * x2 <= 100, "Machine_Capacity"
model += 1 * x1 + 2 * x2 <= 80,  "Labor_Capacity"
 
model.solve(pulp.PULP_CBC_CMD(msg=False))
print("Status:", pulp.LpStatus[model.status])
print(f"A={x1.varValue:.2f}  B={x2.varValue:.2f}  Z=Rs.{pulp.value(model.objective):.2f}")
 
# 2. Dual values (shadow prices) + reduced costs
dual_total = 0
for name, c in model.constraints.items():
    print(f"Shadow price [{name}]: Rs.{c.pi:.2f}/hr   slack={c.slack:.2f}")
    dual_total += c.pi * (-c.constant)
print(f"Strong duality check: Z={pulp.value(model.objective):.2f}  W={dual_total:.2f}")
 
# 3. Feasible-region plot
x_vals = np.linspace(0, 100, 400)
y_machine = 100 - 2 * x_vals
y_labor = (80 - x_vals) / 2
plt.plot(x_vals, y_machine, color="red", label="Machine: 2x1+x2<=100")
plt.plot(x_vals, y_labor, color="blue", label="Labor: x1+2x2<=80")
y_feasible = np.minimum(np.maximum(0, y_machine), np.maximum(0, y_labor))
plt.fill_between(x_vals, 0, y_feasible, where=(x_vals <= 50), color="green", alpha=0.2)
plt.scatter([40], [20], color="black", zorder=5)
plt.annotate("Optimal C(40,20)\nZ=Rs.2,200", (40, 20), xytext=(45, 30),
             arrowprops=dict(facecolor="black", shrink=0.05))
plt.xlabel("Product A (units)"); plt.ylabel("Product B (units)")
plt.title("PEMC4001 - Graphical LP Optimization"); plt.grid(True); plt.legend()
plt.savefig("lp_solution.png")

Solver notes

Always check pulp.LpStatus == 'Optimal' before trusting output, and confirm |Z − W| is within a small numerical tolerance (e.g. 1e-4) — this is the standard safeguard against scaling or feasibility-tolerance issues in production solvers.

21. Operational Decision Workflow

REAL-WORLD ENGINEERING PROBLEM
            |
            v
DATA COLLECTION & PREPROCESSING (IQR outlier scrubbing)
            |
            v
MATHEMATICAL MODEL FORMULATION
            |
   +--------+--------+
   |                 |
   v                 v
DETERMINISTIC     STOCHASTIC
(LP, MILP, GP,     (Queuing, Simulation,
 DP, MST)           Game Theory, ROP)
   |                 |
   +--------+--------+
            |
            v
   OPTIMIZATION & COMPUTATION
            |
            v
 SENSITIVITY & SCENARIO ANALYSIS
            |
            v
 EVIDENCE VALIDATION (KPI Check)
            |
            v
   FINAL MANAGEMENT DECISION

Part V — Assurance & Assessment

22. Evidence-Based Validation Protocol

Quantitative models must be systematically validated against real-world data before deployment.

MAPE = (1/n) Σ |Aₜ − Fₜ| / Aₜ  × 100%

RMSE = √( Σ(Aₜ − Fₜ)² / n )

ΔΩ = (Z*optimal − Z*baseline) / Z*baseline

Applied to this case: comparing the optimal mixed plan (₹2,200) against the best single-product strategy (Point A, ₹2,000) gives ΔΩ = 10% — the quantitative gain from mixed production over an edge strategy.

22.1 Qualitative Sensitivity Ranking

Parameter

Impact on Z if perturbed ±10%

Priority

Machine hours (b₁)

High — y₁ = 16.67, largest marginal value

High

Labour hours (b₂)

Moderate — y₂ = 6.67

Medium

Profit margin, Product A (c₁)

High — basic variable at optimum

High

Profit margin, Product B (c₂)

Moderate — basic variable, smaller coefficient

Medium

23. Assumption & Limitation Register

Assumption

Implication if Violated

Linearity of cost/profit and resource use

Non-linear economies of scale would require MINLP reformulation

Certainty of all coefficients (c, A, b)

Parameter volatility calls for stochastic or robust LP

Divisibility (continuous x₁, x₂)

Discrete batch sizes require the MILP treatment of Section 2

Single-period, static capacity

Multi-period capacity changes require the DP model of Section 5

24. Reproducibility Note

Results in this manual were generated with Python 3.x, PuLP with the bundled CBC solver, and a numerical tolerance of 1e-4 for the strong-duality check. Where Monte Carlo simulation is used (Section 12), fix and record the random seed so that percentile and CVaR figures can be exactly reproduced by an examiner.

25. Suggested Supporting Attachments

      .lp or .mps model files, or the raw PuLP / SciPy script

      Excel Solver Answer, Sensitivity, and Limits reports (screenshots)

      Network diagrams for MST and Maximum-Flow problems, showing capacities and the minimum-cut frontier

      Monte Carlo empirical histograms with 95% confidence-interval overlays

26. Final Lab Conclusion

      Optimal weekly production plan: 40 units of Product A and 20 units of Product B.

      Maximum achievable contribution margin: ₹2,200 per week.

      Both machine and labour resources operate at 100% utilization with zero slack.

      Strong duality confirmed (Z* = W* = ₹2,200); machine expansion (y₁* = ₹16.67/hr) is the higher-priority capital investment over labour expansion (y₂* = ₹6.67/hr).

27. Viva Voce — Questions & Answers

Question

Model Answer

What defines a Linear Programming model?

A mathematical optimization model with a linear objective function and linear equality/inequality constraints over continuous, non-negative decision variables.

Why must the optimal solution lie on a corner (extreme) point?

Because the feasible region of linear inequalities is a convex polyhedron, and a linear objective attains its extreme values at the vertices of that region.

What is a binding constraint?

A constraint fully utilized at the optimal solution — left-hand side equals right-hand side, so slack is zero.

What is the economic meaning of a shadow price?

The marginal change in the optimal objective value from a one-unit increase in a resource's right-hand-side capacity, holding all else constant.

What does a zero reduced cost tell you?

The associated variable is already basic (in the optimal solution) — it needs no further coefficient improvement to remain attractive.

How do primal and dual objective values relate?

By weak duality any feasible dual solution bounds the primal maximum from above; by strong duality they are exactly equal at the optimum, Z* = W*.

Why justify your chosen validation metrics?

MAPE and RMSE quantify forecast accuracy in different units (percentage vs. absolute), and both should be reported together so a single large outlier does not mislead the model's perceived accuracy.

28. Learning-Outcome Map (Bloom's Taxonomy)

Bloom Level

Manual Section

Student Activity

Understand

§1–3

State LP structure, dual form, and GP deviation variables

Apply

§13, §17

Substitute Ranchi data into the standard formulation and solve graphically

Analyse

§18–19

Interpret slack, shadow prices, and complementary slackness

Evaluate

§22–23

Judge model validity using MAPE/RMSE and the assumption register

Create

§20 & Future Work

Extend the base LP script to MILP, GP, or stochastic variants

29. Common Pitfalls

      Forgetting the non-negativity restriction when reading off graphical intercepts.

      Misinterpreting a dual variable as feasible/optimal before checking complementary slackness holds as equality for every positive primal variable.

      Using the mean duration alone in Monte Carlo reporting instead of the full empirical distribution or percentile range.

      Treating scenario analysis (discrete what-ifs) as identical to parametric sensitivity (continuous range within the same basis) — see the distinction in Section 4.

30. Future Work / Extensions

      MILP extension: restrict x₁, x₂ to integer batch sizes if machines process only whole units per changeover.

      Multi-objective extension: add an energy-consumption goal alongside profit using the Goal Programming formulation of Section 3.

      Two-stage stochastic programming: treat machine/labour availability as uncertain and re-solve recourse decisions after realization.

      Industry 4.0 link: feed real-time shop-floor sensor data into the A, b, c vectors via an MES/digital-twin pipeline so the LP re-solves on a rolling basis.


Sub section 2.0


 

JHARKHAND UNIVERSITY OF TECHNOLOGY (JUT), RANCHI

Department of Mechanical Engineering

 

 

PEMC4001

Quantitative Techniques in Project Management

Integrated Course Framework & Practical Laboratory Manual

Experiment No. 1 — Optimization of Mechanical Production Mix and Sensitivity Analysis using Linear Programming and Computational Solvers

 

Programme: M.Tech — Project Engineering & Management (PEM), Batch 2024–26

Prepared by: Vimal Noble

Affiliated Institute: Birsa Institute of Technology (BIT), Sindri


 

Document Roadmap

This manual is organized in a single continuous sequence that mirrors the actual decision-science workflow: mathematical foundations first, followed by each solution technique in the order a project manager would need it, then the fully worked Ranchi workshop case study, the hands-on lab experiment built on that same case, and finally validation and assessment. Every later section reuses the notation and results established earlier, so the document is intended to be read start to finish rather than as independent modules.

Part

Sections

Purpose

I — Foundations

1

LP structure, primal-dual formulation

II — Solution Techniques

2 – 12

MILP, Goal Programming, Sensitivity, DP, Queuing, Inventory, Networks, MST, Game Theory, Routing, Simulation

III — Applied Case Study

13

Worked numerical example carried through every technique

IV — Practical Laboratory

14 – 21

Full lab experiment: formulation → graphical solution → duality proof → code → parametric checks → viva

V — Assurance

22 – 24

Validation protocol, assumption register, final assessment

 

Part I — Mathematical Foundations

1. Linear Programming Structure & Duality

Every quantitative decision problem in this manual reduces to mapping real engineering constraints onto an analytical space. The standard primal production problem, with n decision variables and m constraints, is:

Maximize  Z = cᵀx   subject to   Ax ≤ b,  x ≥ 0

      x ∈ ℝⁿ — vector of production / project quantities

      c ∈ ℝⁿ — unit contribution margin vector

      A ∈ ℝᵐˣⁿ — technological coefficient matrix

      b ∈ ℝᵐ — resource availability capacity vector

1.1 Dual Formulation

The dual problem yields shadow prices y ∈ ℝᵐ, the marginal economic value of relaxing each constraint by one unit:

Minimize  W = bᵀy   subject to   Aᵀy ≥ c,  y ≥ 0

Why this matters for the rest of the document

Sections 4 (Sensitivity), 13 (Case Study) and the Lab Module (Section 15 onward) all reuse this exact primal-dual pair — the Ranchi workshop numbers are substituted directly into A, b, and c defined here.

Part II — Solution Techniques

2. Integer & Mixed-Integer Programming (IP / MILP)

When decision variables represent discrete physical entities — heavy machinery, turbine units, facility construction — fractional values such as xⱼ = 2.5 are physically meaningless.

Solution Techniques

      Branch and Bound — relax to continuous LP, then partition the feasible region by imposing xⱼ ≤ ⌊xⱼ*⌋ and xⱼ ≥ ⌈xⱼ*⌉ on each fractional variable.

      Gomory's Cutting Plane — successively adds linear cuts to the LP relaxation that eliminate non-integer extreme points without excluding any valid integer solution.

3. Multi-Objective & Goal Programming

Engineering projects rarely operate under a single objective. Goal Programming (GP) converts rigid constraints into flexible target goals using explicit deviation variables.

fₖ(x) + d⁻ₖ − d⁺ₖ = gₖ ,   d⁻ₖ·d⁺ₖ = 0 ,  d⁻ₖ, d⁺ₖ ≥ 0

      d⁻ₖ — under-achievement of goal k (below target)

      d⁺ₖ — over-achievement of goal k (above target)

3.1 Non-Preemptive (Weighted) Goal Programming

Minimizes a single composite penalty, with weights wₖ reflecting relative managerial priority:

Minimize  Z = Σₖ wₖ (d⁻ₖ + d⁺ₖ)

3.2 Preemptive (Lexicographic) Goal Programming

Establishes an absolute priority hierarchy P₁ ≫ P₂ ≫ P₃ — goals at priority level P₁ must be satisfied completely before any lower level is evaluated:

Minimize  Z = P₁(d⁻₁+d⁺₁) + P₂(d⁻₂+d⁺₂) + P₃(d⁻₃+d⁺₃) + …

4. Parametric Programming & Sensitivity Analysis

Parametric programming evaluates the stability region when objective coefficients or the resource vector fluctuate continuously over an interval t ∈ [0, 1]:

b(t) = b + tΔb ,   t ∈ [0, 1]

The current basis B remains optimal while B⁻¹(b + tΔb) ≥ 0, which defines an allowable range [Δbᵢ⁻, Δbᵢ⁺] for each resource. Staying inside this range avoids costly re-optimization during volatile supply-chain price fluctuations or material-availability shocks.

Distinguishing two related ideas

Parametric sensitivity is continuous variation of a single RHS or cost coefficient within the current basis; scenario analysis (used in Section 19) tests discrete, named what-if situations that may cross into a new basis entirely. Both are used later in the Ranchi case, and the lab explicitly separates them.

5. Dynamic Programming (DP) & Stage-Wise Optimization

Dynamic Programming decomposes multi-stage project allocation problems using Bellman's Principle of Optimality: whatever the initial state and decision are, the remaining decisions must constitute an optimal policy with respect to the state resulting from the first decision.

[ Stage 1: Design ] --> [ Stage 2: Manufacturing ] --> [ Stage 3: Testing ]
   State s1, x1            State s2, x2                 State s3, x3

Backward-induction recurrence for a capital budget S distributed across N stages:

fₙ(s) = max over xₙ [ Rₙ(xₙ) + fₙ₋₁(s − xₙ) ]

      s — available state resource (e.g. remaining capital)

      xₙ — decision variable (budget allocated to stage n)

      Rₙ(xₙ) — return realized at stage n

      fₙ(s) — cumulative optimal value with n stages remaining

6. Stochastic Queuing Systems & Capacity Planning

Project maintenance and service facilities are modeled with Kendall's notation M/M/1: GD/∞/∞ — Poisson arrivals (λ), exponential service (μ), and traffic intensity ρ = λ/μ < 1.

Metric

Formula

Meaning

Utilization

ρ = λ / μ

Fraction of time server is busy

State probability

Pₙ = (1 − ρ) ρⁿ

Probability of n jobs in system

Units in system

L = ρ / (1 − ρ)

Average number in system

Units in queue

Lq = ρ² / (1 − ρ)

Average number waiting

Wait in system

W = L / λ

Little's Law

Wait in queue

Wq = Lq / λ

Little's Law

7. Classical Inventory Optimization & Extensions

Inventory models balance ordering expense against holding cost to determine the optimal replenishment cycle.

7.1 Economic Order Quantity (EOQ)

TC(Q) = DS/Q + HQ/2      Q* = √(2DS / H)

      D — annual demand (units)

      S — ordering cost per batch (₹/order)

      H — holding cost per unit per year (₹/unit/year)

7.2 Extensions

      Economic Production Quantity (EPQ), finite production rate p, demand rate d:   Q*ₚ = √( 2DS / [H(1 − d/p)] )

      Safety Stock under demand uncertainty:   SS = Z_α · σ_LT, where Z_α is the service factor and σ_LT the standard deviation of lead-time demand.

8. Network Theory & Flow Optimization

Network models optimize continuous flow and routing efficiency across geographically dispersed project sites. For a directed graph G = (V, E) with arc capacity c(u,v):

      Capacity constraint:  0 ≤ f(u,v) ≤ c(u,v)

      Flow conservation:  Σᵤ f(u,v) = Σw f(v,w)  for every v ∈ V \ {s, t}

Max-Flow Min-Cut Theorem: the maximum value of an s–t flow equals the minimum capacity of an s–t cut. Solved via Ford-Fulkerson / Edmonds-Karp.

9. Minimum Spanning Tree (MST) Optimization

For connecting spatially distributed site offices, utilities, or pipelines with zero redundancy at minimum cost, find T ⊂ E with |T| = |V| − 1 edges, no cycles, minimizing Σₑ∈T w(e).

      Prim's Algorithm — grows a single tree from an arbitrary root, greedily adding the minimum-weight edge to a non-tree vertex. O(|E| log|V|).

      Kruskal's Algorithm — sorts all edges by weight and adds the lightest edge that does not form a cycle, using Union-Find. O(|E| log|E|).

10. Game Theory & Strategic Bidding Systems

Game Theory models competitive engineering tendering and pricing under uncertainty. For a 2×2 zero-sum payoff matrix A = [aᵢⱼ] between Contractor A (row) and Contractor B (column):

If no pure-strategy saddle point exists (max-min ≠ min-max), the optimal mixed strategies p = (p₁,p₂) and q = (q₁,q₂) are found via linear programming, and the value of the game is:

V = pᵀ A q

11. Logistics & Combinatorial Routing (TSP & VRP)

Routing problems optimize the transit of equipment, materials, and inspection engineers across dispersed nodes. For n sites with distance matrix dᵢⱼ:

Minimize  Σᵢⱼ dᵢⱼ xᵢⱼ    subject to   Σⱼxᵢⱼ = 1,  Σᵢxᵢⱼ = 1,  xᵢⱼ ∈ {0,1}

Miller–Tucker–Zemlin (MTZ) subtour elimination introduces auxiliary continuous variables uᵢ to prevent disconnected sub-loops. The Vehicle Routing Problem (VRP) extends this with vehicle capacity Cₖ and customer demand qᵢ:

Σᵢ qᵢ yᵢₖ ≤ Cₖ   for each vehicle k

12. Stochastic Simulation Modelling (Monte Carlo)

When project parameters exhibit high continuous variance — weather disruption, material-supply volatility — deterministic models fail. Monte Carlo simulation samples the parameter space via probability density functions.

Probability
Density
  ^           Beta/PERT Distribution
  |                 *
  |               *   *
  |             *       *
  |           *           *
  0 +-------*---------------+-------> Duration
           Optimistic   Pessimistic

Three-point PERT/Beta fit and simulation workflow:

Tₑ = (O + 4M + P) / 6 ,   σ² = ((P − O)/6)²

      Draw pseudorandom numbers uᵢ ~ U(0,1)

      Transform via inverse CDF: Xᵢ = F⁻¹(uᵢ)

      Run N = 10,000 iterations to derive the empirical completion-probability distribution P(T ≤ T_target)

      For risk reporting, extend beyond the mean: report the 5th–95th percentile range and, where losses are possible, Value-at-Risk (VaR) / Conditional VaR (CVaR) rather than the expected value alone.

Part III — Applied Case Study

13. Worked Example: Ranchi Precision Engineering Workshop

Every technique above is now grounded in a single running numerical example, carried forward unchanged into the laboratory module. A precision engineering workshop in Ranchi produces two components:

Product

CNC Machine Time

Skilled Labour Time

Contribution Margin

A — Valve Housing

2 hr / unit

1 hr / unit

₹40 / unit

B — Pump Impeller

1 hr / unit

2 hr / unit

₹30 / unit

Weekly capacity: 100 CNC machine hours and 80 skilled labour hours.

13.1 Formulation

Maximize  Z = 40x₁ + 30x₂

      Machine:   2x₁ + x₂ ≤ 100

      Labour:    x₁ + 2x₂ ≤ 80

      Non-negativity:   x₁, x₂ ≥ 0

13.2 Extreme-Point Evaluation

Corner Point

Coordinates (x₁, x₂)

Z = 40x₁ + 30x₂

Status

Origin O

(0, 0)

₹0

Idle facility

Point A

(50, 0)

₹2,000

Machine constraint binding

Point B

(0, 40)

₹1,200

Labour constraint binding

Point C

(40, 20)

₹2,200

Optimal — both constraints binding

Carried forward

This exact (A, b, c) triple and its optimum C(40, 20), Z*=₹2,200 is reused without modification through the Duality proof (§16), Parametric checks (§19), and the Python solver (§20).

Part IV — Practical Laboratory Manual

14. Practical Experiment No. 1

Field

Detail

Course Code

PEMC4001 — Quantitative Techniques in Project Management

Department

Mechanical Engineering, JUT Ranchi

Programme

M.Tech — Project Engineering & Management (PEM)

Title

Optimization of Mechanical Production Mix and Sensitivity Analysis using Linear Programming and Computational Solvers

15. Aim & Objectives

      Formulate a real-world multi-resource manufacturing problem as a standard LP model.

      Determine the optimal product mix graphically and computationally (Simplex / Python / Excel Solver).

      Calculate shadow prices (dual values) of the constrained capacity resources.

      Conduct parametric sensitivity analysis on profit margins and resource limits to assess project risk.

      Verify convergence with a computational solver and interpret complementary slackness and reduced costs.

16. Apparatus / Computational Tools

Category

Requirement

Hardware

Desktop / laptop, Intel i5 / AMD Ryzen 5 or higher, minimum 8 GB RAM

Programming

Python 3.x — pulp, scipy.optimize, matplotlib, numpy

Spreadsheet

Microsoft Excel with Solver Add-in, or OpenSolver

17. Graphical Solution Procedure

17.1 Boundary Identification

Convert each inequality to an equality to find the boundary lines on the (x₁, x₂) plane:

      Machine line L₁: 2x₁ + x₂ = 100    (0, 100) and (50, 0)

      Labour line L₂: x₁ + 2x₂ = 80    (0, 40) and (80, 0)

17.2 Intersection Point C

Solve the two binding constraints simultaneously. Multiply the labour equation by 2:

2x₁ + 4x₂ = 160   (labour ×2)
− (2x₁ + x₂ = 100)  (machine)
───────────────────
3x₂ = 60    x₂* = 20

Substituting back into the machine equation gives 2x₁ + 20 = 100, so x₁* = 40. This reproduces the Point C found in Section 13.2.

18. Resource Utilization & Slack

Corner Point

Machine Hrs Used

Labour Hrs Used

Profit (₹)

Remarks

O (0,0)

0

0

0

Idle facility

A (50,0)

100

50

2,000

Machine limit reached

B (0,40)

40

80

1,200

Labour limit reached

C (40,20)

100

80

2,200

OPTIMAL — both binding, zero slack

At C(40, 20), Slack_Machine = 100 − (2·40+20) = 0 and Slack_Labour = 80 − (40+2·20) = 0 — both resources operate at 100% utilization.

19. Duality, Shadow Prices & Sensitivity

19.1 Complementary Slackness

Since x₁* = 40 > 0 and x₂* = 20 > 0, complementary slackness forces both dual constraints to hold as equalities:

2y₁ + y₂ = 40
y₁ + 2y₂ = 30

Multiplying the second equation by 2 and subtracting the first: 3y₂ = 20, so y₂* = 6.67, and back-substitution gives y₁* = 16.67.

19.2 Strong Duality Check

Z* = 40(40) + 30(20) = ₹2,200
W* = 100(16.67) + 80(6.67) = ₹2,200
  Z* = W*  (strong duality confirmed)

19.3 Economic Interpretation & Reduced Cost

Resource

Capacity

Slack

Shadow Price

Allowable Increase

Allowable Decrease

Machine Hours

100 hr

0 (binding)

₹16.67 / hr

+60 hr

−60 hr

Labour Hours

80 hr

0 (binding)

₹6.67 / hr

+120 hr

−30 hr

Both x₁ and x₂ are basic (positive) variables, so their reduced costs are zero by definition — the shadow prices above already fully allocate the ₹2,200 optimum across the two binding resources, and no further improvement is available without relaxing a constraint.

19.4 Parametric Scenario Checks

      Machine capacity +10 hr (b₁ = 110): new intersection x₁ = 46.67, x₂ = 16.67, Z = ₹2,366.67 — gain of ₹16.67, exactly matching y₁*.

      Labour capacity +10 hr (b₂ = 90): new intersection x₁ = 36.67, x₂ = 26.67, Z = ₹2,266.67 — gain of ₹6.67, exactly matching y₂*.

Managerial Implication

If additional machine capacity can be purchased below ₹16.67/hr, or labour below ₹6.67/hr, the corresponding investment strictly increases weekly project profit. Machine expansion should be prioritized first, since y₁* > y₂*.

20. Computational Verification (Python / PuLP)

The script below solves the primal LP, extracts dual values, verifies strong duality within numerical tolerance, and plots the feasible region.

import pulp, numpy as np, matplotlib.pyplot as plt
 
# 1. Primal model
model = pulp.LpProblem("PEMC4001_Ranchi_Workshop", pulp.LpMaximize)
x1 = pulp.LpVariable("Product_A", lowBound=0)   # Valve Housing
x2 = pulp.LpVariable("Product_B", lowBound=0)   # Pump Impeller
 
model += 40 * x1 + 30 * x2, "Total_Profit"
model += 2 * x1 + 1 * x2 <= 100, "Machine_Capacity"
model += 1 * x1 + 2 * x2 <= 80,  "Labor_Capacity"
 
model.solve(pulp.PULP_CBC_CMD(msg=False))
print("Status:", pulp.LpStatus[model.status])
print(f"A={x1.varValue:.2f}  B={x2.varValue:.2f}  Z=Rs.{pulp.value(model.objective):.2f}")
 
# 2. Dual values (shadow prices) + reduced costs
dual_total = 0
for name, c in model.constraints.items():
    print(f"Shadow price [{name}]: Rs.{c.pi:.2f}/hr   slack={c.slack:.2f}")
    dual_total += c.pi * (-c.constant)
print(f"Strong duality check: Z={pulp.value(model.objective):.2f}  W={dual_total:.2f}")
 
# 3. Feasible-region plot
x_vals = np.linspace(0, 100, 400)
y_machine = 100 - 2 * x_vals
y_labor = (80 - x_vals) / 2
plt.plot(x_vals, y_machine, color="red", label="Machine: 2x1+x2<=100")
plt.plot(x_vals, y_labor, color="blue", label="Labor: x1+2x2<=80")
y_feasible = np.minimum(np.maximum(0, y_machine), np.maximum(0, y_labor))
plt.fill_between(x_vals, 0, y_feasible, where=(x_vals <= 50), color="green", alpha=0.2)
plt.scatter([40], [20], color="black", zorder=5)
plt.annotate("Optimal C(40,20)\nZ=Rs.2,200", (40, 20), xytext=(45, 30),
             arrowprops=dict(facecolor="black", shrink=0.05))
plt.xlabel("Product A (units)"); plt.ylabel("Product B (units)")
plt.title("PEMC4001 - Graphical LP Optimization"); plt.grid(True); plt.legend()
plt.savefig("lp_solution.png")

Solver notes

Always check pulp.LpStatus == 'Optimal' before trusting output, and confirm |Z − W| is within a small numerical tolerance (e.g. 1e-4) — this is the standard safeguard against scaling or feasibility-tolerance issues in production solvers.

21. Operational Decision Workflow

REAL-WORLD ENGINEERING PROBLEM
            |
            v
DATA COLLECTION & PREPROCESSING (IQR outlier scrubbing)
            |
            v
MATHEMATICAL MODEL FORMULATION
            |
   +--------+--------+
   |                 |
   v                 v
DETERMINISTIC     STOCHASTIC
(LP, MILP, GP,     (Queuing, Simulation,
 DP, MST)           Game Theory, ROP)
   |                 |
   +--------+--------+
            |
            v
   OPTIMIZATION & COMPUTATION
            |
            v
 SENSITIVITY & SCENARIO ANALYSIS
            |
            v
 EVIDENCE VALIDATION (KPI Check)
            |
            v
   FINAL MANAGEMENT DECISION

Part V — Assurance & Assessment

22. Evidence-Based Validation Protocol

Quantitative models must be systematically validated against real-world data before deployment.

MAPE = (1/n) Σ |Aₜ − Fₜ| / Aₜ  × 100%

RMSE = √( Σ(Aₜ − Fₜ)² / n )

ΔΩ = (Z*optimal − Z*baseline) / Z*baseline

Applied to this case: comparing the optimal mixed plan (₹2,200) against the best single-product strategy (Point A, ₹2,000) gives ΔΩ = 10% — the quantitative gain from mixed production over an edge strategy.

22.1 Qualitative Sensitivity Ranking

Parameter

Impact on Z if perturbed ±10%

Priority

Machine hours (b₁)

High — y₁ = 16.67, largest marginal value

High

Labour hours (b₂)

Moderate — y₂ = 6.67

Medium

Profit margin, Product A (c₁)

High — basic variable at optimum

High

Profit margin, Product B (c₂)

Moderate — basic variable, smaller coefficient

Medium

23. Assumption & Limitation Register

Assumption

Implication if Violated

Linearity of cost/profit and resource use

Non-linear economies of scale would require MINLP reformulation

Certainty of all coefficients (c, A, b)

Parameter volatility calls for stochastic or robust LP

Divisibility (continuous x₁, x₂)

Discrete batch sizes require the MILP treatment of Section 2

Single-period, static capacity

Multi-period capacity changes require the DP model of Section 5

24. Reproducibility Note

Results in this manual were generated with Python 3.x, PuLP with the bundled CBC solver, and a numerical tolerance of 1e-4 for the strong-duality check. Where Monte Carlo simulation is used (Section 12), fix and record the random seed so that percentile and CVaR figures can be exactly reproduced by an examiner.

25. Suggested Supporting Attachments

      .lp or .mps model files, or the raw PuLP / SciPy script

      Excel Solver Answer, Sensitivity, and Limits reports (screenshots)

      Network diagrams for MST and Maximum-Flow problems, showing capacities and the minimum-cut frontier

      Monte Carlo empirical histograms with 95% confidence-interval overlays

26. Final Lab Conclusion

      Optimal weekly production plan: 40 units of Product A and 20 units of Product B.

      Maximum achievable contribution margin: ₹2,200 per week.

      Both machine and labour resources operate at 100% utilization with zero slack.

      Strong duality confirmed (Z* = W* = ₹2,200); machine expansion (y₁* = ₹16.67/hr) is the higher-priority capital investment over labour expansion (y₂* = ₹6.67/hr).

27. Viva Voce — Questions & Answers

Question

Model Answer

What defines a Linear Programming model?

A mathematical optimization model with a linear objective function and linear equality/inequality constraints over continuous, non-negative decision variables.

Why must the optimal solution lie on a corner (extreme) point?

Because the feasible region of linear inequalities is a convex polyhedron, and a linear objective attains its extreme values at the vertices of that region.

What is a binding constraint?

A constraint fully utilized at the optimal solution — left-hand side equals right-hand side, so slack is zero.

What is the economic meaning of a shadow price?

The marginal change in the optimal objective value from a one-unit increase in a resource's right-hand-side capacity, holding all else constant.

What does a zero reduced cost tell you?

The associated variable is already basic (in the optimal solution) — it needs no further coefficient improvement to remain attractive.

How do primal and dual objective values relate?

By weak duality any feasible dual solution bounds the primal maximum from above; by strong duality they are exactly equal at the optimum, Z* = W*.

Why justify your chosen validation metrics?

MAPE and RMSE quantify forecast accuracy in different units (percentage vs. absolute), and both should be reported together so a single large outlier does not mislead the model's perceived accuracy.

28. Learning-Outcome Map (Bloom's Taxonomy)

Bloom Level

Manual Section

Student Activity

Understand

§1–3

State LP structure, dual form, and GP deviation variables

Apply

§13, §17

Substitute Ranchi data into the standard formulation and solve graphically

Analyse

§18–19

Interpret slack, shadow prices, and complementary slackness

Evaluate

§22–23

Judge model validity using MAPE/RMSE and the assumption register

Create

§20 & Future Work

Extend the base LP script to MILP, GP, or stochastic variants

29. Common Pitfalls

      Forgetting the non-negativity restriction when reading off graphical intercepts.

      Misinterpreting a dual variable as feasible/optimal before checking complementary slackness holds as equality for every positive primal variable.

      Using the mean duration alone in Monte Carlo reporting instead of the full empirical distribution or percentile range.

      Treating scenario analysis (discrete what-ifs) as identical to parametric sensitivity (continuous range within the same basis) — see the distinction in Section 4.

30. Future Work / Extensions

      MILP extension: restrict x₁, x₂ to integer batch sizes if machines process only whole units per changeover.

      Multi-objective extension: add an energy-consumption goal alongside profit using the Goal Programming formulation of Section 3.

      Two-stage stochastic programming: treat machine/labour availability as uncertain and re-solve recourse decisions after realization.

      Industry 4.0 link: feed real-time shop-floor sensor data into the A, b, c vectors via an MES/digital-twin pipeline so the LP re-solves on a rolling basis.



No comments:

Post a Comment

NPTL INTRODUCTION TO SOCIAL PSYCHOLOGY

Advanced Course in Social Psychology - Complete Course Notes COURSE OVERVIEW Instructor: Prof. Pooja Garg, Department of Humanities and S...