シンプレックス・メソッドのサイクリング
定義
行列 、、そしてについて、線形計画問題が上のように方程式フォームで表示されるとし、に対してその辞書を次のように示そう。
あるに対してならば、この辞書は変性しているdegenerateと言い、これが原因でシンプレックス法が進まない現象をサイクリングcyclingと呼ぶ1。
説明
変性…?
Naverで検索すると、Degenerateは悪化する、堕落的な、変性した、退化した、退行したなどと翻訳される。当然ながら、STEM分野で最も有名な用例は、異なる二つの波動関数が同じ固有値を持つ時を指す量子力学での変性であり、線形代数でもあるベクトルが他のベクトルの線形結合で表される時に時々使われることもある。英語のまま受け入れると、の時にDegenerateと言うのは非常に論理的だ。問題は、韓国語に翻訳するときに変性という意味が全く合わないことだ。まったく別の表現を見つけることも可能だったかもしれないが、考えてみればシンプレックス法がうまくいかないという意味で変性も全然間違った言葉ではないように思えるので、そのまま変性として和らげた。
例
例えば、上述の線形計画問題を辞書で書き下すと次のようになる。
この時、に対してならば、変数を置き換えても目的値objective valueは変わらず、グルグル回ってしまう。つまり、番目の辞書をだとした時、次を満たす何らかのが存在することになる。
これは非常に単純な例で見ると、なぜこんなことが起きるのか不思議に思うかもしれないが、人の目で一度に読み取るのが難しいほど大きなだけでも、いつどんなサイクルが起きるかわからない。例えば、置換をしていてがぴったり合ってが発生するような形だ。プログラミング的にこれを検出すること自体はそこまで難しくないが、どのように抜け出すかが問題だ。
解決法: ブランドのルール
入る変数entering variableと出る変数leaving variableをそれぞれとからインデックスが最も小さいものを選ぶことで、サイクルに陥ることがない。この選択法をブランドのルールBrand’s ruleと呼ぶ。
逆に、シンプレックス法が終わらない時、辞書がサイクルに陥っていることを次の定理で保証できる。
定理
もしシンプレックス法が終わらないならば、辞書はサイクルに陥っている。
証明
線形計画問題で基底可能解になる全てのケースを貪欲アルゴリズムで、つまり想像できる最悪の方法で見つけると考える。の変数の中からの基底変数を見つけるケースの数は となり、かなり大きい数だが、とにかく有限である。これら全てのケースを計算すれば、最適化を必ず終えることができるにもかかわらず、シンプレックス法が止まらないということは、サイクルに陥っているという意味になる。
■
線形計画法の基本定理
この定理は線形計画法の基本定理の証明で使用される。
Vanderbei. (2020). Linear Programming(5th Edition): p27~28. ↩︎