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