Dual Simplex Method

Applies when a tableau is optimal (objective row satisfies the optimality criterion) but infeasible (some RHS is negative). Common after adding a new constraint to an already-optimal tableau.

Iteration Steps

Select Leaving Variable

The basic variable with the most negative RHS.

Select Entering Variable

Among columns with a negative entry in the leaving row, the one minimizing the ratio:

Ratio=∣objective row coefficiententry∣\text{Ratio} = \left\lvert \frac{\text{objective row coefficient}}{\text{entry}} \right\rvert

If no negative entry exists in the leaving row, the problem is infeasible. Stop.

Pivot

Same as the primal simplex algorithm’s pivot step.

Repeat until every RHS is ≥0\ge 0, at which point the tableau is both optimal and feasible.

Worked Example

Take the optimal tableau from the simplex algorithm example (z=3x1+5x2z = 3x_1 + 5x_2, optimum x1=2x_1 = 2, x2=6x_2 = 6, z=36z = 36) and add the constraint x1+x2≤5x_1 + x_2 \le 5, which the current optimum violates (2+6=82 + 6 = 8).

Adding slack s4s_4 gives x1+x2+s4=5x_1 + x_2 + s_4 = 5. Substituting the x1x_1 and x2x_2 rows to eliminate the basic variables leaves −16s2−13s3+s4=−3-\tfrac{1}{6}s_2 - \tfrac{1}{3}s_3 + s_4 = -3. The objective row is unchanged, so the tableau is still optimal but now infeasible.

1 /

entering column leaving row pivot element updated this step

Most negative RHS is −3-3, so s4s_4 leaves. Only s2s_2 and s3s_3 have negative entries in that row, so only those columns get a ratio.
The ratio row’s minimum is 33 under s3s_3, so s3s_3 enters. Pivot on −13-\tfrac13.

Still infeasible: x1=−1x_1 = -1. The only negative entry in that row is under s2s_2, giving the only ratio (22), so s2s_2 enters. Pivot on −12-\tfrac12.

Every RHS is ≥0\ge 0 and the objective row is still non-negative. Optimal at x1=0x_1 = 0, x2=5x_2 = 5, z=25z = 25.

Wolfram Mathematica notebooks

A companion notebook for this note. Open it in Mathematica and evaluate the cells to reproduce the worked example.

The summary notebook defines every function used in this module, with documentation and no examples, as a starting point for your own problems.

Written by October 24, 2026 2 min read
Was this helpful?