Linear Programming in Economics and Business: Graphical Method, Constraints and Simplex Method

July 21, 2026
Linear Programming in Economics and Business: The Graphical Method, Shadow Prices and Simplex
In 1947 George Dantzig solved a problem the US Air Force had considered computationally hopeless. His method now quietly routes your parcels, schedules airline crews, blends the fuel in your car and decides what a refinery produces today. It is also one of the most exam-friendly topics in mathematical economics — because you can literally draw the answer.
Almost every decision a business makes has the same shape. You want the most of something — profit, output, coverage. You cannot have unlimited amounts of it, because something is scarce: machine hours, labour, raw material, budget, floor space.
That is a constrained optimisation problem, and you have met it before. The consumer maximises utility subject to a budget line. The firm minimises cost subject to an output target. Linear programming is the same idea with one simplifying assumption bolted on: everything is linear. The objective is a straight line, and so is every constraint.
That assumption sounds restrictive. It buys you something remarkable in return — a guarantee about exactly where the answer lives, and a method for finding it that scales to problems with millions of variables.

The three ingredients

Every linear programming problem has exactly three parts. Get these right and the rest is mechanical.
1. The objective function. What you are maximising or minimising, written as a linear expression of your decision variables. For a firm making two products: maximise π = 40x + 30y, where 40 and 30 are the contribution margins per unit.
2. The constraints. The scarce resources, each written as a linear inequality. If product x needs 2 machine hours and product y needs 1, and you have 100 hours available: 2x + y ≤ 100.
3. Non-negativity. x ≥ 0, y ≥ 0. You cannot produce negative chairs. Students forget to state this constantly, and it is usually an explicit mark.
Maximise   Z = c₁x + c₂y
subject to   a₁x + b₁y ≤ R₁ ,   a₂x + b₂y ≤ R₂ ,   x, y ≥ 0
The standard form. Everything linear: no squares, no products of variables, no logs.
Why linearity matters. Linear constraints carve out a feasible region that is a convex polygon — a shape with flat sides and no dents. Convexity is what delivers the whole theory. Without it, you can have local optima that are not global, and no guarantee that a search finds the best answer.

The corner point theorem

Here is the result that makes linear programming tractable, and it is worth stating precisely:
The optimum of a linear programme, if it exists, always occurs at a corner (vertex) of the feasible region.
Think about why. Your objective function Z = 40x + 30y defines a family of parallel straight lines — one for every value of Z. Maximising Z means sliding that line outward, as far as possible, while still touching the feasible region.
Where does it last touch? At a corner. The only exception is when the objective line happens to be exactly parallel to a constraint edge, in which case the entire edge is optimal — but the corners at each end of that edge are still among the optimal solutions.
So an infinite search space collapses to a finite checklist. Find the corners, evaluate the objective at each, pick the best. That is the entire graphical method.

The graphical method, step by step

A furniture workshop makes tables (x) and chairs (y).
  • Each table earns £40 contribution; each chair earns £30
  • Carpentry: each table needs 2 hours, each chair 1 hour. 100 hours available
  • Finishing: each table needs 1 hour, each chair 2 hours. 80 hours available
Step 1 — Formulate.
Maximise   Z = 40x + 30y
subject to   2x + y ≤ 100  (carpentry)
x + 2y ≤ 80  (finishing)
x ≥ 0,   y ≥ 0
Step 2 — Plot each constraint as an equality. Find the intercepts by setting each variable to zero in turn.
Constraint x-intercept (y = 0) y-intercept (x = 0)
2x + y = 100 x = 50 y = 100
x + 2y = 80 x = 80 y = 40
Step 3 — Identify the feasible region. Both constraints are ≤, so the feasible region lies below and left of both lines, bounded by the axes. A quick test: does the origin (0,0) satisfy both? 0 ≤ 100 ✓ and 0 ≤ 80 ✓, so the origin is feasible and the region is on its side of both lines.
Step 4 — Find every corner.
Corner A is the origin: (0, 0).
Corner B is where carpentry meets the x-axis: (50, 0). Check it satisfies finishing: 50 + 0 = 50 ≤ 80 ✓ feasible.
Corner C is where finishing meets the y-axis: (0, 40). Check carpentry: 0 + 40 = 40 ≤ 100 ✓ feasible.
Corner D is where the two constraints intersect. Solve simultaneously:
From 2x + y = 100 we get y = 100 − 2x. Substitute into x + 2y = 80:
x + 2(100 − 2x) = 80 → x + 200 − 4x = 80 → −3x = −120 → x = 40
Then y = 100 − 2(40) = y = 20. So corner D is (40, 20).
Step 5 — Evaluate the objective at every corner.
Corner (x, y) Z = 40x + 30y
A (0, 0) £0
B (50, 0) £2,000
C (0, 40) £1,200
D (40, 20) £2,200
Optimal solution: produce 40 tables and 20 chairs for a contribution of £2,200.
Note that corner B — specialising entirely in the higher-margin product — earns only £2,000. The intuition that you should make as many of the most profitable item as possible is wrong, and linear programming is precisely the tool that shows why: tables are carpentry-hungry, and pure specialisation wastes finishing capacity.
Common error — testing only the “obvious” corners. Students frequently evaluate the axis intercepts and stop, missing the intersection point where two constraints bind simultaneously. In this problem that would cost you the actual answer. The interior corner is optimal far more often than not — it is where the trade-off between constraints is balanced.

