index Introduction
Concepts, Techniques and Tools

Optimisation Analysis

What is the best decision given constraints?
Set 10 · Level 10 of the Analytics Ladder

Finding the Best Decision Within Real Constraints

Not "what could we do?" but "what is the mathematically best we can do given our limits?"

10Analytics Ladder · Level 10 of 10

Every previous set in this series described, diagnosed, forecasted, explained, predicted, segmented, or assessed risk. Set 10 does something different: it finds the optimal solution. Given a clear objective and a set of real-world constraints, optimisation analysis identifies the single best decision — the one that maximises (or minimises) the outcome as far as constraints allow.

This is the domain of operations research and management science. It is used daily by airlines scheduling crews, manufacturers planning production, logistics companies routing deliveries, and retailers allocating shelf space — wherever resources are scarce and tradeoffs are complex.

Optimisation answers the question no spreadsheet scenario analysis can: not "what happens if we do X?" but "what is the best X we can possibly choose?"
7
Techniques
LP
Linear
Programming
≤ ≥ =
Constraint
types
2
Tools Covered
Technique 01

Linear Programming (LP)

Maximises or minimises a linear objective function subject to linear constraints. The workhorse of optimisation — handles production mix, resource allocation, and blending problems.

Technique 02

Integer Programming (IP)

Extension of LP where some or all decision variables must be whole numbers. Required when decisions involve indivisible units — staffing levels, binary yes/no choices, facility locations.

Technique 03

Non-Linear Optimisation

Handles problems where the objective or constraints are non-linear (e.g. revenue = price × demand, where demand depends on price). More complex but reflects more realistic business relationships.

Technique 04

Goal Programming

Optimises multiple objectives simultaneously by minimising deviations from each goal. Used when there are competing priorities that cannot be combined into a single objective function.

Technique 05

Network Optimisation

Optimises flow through a network of nodes and arcs. Applications: shortest path, minimum cost flow, maximum flow. Logistics, supply chains, telecommunications routing.

Technique 06

Assignment Problems

Assigns resources (people, machines, vehicles) to tasks optimally to minimise cost or maximise performance. Classic operations research problem solved with the Hungarian algorithm.

Technique 07

Sensitivity Analysis in LP

After solving an LP, sensitivity analysis (shadow prices, reduced costs, ranging) reveals how much the optimal solution changes as constraints or objective coefficients are varied — without resolving.

Excel Solver — Start Here

Excel's built-in Solver add-in handles LP, IP, and non-linear optimisation for problems up to ~200 variables and 200 constraints. It is the most accessible entry point for business analysts. Python's PuLP and scipy.optimize libraries extend this to industrial-scale problems with thousands of variables. Both are covered in this set.

Foundation Concepts

The Language of Optimisation

Every optimisation problem has the same structure: an objective, decision variables, and constraints.

Before using any tool — Excel Solver, Python PuLP, or specialist software — you must formulate the problem correctly. Optimisation problems always have three components:

Component 01

Objective Function

The quantity you want to maximise or minimise. It must be expressed as a mathematical function of the decision variables.

Examples: Maximise profit · Minimise cost · Minimise delivery time · Maximise utilisation

Component 02

Decision Variables

The quantities you control — the things the solver is allowed to change in search of the optimal solution.

Examples: Units of each product to produce · Staff assigned to each shift · Quantity to order from each supplier · Budget allocated to each channel

Component 03

Constraints

The limits and requirements the solution must satisfy. Constraints reflect real-world restrictions on resources, capacity, regulations, or minimum service levels.

Examples: Machine capacity ≤ 200 hrs/week · Labour hours ≤ 5,000 · All decision variables ≥ 0 · Minimum order quantities

Component 04

Non-Negativity & Integrality

Decision variables must typically be ≥ 0 (you cannot produce negative units). Integer constraints require variables to take whole-number values.

