線形計画問題

1

線形計画問題1「線形計画法」とはいったい何か？ まず，線形計画法が解決してくれる「線形計画問題」
を身近な例で紹介することから始めましょう [1]．

1.1

学生宿舎の朝食

例 1.1. TS 大学２年のＫ君は，学生宿舎の生活には慣れたものの，朝食を自分で作るのが億劫でならない．仕送りのわずかなＫ君にとって朝食代は，経済的にも馬鹿にならない．そこで手軽に牛乳とシリアルで済ませたいのだが，それで栄養失調にならないか不安でもある．保健管理センターに相談すると，朝食にはタンパク質，ビタミンＤ，カルシウムを少なくとも 9
グラム，1 / 3 RDA，1 / 4 RDA ずつ摂取する必要があることを教えられた（ 1 RDA は１日の必要摂取量）．調べてみると，牛乳とシリアルに含まれる「栄養」は次の表のようになっていることがわかった：

牛乳（ 1 / 2 カップ ）シリアル（ 1 / 4 袋）

50 円

65 円

タンパク質

3 グラム

2 グラム

ビタミンＤ

1 / 15 RDA

2 / 15 RDA

カルシウム

1 / 6 RDA

なし

値段

シリアルに牛乳を混ぜて「びしょびしょ」になるとおいしくない．かといって牛乳が少なす
ぎるのも困るので，牛乳 1 カップあたりシリアル 1 / 6 袋から 1 袋までの範囲の量を混ぜることにする．Ｋ君は，牛乳とシリアルをどのような割合で混ぜれば，健康を損なわずに朝食代を最も少なくすることができるだろうか？

Ｋ君の問題は，メニュー計画とかダイエット 問題の名前で 1960 年代前半までは結構盛んに研究されていました．牛乳とシリアルの貧しい食事だけでなく，豪華なコース料理でも，この種の問題は「線形計画問題」として定式化することができます．

線形計画問題2

朝食に食べる牛乳とシリアルの量を，それぞれ 1 / 2 カップ，1 / 4 袋を単位として x1 と x2で表すことにしましょう．健康を維持するには，表から x1 , x2 がタンパク質は 9 グラム以上：
ビタミンは 1 / 3 RDA 以上：
カルシウムは 1 / 4 RDA 以上：
牛乳 1 カップあたりシリアルは 1 / 6 袋以上：
牛乳 1 カップあたりシリアルは 1 袋以下：

3x1 + 2x2 ≥ 9
2
1
1
x1 + x2 ≥
15
15
3
1
1
x1 ≥
6
4
x2
1
≥
x1
3
x2
≤2
x1

(1.1)
(1.2)
(1.3)
(1.4)
(1.5)

の５つの不等式を満足しなければならないことがわかります．また，牛乳，シリアルとも負の量を食べることはできないので，

x1 ≥ 0(1.6)

x2 ≥ 0(1.7)

も満たされなければなりません．この (1.1)–(1.7) の線形不等式系を満足する変数の組 (x1 , x2 )が，保健管理センターの教えてくれた１日を「実行可能」にする（ つまり，生きていくのに必要な）朝食メニューということになります．
さて，Ｋ君の目的は朝食代を最も少なくすることです．牛乳 x1 とシリアル x2 の総費用は

z = 50x1 + 65x2ですから，問題は不等式 (1.1)–(1.7) の条件下
総費用 z = 50x1 + 65x2 を最小化する (x1 , x2 ) を求めよとまとめられます．
以上を整理すると，問題の定式化は

線形計画問題3

最小化 z =

50x1 +

65x2

条 件

3x1 +
1
x1 +
15
1
x1
6
x1 −

2x2 ≥
2
x2 ≥
15

3x2 ≤

9
1
3
1
4
0

2x1 −

x2 ≥

0

≥

0

x2 ≥

0

x1

≥

(1.8)