Binding and slack constraints

At the optimum (40, 20), check how much of each resource is used:
Carpentry: 2(40) + 20 = 100. Available: 100. Fully used — binding.
Finishing: 40 + 2(20) = 80. Available: 80. Fully used — binding.
Both constraints bind here, which is why the optimum sits at their intersection. A constraint that is not fully used has slack — spare capacity. Had finishing only used 60 of its 80 hours, it would have 20 hours of slack.
The decision rule this gives you. Only binding constraints limit profit. Buying more of a resource with slack is worthless — you already have more than you can use. This is why the distinction matters commercially: it tells a manager exactly which bottleneck to invest in and which to ignore.

Shadow prices: what an extra hour is worth

Now the genuinely useful part, and the bit that connects linear programming to the rest of economics.
Suppose you could buy one more carpentry hour. What is it worth? Not what it costs — what it is worth to you, in extra profit.
Re-solve with carpentry at 101 hours. The constraints become 2x + y = 101 and x + 2y = 80. Solving: x = 40.67, y = 19.67, giving Z = 40(40.67) + 30(19.67) = £2,216.67.
The gain is £2,216.67 − £2,200 = £16.67 per additional carpentry hour. That is the shadow price.
Shadow price = ΔZ / Δ(resource)
The increase in the objective from one more unit of a binding resource. Also called the dual value or marginal value of the constraint.
This should feel familiar. The shadow price is exactly the Lagrange multiplier λ from constrained optimisation — the same concept, arrived at from a different direction. In both cases it answers: how much does relaxing the constraint by one unit improve the objective?
And it has a hard commercial meaning. If you can hire an extra carpentry hour for less than £16.67, do it. If overtime costs £25 an hour, do not. The shadow price is the maximum you should ever pay.
The rule for slack constraints. A constraint with slack has a shadow price of zero. If you are not using all your finishing hours, an extra finishing hour adds nothing. This is one half of what economists call complementary slackness: either a constraint binds, or its shadow price is zero — never both non-zero, never both zero.
Common error — treating shadow prices as constant. A shadow price only holds over a limited range. Keep adding carpentry hours and eventually a different constraint starts binding, the optimal corner shifts, and the shadow price changes — usually falling. Exam questions sometimes ask “should the firm buy 500 more hours?” expecting you to note that the £16.67 figure cannot be extrapolated that far without re-solving.

The simplex method: when you cannot draw it

