--- lang: ja tags: OptMech-2021, lecture --- # 2021年度 知的システム<br>第6回:線形計画問題(5) 単体法 [ポータルへ戻る](https://hackmd.io/@nagae/OptMech_2021) <div style="text-align: center"> このページへは以下のQRコードまたはURLからアクセスできます: ![](https://i.imgur.com/y8QhUgn.png =200x) <code style="font-size:20pt">https://hackmd.io/@nagae/OptMech_2021-Ch05</code> </div> # 辞書の更新とリア充問題の最適解 リア充問題の**等式標準形**: $$ \begin{alignat}{6} \displaystyle \min_{x_{1}, x_{2}, r_{1}, r_{2}, r_{3}} \quad -z&=-&x_{1} &-& 2x_{2} &-&0\\ \text{s.t.} \quad -r_{1}&=&x_{1} &+& x_{2} &-& 8 \\ -r_{2}&=&2x_{1}&+& x_{2} &-& 2 \\ -r_{3}&=&2x_{1}&+&3x_{2} &-& 18 \\ && x_{1}&,&x_{2} &,& r_{1}&, &r_{2}&,&r_{3}&\geq& 0 \end{alignat} \qquad \begin{array}{c|cc|c} & x_{1} & x_{2} & -1\\ \hline -r_{1} & 1 & 1 & 8\\ -r_{2} & -2 & 1 & 2 \\ -r_{3} & 2 & 3 & 18\\ \hline -z & -1 & -2 & 0 \end{array} $$ に対して,以下の2回の**ピボット演算**を行う: 1. **説明変数**$x_{2}$と**被説明変数**$r_{2}$を入れ替える 2. **説明変数**$x_{1}$と**被説明変数**$r_{3}$を入れ替える このとき,**辞書**は下記: $$ \begin{array}{c|cc|c} & x_{1} & x_{2} & -1\\ \hline -r_{1} & 1 & 1 & 8\\ -r_{2} & -2 & 1* & 2 \\ -r_{3} & 2 & 3 & 18\\ \hline -z & -1 & -2 & 0 \end{array} \rightarrow \begin{array}{c|cc|c} & x_{1} & r_{2} & -1\\ \hline -r_{1} & 3 & -1 & 6\\ -x_{2} & -2 & 1 & 2 \\ -r_{3} & 8* & -3 & 12\\ \hline -z & -5 & 2 & 4 \end{array} \rightarrow \begin{array}{c|cc|c} & r_{3} & r_{2} & -1\\ \hline -r_{1} & \frac{3}{8} & \frac{1}{8} & \frac{3}{2}\\ -x_{2} & \frac{1}{4} & \frac{1}{4} & 5 \\ -x_{1} & \frac{1}{8} & -\frac{3}{8} & \frac{3}{2}\\ \hline -z & \frac{5}{8} & \frac{1}{8} & \frac{23}{2} \end{array} $$ のように変化する.最後の辞書は,**説明変数**を$\mathbf{u}=(r_{3}, r_{2})$,**被説明変数**を$\mathbf{v}=(r_{1}, x_{2}, x_{1})$としている.これに対応した**等式標準形**の線形計画問題は以下のように表される: $$ \begin{alignat}{6} \displaystyle \min_{r_{3}, r_{2}, r_{1}, x_{2}, x_{1}} \quad -z&=&\tfrac{5}{8}r_{3} &+& \tfrac{1}{8}r_{2} &-&\tfrac{23}{2}\\ \text{s.t.} \quad -r_{1}&=&\tfrac{3}{8}r_{3} &+&\tfrac{1}{8}r_{2} &-& \tfrac{3}{2} \\ -x_{2}&=&\tfrac{1}{4}r_{3}&+& \tfrac{1}{4}r_{2} &-& 5 \\ -x_{1}&=&\tfrac{1}{8}r_{3}&-&\tfrac{3}{8}r_{2} &-& \tfrac{3}{2} \\ && r_{3}&,&r_{2} &,&r_{1}&, x_{2}, x_{1}\geq 0 \end{alignat} $$ この問題の目的関数の最初の2項 $\tfrac{5}{8}r_{3} + \tfrac{1}{8}r_{2}$ は, $(r_{3}, r_{2})$ の ==**係数がいずれも正**== なので,$(r_{3}, r_{2})$を小さくするほど小さくなる. いま,$r_{3} = r_{2}=0$としてみよう.このとき,等式制約から,ただちに残る変数が$(r_{1}, x_{2}, x_{1}) = \left(\tfrac{3}{2}, 5, \tfrac{3}{2}\right)$と求められる.等式制約の ==**右辺定数がいずれも非負**== であるから,$(r_{3}, r_{2} | r_{1}, x_{2}, x_{1})=\left(0, 0\left| \tfrac{3}{2}, 5, \tfrac{3}{2}\right.\right)$は**実行可能**である. $r_{2}, r_{3}$が非負である限り目的関数が$-z=-\frac{23}{2}$よりも小さくなることはないから,この解は**最適解**である.結局のところ,もとの問題の**最適解**および**最適値**は,以下のように求められる: - **最適解**: $(r_{3}, r_{2} | r_{1}, x_{2}, x_{1})=\left(0, 0 \left| \tfrac{3}{2}, 5, \tfrac{3}{2}\right.\right)$, - **最適値**: $z = \tfrac{23}{2}$. この結果を一般化してみよう. # 辞書の更新と標準最大化問題の最適解 **標準最大化問題**に対して,ある**辞書** $$ \begin{array}{c|c|c} & \mathbf{u}^{\top} & -1 \\ \hline -\mathbf{v} & \hat{\mathbf{A}} & \hat{\mathbf{b}} \\ \hline -z & - \hat{\mathbf{c}}^{\top} & \hat{\zeta} \end{array} $$ が与えられた時, ==**$\hat{\mathbf{b}} \geq \hat{\mathbf{0}}$ かつ$-\hat{\mathbf{c}} \geq \mathbf{0}$**== ならば,$(\mathbf{v}|\mathbf{u}) = (\hat{\mathbf{b}}|\mathbf{0})$ は,対応する **等式標準形**: \begin{alignat}{3} \min_{\mathbf{u}, \mathbf{v}} && -\hat{\mathbf{c}}^{\top} \mathbf{u} - \hat{\zeta} &= - z\\ \text{s.t.} && \hat{\mathbf{A}} \mathbf{u} - \hat{\mathbf{b}} &= - \mathbf{v} \\ && \mathbf{u}, \mathbf{v} &\geq \mathbf{0} \end{alignat} の**最適解**であり,その**最適値**は$-z = -\hat{\zeta}$ である. 従って,ある**標準最大化**問題: $$ \max_{\mathbf{x}} \left\{ z = \mathbf{c}^{\top} \mathbf{x} \left| \mathbf{A} \mathbf{x} \leq \mathbf{b}, \mathbf{x} \geq \mathbf{0} \right. \right\} $$ の**最適解**を求める問題は,その**等式標準形**: $$ \min_{\mathbf{x}, \mathbf{r}} \left\{ -z = \mathbf{c}^{\top} \mathbf{x} \left| \mathbf{A} \mathbf{x} - \mathbf{b} = - \mathbf{r}, \quad \mathbf{x}, \mathbf{r} \geq \mathbf{0} \right. \right\} $$ と**等価な辞書**: $$ \begin{align} -\mathbf{v} &= \hat{\mathbf{A}} \mathbf{u}-\hat{\mathbf{b}} \\ -z &= - \hat{\mathbf{c}}^{\top} \mathbf{u} - \hat{\zeta} \end{align} $$ の中で, ==**$\hat{\mathbf{b}} \geq \mathbf{0}$ かつ $-\hat{\mathbf{c}} \geq \mathbf{0}$**== なるものを求める問題に帰着する. ここまで判ったことを整理すると,**標準最大化問題**の**等式標準形**に対して 1. **辞書**の一つは $(\mathbf{v}|\mathbf{u}) = (\mathbf{r}|\mathbf{x}), (\hat{\mathbf{A}}, \hat{\mathbf{b}}, \hat{\mathbf{c}}) = (\mathbf{A}, \mathbf{b}, \mathbf{c})$ で与えられる. 2. **等価な辞書**$(\hat{\mathbf{A}}, \hat{\mathbf{b}}, \hat{\mathbf{c}})$は**ピボット演算**によって生成できる. 3. そうした**辞書**の中で$\hat{\mathbf{b}} \geq \mathbf{0}$かつ$-\hat{\mathbf{c}} \geq \mathbf{0}$ なるものが(たまたま)見つかれば,もとの問題の**最適解**および**最適値**は, それぞれ, $(\mathbf{v}^{\ast}|\mathbf{u}^{\ast}) = (\hat{\mathbf{b}}|\mathbf{0})$および$z^{\ast} = \hat{\zeta}$ と求められる. 最適解が自明となる(i.e. $\hat{\mathbf{b}} \geq \mathbf{0}$かつ$-\hat{\mathbf{c}} \geq \mathbf{0}$)辞書に必ず辿りつく方法はないだろうか? その問いに答えるのが,次に述べる**単体法**である. # 単体法 ==**単体法 (simplex method)**== は米国の George B. Dantzig が1947 年に提案. 60年以上経過した今日でも**非常に有効な**線形計画問題の数値解法として広く利用されている. **単体法**では以下の用語が使われる: - **被説明変数**$\mathbf{v}$ → ==**基底変数**==(basic variable) $\mathbf{x}_B$ - **説明変数**$\mathbf{u}$ → ==**非基底変数**==(nonbasic variable) $\mathbf{x}_N$ - **説明変数**を$\mathbf{0}$, **被説明変数**を$\hat{\mathbf{b}}$ とした解 → ==**基底解**==(basic solution) **単体法**の特徴は以下のように整理される: - **許容基底解**の1つから始め,(等式標準形の)目的関数の値が**減少**し, かつ**実行可能性**が担保されるように, **ピボット演算**によって次々と**辞書**を更新する. - *目的関数の**係数が負***となる非基底変数の値を0から増やすため, 目的関数値は*必ず減少* - **非基底変数**の増加に伴い,少なくとも1つの**基底変数**の値が減少するが, いずれかの**基底変数**が0となったところで**非基底変数**と*入れ替える*ため, **実行可能性**が担保される. # リア充問題で単体法の基本的動作を確認 ## 初期解 リア充問題の**等式標準形**と**辞書**: $$ \begin{alignat}{6} \displaystyle \min_{x_{1}, x_{2}, r_{1}, r_{2}, r_{3}} \quad -z&=-&x_{1} &-& 2x_{2} &-&0\\ \text{s.t.} \quad -r_{1}&=&x_{1} &+& x_{2} &-& 8 \\ -r_{2}&=&2x_{1}&+& x_{2} &-& 2 \\ -r_{3}&=&2x_{1}&+&3x_{2} &-& 18 \\ && x_{1}&,&x_{2} &,& r_{1}&, &r_{2}&,&r_{3}&\geq& 0 \end{alignat} \qquad \begin{array}{c|cc|c} & x_{1} & x_{2} & -1\\ \hline -r_{1} & 1 & 1 & 8\\ -r_{2} & -2 & 1 & 2 \\ -r_{3} & 2 & 3 & 18\\ \hline -z & -1 & -2 & 0 \end{array} $$ - **基底変数** (被説明変数): $\mathbf{x}_{B} = (r_{1}, r_{2}, r_{3})$ - **非基底変数** (説明変数): $\mathbf{x}_{N} = (x_{1}, x_{2})$ - **基底解** : $(r_{1}, r_{2}, r_{3}| x_{1}, x_{2}) = (8, 2, 18|0,0)$ - 基底解での**目的関数値**: $-z = 0$ ## 1回目の解の改訂 目的関数の **非基底変数** $x_{1}, x_{2}$についての係数は$(-1, -2)$で ==いずれも負==. 従って,$x_{1}, x_{2}$を0より大きくすることで, *現在の**基底解**より小さな目的関数値を実現できる*. 例えば,**非基底変数**のうち,$x_{1}=0$のままにして,$x_{2}$を0から増やすことを考えよう.**等式制約**から,$x_{2}$が変化することで,**基底変数**の値は,以下のように変化する: $$ \begin{align} \begin{split} -r_{1} &= x_{2}-8\\ -r_{2} &= x_{2}-2\\ -r_{3} &= 3x_{2}-18 \end{split} \Leftrightarrow \begin{split} r_{1} &= 8 - x_{2} &(x_{2}\leq 8)\\ r_{2} &= 2 - x_{2} &(x_{2}\leq 2) \\ r_{3} &= 18-3x_{2} \quad&(x_{2}\leq 6) \end{split} \end{align} $$ ただし,括弧内は,対応する基底変数が非負であるために$x_{2}$が満たすべき条件を表している. これより,非負制約$\mathbf{x}, \mathbf{r} \geq \mathbf{0}$ を担保するためには,$x_{2}$は2までしか増加させられない.$x_{2}=2$まで増加させた時, **基底変数**, **非基底変数**および**目的関数**は以下のように変化する: ||変更前|変更後| |--|--|--| |基底変数$(r_{1}, \color{red}{r_{2}}, r_{3})$|$(8,2,8)$|$(6,\color{red}{0}, 12)$| |非基底変数$(x_{1}, \color{red}{x_{2}})$|$(0,0)$|$(0,\color{red}{2})$| |目的関数 $-z$|0|$-4$| 変化後の解は,**基底変数**$r_{2}$と**非基底変数**$x_{2}$を入れ替えて得られる以下の**等価**な問題の**基底解**に他ならない. $$ \begin{array}{c|cc|c} & x_{1} & x_{2} & -1\\ \hline -r_{1} & 1 & 1 & 8\\ -r_{2} & -2 & 1* & 2 \\ -r_{3} & 2 & 3 & 18\\ \hline -z & -1 & -2 & 0 \end{array} \rightarrow \begin{array}{c|cc|c} & x_{1} & r_{2} & -1\\ \hline -r_{1} & 3 & -1 & 6\\ -x_{2} & -2 & 1 & 2 \\ -r_{3} & 8 & -3 & 12\\ \hline -z & -5 & 2 & 4 \end{array} $$ $$ \begin{alignat}{6} \displaystyle \min_{x_{1}, r_{2}, r_{1}, x_{2}, r_{3}} \quad -z&=-&5x_{1} &+& 2r_{2} &-&4\\ \text{s.t.} \quad -r_{1}&=&3x_{1} &-& r_{2} &-& 6 \\ -x_{2}&=-&2x_{1}&+& r_{2} &-& 2 \\ -r_{3}&=&8x_{1}&-&3r_{2} &-& 12 \\ && x_{1}&,&r_{2} &,& r_{1}&, &x_{2}&,&r_{3}&\geq& 0 \end{alignat} $$ - **基底/非基底変数**: $\mathbf{x}_{B} = (r_{1}, \color{red}{x_{2}}, r_{3}), \mathbf{x}_{N} = (x_{1}, \color{red}{r_{2}})$ - **基底解**: $(r_{1}, x_{2}, r_{3} | x_{1}, r_{2}) = (6, 2, 12|0,0)$ - 基底解での**目的関数値**: $-z = -4$ ## 2回目の解の改訂 新しく得られた問題の目的関数の **非基底変数** $x_{1}, r_{2}$の係数は$(-5, 2)$. ==係数が負である$x_{1}$== を0より大きくすることで,*現在の**基底解**より小さな目的関数値を実現できる*. $r_{2}=0$のまま**非基底変数** $x_{1}$を0から増やすと,**等式制約**から,**基底変数**の値は,以下のように変化する: $$ \begin{align} \begin{split} -r_{1} &= 3 x_{1}-6\\ -x_{2} &= -2 x_{1}-2\\ -r_{3} &= 8 x_{1}-12 \end{split} \Leftrightarrow \begin{split} r_{1} &= 6 - 3x_{1} & (x_{1} \leq 2)\\ x_{2} &= 2 + 2x_{1} & (\text{$x_{1}$に上限なし})\\ r_{3} &= 12-8x_{1} \quad&(x_{1} \leq \tfrac{3}{2}) \end{split} \end{align} $$ ただし,括弧内は,対応する基底変数が非負であるために$x_{1}$が満たすべき条件を表している. なお,$x_{2}=2+2x_{1}$は$x_{1} \geq 0$なら常に非負であるため,$x_{1}$の ==上限を必要としない== ことに注意されたい. これより,非負制約を担保するためには,$x_{1}$は$\tfrac{3}{2}$までしか増加させられない.$x_{1}=\tfrac{3}{2}$まで増加させた時, **基底変数**, **非基底変数**および**目的関数** は,以下のように変化する: ||変更前|変更後| |--|--|--| |基底変数$(r_{1}, x_{2}, \color{red}{r_{3}})$|$(6,2,12)$|$(\tfrac{3}{2}, 5,\color{red}{0})$| |非基底変数$(\color{red}{x_{1}}, r_{2})$|$(0,0)$|$(\color{red}{\tfrac{3}{2}}, 0)$| |目的関数 $-z$|$-4$|$-\tfrac{23}{2}$| 変化後の解は,**基底変数**$r_{3}$と**非基底変数**$x_{1}$を入れ替えて得られる以下の**等価**な問題の**基底解**に他ならない. $$ \begin{array}{c|cc|c} & x_{1} & r_{2} & -1\\ \hline -r_{1} & 3 & -1 & 6\\ -x_{2} & -2 & 1 & 2 \\ -r_{3} & 8* & -3 & 12\\ \hline -z & -5 & 2 & 4 \end{array} \rightarrow \begin{array}{c|cc|c} & r_{3} & r_{2} & -1\\ \hline -r_{1} & -\frac{3}{8} & \frac{1}{8} & \frac{3}{2} \\ -x_{2} & \frac{1}{4} & \frac{1}{4} & 5 \\ -x_{1} & \frac{1}{8} & -\frac{3}{8} & \frac{3}{2}\\ \hline -z & \frac{5}{8} & \frac{1}{8} & \frac{23}{2} \end{array} $$ $$ \begin{alignat}{6} \displaystyle \min_{r_{3}, r_{2}, r_{1}, x_{2}, x_{1}} \quad -z&=&\tfrac{5}{8}r_{3} &+& \tfrac{1}{8}r_{2} &-&\tfrac{23}{2}\\ \text{s.t.} \quad -r_{1}&=-&\tfrac{3}{8} r_{3} &+& \tfrac{1}{8}r_{2} &-& \tfrac{3}{2} \\ -x_{2}&= &\tfrac{1}{4}r_{3}&+& \tfrac{1}{4}r_{2} &-& 5 \\ -x_{1}&=&\tfrac{1}{8} r_{3}&-&\tfrac{3}{8} r_{2} &-& \tfrac{3}{2} \\ && r_{3}&,&r_{2} &,& r_{1}&, &x_{2}&,&x_{1}&\geq& 0 \end{alignat} $$ - **基底/非基底変数**: $\mathbf{x}_{B} = (r_{1}, x_{2}, \color{red}{x_{1}}), \mathbf{x}_{N} = (\color{red}{r_{3}}, r_{2})$ - **基底解**: $(r_{1}, x_{2}, x_{1} | r_{3}, r_{2}) = (\tfrac{3}{2}, 5, \tfrac{3}{2}|0,0)$ - 基底解での**目的関数値**: $-z = -\tfrac{23}{2}$ ## 収束判定 新しく得られた問題の目的関数の**非基底変数**$(r_{3}, r_{2})$の係数は$(\tfrac{5}{8}, \tfrac{1}{8})$ で ==いずれも**非負**である==.このため,これらの非基底変数を0より大きくしても, ==現在の**基底解**より小さな目的関数は実現できない==. → **最適解**が求められた!! # 単体法の手続き **単体法**の手続きは以下のように整理できる: 1. **初期許容基底解**を1つ選び, 対応する**辞書**を構成する. 2. ==$−\hat{c}_{k}$(目的関数の係数)が負となる== **辞書**の列(**非基底変数**)$k$の中から任意の1つを選び,$j$とする. 全ての列について$-\hat{c}_{k} \geq 0$ならば,いまの**基底解**が**最適解**. 3. $\hat{a}_{h,j}>0$となる**辞書**の行(**基底変数**)$h$の中から, ==$\hat{b}_{h}/\hat{a}_{h,j}$が最小となるもの== を 1 つ選び,$i$とする. 全ての行について$\hat{a}_{h,j} ≤ 0$ならば, その問題は**無界**である. 4. $\hat{a}_{i,j}$を**ピボット**として**辞書**を更新する. **初期許容基底解**の選び方: - もとの問題の等式標準形が$\mathbf{b}≥\mathbf{0}$となる場合,原点($\mathbf{x}=\mathbf{0}$) に対応する**基底解 **が**許容**であるため,これを**初期許容基底解**とできる. - $\mathbf{b}\not\geq\mathbf{0}$の場合,もとの問題の**補助問題**を**単体法**で解くことで**初期許容基底解**を見つける(**二段階単体法**). # 巡回問題と最小添字規則 ## 巡回 **単体法**が終了するときには, - **最適解**が求められる - **無界**であることが判明する のいずれかとなることが保証される.では**単体法**は必ず終了するのだろうか? **単体法**では**ピボット**の列(**非基底変数**)や行(**基底変数**)の選び方に自由度があり,適当に選ぶと終了しない場合がある.例えば,以下の**標準最大化問題**: $$ \begin{alignat}{6} \displaystyle \max_{x_{1}, x_{2}, x_{3}, x_{4}} \quad &&3x_{1} &-&5x_{2}&+&x_{3}&-&2x_{4}&=&z\\ \text{s.t.} \quad && x_{1}&-&2x_{2}&-&x_{3}&+&2x_{4}&\leq&0\\ &&2x_{1}&-&3x_{2}&-&x_{3}&+&x_{4}&\leq&0\\ && & & & & x_{3} & & &\leq&1\\ && x_{1}&,&x_{2}&,&x_{3}&,&x_{4} &\geq&0 \end{alignat} \qquad \begin{array}{c|cccc|c} & x_{1} & x_{2} & x_{3} & x_{4} & -1\\ \hline -r_{1} & 1 & -2 & -1 & 2 & 0\\ -r_{2} & 2 & -3 & -1 & 1 & 0\\ -r_{3} & 0 & 0 & 1 & 0 & 1\\ \hline -z & -3 & 5 & -1 & 2 & 0 \end{array} $$ に対して,以下のように注意深く**ピボット**を選ぶと,無限ループが生まれる. $$ \begin{array}{ccc} \begin{array}{c|cccc|c} & x_{1} & x_{2} & x_{3} & x_{4} & -1\\ \hline -r_{1} & 1* & -2 & -1 & 2 & 0\\ -r_{2} & 2 & -3 & -1 & 1 & 0\\ -r_{3} & 0 & 0 & 1 & 0 & 1\\ \hline -z & -3 & 5 & -1 & 2 & 0 \end{array} &\Rightarrow& \begin{array}{c|cccc|c} & r_{1} & x_{2} & x_{3} & x_{4} & -1\\ \hline -x_{1} & 1 & -2 & -1 & 2 & 0\\ -r_{2} & -2 & 1* & 1 & -3 & 0\\ -r_{3} & 0 & 0 & 1 & 0 & 1\\ \hline -z & 3 & -1 & -4 & 8 & 0 \end{array} \\ \Uparrow & & \Downarrow \\ \begin{array}{c|cccc|c} & x_{3} & r_{2} & x_{1} & x_{2} & -1\\ \hline -r_{1} & 1 & -2 & -3 & 4 & 0\\ -x_{4} & -1 & 1* & 2 & -3 & 0\\ -r_{3} & 1 & 0 & 0 & 0 & 1\\ \hline -z & 1 & -2 & -7 & 11 & 0 \end{array} && \begin{array}{c|cccc|c} & r_{1} & r_{2} & x_{3} & x_{4} & -1\\ \hline -x_{1} & -3 & 2 & 1* & -4 & 0\\ -x_{2} & -2 & 1 & 1 & -3 & 0\\ -r_{3} & 0 & 0 & 1 & 0 & 1\\ \hline -z & 1 & 1 & -3 & 5 & 0 \end{array} \\ \Uparrow & & \Downarrow \\ \begin{array}{c|cccc|c} & r_{1} & r_{2} & x_{1} & x_{2} & -1\\ \hline -x_{3} & 1* & -2 & -3 & 4 & 0\\ -x_{4} & 1 & -1 & -1 & 1 & 0\\ -r_{3} & -1 & 2 & 3 & -4 & 1\\ \hline -z & -1 & 0 & -4 & 7 & 0 \end{array} &\Leftarrow& \begin{array}{c|cccc|c} & r_{1} & r_{2} & x_{1} & x_{4} & -1\\ \hline -x_{3} & -3 & 2 & 1 & -4 & 0\\ -x_{2} & 1 & -1 & -1 & 1* & 0\\ -r_{3} & 3 & -2 & -1 & 4 & 1\\ \hline -z & -8 & 7 & 3 & -7 & 0 \end{array} \end{array} $$ こうした現象を**巡回**(cycling)と呼ぶ.**巡回**が起こるのは,全ての**ピボット演算**が**退化**(degenerate; **ピボット演算**の前後で**基底解**が変化しない)とき. 実際,上記の巡回でも一番右の列は全く変化していない. ## 最小添字規則 **巡回**が起きるのは, **非基底変数**(列)や**基底変数**(行)に複数の候補が存在し,選択に自由度があるとき. 従って**巡回 が**起きないように行・列の選び方を**限定**すれば, **単体法**の停止性を保証できる. その最も簡単かつエレガントな規則として, 以下の**最小添字規則**(smallest subscript rule)が知られている. まず,(スラックも含めた)未知変数について,添字の小さい順に $$x_1 \succ x_2 \succ \cdots \succ x_{N} \succ r_{1} \succ r_{2} \cdots r_{M}$$ と優先順位をつけておく.そして, - **非基底変数**(列)の候補(i.e.目的関数の係数$−\hat{c}_j$が負)が複数ある場合, その中で最も優先順位の高い (添字の小さい)ものを選ぶ - **基底変数**(行)の候補(i.e.非基底変数を増やした時に最初に0になる)が複数ある場合, その中で最も優先順位の高い(添字が 小さい)ものを選ぶ とする. # 練習問題 ## 課題1 以下の問題を**単体法**で解け. $$ \begin{alignat}{6} \displaystyle \max_{x_{1}, x_{2}, x_{3}} \quad &x_{1} &+&x_{2}&+&2x_{3}&=&z\\ \text{s.t.} \quad & &&x_{2}&+&2x_{3}&\leq&3\\ -&x_{1}&&&+&3x_{3}&\leq&2\\ &2x_{1}&+&x_{2}&+&x_{3}&\leq&1\\ & x_{1}&,&x_{2} &,& x_{3}&\geq& 0 \end{alignat} $$ ## 課題2 講義で紹介した**巡回**が起きる問題に対し, **最小添字規則**を適用して**単体法**が終了する(**巡回**から抜け出せる)ことを確認せよ.