のように完成します．これが「線形計画問題」であり，これを解いて z の値を最小化する「実行可能」なメニュー (x1 , x2 ) さえ求まれば，Ｋ君の朝食問題は解決です．
実は，問題 (1.8) の解き方をＫ君は高校時代に数学の授業で習っており，朝飯前に解決することができました．不等式 (1.1)–(1.7) が満たされる領域を x1 –x2 平面上に描けば，図 1.1 の網掛けが実行可能なメニューの集合であることがわかります．この領域上で直線 50x1 + 65x2 = z
を平行に移動させ，z の値が最小の 197.5 となる点 (2.0, 1.5) こそＫ君の求める「最適な」朝食の量です．その日からＫ君の朝食は，197 円 50 銭の牛乳 1 カップ，シリアル 3 / 8 袋となりました．しかし，メニューに目玉焼きやサラダを加えたらど うなるでしょうか？ 料理の量を示す変数も４つに増え，もはや「実行可能メニュー」を図示できなくなります．
Ｋ君の問題はもちろん線形計画問題の１例に過ぎず，同様の数理計画問題— 複数の等式・不等式系によって与えられた条件の下で，目的とする関数の値を最小化（あるいは最大化）する —は工学はもとより，経営・経済などのあらゆる分野に現れます．実際，アメリカのデルタ航
空が，全米 166 都市を結ぶ航空路線に配備される約 400 機の航空機と，7,000 人の乗務員に関する１週間のスケジューリングを定式化したところ，変数の数が 1,700 万，条件を与える等式・不等式の数が 800 本の超大型の線形計画問題に帰着されたとの報告もあります [2]．しか線形計画問題

4x1(2.0, 1.5)
The cost increases.

x2

O
図 1.1: 実行可能メニューと最適な朝食し，その問題を解いたことによってデルタ航空は年間 1,000 万ドル以上（！）の経費削減に成功したといわれています．
それでは，一般に線形計画問題がどんな性質をもつか，ど うすれば多くの変数や条件式をもつ線形問題を解決できるか，それに答える「線形計画法」について，これから詳しく説明
していきましょう．

参考文献[1] C. Rorres and H. Anton (訳: 山下), やさしい線形代数の応用 , 現代数学社 (1980)．
[2] 今野 浩, カーマーカー特許とソフトウェア — 数学は特許になるか , 中公新書 (1995).

線形計画問題

1.2

5

問題の定義

一般の線形計画問題の定義を始めるまえに，線形代数で習った用語を少し復習しておきましょう．実数 c1 , c2 , . . . , cn に対し，次のように与えられる実変数 x1 , x2 , . . . , xn の関数：

f (x1 , x2 , . . . , xn ) = c1 x1 + c2 x2 + · · · + cn xn
を線形（あるいは１次）関数 (linear function) とよびます．また，f が線形関数で，b が与えられた実数のとき，次のような関係式：

f (x1 , x2 , . . . , xn ) = b
を線形等式 (linear equality)，f (x1 , x2 , . . . , xn ) ≥ b,f (x1 , x2 , . . . , xn ) ≤ b

を線形不等式 (linear inequality) といいます．
線形計画問題 (linear programming problem; abbr, LP) とは，有限個の線形等式や線形不等式を満たすベクトル (x1 , x2 , . . . , xn ) の中で，与えられた線形関数の値を最大にするものを求める問題で，一般に
最大化

(P)

c1 x1 +

c2 x2 + · · · +条 件 ai1 x1 + ai2 x2

cn xn+ · · · + ain xn = bi , i =1, . . . , k

ai1 x1 + ai2 x2 + · · · + ain xn ≤ bi , i =k + 1, . . . , ℓai1 x1 + ai2 x2 + · · · + ain xn ≥ bi , i = ℓ + 1, . . . , mのように定義されます．ここで，関数 c1 x1 + c2 x2 + · · · + cn xn を線形計画問題 (P) の目的関数 (objective function)，変数 (x1 , x2 , . . . , xn ) が満たすべき m 個の線形等式・線形不等式を
線形制約式，または線形制約条件 (linear constraint) とよびます．また，制約式すべてを満足する変数値のベクトルを実行可能解 (feasible solution) といい，その集合：





ai1 x1 + ai2 x2 + · · · + ain xn = bi , i =1, . . . , k 






n
D= x∈R
a
x
+
a
x
+
·
·
·
+
a
x
≤
b
,
i
=
k
+
1,
.
.
.
,
ℓ
i1 1
i2 2
in n
i









ai1 x1 + ai2 x2 + · · · + ain xn ≥ bi , i = ℓ + 1, . . . , m 線形計画問題6を実行可能領域 (feasible region) とよびます．
例えば，例 1.1 のＫ君の朝食問題はＬＰであり，すでに見たように
最大化

−

条 件

50x1 −

65x2

3x1 +
1
x1 +
15
1
x1
6
x1 −

2x2 ≥
2
x2 ≥
15