The graphical method has an obvious ceiling. Two variables give you a plane. Three give you a 3-D solid, which is already awkward. Four or more and you cannot draw it at all.
Real problems are enormous. An airline scheduling crews might have hundreds of thousands of variables. A refinery blending fuels has thousands. The corner point theorem still holds — but a problem with 100 constraints and 100 variables can have astronomically many corners, so checking all of them is hopeless.
Dantzig’s simplex method (1947) is the answer, and the idea behind it is elegant. Rather than checking every corner, it starts at one feasible corner and repeatedly walks to an adjacent corner that improves the objective. When no neighbouring corner is better, convexity guarantees you are at the global optimum — you cannot be stuck in a local peak, because a convex region has no local peaks.
Think of it as always walking uphill along the edges of a polygon. On a convex shape, that always reaches the summit.
You will rarely be asked to run simplex tableaux by hand at A-Level or AP, and the graphical method is what gets examined. But you should know what simplex is, why it exists, and that it produces shadow prices as a by-product — the “dual” solution comes out alongside the primal one at no extra cost.
Case Study — Stigler’s Diet Problem and the Birth of an Industry
In 1945 George Stigler — later a Nobel laureate — asked a deceptively simple question: what is the cheapest combination of foods that meets a person’s full nutritional requirements? He had 77 foods and 9 nutrient constraints.
Stigler had no algorithm. He used what he described as heuristic guesswork and arrived at an annual diet costing $39.93 in 1939 prices. He noted honestly that he could not prove it was optimal.
In 1947, with simplex newly invented, a team ran the same problem on a desk-calculator setup. It took nine clerks approximately 120 person-days. The true optimum was $39.69 — Stigler’s guesswork had been wrong by 24 cents, about 0.6%. A modern laptop solves it in well under a second.
Two lessons. First, the optimum was almost inedible — heavy on wheat flour, cabbage and dried navy beans — which is why linear programming is used to constrain menu planning rather than dictate it, and why real applications add palatability constraints. Second, and more importantly: the diet problem became the template. Blend crude oil into petrol; blend ingredients into animal feed; blend financial assets into a portfolio. It is the same mathematical object, and it is now a routine part of how refineries, agribusiness and logistics firms operate.
Research Spotlight — The Nobel That Went to a Planner and a Market Theorist
The oddity: linear programming was invented twice, on opposite sides of the Iron Curtain, for opposite reasons.
Leonid Kantorovich developed the technique in Leningrad in 1939, working on plywood production scheduling. He recognised that his multipliers had an economic interpretation — they were, in effect, prices. This was ideologically dangerous in the USSR, where prices were supposed to be a capitalist artefact, and his work went largely unpublished and unnoticed abroad for years.
Tjalling Koopmans independently developed closely related methods analysing shipping routes for the Allies during the war, and later formalised the connection between these multipliers and competitive market prices at the Cowles Commission.
The two shared the 1975 Nobel Prize for their contributions to the theory of optimum allocation of resources. The result has a genuine intellectual sting: the shadow prices produced by solving a central planner’s optimisation problem are the same numbers as the prices a competitive market would generate. Kantorovich had, in effect, rediscovered the price system from inside a planned economy.
Dantzig — who made all of this computationally practical with simplex — never received the Prize, a widely noted omission. Simplex was named one of the top ten algorithms of the twentieth century by Computing in Science and Engineering in 2000.
Why this matters for you: the connection between shadow prices and market prices is a genuinely powerful evaluation point. It links linear programming to the First Welfare Theorem, to Lagrange multipliers, and to the socialist calculation debate. Duality is not a mathematical curiosity — it is a statement about what prices are.

When linear programming breaks

The linearity assumption is doing a lot of work, and honest evaluation means knowing where it fails.
Constant returns are assumed. Doubling output doubles resource use exactly. No economies of scale, no learning curves, no capacity congestion. Real production functions are rarely this obliging.
Prices are fixed. The objective assumes you can sell all 40 tables at the same margin. If selling more requires cutting price, the objective becomes quadratic and the corner point theorem no longer applies.
Divisibility is assumed. The method happily returns 40.67 tables. If your product is indivisible, you need integer programming — which is dramatically harder, and where the elegant guarantees evaporate.
Certainty is assumed. All coefficients are known exactly. In reality margins and resource availability are forecasts.
None of this makes the technique useless — refineries and airlines run on it daily. But it explains why real applications layer on integer constraints, stochastic elements and piecewise-linear approximations of curved relationships.
AP & Cambridge A-Level Exam Technique
1. Formulate before you draw. Write the objective function, every constraint, and the non-negativity conditions explicitly. Formulation typically carries more marks than the graph. A question that gives you a wordy scenario is usually testing whether you can translate it, not whether you can plot.
2. Define your variables in words. “Let x = number of tables produced per week.” One line, frequently one mark, and it prevents you confusing yourself later.
3. Never omit x ≥ 0, y ≥ 0. It looks trivial. It is on the mark scheme.
4. Find corners algebraically, not by eye. Reading (40, 20) off a hand-drawn graph is a guess. Solve the simultaneous equations and show the working — the marks are in the algebra, and graph-reading is where accuracy marks are lost.
5. Tabulate every corner including the origin. Evaluate Z at each and state the winner explicitly. Do not test only the ones that look promising.
6. Always check which constraints bind. Substitute your optimum back in and compare against capacity. It verifies your answer and sets up any shadow price question that follows.
7. Answer in context. Finish with “the workshop should produce 40 tables and 20 chairs per week, generating £2,200 contribution” — not just “Z = 2200”. Contextual interpretation is routinely the final mark.

