Learn
Lesson · Linear Programming Models · Standard form and corners

Standard Form, Slack and Surplus

Every linear programme becomes Ax = b with all variables at or above zero by adding a slack to each ≤ row and subtracting a surplus from each ≥ row. The sign is not a convention: add a surplus instead and the variable is forced negative at every feasible point. Each new column measures something in the situation, which is why this is a modelling step and belongs here.

a·x ≤ b → a·x + s = b, s ≥ 0 s = what is left unused a·x ≥ b → a·x − e = b, e ≥ 0 e = the over-fulfilment a·x = b → unchanged, and it carries no new column x free → x = x⁺ − x⁻, both ≥ 0 minimise f → maximise −f, then negate the answer back tight row ⇔ its own added variable is 0
One column per inequality row, with its sign

Core ideas

What this lesson establishes

Four mechanical rules and one thing that is not mechanical: every column added has a meaning in the situation, and naming it is the work.

1

A slack is added and a surplus is subtracted, and the sign is forced

F + G ≥ 4 becomes F + G − e₁ = 4. At a point where the row holds, F + G is at least 4, so e₁ = F + G − 4 is at or above zero. Write + e₁ instead and e₁ = 4 − (F + G) is at or below zero at every feasible point, which breaks the sign restriction the whole form rests on.

2

Every added column measures something in the situation

The kiln's slack is unfired capacity, in pieces a day. The contract's surplus is deliveries beyond what was promised, in pieces. A column you cannot describe in a sentence about the pottery is a column you have not understood, and “Duality and Sensitivity Analysis” reads prices and ranges off exactly these columns.

3

Tight and zero are the same fact, written twice

A row is tight at a point exactly when its own added variable is zero there. That is what makes the corner table readable: a column of zeros is the list of rows used right up, and it is a computation rather than a claim about a diagram.

The material

Equality standard form, and what the new columns measure

The two signs and why they are forced, the columns a solver needs and the one it only needs for the search, and the negation that is usually forgotten.

A pottery fires pieces plain or glazed: F pieces fired and left plain and G pieces fired and glazed, both counted in pieces a day. A delivery contract wants at least 4 pieces, the kiln takes at most 10 firing units where a plain piece costs 2 and a glazed piece 1, and a licence allows at most 4 plain pieces. Plain costs 3 to make and glazed 5, and the pottery minimises cost.

minimise 3F + 5G subject to F + G ≥ 4 the delivery contract 2F + G ≤ 10 the kiln F ≤ 4 the licence F, G ≥ 0
Definition · Equality standard form

A linear programme is in standard form when it reads maximise c·x subject to Ax = b and x ≥ 0. Every programme reaches it: add a slack to each ≤ row, subtract a surplus from each ≥ row, split each free variable into a difference of two non-negative ones, and replace a minimisation of f by a maximisation of −f.

The transformation is exact, not an approximation: the feasible points correspond one to one, and so do the objective values — up to the sign, which has to be put back.

The pottery in standard form carries three added columns with meanings: e₁, the pieces delivered beyond the four promised; s₂, the firing units the kiln has left; and s₃, the plain pieces the licence still allows. It carries a fourth column, a₁, which measures nothing about the pottery: an artificial variable, there to give the search a basis to start from, zero at every feasible point. The lab leaves it out of the table of corners for that reason and says how many it left out.

Every added variable, at every corner

The region has four corners. Evaluating the three meaningful columns at each of them turns the phrase “tight if and only if the added variable is zero” into something to read rather than accept.

corner e₁ s₂ s₃ cost (0, 4) 0 6 4 20 (0, 10) 6 0 4 50 (4, 0) 0 2 0 12 cheapest (4, 2) 2 0 0 22

At (4, 0) the contract is met exactly and the licence is used right up, so two of the three rows are tight and the kiln has 2 firing units to spare. At (0, 10) the kiln is full and the contract is exceeded by 6 pieces. Reading down a column tells you which corners a row is tight at; reading across a row describes a corner completely.

The sign that is not a convention

Suppose the contract row had been written F + G + e₁ = 4. At (0, 10) that needs e₁ = −6, and at (4, 0) it needs e₁ = 0, so the only feasible points left are the ones where the contract is met exactly. The programme has silently acquired a new requirement, and every method that follows in this subject assumes x ≥ 0 and would carry the error forward without a murmur.

Minimise by maximising, and then negate back

The engine maximises. So the pottery's cost is handed over as maximise −3F − 5G, the answer comes back as −12, and the page negates it to 12. That last step is the one that gets forgotten, and a cost reported as a negative number is a symptom worth recognising rather than a mystery. The lab prints both numbers with their signs for exactly that reason.