3x2 ≤

9
1
3
1
4
0

2x1 −

x2 ≥

0

≥

0

x2 ≥

0

≥

x1

(1.9)

と定式化でき（ 最大化問題となっている点に注意），図 1.1 の網掛けが実行可能領域で，(x1 , x2 ) = (1.5, 3.0), (1.5, 2.25), (2.0, 1.5), (5.0, 5.0)などはいずれも実行可能解です．
実行可能解 x = (x1 , x2 . . . , xn ) ∈ D の中で目的関数を最大（ 問題 (1.8) のような最小化問
題では最小）にするものを最適解 (optimal solution) とよびます．図 1.1 から明らかなように，
問題 (1.9) の実行可能解のうち(x1 , x2 ) = (2.0, 1.5)が (1.9) の最適解となります．
例 1.2. 以下のような問題もＬＰの例です：
最大化

2x1 +

条 件

2x1 + 2x2 −
2x1

x2 +

x3 ≤ 6+ 4x3 ≤ 4

− 4x1 + 3x2 −x1 ≥ 0,x3x2 ≥ 0,x3 ≤ 1x3 ≥ 0(1.10)

線形計画問題7

最小化 − 3x1+

条 件 − 4x1

+ 2x2 − 4x3 +x2 + 5x3 + 2x4
x4 = −11− 2x1 + 3x2 − 2x3 − 4x4 ≤ −10− 3x1 − 2x2+ 3x4 ≥x3 ≤ 0,(1.11)

1x4 ≥ 0

ＬＰの中には実行可能解を持たないものもあります．例えば，
最大化

x1 +

5x2

条 件

x1 +

x2 ≥ 6(1.12)− x1 − x2 ≥ −4の実行可能領域：

D = {(x1 , x2 ) | x1 + x2 ≥ 6,

−x1 − x2 ≥ −4}

は空集合となっています．このような問題を実行不可能な (infeasible) 問題といい，実行可能領域が空でない問題を実行可能な (feasible) 問題といいます．最適解も実行可能解であるので，実行不可能な問題に最適解は存在しません．
それでは実行可能な問題であれば，常に最適解が存在するのでしょうか？ 次のＬＰを見てみましょう：
最大化

2x1 −

x2

条 件 −

x1 +

x2 ≤

−

6

(1.13)

x1 − 3x2 ≤ −4

この問題では，任意の x2 の値に対して x1 の値を十分大きくとることによって実行可能解を得ることができます．そして目的関数値は x1 → +∞ となるにしたがって無限大に発散します．一般に，任意の実数 M に対して目的関数値 > M（ 最小化問題では < M ）となるように実行可能解がとれるとき，そのＬＰは非有界 (unbounded) であるといい，それ以外の問題は有界 (bounded) であるといいます．したがって，非有解な問題は実行可能でも，最適解は存在しません．

線形計画問題

8以上からＬＰが最適解をもてば，「 問題は実行可能で，かつ有界である」ことがわかります．
線形計画法における最も基本的な定理は，この逆も正しいことを主張します：
定理 1.1. [ＬＰの基本定理]
実行可能で有界な線形計画問題には最適解が存在する．
この定理は一見自明のようですが，ＬＰ以外の数理計画問題に対して同様の定理は必ずしも成り立ちません：
最大化 x1条 件 x1(1.14)< 5（ 注意： x1 = 5 は実行可能解ではない．
）
最小化 exp(x1 )条 件(1.15)

x1 ≤ 0

ＬＰの基本定理は，定理の条件を満たす任意のＬＰに対して実際に最適解を求めるアルゴ
リズム – シンプレックス法 – を与えることで証明されます．シンプレックス法については，
２章で基本的なアイデアを紹介し，３章以降で詳しい説明を行います．

1.3

線形計画法の歴史

この章を閉じる前に線形計画法の歴史を簡単に見てみましょう [3]．次のページの表を見ると，線形計画法に関連する研究に対して３度もノーベル賞が贈られている（ともに経済学賞）
ことが目を引きます．厳密には，Markowitz 他の研究は２次関数を最小化する２次計画法であり，Nash の研究も線形計画法の理論的な応用分野であるゲームの理論に属します．また，表の中の「多項式時間アルゴ リズム」(polynomial-time algorithm) とは，求解に必要な演算の回数が最悪の場合でも変数の数や制約式の本数の多項式で抑えられる計算手法のことです．
多項式関数は，指数関数に比べて変数の値の増加に対する関数値の変化のオーダが小さいことから，多項式時間アルゴ リズムが理論的には優れているとされています．しかし，この評
価基準はあくまで「最悪の場合でもあまり悪くない」ことを保証しているに過ぎ ません．第２章以降で紹介するシンプレックス法は，多項式時間アルゴ リズムではなく，最悪の場合に