Practice Questions

Question 1 — Formulation (5 marks)
A bakery makes loaves (x) and cakes (y). A loaf uses 0.5 kg flour and 0.2 hours of oven time; a cake uses 0.3 kg flour and 0.5 hours. The bakery has 120 kg of flour and 80 oven hours per week. Contribution is £2 per loaf and £5 per cake. Formulate this as a linear programme.
Define variables: Let x = number of loaves produced per week; let y = number of cakes produced per week.  [1]

Objective function: Maximise Z = 2x + 5y  [1]

Subject to:
Flour: 0.5x + 0.3y ≤ 120  [1]
Oven time: 0.2x + 0.5y ≤ 80  [1]
Non-negativity: x ≥ 0, y ≥ 0  [1]

Question 2 — Graphical solution (8 marks)
Maximise Z = 5x + 4y subject to 6x + 4y ≤ 24, x + 2y ≤ 6, x ≥ 0, y ≥ 0. Find the optimal solution and state which constraints bind.
Intercepts:  [2]
6x + 4y = 24 → x-intercept (4, 0), y-intercept (0, 6)
x + 2y = 6 → x-intercept (6, 0), y-intercept (0, 3)

Corners:  [3]
A = (0, 0)
B = (4, 0) — check: 4 + 0 = 4 ≤ 6 ✓
C = (0, 3) — check: 0 + 12 = 12 ≤ 24 ✓
D = intersection. From 6x + 4y = 24 → y = 6 − 1.5x. Substitute into x + 2y = 6:
x + 2(6 − 1.5x) = 6 → x + 12 − 3x = 6 → −2x = −6 → x = 3, y = 6 − 4.5 = 1.5
D = (3, 1.5)

Evaluate Z = 5x + 4y:  [2]
A (0,0): Z = 0
B (4,0): Z = 20
C (0,3): Z = 12
D (3,1.5): Z = 15 + 6 = 21 ← optimal

Optimal: x = 3, y = 1.5, Z = 21.  [1]

Binding constraints: 6(3) + 4(1.5) = 24 = capacity → binding. 3 + 2(1.5) = 6 = capacity → binding. Both constraints bind, which is why the optimum lies at their intersection.

Question 3 — Shadow prices (7 marks)
Using the furniture workshop from the article (maximise Z = 40x + 30y subject to 2x + y ≤ 100 and x + 2y ≤ 80), the optimum is (40, 20) with Z = £2,200. (a) Calculate the shadow price of finishing hours. (b) The workshop can hire finishing overtime at £20/hour. Advise, with reasoning.
(a) Increase finishing capacity from 80 to 81 and re-solve.  [1]
Constraints: 2x + y = 100 and x + 2y = 81
From the first: y = 100 − 2x. Substitute: x + 2(100 − 2x) = 81 → x + 200 − 4x = 81 → −3x = −119 → x = 39.67  [1]
y = 100 − 2(39.67) = 20.67
Z = 40(39.67) + 30(20.67) = 1586.67 + 620 = £2,206.67  [1]
Shadow price = 2206.67 − 2200 = £6.67 per finishing hour  [1]

(b) The shadow price of £6.67 is the maximum the workshop should pay for an additional finishing hour, since that is the extra contribution it generates.  [1]
Overtime costs £20/hour, which exceeds £6.67. Each overtime hour would therefore reduce profit by 20 − 6.67 = £13.33.  [1]
Advice: do not hire finishing overtime. Note that carpentry has a shadow price of £16.67 — also below £20, so overtime is not worthwhile on either constraint. If overtime were available at £10/hour, carpentry overtime would be profitable but finishing overtime would not.  [1]