Binary variables: Special case where the variable is either 0 (don't do it) or 1 (do it). Used for facility location, project selection, yes/no decisions.

Worked Example — Problem Formulation
A bakery produces two products: Croissants and Muffins

Decision variables: C = number of croissants to produce per day · M = number of muffins to produce per day

Objective: Maximise profit = 1.20C + 0.80M (profit per unit × quantity)

Constraints:

ConstraintExpressionReason
Oven time3C + 2M ≤ 240 minutesOven available 4 hours/day
Flour stock2C + 3M ≤ 300 gramsLimited flour in storage
Minimum croissantsC ≥ 20Standing daily order from café
Non-negativityC ≥ 0, M ≥ 0Cannot produce negative quantities

Solution (from Solver): C = 60, M = 40. Maximum daily profit = $72 + $32 = $104.

The formulation is the hard part

Once a problem is correctly formulated, the solver does the mathematics automatically. The analytical skill lies in translating a business problem into a mathematical formulation — identifying the right objective, the correct decision variables, and all the binding constraints. A perfectly running Solver on a wrongly formulated problem produces the wrong answer with high confidence.

Technique 01 · 07

Linear Programming

The most widely used optimisation technique. Linear objective, linear constraints, and a guaranteed global optimum — if the problem is feasible.

Linear Programming (LP) requires that both the objective function and all constraints are linear — meaning no squared terms, products of variables, or other non-linearities. This sounds restrictive, but it covers an enormous range of real business problems: production mix, resource allocation, blending, transportation, and staffing.

Why LP is reliable

The LP feasible region (the set of all solutions satisfying all constraints) forms a convex polygon (in 2D) or polytope (in higher dimensions). The optimal solution always lies at a corner (vertex) of this polygon. This geometric fact guarantees that the Simplex algorithm — which moves from corner to corner, improving the objective at each step — always finds the global optimum, never a local one. LP cannot get "stuck."

Visual Example — LP Feasible Region
Production Mix: Product A and Product B
A B 0 30 60 90 0 20 40 60 C1 2A + 4B ≤ 240 C2 3A + 2B ≤ 240 C3 B ≤ 50 ★ Optimal (60, 30) Feasible Region Max profit line

The shaded purple region is the feasible region — all (A,B) combinations satisfying all three constraints. The optimal solution (★) is always at a corner vertex. The dashed orange line shows the profit objective at its maximum value while still touching the feasible region.

LP Sensitivity Analysis — Shadow Prices

After solving an LP, sensitivity analysis reveals how much the optimal objective value changes per unit increase in a constraint's right-hand side. This is the shadow price (or dual price).

ConceptPlain explanationBusiness use
Shadow PriceHow much the optimal objective improves if the constraint is relaxed by one unit. Shadow price = $3.20 means: if we had one more hour of machine capacity, profit would increase by $3.20.Reveals which constraints are most valuable to relax. Justify investment in expanding the binding constraint.
Binding ConstraintA constraint that is exactly met at the optimal solution. The shadow price of a binding constraint is positive — it is actively limiting the objective.Binding = where the bottleneck is. Focus capacity investment here first.
Non-Binding ConstraintA constraint with slack — the feasible region has room beyond the constraint at the optimal solution. Shadow price = 0.This constraint is not limiting the objective — no value in relaxing it.
Reduced CostFor variables at zero in the optimal solution: how much the objective coefficient would need to improve before it becomes worth producing that variable.A product not in the optimal mix has a reduced cost showing exactly what margin improvement would make it worthwhile.
Techniques 02 · 03 · 04

Integer, Non-Linear & Goal Programming

Extensions of LP for when decisions are indivisible, relationships are curved, or you have multiple competing goals.

Integer Programming (IP)

Many business decisions are naturally discrete: you hire whole people, open whole warehouses, deploy whole vehicles. LP might suggest "hire 3.7 staff" — which is not a real option. Integer Programming (IP) requires some or all decision variables to take integer values.

Pure Integer (ILP)

All variables are integers

Number of trucks to deploy, shifts to open, machines to purchase. Every decision variable must be a whole number.

Mixed Integer (MILP)

Some integer, some continuous

Most common in practice: some decisions are discrete (number of warehouses) while others are continuous (quantity shipped from each warehouse).

Binary Integer

Variables are 0 or 1

"Do we open this location? (1=yes, 0=no)." Capital budgeting, project selection, facility location — any yes/no decision under a budget constraint.

Caution

IP is harder to solve than LP

Adding integer constraints turns a simple LP into an NP-hard problem. Solver may take much longer or fail on large problems. Use LP relaxation first to get an upper bound.

Business Example
Binary IP — Capital Project Selection

A company has a $5M investment budget and 6 candidate projects. Each project either receives full funding (x=1) or not (x=0). Each has a defined cost and NPV. Objective: maximise total NPV subject to total investment ≤ $5M.

Maximise: NPV₁x₁ + NPV₂x₂ + … + NPV₆x₆
Subject to: Cost₁x₁ + Cost₂x₂ + … + Cost₆x₆ ≤ $5,000,000
x₁, x₂, …, x₆ ∈ {0, 1}

This is the classic "0-1 Knapsack Problem." Excel Solver with binary integer constraints solves this instantly for 6 projects, and in seconds for up to ~30 projects.

Non-Linear Optimisation

When the objective or constraints contain non-linear terms — price × quantity (both variables), diminishing returns, quadratic cost curves — the problem becomes non-linear. Non-linear optimisation cannot guarantee a global optimum; it may find a local one. Use multiple starting points and verify the solution makes business sense.

Business Example
Non-Linear — Optimal Pricing

Revenue = Price × Demand, where Demand = 1000 − 10×Price (linear demand function). Revenue = Price × (1000 − 10×Price) = 1000P − 10P² — a non-linear (quadratic) function. Excel Solver with "GRG Nonlinear" method finds the profit-maximising price.

Goal Programming

Goal programming optimises when there are multiple, sometimes conflicting objectives. Instead of combining all objectives into one, it sets a target (goal) for each and minimises the total weighted deviation from all goals simultaneously.

GoalTargetPriorityDirection
Minimise overtime≤ 200 hours/monthP1 (highest)Minimise excess
Achieve revenue≥ $1,000,000P2Minimise shortfall
Maintain headcount= 45 staffP3Minimise both excess and shortage
Techniques 05 & 06

Network Optimisation & Assignment Problems

Routing, scheduling, and matching — the most commercially applied areas of optimisation.

Network Optimisation

Network problems model flow through a system of nodes (locations, facilities, storage points) and arcs (routes, links, connections). The objective is typically to minimise cost or time, subject to flow conservation (what flows in must flow out, unless it is a source or sink).

Problem TypeQuestionBusiness application
Shortest PathWhat is the fastest or cheapest route from A to B?Delivery routing, navigation, network latency minimisation
Minimum Cost FlowHow should we route product through a supply network to minimise cost?Distribution planning, logistics networks, supply chain optimisation
Maximum FlowWhat is the maximum throughput from source to sink given link capacities?Network bandwidth planning, production throughput, pipeline capacity
Vehicle Routing Problem (VRP)What is the optimal set of routes for a fleet of vehicles to serve all customers?Last-mile delivery, field service scheduling, waste collection
Travelling Salesperson (TSP)What is the shortest route visiting all locations exactly once?Sales territory design, circuit board drilling, gene sequencing
Transportation Problem — a classic LP

The transportation problem ships goods from multiple supply points (warehouses) to multiple demand points (customers) at minimum cost. It is a special case of LP: supply constraints at each warehouse, demand constraints at each customer, and a shipping cost for each route. In Python: from scipy.optimize import linprog or import pulp. Solvable to global optimality in seconds even for very large networks.

Assignment Problems

Assignment problems assign n agents (workers, machines, vehicles) to n tasks in a one-to-one matching that minimises total cost (or maximises total performance). The Hungarian algorithm solves assignment problems exactly and efficiently.

Business Example
Staff Scheduling — Shift Assignment

A contact centre has 5 agents and 5 shifts. Each agent has a performance score for each shift (based on historical data). The assignment problem finds the allocation of agents to shifts that maximises total performance — ensuring each agent gets exactly one shift and each shift has exactly one agent.

Without optimisation: the manager might intuitively assign agents — producing a total performance score of 78. The Hungarian algorithm finds the optimal assignment with a total score of 94 — an 20% improvement from the same 5 agents, just better matched to shifts.

In Python: from scipy.optimize import linear_sum_assignment — this is the most practical and fastest implementation.

Real-world optimisation scale

What Excel Solver can handle (200 variables, 200 constraints) represents a tiny fraction of industrial optimisation. Major airlines solve crew scheduling problems with millions of variables. Amazon's logistics network uses large-scale mixed-integer programs updated in real time. For problems at that scale, specialist solvers (Gurobi, CPLEX, or commercial OR platforms) are used — but the same formulation principles apply. Learn to formulate correctly in Excel, and the skills transfer to any platform.

Tool Guide 🟢 Start Here

Microsoft Excel — Solver

Excel's built-in Solver handles LP, IP, and non-linear optimisation — no code required.

Enabling Solver

Solver is a built-in Excel add-in but may not be active by default. To enable: File → Options → Add-ins → Excel Add-ins → Go → tick Solver Add-in → OK. Solver then appears under Data → Solver on the ribbon.

🟢 Start HereExcel Solver — Full Walkthrough
01
Set up your model in the spreadsheet
Use one cell per decision variable (e.g. B2 = Product A quantity, B3 = Product B quantity). Create formula cells for the objective (e.g. B6 = Profit = B2×profit_A + B3×profit_B) and each constraint LHS (e.g. B8 = Machine Hours Used = B2×hrs_A + B3×hrs_B). Every cell must use formulas referencing the decision variable cells — no hard-coded numbers in formulas.
02
Open Solver
Data → Solver
03
Set Objective
Set Objective: click the cell containing your objective formula (e.g. $B$6). Choose Max (to maximise profit) or Min (to minimise cost). For a target value: choose Value Of and type the target.
04
Set decision variable cells
By Changing Variable Cells: select the cells containing your decision variables (e.g. $B$2:$B$3). These are the cells Solver is allowed to change.
05
Add constraints
Click Add. In the Add Constraint dialog: Cell Reference = constraint LHS cell (e.g. $B$8) · Operator (≤, ≥, =) · Constraint = the RHS limit (e.g. $D$8 which contains 200). Click Add and repeat for each constraint. Do not forget non-negativity constraints (B2 ≥ 0, B3 ≥ 0) or tick "Make Unconstrained Variables Non-Negative."
06
Choose the solving method
Simplex LP: for linear problems (LP/ILP). GRG Nonlinear: for non-linear objectives or constraints. Evolutionary: for highly non-linear or discontinuous problems (slower, heuristic).
Rule: always use Simplex LP first — if it fails or the problem is non-linear, switch to GRG Nonlinear.
07
Run Solver and interpret
Click Solve. If a solution is found: "Solver found a solution. All constraints and optimality conditions are satisfied." Choose Keep Solver Solution. Decision variable cells now show the optimal values. Tick Answer Report and Sensitivity Report for full LP output.
Sensitivity Report key elements
Objective cell: optimal value · Variable cells: optimal quantities and reduced costs · Constraints: shadow price (dual price), slack, and allowable ranges for each constraint
08
Integer constraints
When adding constraints, select int from the operator dropdown to require integer values. Select bin for binary (0 or 1) variables. Integer constraints are set per variable cell — not per constraint row.
Common Solver error messages

"Solver could not find a feasible solution": The constraints are contradictory — no solution satisfies all of them simultaneously. Review constraints for errors (e.g. minimum requirements that exceed available capacity). "Solver has converged to the current solution": GRG Nonlinear stopped at a local optimum — try different starting values. "The maximum iteration limit was reached": Increase iterations in Options, or simplify the problem.

Tool Guide 🔵 Full Power

Python — PuLP & scipy.optimize

Industrial-scale optimisation — from simple LP to large mixed-integer programs — in clean, readable code.

🔵 Full PowerPuLP — Linear & Integer Programming
# pip install pulp from pulp import (LpProblem, LpVariable, LpMaximize, LpMinimize, LpInteger, LpBinary, lpSum, value, PULP_CBC_CMD) # ── Bakery Production Mix (LP) ── prob = LpProblem("Bakery_Profit", LpMaximize) # Decision variables (continuous, non-negative) C = LpVariable("Croissants", lowBound=0) M = LpVariable("Muffins", lowBound=0) # Objective: maximise profit prob += 1.20*C + 0.80*M, "Total_Profit" # Constraints prob += 3*C + 2*M <= 240, "Oven_Time" prob += 2*C + 3*M <= 300, "Flour_Stock" prob += C >= 20, "Min_Croissants" # Solve prob.solve(PULP_CBC_CMD(msg=0)) print(f"Status: {prob.status}") print(f"Croissants: {C.varValue:.0f}") print(f"Muffins: {M.varValue:.0f}") print(f"Max Profit: ${value(prob.objective):.2f}") # Shadow prices (constraint dual values) for name, constr in prob.constraints.items(): print(f" {name}: shadow price = {constr.pi:.4f}, slack = {constr.slack:.2f}")
🔵 Full PowerPuLP — Binary Integer Programming (Project Selection)
# Capital project selection — 0-1 knapsack projects = [ {'name':'Alpha', 'cost':1.2, 'npv':2.1}, {'name':'Beta', 'cost':0.8, 'npv':1.4}, {'name':'Gamma', 'cost':1.5, 'npv':3.2}, {'name':'Delta', 'cost':2.0, 'npv':2.8}, {'name':'Epsilon', 'cost':0.5, 'npv':0.9}, {'name':'Zeta', 'cost':1.8, 'npv':4.1}, ] BUDGET = 5.0 # $5M prob = LpProblem("Project_Selection", LpMaximize) x = {p['name']: LpVariable(p['name'], cat=LpBinary) for p in projects} prob += lpSum(p['npv']*x[p['name']] for p in projects), "Total_NPV" prob += lpSum(p['cost']*x[p['name']] for p in projects) <= BUDGET, "Budget" prob.solve(PULP_CBC_CMD(msg=0)) print("Selected projects:") for p in projects: if x[p['name']].varValue > 0: print(f" ✓ {p['name']}: Cost=${p['cost']}M, NPV=${p['npv']}M") print(f"Total NPV: ${value(prob.objective):.1f}M")
🔵 Full Powerscipy.optimize — Non-Linear & Assignment
# Non-linear: find profit-maximising price from scipy.optimize import minimize_scalar, minimize, linear_sum_assignment import numpy as np # Revenue = P × Q where Q = 1000 - 10P def neg_revenue(price): demand = 1000 - 10*price if demand < 0: return 0 return -(price * demand) # negative because we minimise result = minimize_scalar(neg_revenue, bounds=(0,100), method='bounded') print(f"Optimal price: ${result.x:.2f}") print(f"Max revenue: ${-result.fun:,.0f}") # Assignment problem: assign n workers to n tasks, minimise cost # cost[i][j] = cost of assigning worker i to task j cost_matrix = np.array([ [90, 75, 85, 80], # Worker 1 [35, 85, 55, 65], # Worker 2 [125, 95, 90, 105], # Worker 3 [45, 110, 95, 115] # Worker 4 ]) row_ind, col_ind = linear_sum_assignment(cost_matrix) print("Optimal assignment:") for r, c in zip(row_ind, col_ind): print(f" Worker {r+1} → Task {c+1} (cost={cost_matrix[r,c]})") print(f"Total cost: {cost_matrix[row_ind, col_ind].sum()}")
Applied Optimisation

Optimisation in Business Practice

Concrete examples across five industries — from marketing budget allocation to production scheduling.

ProblemObjectiveDecision VariablesKey ConstraintsType
Production MixMaximise profitUnits of each product to produceMachine hours, labour, materials, storage, minimum ordersLP
Marketing Budget AllocationMaximise reach/leadsBudget allocated to each channelTotal budget cap, minimum spend per channel, diminishing returnsNLP
Staff SchedulingMinimise labour costNumber of staff on each shiftMinimum staffing per shift, maximum hours per person, rest periodsILP
Portfolio OptimisationMaximise return for given risk% allocated to each assetTotal = 100%, no short-selling, sector limits, max single-stock weightQP (quadratic)
Supply Chain RoutingMinimise transport costQuantity shipped on each routeSupply at each warehouse, demand at each customer, route capacityLP (transport)
Project SelectionMaximise total NPVWhich projects to fund (0/1)Total budget, resource constraints, dependency rulesBinary IP
Optimal PricingMaximise revenue or profitPrice per product/segmentPrice floor/ceiling, competitor price bounds, margin requirementsNLP
Detailed Worked Example
Marketing Budget Allocation — 4 Channels, $500K Budget

A company has $500K to allocate across four marketing channels: Digital, TV, Print, Events. Each channel has a diminishing returns curve (spend more, get proportionally less new reach). This makes it a non-linear problem.

ChannelMax BudgetMin BudgetReach at MinReach at Max
Digital$250K$50K1.2M2.6M
TV$200K$80K0.8M2.1M
Print$100K$20K0.3M0.7M
Events$150K$30K0.4M1.1M

Optimal allocation (GRG Nonlinear): Digital $250K · TV $150K · Events $80K · Print $20K = Total $500K. Maximised reach: 6.1M unique impressions — vs 5.4M from an equal-split baseline ($125K each). The optimised allocation delivers a 13% reach improvement from the same budget.

How to present optimisation results to stakeholders

Never present just the numbers. Always explain: (1) What was the objective? (Maximise reach within $500K budget.) (2) What are the decision variables? (Budget allocated to each channel.) (3) What are the binding constraints? (Total budget is fully used; Digital is at its maximum.) (4) What is the improvement over the baseline? (13% more reach than equal split.) (5) What happens if a constraint changes? (Shadow price: an extra $10K to Digital would yield 48K more reach.)

Interactive Practice

Three Simulators

Build intuition for LP formulation, resource allocation, and constraint sensitivity through live interaction.

Simulator 1 · Production Mix Optimiser

A factory makes two products. Adjust the profit margins and resource constraints, then solve to see the optimal production plan and which constraint is binding.

Product A: 3 machine hrs + 2 labour hrs · Product B: 2 machine hrs + 4 labour hrs · Min 10 of each product
Adjust sliders to see the optimal production plan change in real time.

Simulator 2 · LP Problem Builder

Four business scenarios are described. For each, identify: (a) is this a maximisation or minimisation problem, and (b) which statement correctly identifies the objective function?

Scenario 1 of 4
Read the scenario and identify the correct objective function formulation.

Simulator 3 · Shadow Price Interpreter

An LP Sensitivity Report has been produced. Interpret the shadow prices and decide which constraint it is worth investing to relax — and why.

SENSITIVITY REPORT — Production Profit Optimisation
Optimal Profit: $14,400/week

CONSTRAINTS:
Machine Hours: Shadow Price = $18.00 Slack = 0 (BINDING)
Labour Hours: Shadow Price = $6.50 Slack = 0 (BINDING)
Storage Space: Shadow Price = $0.00 Slack = 42 (not binding)
Min Order (A): Shadow Price = -$2.10 Slack = 0 (BINDING)
Select the best investment decision based on the shadow prices above.
Best Practice

Common Mistakes

Optimisation mistakes are uniquely dangerous — the solver always produces an answer, even if the problem is wrong.

Mistake 01

Forgetting constraints — the "optimistic" model

A Solver model that ignores capacity, regulatory, or service-level constraints will produce a solution that is mathematically optimal but operationally impossible. Always list every real-world limit before running Solver. Test the solution manually to check it is physically achievable.

Mistake 02

Using Simplex LP for a non-linear problem

If the objective or any constraint is non-linear (contains multiplication of two variables, squared terms, exponentials), Simplex LP will give a wrong answer without warning. Check: is the profit formula P×Q where both P and Q are decision variables? That is non-linear — use GRG Nonlinear.

Mistake 03

Rounding LP solutions to get integers — instead of using IP

Rounding the LP solution (e.g. changing 47.3 to 47) does not give the true integer optimum. It may produce an infeasible solution or a suboptimal one. When variables must be whole numbers, use Integer Programming (add int constraints in Solver).

Mistake 04

Treating the LP optimum as the only valid solution

The LP optimum assumes perfectly accurate input data. In practice, objective coefficients (profit margins) and constraint RHS values (capacities) have uncertainty. Always run sensitivity analysis: how much can inputs change before the optimal solution changes? If the shadow price is very high, small data errors have large consequences.

Mistake 05

Not validating the solution with domain experts

An LP solution might be mathematically optimal but practically problematic — ignoring setup times between products, contractual obligations to specific customers, or quality constraints not in the model. Always review the optimal solution with operations staff before implementing.

Mistake 06

Optimising the wrong objective

Maximising revenue when the real goal is profit. Minimising cost when the real goal is cost per unit of output. The single most important decision in any optimisation model is formulating the objective correctly. A perfectly solved model with the wrong objective leads to confidently wrong decisions.

Set 09 · Key Takeaway
The solver always finds the best answer to the problem you gave it. Make sure the problem you gave it is the one you actually have.
Assessment

Knowledge Check

Five questions across all optimisation techniques.

Q1 — A factory LP model is solved and the Sensitivity Report shows: Machine Hours — Shadow Price = $18.00, Slack = 0. What does this mean?
A
Machine hours cost $18 per hour
B
The machine hours constraint is binding. Each additional hour of machine time would increase the optimal profit by $18. This constraint is the primary bottleneck.
C
The model overestimates machine hours by $18
D
Machine hours are not binding because the shadow price is positive
Shadow price = $18 means the objective (profit) would increase by $18 for each additional unit of this resource (one more machine hour). Slack = 0 confirms the constraint is binding — all machine capacity is used at the optimal solution. This is the bottleneck: investing in overtime or additional equipment that costs less than $18/hour would increase profit. Storage Space with shadow price = $0 and positive slack is NOT a bottleneck — no value in expanding it.
Q2 — An LP solver recommends producing 47.3 units of Product A. A manager rounds this to 47 units. What is wrong with this approach?
A
Nothing — rounding is standard practice for LP results
B
Rounding the LP relaxation does not guarantee the true integer optimum and may produce an infeasible or suboptimal solution. Integer Programming (IP) should be used when whole-number quantities are required.
C
The LP should always round up to be conservative
D
47 and 47.3 are close enough — the difference is negligible
Rounding an LP solution to integers is never guaranteed to be optimal or even feasible. Example: rounding 47.3 down to 47 might violate a minimum order constraint (e.g. ≥ 48 units). Or the true integer optimum might be 45 units of A with 60 units of B — a completely different allocation. When integer solutions are required, add integer constraints in Solver (select "int" in the Add Constraint dialog) and let IP find the true optimum.
Q3 — A marketing team wants to maximise total reach by allocating a $1M budget across channels. Reach per channel = a × Spend^0.7 (diminishing returns). Which Solver method should be used?
A
Simplex LP — it is the fastest method
B
GRG Nonlinear — the objective contains Spend^0.7, which is a non-linear term. Simplex LP would give incorrect results on a non-linear problem.
C
Evolutionary — always use Evolutionary for marketing problems
D
Integer Programming — because budget must be allocated in whole dollars
Spend^0.7 is a non-linear (power) function — Simplex LP cannot handle it correctly. GRG Nonlinear (Generalised Reduced Gradient) handles smooth non-linear objectives. Since reach = a × Spend^0.7 is concave (diminishing returns), GRG will find the global optimum for this particular structure. Important: try multiple starting points with GRG to confirm the solution is not a local optimum. Evolutionary is for highly discontinuous problems — slower and less suited here.
Q4 — A company wants to select which of 8 projects to fund from a $10M budget, where each project either gets full funding or nothing. Which type of optimisation problem is this?
A
Continuous LP — allocate budget proportionally across projects
B
Non-linear programming — project returns are uncertain
C
Binary Integer Programming — each decision variable is 0 (don't fund) or 1 (fund), making this a 0-1 Knapsack problem
D
Goal programming — multiple NPV goals must be balanced
Because each project is either fully funded or not at all, the decision variables are binary: xᵢ ∈ {0, 1}. This is the classic 0-1 Knapsack problem: maximise total NPV (Σ NPVᵢ × xᵢ) subject to budget (Σ Costᵢ × xᵢ ≤ $10M) and binary constraints. In Excel Solver: add each decision variable cell with "bin" constraint. In Python: use PuLP with LpBinary variables. The solver guarantees the globally optimal project portfolio.
Q5 — Excel Solver returns the message: "Solver could not find a feasible solution." What is the most likely cause and the first corrective action?
A
The objective function is not set up correctly — change from Max to Min
C
There are too many decision variables — reduce to fewer than 10
B
The constraints are contradictory — no solution simultaneously satisfies all of them. Review constraints for errors: minimum requirements that exceed available capacity, or two constraints that cannot both be true. Remove constraints one at a time to identify which combination is infeasible.
D
The starting values for decision variables are too small — increase them
"No feasible solution" means the set of constraints defines an empty feasible region — there is no combination of decision variable values that satisfies all constraints simultaneously. Common causes: (1) Sum of minimum requirements exceeds available capacity (e.g. minimum order totals exceed machine hours). (2) Two constraints directly contradict each other. Diagnosis: temporarily remove constraints one at a time, re-run Solver, until it becomes feasible — the most recently removed constraint (or its combination with others) is causing the infeasibility.