線形計画問題9は指数時間の計算が必要となりますが，「平均的には」非常に効率のよい計算手法であることが知られています．

軍事

経済

線形計画

数学
不等式理論

オペレーションズ
・リサーチ

20 世紀はじめ

産業連関分析

Leontief (1936)

線形計画問題シンプレックス法(1947)
経済モデル

Koopmans (1948)
ノーベル賞 (1975)
Koopmans
Kantrovich(資源の最適配分)

Dantzig (1947)
双対理論
Von Neuman (1947)
多項式時間
アルゴ リズム
楕円体法

Khachian (1979)
内点法
Karmarkar (1984)

ノーベル賞 (1990)

Markowitz
SharpeMiller(金融・投資理論)
ノーベル賞 (1994)
Nash(ゲームの均衡解)

参考文献[3] V. Chvátal (訳: 坂田・飯野), 線形計画法 (上), 啓学出版 (1986).

Gordan (1873)
Fourier (1923)
Farkas (1923)
Motzkin (1923)
ゲームの理論Von Neuman &Morgenstern (1944)

線形計画問題

10

宿題
1.1 次のＬＰについて，(a) 実行可能である，(b) 非有解である，(c) 最適解をもつ，ためのs, t に関する必要十分条件を与えよ：
最大化

x1 +

x2

条 件 sx1 + tx2 ≤ 1

x1 , x2 ≥ 0
1.2 次の命題を証明，または逆証明せよ：

(P)

最大化

c1 x1 + c2 x2 + · · · +条 件 ai1 x1 +cn xn

ci2 + · · · + ain xn ≤ bi , i = 1, . . . , mが非有解であれば，ある k に対して

(Pk )

最大化

xk

条 件 ai1 x1 + ci2+ · · · + ain xn ≤ bi , i = 1, . . . , mは非有解である．

1.3 一般の線形計画問題において，もし x1 = (x11 , x12 , . . . , x1n ), x2 = (x21 , x22 , . . . , x2n ) がい
ずれも実行可能解であれば，その凸結合：

x3 = (1 − λ)x1 + λx2 ,ただし λ は 0 ≤ λ ≤ 1 なる実数も実行可能解となることを示せ．

1.4 輸送問題 (transportation problem)
ある製造会社には，東京，名古屋，大阪に配送センターがある．これらのセンターには製品が，それぞれ 40, 20, 40 単位ずつある．一方，仙台，横浜，浜松，京都，神戸にある小売店では，それぞれ 25, 10, 20, 30, 15 単位の量を要求している．各センターと小売店の間の輸送費（百円 / 単位）は次の表のように与えられているとき，費用を最小にする輸送計画を立てよ．

線形計画問題

11

仙台

横浜

浜松

京都

神戸

東京

40

10

35

50

65

名古屋

95

50

20

35

40

大阪

100

75

40

15

20

1.5 混合物生成問題 (product mix problem)
ある製鉄所では金属 M1, M2, M3 を下の左表の比率で混合して合金を製造している．これらの金属は４種類の原料 R1, R2, R3, R4 に含まれるが，その成分比率は右の表のようになっている．各原料から不純物を除去するための費用（原料価格も含む）が右表の最下行のように与えられるとき，1 kg の合金を最小の費用で清算するには，どのように原料を使えばよいか？

R1

R2

R3

R4

金属

混合比 (重量)

M1

20 %

30

15

10

M1

20 %

M2

15

30

65

5

M2

35 % 以下

M3

30

10

0

80

M3

45 % 以上

不純物

35

30

20

5

費用 (千円 /kg)

5

5

8

20

シンプレックス法の基本アイディア12

シンプレックス法の基本アイディア2

ここでは簡単な線形計画問題の例を取り上げ， LP を解くためのアルゴ リズム– シンプレッ
クス (単体) 法 (simplex method) の基本的なアイディアを説明しましょう．

2.1

基準型の問題シンプレックス法の仕組みを理解するため，これから解く LP を基準型とよばれる扱いやすい形のものに限定します．
基準型 (canonical form) の線形計画問題とは，次のような形で表現される LP をさします:最大化