Question 4 — Evaluation (10 marks)
A manufacturer’s consultant recommends a production plan derived from linear programming, claiming it is “mathematically optimal and therefore the best decision available.” Evaluate this claim.
Points supporting the claim:  [3]
• Given the model’s assumptions, the solution genuinely is globally optimal. Convexity of the feasible region plus the corner point theorem guarantee no better feasible point exists — this is a proof, not an estimate.
• It outperforms intuition reliably. Naive rules like “make as much of the highest-margin product as possible” are demonstrably wrong when constraints interact, as the furniture example shows (£2,000 vs £2,200).
• It generates shadow prices as a by-product, telling management exactly which bottleneck to relieve and the maximum worth paying — information no heuristic provides.

Points against the claim:  [5]
Optimal within the model, not within reality. The solution is only as good as the formulation. If a constraint was omitted or a margin misestimated, the answer is precisely wrong rather than approximately right. Mathematical rigour applied to bad inputs produces confident nonsense.
Linearity is a strong assumption. Constant returns to scale, fixed prices regardless of volume, and no congestion effects are rarely true. Real production functions curve; selling more usually requires cutting price, which makes the objective quadratic and voids the corner point theorem.
Divisibility. A solution of 40.67 tables is meaningless for indivisible goods. Rounding is not safe — the rounded point may be infeasible or substantially sub-optimal — and integer programming is a genuinely harder problem.
Certainty is assumed. Coefficients are forecasts. Sensitivity analysis is essential, and a solution that is optimal but fragile may be worse in practice than a robust near-optimal one.
The objective may be wrong. Maximising short-run contribution ignores strategic considerations — customer relationships, market share, product-range reputation, workforce morale. Optimising the measurable can crowd out the important.

Judgement:  [2]
The claim conflates two different statements. “Mathematically optimal” is true and verifiable; “therefore the best decision available” does not follow, because it smuggles in the assumption that the model faithfully represents the business. The value of linear programming lies in disciplining the analysis and revealing shadow prices, not in removing managerial judgement. The consultant’s plan is best treated as a rigorous input to a decision rather than the decision itself — and the appropriate response is to interrogate the formulation and run sensitivity analysis, not to accept or reject the output wholesale.

Summary

Linear programming solves constrained optimisation when everything is linear. Formulate an objective, list the constraints as inequalities, remember non-negativity, and the feasible region becomes a convex polygon. Because the objective is linear, the optimum must sit at a corner — so an infinite problem becomes a finite checklist. Find the corners algebraically, evaluate, pick the winner.
The shadow prices are where it stops being an exercise and becomes economics. They tell you what an extra unit of a scarce resource is worth, they are zero for anything with slack, and they are the same object as the Lagrange multiplier. Kantorovich found them inside a planned economy and discovered he had rediscovered prices — which is why he and Koopmans shared a Nobel for it.
And the caveat is the same one that attaches to every model in this series. The mathematics is exact; the formulation is a judgement. Linearity, divisibility and certainty are assumptions, not facts. The method gives you the best answer to the question you asked. Whether you asked the right question is not something an algorithm can check.

References

  1. Dantzig, G.B. (1963) Linear Programming and Extensions. Princeton: Princeton University Press.
  2. Dantzig, G.B. (1990) ‘The diet problem’, Interfaces, 20(4), pp. 43–47.
  3. Dorfman, R., Samuelson, P.A. and Solow, R.M. (1958) Linear Programming and Economic Analysis. New York: McGraw-Hill.
  4. Kantorovich, L.V. (1960) ‘Mathematical methods of organizing and planning production’, Management Science, 6(4), pp. 366–422. (English translation of the 1939 Russian original.)
  5. Koopmans, T.C. (1951) Activity Analysis of Production and Allocation. New York: Wiley.
  6. Stigler, G.J. (1945) ‘The cost of subsistence’, Journal of Farm Economics, 27(2), pp. 303–314.
  7. Vanderbei, R.J. (2020) Linear Programming: Foundations and Extensions. 5th edn. Cham: Springer.

Related Posts

What is Standard Deviation? Formula, Calculation and Examples

Statistics · VariabilityWhat is Standard Deviation?The most widely used measure of spread — how it works, how to calculate it, and why it matters more than the range.The mean tells you where the centre of your data is — but it tells you nothing about how spread out...

What is Standard Deviation? Formula, Calculation and Examples

Statistics · VariabilityWhat is Standard Deviation?The most widely used measure of spread — how it works, how to calculate it, and why it matters more than the range.The mean tells you where the centre of your data is — but it tells you nothing about how spread out...