Flip the kiln row from a limit to a requirement — at least 10 firing units, perhaps because the kiln is uneconomic below that — and the form changes shape. That row now takes a surplus rather than a slack, the model needs a second artificial column, the number of added columns rises from four to five, and the cheapest plan moves from 12 at (4, 0) to 22 at (4, 2). One character in one relation, and both the columns and the answer move.

Interactive

Slack, surplus, and what each of them measures

Adding a surplus instead of subtracting it forces the variable negative

Slack, surplus, and what each of them measuresTight if and only if the added variable is zero
the feasible regiona zero, which is a tight rowthe cheapest corner

Method

Converting to standard form

Four steps, and a sentence per new column. The sentence is the part that makes this modelling rather than clerking.

1

Take the ≤ rows first and add a slack to each

a·x + s = b with s ≥ 0. Name what s is: unused hours, unfired capacity, shelf space still free — in the row's own unit.

2

Take the ≥ rows and subtract a surplus from each

a·x − e = b with e ≥ 0. Check the sign on a feasible point you know: if the variable comes out negative there, the sign is wrong and every later method will inherit the error.

3

Deal with free variables and with the direction

Split a free variable into x⁺ − x⁻, both at or above zero. Convert a minimisation of f into a maximisation of −f, and write down now that the answer must be negated back.

4

Write the sentence for each new column, then solve

One line per added variable saying what it measures. A column you cannot describe is either misunderstood or artificial — and an artificial column is zero at every feasible point, so it belongs in the search and not in the report.

Slack, surplus and the sign

Score 0 / 0

The pottery in equality form, column by column

The conversion is four lines. What takes the space is the meaning of each new column, which is the part “Duality and Sensitivity Analysis” reads.

as written minimise 3F + 5G F + G ≥ 4 the delivery contract 2F + G ≤ 10 the kiln F ≤ 4 the licence F, G ≥ 0 as equalities F + G − e₁ = 4 2F + G + s₂ = 10 F + s₃ = 4 F, G, e₁, s₂, s₃ ≥ 0 what each new column measures e₁ pieces delivered beyond the four the contract asks for s₂ firing units the kiln still has free s₃ plain pieces the licence still allows a₁ nothing about the pottery: an artificial column, 0 wherever feasible the cheapest corner (4, 0) e₁ = 0 s₂ = 2 s₃ = 0 cost 12 contract tight, licence tight, kiln with 2 to spare the engine maximised −3F − 5G and reported −12 the cost is 12, negated back

Three added columns with meanings and one without: a₁ exists so that the search has somewhere to start, and it is zero at every feasible point, so a column of zeros beside the slacks would describe the algorithm rather than the pottery. That is why the lab tabulates three columns and says it left one out.

For a faded rehearsal, change the kiln row from ≤ 10 to ≥ 10. The supplied first move is the kind of column it now takes: a requirement takes a surplus, subtracted, so 2F + G − e₂ = 10. Work out how many added columns the form now has, which of them are artificial, and where the cheapest plan moves to — then check all three against the lab.

Common mistakes

1
Adding a surplus instead of subtracting itA surplus is not a slack with another name. a·x + e = b on a ≥ row forces e to be at or below zero at every feasible point, which breaks the x ≥ 0 the whole form is built on, and every method later in this subject assumes that form. Check the new variable's sign at one feasible point you already know.
2
Reporting the negated objectiveA minimisation handed to a maximising engine comes back with its sign flipped. Forgetting to negate it produces a cost of −12, which reads as a mistake in the model rather than in the bookkeeping. Write the negation down at the moment you convert, not at the moment you report.
3
Treating the added columns as clericalEach one measures something: unused capacity, over-delivery, unbuilt licence allowance. “Duality and Sensitivity Analysis” reads prices, ranges and reduced costs off exactly these columns, and a column whose meaning was never written down is a column that will be misread there.

Check your understanding

✓
Finish when every added column has a sentence about the situation beside it.

You should be able to convert a mixed-constraint minimisation to equalities with the right sign on every new variable, evaluate all of them at a given corner, say which rows are tight from the zeros, and negate the objective back.

Note: Standard form is what makes the next idea possible. With m equalities in n + m variables, a point is picked out by choosing which variables are zero — and that is what replaces the drawing once there are too many variables to draw.

Kept in this browser only, for you. Nothing is sent anywhere and nothing checks it. Carry it to another device.

Feedback and recommendations

Something to change about this lesson? Write it down, tick it off when it is handled, and export the list when you want to act on it. Kept in this browser only: nothing is sent anywhere, and nobody is notified.

No recommendations yet for this lesson.