c1 x1 +

c2 x2 + · · · +cn xn

条 件 ai1 x1 + ai2 x2 + · · · + ain xn ≤ bi , i = 1, . . . , m

x1 ≥ 0, x2 ≥ 0, . . . xn ≥ 0
この問題は，以下の点で一般の LP よりも制限されています：• 最大化問題である• すべての変数 x1 , x2 , . . . , xn に非負制約がある• 非負制約以外はすべて「 ≤ 」向きの不等式制約条件で，等式制約条件を含まない．

例えば，例 1.2 の問題 (1.10)：
最大化

2x1 +

条 件

2x1 + 2x2 −
2x1

x2 +

x3 ≤ 6+ 4x3 ≤ 4

− 4x1 + 3x2 −x1 ≥ 0,x3x2 ≥ 0,x3 ≤ 1x3 ≥ 0(2.1)

シンプレックス法の基本アイディア

13

は基準型の問題ですが，問題 (1.9) や (1.11) は基準型になっていません．しかし，一般の線形計画問題でも，

同値変形:

変数変換:

ai1 + · · · + ain xn = bi

xj に非負制約なし

符号の逆転: ai1 x1 + · · · + ain xn ≥ bi

=⇒

=⇒





ai1 x1 + · · · + ain xn ≤bi −ai1 x1 − · · · − ain xn ≤ −bi xj = x′ − x′′jjx′j ≥ 0, x′′j ≥ 0=⇒ −ai1 x1 − · · · − ain xn ≤ −bi

最小化 c1 x1 + · · · + cn xn =⇒ 最大化 − c1 x1 − · · · − cn xnなどを行えば，簡単に基準型の問題に帰着させることができます．したがって，理論上は基準型の問題だけを扱えば十分です．ただし，上のような変換を安易に行うと問題のサイズが不必要に大きくなり，計算上の非効率を招くこともあります．一般の問題の適切な変換についてはあとで説明することにします．

2.2

シンプレックス法による解法例

それではシンプレックス法で実際に基準型の LP，問題 (2.1) を解いてみましょう．

前処理

まず，制約式の左辺を移行して以下のように問題を書き換えます：
最大化

2x1 +

条 件 0 ≤ 6 − 2x1

x2 +

x3

− 2x2 +x3

0 ≤ 4 − 2x1− 4x3

0 ≤ 1 + 4x1 − 3x2 +x3x1 , x2 , x3 ≥ 0
さらに目的関数をz = 2x1 + x2 + x3

シンプレックス法の基本アイディア

14とおき，スラック変数とよばれる変数 x4 , x5 , x6 を導入して LP：
最大化 z
条 件 x4 = 6 − 2x1− 2x2 +

x5 = 4 − 2x1

x3

− 4x3

x6 = 1 + 4x1 − 3x2 +

x3

z

x3

= 0 + 2x1 +

x2 +

(2.2)

x1 , x2 , x3 , x4 , x5 , x6 ≥ 0を作ります．ここで，２つの問題 (2.1) と (2.2) は次の意味で同値であることに注意してください：• 問題 (2.1) の実行可能解 (x′1 , x′2 , x′3 ) を (2.2) の等式に代入して残りの変数 x4 , x5 , x6 , zの値 x′4 , x′5 , x′6 , z ′ を定めれば，(x′1 , x′2 , x′3 , x′4 , x′5 , x′6 , z ′ ) は問題 (2.2) の実行可能解となり，対応する目的関数値が一致する，逆に• 問題 (2.2) の実行可能解 (x′′1 , x′′2 , x′′3 , x′′4 , x′′5 , x′′6 , z ′′ ) に対し，変数 x4 , x5 , x6 の値 x′′4 ,x′′5 , x′′6 を無視することで問題 (2.1) の実行可能解 (x′′1 , x′′2 , x′′3 ) が得られ，対応する目的
関数値は一致する．
つまり，(2.1) を解くことと (2.2) を解くことは実質的に同じであるわけです．
さて，問題 (2.2) の等式制約を見てみましょう．等式の左辺の変数は各等式ごとにすべて異なり，それぞれ右辺の変数 x1 , x2 , x3 の線形関数として表されています．あとで一般的に定義しますが，左辺に現れる変数を基底変数，右辺に現れる変数を非基底変数とよびます．非基
底変数 x1 , x2 , x3 の値を任意に定めると，すべての等式を満足させるように残りの変数，つまり基底変数 x4 , x5 , x6 , z の値が一意に定まります．右辺の変数をすべてゼロに固定して得られる解：(x1 , x2 , x3 , x4 , x5 , x6 , z) = (0, 0, 0, 6, 4, 1, 0)(2.3)

