数学的最適化 において 、 改訂単体法は、 線形計画 法に対する ジョージ・ダンツィグ の 単体法 の変形である 。
改訂単体法は数学的には標準単体法と等価ですが、実装が異なります。基本変数の集合に調整された制約を明示的に表す表を保持する代わりに、制約を表す 行列 の 基底 の表現を保持します。行列指向アプローチは、疎行列演算を可能にすることで計算効率を向上させます。
残りの議論では、線形計画問題が次の標準形式に変換されていると仮定します。
minimize
c
T
x
subject to
A
x
=
b
,
x
≥
0
{\displaystyle {\begin{array}{rl}{\text{minimize}}&{\boldsymbol {c}}^{\mathrm {T} }{\boldsymbol {x}}\\{\text{subject to}}&{\boldsymbol {Ax}}={\boldsymbol {b}},{\boldsymbol {x}}\geq {\boldsymbol {0}}\end{array}}}
ここで、 A ∈ ℝ m × n である。一般性を損なうことなく、制約行列 A は行フルランクを持ち、問題は実行可能である、すなわち、 Ax = b となる x ≥ 0 が少なくとも1つ存在すると仮定する。A がランク不足の場合 、 制約が冗長であるか、問題が実行不可能であるかのいずれかである。どちらの状況も、事前解決ステップで処理できる。
アルゴリズムの説明
最適条件
線形計画法においては、 カルシュ・キューン・タッカー条件は最適性にとって 必要かつ十分条件 である 。標準形の線形計画法問題におけるKKT条件は、
A
x
=
b
,
A
T
λ
+
s
=
c
,
x
≥
0
,
s
≥
0
,
s
T
x
=
0
{\displaystyle {\begin{aligned}{\boldsymbol {Ax}}&={\boldsymbol {b}},\\{\boldsymbol {A}}^{\mathrm {T} }{\boldsymbol {\lambda }}+{\boldsymbol {s}}&={\boldsymbol {c}},\\{\boldsymbol {x}}&\geq {\boldsymbol {0}},\\{\boldsymbol {s}}&\geq {\boldsymbol {0}},\\{\boldsymbol {s}}^{\mathrm {T} }{\boldsymbol {x}}&=0\end{aligned}}}
ここで λ と sは それぞれ制約 Ax = b と x ≥ 0 に関連付けられたラグランジュ乗数 である 。 最後の条件は、すべての 1 < i < n に対して s i x i = 0と等価であり、 相補的スラックネス条件 と呼ばれる 。
線型計画法の基本定理 として知られる定理によれば 、実行可能多面体の頂点 x は、 A の 列から選ばれた基底 B と同一視できる。 [a] A は フルランクな ので、 Bは非特異である。一般性を失うことなく、 A = [ B N ] と仮定する 。すると、 x は次のように与えられる。
x
=
[
x
B
x
N
]
=
[
B
−
1
b
0
]
{\displaystyle {\boldsymbol {x}}={\begin{bmatrix}{\boldsymbol {x_{B}}}\\{\boldsymbol {x_{N}}}\end{bmatrix}}={\begin{bmatrix}{\boldsymbol {B}}^{-1}{\boldsymbol {b}}\\{\boldsymbol {0}}\end{bmatrix}}}
ここで x B ≥ 0 である。c と sを 以下 のように
分割する。
c
=
[
c
B
c
N
]
,
s
=
[
s
B
s
N
]
.
{\displaystyle {\begin{aligned}{\boldsymbol {c}}&={\begin{bmatrix}{\boldsymbol {c_{B}}}\\{\boldsymbol {c_{N}}}\end{bmatrix}},\\{\boldsymbol {s}}&={\begin{bmatrix}{\boldsymbol {s_{B}}}\\{\boldsymbol {s_{N}}}\end{bmatrix}}.\end{aligned}}}
相補的緩み条件を満たすために、 s B = 0 とする。従って、
B
T
λ
=
c
B
,
N
T
λ
+
s
N
=
c
N
,
{\displaystyle {\begin{aligned}{\boldsymbol {B}}^{\mathrm {T} }{\boldsymbol {\lambda }}&={\boldsymbol {c_{B}}},\\{\boldsymbol {N}}^{\mathrm {T} }{\boldsymbol {\lambda }}+{\boldsymbol {s_{N}}}&={\boldsymbol {c_{N}}},\end{aligned}}}
これは、
λ
=
(
B
T
)
−
1
c
B
,
s
N
=
c
N
−
N
T
λ
.
{\displaystyle {\begin{aligned}{\boldsymbol {\lambda }}&=({\boldsymbol {B}}^{\mathrm {T} })^{-1}{\boldsymbol {c_{B}}},\\{\boldsymbol {s_{N}}}&={\boldsymbol {c_{N}}}-{\boldsymbol {N}}^{\mathrm {T} }{\boldsymbol {\lambda }}.\end{aligned}}}
この時点でsN≥0 で あれ ば KKT条件は満たされ、 x は 最適となります。
ピボット操作
KKT条件に違反する場合、 Bの既存の列を犠牲にして N の列を 基底に導入する ピボット操作が実行される。 退化 がない場合、ピボット操作は常に c T x の厳密な減少をもたらす 。したがって、問題が有界である場合、修正単体法は、頂点の数が有限であるため、ピボット操作を繰り返した後に最適な頂点で終了する必要がある。
入力インデックス として、 s q < 0 となるような インデックス m < q ≤ n を選択する。Aの対応する列 A q が 基底に移動され、 x q は 0から増加することが許される。
∂
(
c
T
x
)
∂
x
q
=
s
q
,
{\displaystyle {\frac {\partial ({\boldsymbol {c}}^{\mathrm {T} }{\boldsymbol {x}})}{\partial x_{q}}}=s_{q},}
つまり
、 x q の単位増加ごとに c T x が − s q 減少する 。
B
x
B
+
A
q
x
q
=
b
,
{\displaystyle {\boldsymbol {Bx_{B}}}+{\boldsymbol {A}}_{q}x_{q}={\boldsymbol {b}},}
x B は 、 x B − Δ x B ≥ 0 を条件として Δ x B = B −1 A q x q だけ減少しなければなりません 。 d = B −1 A q とします。 d ≤ 0の場合、 x q がどれだけ 増加しても、 x B − Δ x B は非負のままです。 したがって、 c T x は 任意に減少することができ、問題は無制限です。 それ以外の場合は、インデックス p = argmin 1≤ i ≤ m { x i / d i | d i > 0} 終了インデックス として 選択します。 この選択により、実行可能性を維持しながら、 x p が ゼロに減少するまで、 x q がゼロから 効果的に増加します 、基底で
A p を A q に 置き換えることで終了します
数値例
線形計画法を考えてみましょう。
c
=
[
−
2
−
3
−
4
0
0
]
T
,
A
=
[
3
2
1
1
0
2
5
3
0
1
]
,
b
=
[
10
15
]
.
{\displaystyle {\begin{aligned}{\boldsymbol {c}}&={\begin{bmatrix}-2&-3&-4&0&0\end{bmatrix}}^{\mathrm {T} },\\{\boldsymbol {A}}&={\begin{bmatrix}3&2&1&1&0\\2&5&3&0&1\end{bmatrix}},\\{\boldsymbol {b}}&={\begin{bmatrix}10\\15\end{bmatrix}}.\end{aligned}}}
させて
B
=
[
A
4
A
5
]
,
N
=
[
A
1
A
2
A
3
]
{\displaystyle {\begin{aligned}{\boldsymbol {B}}&={\begin{bmatrix}{\boldsymbol {A}}_{4}&{\boldsymbol {A}}_{5}\end{bmatrix}},\\{\boldsymbol {N}}&={\begin{bmatrix}{\boldsymbol {A}}_{1}&{\boldsymbol {A}}_{2}&{\boldsymbol {A}}_{3}\end{bmatrix}}\end{aligned}}}
最初は、実行可能な頂点 x = [0 0 0 10 15] T に対応する。この瞬間、
λ
=
[
0
0
]
T
,
s
N
=
[
−
2
−
3
−
4
]
T
.
{\displaystyle {\begin{aligned}{\boldsymbol {\lambda }}&={\begin{bmatrix}0&0\end{bmatrix}}^{\mathrm {T} },\\{\boldsymbol {s_{N}}}&={\begin{bmatrix}-2&-3&-4\end{bmatrix}}^{\mathrm {T} }.\end{aligned}}}
入口インデックスとして q = 3 を選択します。すると d = [1 3] Tとなり、これは x 3 が単位増加する と x 4 と x 5 がそれぞれ1 と 3 減少することを意味します 。したがって、 x 3 は5 に増加し 、その時点で x 5 はゼロになり、 p = 5 が出口インデックスになります。
ピボット操作後、
B
=
[
A
3
A
4
]
,
N
=
[
A
1
A
2
A
5
]
.
{\displaystyle {\begin{aligned}{\boldsymbol {B}}&={\begin{bmatrix}{\boldsymbol {A}}_{3}&{\boldsymbol {A}}_{4}\end{bmatrix}},\\{\boldsymbol {N}}&={\begin{bmatrix}{\boldsymbol {A}}_{1}&{\boldsymbol {A}}_{2}&{\boldsymbol {A}}_{5}\end{bmatrix}}.\end{aligned}}}
それに応じて、
x
=
[
0
0
5
5
0
]
T
,
λ
=
[
0
−
4
/
3
]
T
,
s
N
=
[
2
/
3
11
/
3
4
/
3
]
T
.
{\displaystyle {\begin{aligned}{\boldsymbol {x}}&={\begin{bmatrix}0&0&5&5&0\end{bmatrix}}^{\mathrm {T} },\\{\boldsymbol {\lambda }}&={\begin{bmatrix}0&-4/3\end{bmatrix}}^{\mathrm {T} },\\{\boldsymbol {s_{N}}}&={\begin{bmatrix}2/3&11/3&4/3\end{bmatrix}}^{\mathrm {T} }.\end{aligned}}}
s N が正の場合、 x が最適であることを示します 。
実用的な問題
退化
修正単体法は単体法と数学的に等価であるため、ピボット操作によってc T x が減少しないという退化の問題を抱えている 。また、ピボット操作の連鎖によって基底が循環する。摂動法や辞書式戦略を用いることで、循環を防ぎ、基底の停止性を保証することができる。
基底表現
修正単体法には、
B を含む 2 種類の 線形システムがあります。
B
z
=
y
,
B
T
z
=
y
.
{\displaystyle {\begin{aligned}{\boldsymbol {Bz}}&={\boldsymbol {y}},\\{\boldsymbol {B}}^{\mathrm {T} }{\boldsymbol {z}}&={\boldsymbol {y}}.\end{aligned}}}
B をリファクタリングする代わりに 、通常は LU分解を 各ピボット操作後に直接更新します。この目的のために、Forrest−Tomlin法やBartels−Golub法などのいくつかの戦略が存在します。しかし、更新を表すデータ量と数値誤差は時間の経過とともに蓄積されるため、定期的なリファクタリングが必要になります。
注釈と参考文献
注記
^ 同じ定理は、実現可能な多面体には少なくとも1つの頂点があり、そのうち少なくとも1つの頂点は最適であるとも述べています。
参考文献
参考文献
Morgan, SS (1997). シンプレックス法アルゴリズムの比較 (修士論文). フロリダ大学 . 2011年8月7日時点のオリジナルよりアーカイブ。
Nocedal, J.; Wright, SJ (2006). Mikosch, TV; Resnick, SI; Robinson, SM (編). 数値最適化. Springer Series in Operations Research and Financial Engineering (第2版). ニューヨーク州ニューヨーク市: Springer . ISBN 978-0-387-30303-1 。