Skip to main content

Section 2.3 Cycling

In this section, we discuss a potentially serious hurdle to using the Simplex Algorithm, and show how to avoid it completely.

Activity 2.3.1.

Consider the following canonical maximization tableau:
\(x_1\) \(x_2\) \(x_3\) \(x_4\) \(-1\)
\(-12.5\) \(-2\) \(12.5\) \(1\) \(0\) \(=-t_1\)
\(1\) \(0.24\) \(-2\) \(-0.24\) \(0\) \(=-t_2\)
\(4\) \(1.92\) \(-16\) \(-0.96\) \(1\) \(=f\)

(a)

Perform the following sequence of pivots, ensure each time that it is a valid pivot according to Definition 2.2.6, and keep track of the variables.
\(\) \(\) \(\) \(\) \(-1\)
\(-12.5\) \(-2\) \(12.5\) \(1\) \(0\) \(\)
\(1^*\) \(0.24\) \(-2\) \(-0.24\) \(0\) \(\)
\(4\) \(1.92\) \(-16\) \(-0.96\) \(1\) \(=f\)
\(\) \(\) \(\) \(\) \(-1\)
\(?\) \(?^*\) \(?\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(=f\)
\(\) \(\) \(\) \(\) \(-1\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?^*\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(=f\)
\(\) \(\) \(\) \(\) \(-1\)
\(?\) \(?\) \(?\) \(?^*\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(=f\)
\(\) \(\) \(\) \(\) \(-1\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(\)
\(?^*\) \(?\) \(?\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(=f\)
\(\) \(\) \(\) \(\) \(-1\)
\(?\) \(?^*\) \(?\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(\)
\(?\) \(?\) \(?\) \(?\) \(?\) \(=f\)

(b)

Compare your final tableau to the initial tableau. Are there any similarities?

Activity 2.3.2.

Consider the canonical linear optimization problem: Maximzie \(f(x,y)=x+y\text{,}\) subject to
\begin{align*} -2x +y \amp\leq0 \\ x -2y \amp\leq0 \\ x +y \amp\leq4 \\ x,y \amp\geq0. \end{align*}

(a)

Consider a sequence of pivots swapping \(x\leftrightarrow t_2\text{,}\) \(y \leftrightarrow t_1\) \(t_1 \leftrightarrow y\text{,}\) \(t_2 \leftrightarrow x\text{.}\) In each of these cases, what is the basic solution recorded by the tableau?
Hint.
The feasible region with multiple lines intersecting the origin.

Definition 2.3.3.

If a series of pivots in accordance to Definition 2.2.6 allows one to return to a set of basic variables achieved earlier in the algorithm, we call this phenomena cycling.

Definition 2.3.4.

If a pivot on a tableau gives a new tableau corresponding to the same basic solution, we call the pivot a degenerate pivot.
Cycling is bad, since potentially this allows the Simplex Algorithm to not terminate. Fortunately, there is a solution to this issue.

Proof.

For the sake of notation, we denote the initial tableau:
\(x_1\) \(x_2\) \(\cdots\) \(x_m\) \(-1\)
\(a_{11}\) \(a_{12}\) \(\cdots\) \(a_{1m}\) \(b_1\) \(=-x_{m+1}\)
\(a_{21}\) \(a_{22}\) \(\cdots\) \(a_{2m}\) \(b_2\) \(=-x_{m+2}\)
\(\vdots\) \(\vdots\) \(\ddots\) \(\vdots\) \(\vdots\) \(\vdots\)
\(a_{n1}\) \(a_{n2}\) \(\cdots\) \(a_{nm}\) \(b_n\) \(=-x_{m+n}\)
\(c_1\) \(c_2\) \(\cdots\) \(c_m\) \(d\) \(=f\)
and order the variables in the associated way. Suppose we follow Bland’s rules and still have cycling. That is, there is a sequence of pivots and bases (set of basic variables) \(B_1\to B_2\to \cdots B_\ell \to B_1\text{.}\) We call a variable \(x_j\) fickle if \(x_j\) is in one, but not all of the bases. That is, it leaves a basis, and reenters it later during the cycle.
Note that in order for cycling to occur, each pivot must be degenerate (ask yourself why?). So if \(x_j\) is fickle, \(x_j=0\) for each basic solution during the cycle.
Since the number of variables is finite, the set of fickle variables is also finite, and let \(x_t\) denote the fickle variable with largest subscript. Suppose that \(x_t \in B_i, x_t\not\in B_{i+1}\) (why must such a \(B_i\) exist?). Denote the entering variable from \(B_i\to B_{i+1}\) with \(x_s\text{.}\)
\(\cdots\) \(x_s\) \(\cdots\) \(-1\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\vdots\) \(a_{ts}\) \(\vdots\) \(0\) \(=-x_{t}\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\cdots\) \(c_s\) \(\cdots\) \(d\) \(=f\)
\(\cdots\) \(x_t\) \(\cdots\) \(-1\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\vdots\) \(?\) \(\vdots\) \(0\) \(=-x_{s}\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\cdots\) \(?\) \(\cdots\) \(d\) \(=f\)
Note that \(x_s\) must also be fickle (why?) and so \(s\lt t\text{.}\)
We call the dictionary for a basis the system of equations corresponding to that basis. So the dictionary for \(B_i\) is \(D_i\) which we can write as:
\begin{align*} x_k \amp = b_k - \displaystyle\sum_{x_j\not\in B_i} a_{kj}x_j\text{ for }k\in B_i.\\ f \amp = \displaystyle\sum_{x_j\not\in B_i} c_{j}x_j -d. \end{align*}
Note that since the above pivot was valid, we must have that \(c_s>0, a_{ts}>0\) and since the pivot was degenerate, we have \(b_t=0\text{.}\)
Now, because we have cycling, we must have that \(x_t\) reenters the basis at some point
\(\cdots\) \(x_t\) \(\cdots\) \(-1\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\vdots\) \(?\) \(\vdots\) \(0\) \(=-x_{?}\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\cdots\) \(c_t^*\) \(\cdots\) \(d\) \(=f\)
\(\cdots\) \(x_?\) \(\cdots\) \(-1\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\vdots\) \(?\) \(\vdots\) \(0\) \(=-x_{t}\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\cdots\) \(?\) \(\cdots\) \(d\) \(=f\)
Note that for this pivot to be valid, we have that \(c_t^*>0\text{.}\) If we let \(D_\ell\) denote the dictionary before \(x_t\) re-enters the basis, we have:
\begin{equation*} f = \displaystyle\sum_{x_j\not\in B_\ell} c_{j}^*x_j -d \end{equation*}
So note that the solution space to the system of equations for both these dictionaries are the same. So we have a solution for \(D_i\) (not neccessarily feasible ie non-negativity may fail) that must also be a solution to \(D_\ell\text{:}\)
\begin{align*} x_s \amp = Z \\ x_j \amp = 0\text{ for }x_j\not\in B_i, x_j\neq x_s \\ x_k \amp = b_k-a_{ks}Z \text{ for }x_k\in B_i\\ f \amp = c_sZ-d. \end{align*}
So we have
\begin{equation*} c_sZ-d =f =c_s^*Z-d+\displaystyle\sum_{x_k\in B_i} c_{k}^*(b_k-a_{ks}Z) \end{equation*}
where \(c_k^*=0\) for \(x_k\in B_\ell\text{.}\) So via algebra:
\begin{equation*} \left( c_s-c_s^* + \displaystyle\sum_{x_k\in B_i} c_{k}^*a_{ks} \right)Z = \displaystyle\sum_{x_k\in B_i} c_{k}^*b_k. \end{equation*}
The above equation holds true no matter what \(Z\) is. Thus:
\begin{equation*} c_s-c_s^* + \displaystyle\sum_{x_k\in B_i} c_{k}^*a_{ks}=0. \end{equation*}
Note that \(x_t\text{,}\) NOT \(x_s\) is entering the basis. If \(x_s\) is already in the basis, \(c_s^*=0\text{.}\) Otherwise, \(c_s^*\leq0\text{,}\) otherwise \(s\) would have entered by Bland’s Anticyling rules. We’ve also shown \(c_s>0\text{.}\) Thus
\begin{equation*} \displaystyle\sum_{x_k\in B_i} c_{k}^*a_{ks} \lt 0 \end{equation*}
which is only possible if there is some \(x_r\in B_i\) such that
\begin{equation*} c_r^*a_{rs}\lt 0. \end{equation*}
From this, we know that \(c_r^*\neq 0\text{.}\) So \(x_r\not\in B_\ell\text{,}\) but \(x_r\in B_i\text{,}\) so \(x_r\) is fickle. Since \(t\) is the largest index of a fickle variable, \(r\lt t\text{.}\) Note that \(x_r\) is not entering from \(B_\ell\text{,}\) so \(c_r^*\leq 0\text{.}\) Thus \(a_{rs}>0\text{.}\)
But \(x_r\) is fickle, so \(b_r=0\) in \(D_i\text{.}\) But then, we would have picked \(x_r\text{,}\) not \(x_t\) to leave.
\(\cdots\) \(x_s\) \(\cdots\) \(-1\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\vdots\) \(a_{ts}\) \(\vdots\) \(0\) \(=-x_{t}\)
\(\vdots\) \(a_{rs}\) \(\vdots\) \(0\) \(=-x_{r}\)
\(\cdots\) \(\cdots\) \(\cdots\) \(\vdots\)
\(\cdots\) \(c_s\) \(\cdots\) \(d\) \(=f\)
which is a contradiction.

Activity 2.3.6.

If we follow Theorem 2.3.5 then no basis is visited twice during the Simplex Algorithm. Note that \(f\) is non-decreasing with each pivot. Must the Simplex Algorithm terminate? Why?