を特に基底解とよびます．この例では，基底解における x1 , x2 , x3 , x4 , x5 , x6 の値がすべて非負なので，基底解 (2.3) は実行可能解でもあり，その目的関数値 z はゼロです．

シンプレックス法の基本アイディア

解の改善

15

実行可能基底解 (2.3) から出発し，目的関数の値が増加するように解の改善を試みます．基底変数 x1 , x2 , x3 をすべてゼロに固定して基底解 (2.3) を得ましたが，変数 x1 の値だけをゼロから t まで増加させてみましょう．すると，基底変数の値は等式：

x4 = 6 − 2tx5 = 4 − 2tx6 = 1 + 4tz

= 0 + 2tによって定まることになります．例えば，

t = 1 のとき: x4 = 4, x5 = 2,

x6 = 5,z = 2 −→ 実行可能

t = 2 のとき: x4 = 2, x5 = 0,x6 = 9,z = 4 −→ 実行可能

t = 3 のとき: x4 = 0, x5 = −2, x6 = 13, z = 6 −→ 実行不可能
このことから，変数 x1 の値 t を増加させるほど目的関数 z の値も増加することがわかります．
これは，z を含む等式で変数 x1 の係数 (= 2) が正であるためです．一方，基底変数の非負制約を保つためには，２番目の等式から x1 の値 t を 2 より大きくできないこともわかります．
したがって，(x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 0, 0, 2, 0, 9, 4)(2.4)

が x1 だけを増加させて得られる最もよい実行可能解となります．
新しい実行可能解 (2.4) では x1 > 0, x5 = 0 となっていて，最初の実行可能解 (2.3) と比較
すると変数 x1 と x5 の立場が入れ替わっています．そこで (2.2) の等式：

x5 = 4 − 2x1− 4x3

を変数 x1 について解き，残りの等式に代入します．その結果，新たな等式制約条件：

x4 = 2 +x5 − 2x2 + 5x3

x1 = 2 − 1/2x5− 2x3x6 = 9 −2x5 − 3x2 − 7x3

z

x5 +

= 4 −

x2 − 3x3(2.5)

シンプレックス法の基本アイディア

16が得られます．明らかに (2.5) は問題 (2.2) の等式条件と同値です．つまり，いま行った変形
で，基底変数の集合の要素が一つだけ異なる同値な LP を生成したことになります．そして実行可能解 (2.4) は新しい問題の基底解となることもわかります．シンプレックス法は，以上のように「問題の等式制約条件を同値変形しながら，対応する基底解を単調に改善していく」
方法です．
式 (2.5) にもう一度シンプレックス法を適用してみましょう．目的関数 z の等式から分かる
ように現在の非基底変数 x5 , x2 , x3 のうち，その増加によって z の値が増加するのは x2 だけです．そして基底変数の非負性を保つためには，変数 x2 の値を 2 / 2 = 1 より増やせません．
このとき，変数 x4 の値がゼロとなって新しい実行可能解は(x1 , x2 , x3 , x4 , x5 , x6 , z) = (2, 1, 0, 0, 0, 6, 5)(2.6)となります．また変数 x2 と x4 の立場が入れ替わり，新しい等式制約条件が次のように与えられます：

x2 = 1 + 1/2x5 − 1/2x4 +x1 = 2 − 1/2x5

−

5/2x3
2x3

(2.7)

x6 = 6 − 7/2x5 − 3/2x4 − 29/2x3z= 5 − 1/2x5 − 1/2x4 −

1/2x3

この時点で増加すべき非基底変数がなくなり，シンプレックス法は終了します．実際，最後に得られた実行可能解は最適解であることが保証されます (宿題 3.2)．
この数値例から，与えられた線形計画問題がある特別な形，つまり• 基準型である• 右辺の定数 bi がすべて非負であるとなっていれば，自明な実行可能解から出発して解を単調に改善していく方法のあることが推測できます．次の節では，この方法をアルゴ リズムとして一般的に記述します．

シンプレックス法の基本アイディア

17

x3
1

X

1/3

x2

