Transforming the Variables
What you will be able to do
Given a linear program whose variables carry sign restrictions other than simple nonnegativity, the learner can select and apply the appropriate substitution for each, carry it through the objective and every constraint, account for any constant it produces, and state how an original solution is recovered from the converted one.
Orientation
A variable bounded below by 4, or free to go negative, cannot enter a method that assumes every variable starts at zero. Each awkward case has a substitution that fixes it, and each substitution has to be carried everywhere the variable appears, including into the answer you eventually report back.
The conversion unit introduced the splitting substitution as one step among four. This unit is about the substitutions themselves: which one each restriction calls for, what each leaves behind in the objective, and how to read a converted solution back to the problem you started with.
The reason it warrants separate treatment is the non-uniqueness. A split variable can be represented in infinitely many ways, and the consequence, that a converted program has infinitely many optimal solutions where the original had one, surprises people and is regularly misreported as a discovery about the problem.
This unit assumes you can convert a program to standard form and know why standard form demands nonnegative variables.
Intuition
Slack variables against variable substitution
Two different operations are both called part of conversion, and running them together is the first thing to avoid.
Slack and surplus variables change the shape of a constraint. An inequality becomes an equality by absorbing the difference between the two sides. The original variables are untouched; something new sits alongside them.
These substitutions change the variables themselves. The original variable vanishes from the program and something else stands in its place everywhere it occurred. Nothing is added to any constraint. A symbol is replaced.
The splitting substitution deserves the most attention. Any real number is a difference of two nonnegative numbers:
So convert a program with one optimal solution and a split variable, and the converted program has a whole ray of optimal solutions. Every one of them encoding the same original answer. Reporting them as distinct plans means reporting one plan repeatedly.
The shifting substitution works differently, as a change of origin rather than an addition. Measure a variable from its lower bound instead of from zero, and the bound becomes automatic: the constraint stating it can be discarded because the new variable cannot violate it. What survives is a constant in the objective, and that constant is the thing most often dropped.
Definition
Three substitutions
The canonical statement gives the three substitutions. In practice the difference is what each one costs and what has to be undone afterwards.
A free variable doubles into two columns, and the split is not unique.
A nonzero lower bound leaves a constant behind. Substituting
Every substitution has to be reversed in the report. The solver answers in
Procedure
Applying the substitutions
Classify every variable by its restriction. Go through the variable list and record, for each, whether it is already nonnegative, unrestricted in sign, nonpositive, or bounded below by a nonzero constant. Do this before substituting anything, because the choice of substitution follows from the classification.
Leave the already-nonnegative variables alone. A variable with
Substitute each restricted variable according to its class. Unrestricted:
Carry each substitution through the objective and every constraint. Work systematically along the program rather than by eye. A variable appearing in four constraints must be replaced in all four, and its appearance in the objective is the one most often overlooked.
Collect the constants a shift produces. Substituting
Discard the restrictions the substitutions absorbed. The row
Confirm every variable is nonnegative. Original untouched variables, slack and surplus variables, split pairs, shifted variables, negated variables. Every one must carry a nonnegativity restriction, or the program is not in standard form.
Write down how to read the answer back. Record
Example
One variable of each kind
Unrestricted.
Objective term becomes
Nonpositive.
Objective term becomes
Lower-bounded.
Objective term becomes
Reading back.
Worked example
A program with all three restrictions
Problem. Convert to standard form:
Goal. A standard-form program, plus the rule for reading its answer back.
Relevant principle. Classify first, substitute everywhere, and hold the objective constant aside.
Step 1: classify.
Step 2: choose the substitutions.
Step 3: the objective.
Maximising this is maximising
Step 4: the first constraint.
Step 5: the second constraint.
Step 6: discard the absorbed restrictions.
Result.
subject to
Check. Minimisation, two equalities, six variables all nonnegative. Standard form holds.
Reading back. If the minimum is
What is easiest to lose here. The constant
Non-example
Substitutions that do not do what they appear to
Not a variable transformation: an upper bound.
Not sufficient: substituting in the constraints only. Replacing
Not equivalent: dropping the shift constant. Converting
Not a valid simplification: forcing one of a split pair to zero. Writing 'take
Not two solutions: two split pairs giving one value. The pairs
Contrast
Non-uniqueness of the sign-unrestricted split
The substitution
The arithmetic. For any
Adding the same amount to both members leaves the difference unchanged and both members nonnegative. So
What that does to the converted program. Suppose the original has a unique optimal solution with
How this is misread. A solver is run twice, or a log is examined across iterations, and different values of
What is genuinely multiple. Multiple optima in the original problem means several distinct values of
The habit. Always report the recovered original variables, never the converted ones. The recovery rule is part of the conversion, not an afterthought, which is why it belongs in the written record alongside the transformed program.
Exercise
1. Convert
2. A variable
3. Show that
4. A colleague converts
5. Explain why
What to carry forward
Three substitutions make variables nonnegative, and each replaces a variable rather than adding to a constraint. Unrestricted:
An upper bound belongs to the other family: it is a constraint and takes a slack variable.
Every substitution must be carried through the objective and every constraint. The objective is where an omission is easiest and least visible.
A shift leaves a constant in the objective and changes the right-hand sides of the constraints the variable appears in. The constant does not affect which point is optimal and does affect the value reported for it.
The split of a sign-unrestricted variable is not unique: adding the same amount to both members represents the same original value. So a converted program has infinitely many optimal solutions wherever a split variable appears, and they are one original solution written many ways rather than several plans.
Record the recovery rule when you record the converted program. A solution expressed in substituted variables is not an answer to the question that was asked.