(0, 0, 0)x1

2(2, 0, 0)(2, 1, 0)

図 2.1: 問題 (2.1) の実行可能領域 X とシンプレックス法の振るまい

2.3

シンプレックス法の幾何的な振るまい

先に進む前に，例 1.1 の朝食問題で行ったように問題 (2.1) の実行可能領域を x1 –x2 –x3 空間上に図示してみましょう．基準型 LP の実行可能領域は，一般に図 2.1 が示すような m + n
個の n 次元超平面 (n = 2 ならば直線， n = 3 ならば普通の平面) によって囲まれた凸多面体(polyhedron) となります．n 個の超平面の共通部分を凸多面体の端点 (vertex) とよびますが，LP の最適解はその中の１つで達成されます．この凸多面体上でシンプレックス法は，目的関数のより大きな，隣接する端点を次々と巡り，最大の目的関数値を与える端点を探索します．

宿題
2.1 例 1.2 の問題 (1.11) を基準型の LP に変換せよ．

シンプレックス法の基本アイディア

2.4

18

自明な実行可能解をもつ LP に対して基準型の線形計画問題：
最大化
条 件

c1 x1 +

c2 x2 + · · · +cn xn

a11 x1 + c12 x2 + · · · + a1n xn ≤ b1
..
..
..
.
.
.
am1 x1 + cm2 x2 + · · · + amn xn ≤ bm

(2.8)

x1 , x2 , , . . . , xn ≥ 0が与えられているものとしましょう．問題 (2.1) と同様に

bi ≥ 0,i = 1, . . . , m(2.9)

が成り立っているものとします．
問題 (2.1) を (2.2) に変換したように，問題 (2.8) を次のように書き換えます：最大化 z
条 件 xn+1
..
.

xn+m

= b1 − a11 x1 − a12 x2 − · · · − a1n xn
..
..
.
.
= bm − am1 x1 − am2 x2 − · · · − amn xn

z

= c0

+

c1 x1 + c2 x2+···+(2.10)

cm xn

x1 , x2 , . . . , xn ≥ 0.
この段階では c0 = 0 です．ここで導入された変数 xn+i (i = 1, . . . , m) はスラック変数 (slack

variable) とよばれています．問題 (2.8) と (2.10) の間には，目的関数の値を保存するような実行可能解の１対１対応があり，同値な問題と考えることができます．そこで，今後 (2.10)のような形の問題も基準型の問題とよぶことにします．
さて，変数の添字 1, . . . , n + m を

N (1) = 1,

N (2) = 2,

. . . , N (n) = n

B(1) = n + 1, B(2) = n + 2, . . . , B(m) = n + m

シンプレックス法の基本アイディア

19とおき，問題 (2.10) の等式制約を(E1 ) :
..
.

xB(1)
..
.

(Em ) :

xB(m) = bm − am1 xN (1) − am2 xN (2) − · · · − amn xN (n)(Em+1 ) : z

= b1
..
.

= c0

−

+

a11 xN (1) −c1 xN (1) +a12 xN (2) − · · · −c2 xN (2) + · · · +a1n xN (n)..
.

(2.11)

cm xN (n)と表すことにします．この等式系を線形計画問題 (2.8) の辞書 (dictionary) とよびます．左辺の m + 1 個の変数 xB(i) , z を基底変数 (basic variable) といい，右辺の n 個の変数 xN (j) を非基底変数 (nonbasic variable) といいます．ここで注目して欲しいのは，非基底変数の値を固定すると (2.11) を満足する解が一意に定まる点です．非基底変数をすべてゼロに固定して得られる解：xN (1) = xN (2) = . . . = xN (n) = 0
xB(1) = b1 , xB(2) = b2 , . . . , xB(m) = bm , z = c0を特に基底解 (basic solution) とよびます．この基底解が実行可能であるとき，辞書 (2.11) を実行可能な辞書 (feasible dictionary) といいます．いまの場合，(2.9) で問題 (2.8) の右辺 bi がすべて非負であることを仮定していますので，(2.8) から (2.11) への変換によって直ちに実行
可能な辞書の得られます．
前節までに示したように，シンプレックス法は辞書を同値な別の辞書 (等式系) に変換する
操作を繰り返します．その手続きを一般に定義しましょう．ゼロでない係数 ars (1 ≤ r ≤ m,

1 ≤ s ≤ n) に対し，以下の手続きにしたがって新しい等式系 (辞書) をえる操作を (r, s) を中心とするピボット 演算, または枢軸演算 (pivoting operation) とよびます：

procedure ピボット (r, s)
begin
等式 (Er ) を変数 xN (s) について解き，得られた等式を新たに (Er ) とおく;

for それぞれの i 6= r do
新しい等式 (Er ) を使って等式 (Ei ) の右辺から変数 xN (s) を消去し，得られた等式を新たに (Ei ) とする;

シンプレックス法の基本アイディア20

添字 B(r) と N (s) を入れ替える，つまりtmp := B(r); B(r) := N (s); N (s) := tmp
end;

この procedure ピボットを手続きに用いれば，問題 (2.8) のように

• 基準型である，• 右辺の定数 bi がすべて非負である
場合はもちろん，実行可能な辞書さえ得られていれば任意の LP に対し ，これを解くアルゴ
リズム，シンプレックス法を次のように記述できます：

algorithm シンプレックス
入力: 実行可能辞書 (2.11)，ただし

N (1) = 1, . . . , N (n) = n, B(1) = n + 1, . . . , B(m) = n + m.
begin
stop := false;
while stop = false do begin{ ステップ 1: 最適性判定 }if すべての j に対して cj ≤ 0 thenstop := true

{ 現在の基底解が最適解 }

else
begin

{ ステップ 2: 非有界性判定 }cs > 0 となる添字 s (1 ≤ s ≤ n) を１つ選ぶ;
if すべての i に対して ais ≤ 0 thenstop := trueelse

{ 入力した LP は非有界 }シンプレックス法の基本アイディア21{ ステップ 3: 基底解の更新 }begin

現在の基底解から，実行可能性を保ったまま非基底変数のうち xN (s) だけを可能なかぎり増加させる，つまり

br
= min
ars



bi
ais

ais > 0, i = 1, 2, . . . , mを満たす行番号 r を１つ選ぶ;

procedure ピボット (r, s) を呼んで (r, s) を中心とするピボット演算を行い，得られた辞書を新たに (2.11) とする

end
end
end
end;

さて algorithm シンプレックスの記述から，次のことは明らかです：
性質 2.1. 実行可能辞書をもつ線形計画問題に対し ，シンプレックス法が有限回で終了すれば，その LP は最適解をもつか，あるいは非有界である．
しかし，algorithm シンプレックスが有限回で終了する保証は，いまのところないうえ，任意の LP に対して実行可能辞書の得られる保証もありません．すでに示したように，任意の LP
は基準型に書き換えることができますが，そこから直ちに実行可能な辞書をえるためには仮定 (2.9) が必要です．次の章では，実際にシンプレックス法が有限回で終了しない場合のあることを簡単な例で示し ，ピボット元 (r, s) の選び方をある規則で限定することによって有限収束が保証されることを示します．また，実行可能な辞書の得られていない LP に対して，どのような方法で実行可能辞書を生成するかについても説明します．その方法では，実は前処理で与えられた LP に対する補助問題に algorithm シンプレックスを適用します．つまり，どんな LP も，シンプレックス法を高々２回用いれば解決できることを示します．

シンプレックス法の基本アイディア

22

宿題
2.2 次の LP (a), (b), (c) をシンプレックス法で解け：
最大化 3x1
条 件(a)+ 2x2 + 4x3x1 +x2 + 2x3 ≤ 42x1+ 3x3 ≤ 52x1 +x2 + 3x3 ≤ 7
x1 , x2 , x3 ≥ 0.

最大化 5x1

(b)

条 件

+

6x2 + 9x + 3 + 8x4

x1 + 2x + 2 + 3x + 3 +
x1 +

x2 +

x4 ≤ 52x3 + 3x4 ≤ 3
x1 , x2 , x3 , x4 ≥ 0.

(c)

最大化 2x1+

条 件 2x1+ 3x2 ≤ 3x2

x1 + 5x2 ≤ 1
2x1 +x2 ≤ 44x1 +x2 ≤ 5x1 , x2 ≥ 0.
2.3 宿題 2.1 で求めた基準型 LP をシンプレックス法で解け．
2.4 シンプレックス法の最適性判定に関する以下の問に答えよ：(a) 最適性判定の正当性を述べよ．
(b) 最適性判定の条件を強め，基底解が一意の最適解であるための十分条件を示せ．
2.5 シンプレックス法の非有界性判定の正当性を述べよ．