74
線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド 「リア充」で学ぶ線形計画問題 長江 剛志 1 February 15, 2013(ver0.5.3) 1 東北大学大学院 工学研究科 技術社会システム専攻 ([email protected])

「リア充」で学ぶ線形計画問題(ver0.5.3)

Embed Size (px)

Citation preview

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

「リア充」で学ぶ線形計画問題

長江剛志1

February 15, 2013(ver0.5.3)

1東北大学大学院工学研究科技術社会システム専攻 ([email protected])

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

Outline

1 線形計画問題

2 等式標準形

3 実行可能基底解

4 単体法

5 双対性

6 学習ガイド

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

1 線形計画問題

2 等式標準形

3 実行可能基底解

4 単体法

5 双対性

6 学習ガイド

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

「リア充」問題

Aくんには自由な時間が 1日あたり 8時間あり,彼女ができたばかり.自由な時間の使い途としてバイトとデートを考える.バイトすると 1時間あたり 700円の収入になる.デートすると 1時間あたり 350円の支出になる.Aくんの仕送りから家賃・食費などの生活費を除くとリア充資金として 1日あたり 700円を充当できる.Aくんはバイトしてもデートしても充実感が得られるが,できたばかりの彼女と過ごす時間の方が,バイトの時間よりも充実感を味わえる.そこで,1時間あたりの充実感の比率をバイト:デート = 1:5とする.リア充資金とバイト給料でデート代を賄いつつ,充実した生活を送るには 1日あたりバイトとデートを何時間づつすればよいだろう?

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

線形計画問題としての定式化 I

未知変数 (制御変数)の定義バイトにあてる時間を x1,デートにあてる時間を x2 で表す.時間制約バイトの時間とデートの時間の合計が 8時間を超えてはいけない:

x1 + x2 ≤ 8 (1)

予算制約「バイトの収入とリア充資金の合計」が「デートへの支出」以上でなければいけない:

700x1 + 700 ≥ 350x2

両辺を 350で割れば,

2x1 + 2 ≥ x2 (2)

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

線形計画問題としての定式化 II

目的関数バイト 1時間あたりの充実度 1に対して,デート 1時間あたりの充実度が 5だから,その合計を「リア充度」とする:

Z(x1, x2) B x1 + 5x2 (3)

線形計画問題として表現されたリア充問題maxx1,x2

x1 + 5x2

s.t. x1 + x2 ≤ 8

2x1 + 2 ≥ x2

x1, x2 ≥ 0

s.t. は subject to ... (. . .の制約の下で)の略.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

許容領域

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

(9,15)

x1 + x2 = 8

(0, 8)

(8, 0)

制約条件を満足する (許容される)バイト時間とデート時間の組 (x1, x2)は,4本の不等式:

x1 + x2 ≤ 8

2x1 + 2 ≥ x2

x1 ≥ 0

x2 ≥ 0

で囲まれた領域

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

許容領域

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

(9,15)

x1 + x2 = 8

(0, 8)

(8, 0)

2x1+

2=

x 2

(2, 6)

(−2, 0)

制約条件を満足する (許容される)バイト時間とデート時間の組 (x1, x2)は,4本の不等式:

x1 + x2 ≤ 8

2x1 + 2 ≥ x2

x1 ≥ 0

x2 ≥ 0

で囲まれた領域

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

許容領域

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

(9,15)

x1 + x2 = 8

(0, 8)

(8, 0)

2x1+

2=

x 2

(2, 6)

(−2, 0)

x 1=

0

(0, 2)

制約条件を満足する (許容される)バイト時間とデート時間の組 (x1, x2)は,4本の不等式:

x1 + x2 ≤ 8

2x1 + 2 ≥ x2

x1 ≥ 0

x2 ≥ 0

で囲まれた領域

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

許容領域

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

(9,15)

x1 + x2 = 8

(0, 8)

(8, 0)

2x1+

2=

x 2

(2, 6)

(−2, 0)

x 1=

0

(0, 2)

x2 = 0(0, 0)

制約条件を満足する (許容される)バイト時間とデート時間の組 (x1, x2)は,4本の不等式:

x1 + x2 ≤ 8

2x1 + 2 ≥ x2

x1 ≥ 0

x2 ≥ 0

で囲まれた領域

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

目的関数の等高線と最適解

目的関数 Z(x1, x2) B x1 + 5x2 の等高線は,[15

]を法線ベクトルと

する平行線.

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

[15

]

(2, 6)

Z(x1 , x2) = 0

Z(x1 , x2) = 10

Z(x1 , x2) = 20

Z(x1 , x2) = 25

Z(x1 , x2) = 30

Z(x1 , x2) = 32

許容領域の中で,原点から最も遠い (ie. 最も値の高い)等高線が通る点(2, 6)が最適解で,最適値は 32.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

脱線 (1): 彼女が実家暮らしの場合

彼女の門限が厳しく,一緒に居られるのは 4時間まで→以下の制約によって許容領域が狭められる:

x2 ≤ 4

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

[15

]

Z(x1 , x2) = 0

Z(x1 , x2) = 10

Z(x1 , x2) = 20Z(x1 , x2) = 24

x2 = 4(4, 4)

あたらしい制約によって最適解は (4, 4),最適値は24となる.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

脱線 (2): 彼女とケンカした場合

バイトに精を出す方が彼女と一緒に居るより充実感を得られる→目的関数が以下の式で表されるとする:

Z′(x1, x2) B x1 +12

x2

-1

1

2

3

4

5

6

7

8

9

93 4 5 6 7 8-1 1 2-2

[1

0.5

](8, 0)

Z ′(x1 , x

2 )=

8

Z ′(x1 , x

2 )=

7

Z ′(x1 , x

2 )=

4

目的関数の等高線は[

10.5

]を法線とする平行線.最適解は (8, 0),最適値は8.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

脱線 (3): 彼女と仲直りした場合

彼女と一緒にいても充実できるが,付き合い始めた頃ほど情熱的にもなれない→目的関数が以下の式で表されるとする:

Z′′(x1, x2) B x1 + x2

-1

1

2

3

4

5

6

7

8

9

93 4 5 6 7 8-1 1 2-2

[11

]

(2, 6)

(8, 0)

Z ′′(x1 , x2 ) = 8

Z ′′(x1 , x2 ) = 6

Z ′′(x1 , x2 ) = 4

目的関数の等高線は[11

]を法線とする平行線.(2, 6)と (8, 0)を結ぶ線分上の任意の点が最適解で,最適値は 8.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

最適解の特徴

最適解は許容領域の端点 (ごく稀に辺 )に限られる.

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

-1

1

2

3

4

5

6

7

8

9

93 4 5 6 7 8-1 1 2-2

-1

1

2

3

4

5

6

7

8

9

93 4 5 6 7 8-1 1 2-2

つまり,端点を順に探していけば必ず最適解が見つかる.許容領域の端点をシステマティックに表現・探索する方法は?

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

Outline

1 線形計画問題

2 等式標準形

3 実行可能基底解

4 単体法

5 双対性

6 学習ガイド

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

等式標準形

N個の未知変数 x1, x2, · · · , xN を用いて,M本の等式制約条件を満足しながら,目的関数を最小化する.

等式標準形の線形計画問題

minx1,x2,··· ,xN

c1x1 + c2x2 + · · · + cNxN

s.t. a11x1 + a12x2 + · · · + a1NxN = b1a21x1 + a22x2 + · · · + a2NxN = b2...

.... . .

......

aM1x1 + aM2x2 + · · · + aMNxN = bMx1, x2, · · · xN ≥ 0

任意の線形計画問題を同一の形式で記述できる許容領域の端点をシステマティックに表現できる

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

等式標準形への変換方法 I

最大化問題は,目的関数の全ての係数に −1を乗じる:

maxx1,x2

x1 + 5x2 → minx1,x2−x1 − 5x2

不等式制約は,まず,(x1, x2, · · ·についての線形式) ≤ (定数)の形に整理する:

2x1 + 2 ≥ x2 → −2x1 + x2 ≤ 2

非負の人工的な変数 (スラック変数)を導入することで,不等式制約を等式に書き換える:

x1 +x2 ≤ 8−2x1 +x2 ≤ 2

x2 ≤ 4x1, x2 ≥ 0

x1 +x2 +x3 = 8−2x1 +x2 +x4 = 2

x2 +x5 = 4x1, x2, x3, x4, x5 ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

等式標準形への変換方法 II

【補足】非負制約のない変数は,2つの人工的な非負変数を導入し,その差として表現する.

minx1,x2− x1 + 2x2,

s.t. x1 + x2 = 1,

x1 ≥ 0,

x2は正でも負でも 0でもよい

minx1,x+2 ,x

−2

− x1 + 2(x+2 − x−2 ),

s.t. x1 + (x+2 − x−2 ) = 1,

x1 ≥ 0,

x+2 , x−2 ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題 (彼女が実家暮らしの場合)の等式標準形としての表現

minx1,x2,x3,x4,x5

−x1 −5x2 +0 · x3 +0 · x4 +0 · x5

s.t. x1 +x2 +x3 = 8−2x1 +x2 +x4 = 2

+x2 +x5 = 4x1, x2, x3, x4, x5 ≥ 0

行列とベクトルを使えば,もっとスッキリ記述できる.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

目的関数をベクトルで表現

2つの N次元列ベクトル:

x =[x1 x2 · · · xN

]⊤, c =

[c1 c2 · · · cN

]⊤を用いて目的関数を書き直す (⊤ は行列の転置を表す記号).

minx1,x2,··· ,xN

c1x1 + c2x2 + · · · + cNxN

a11x1 + a12x2 + · · · + a1NxN = b1a21x1 + a22x2 + · · · + a2NxN = b2...

.... . .

......

aM1x1 + aM2x2 + · · · + aMNxN = bMx1, x2, · · · xN ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

目的関数をベクトルで表現

2つの N次元列ベクトル:

x =[x1 x2 · · · xN

]⊤, c =

[c1 c2 · · · cN

]⊤を用いて目的関数を書き直す (⊤ は行列の転置を表す記号).

minx

c⊤x

a11x1 + a12x2 + · · · + a1NxN = b1a21x1 + a22x2 + · · · + a2NxN = b2...

.... . .

......

aM1x1 + aM2x2 + · · · + aMNxN = bMx1, x2, · · · xN ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

制約条件を行列とベクトルで表現

minx

c⊤x

s.t. a11x1 + a12x2 + · · · + a1NxN = b1a21x1 + a22x2 + · · · + a2NxN = b2...

.... . .

......

aM1x1 + aM2x2 + · · · + aMNxN = bMx1, x2, · · · xN ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

制約条件を行列とベクトルで表現

minx

c⊤x

s.t.

a11 a12 · · · a1Na21 a22 · · · a2N...

.... . .

...

aM1 aM2 · · · aMN

x1x2...

xN

=

b1b2...

bM

x ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

制約条件を行列とベクトルで表現

minx

c⊤x

s.t. Ax = bx ≥ 0

A =

a11 a12 · · · a1Na21 a22 · · · a2N...

.... . .

...

aM1 aM2 · · · aMN

, b =

b1b2...

bM

より簡潔に

minx

{c⊤x|Ax = b,x ≥ 0

}と記述することもある.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

等式標準形リア充問題のベクトル・行列表現

等式標準形リア充問題min

x1,x2,x3,x4,x5−x1 −5x2 +0 · x3 +0 · x4 +0 · x5

s.t. x1 +x2 +x3 = 8−2x1 +x2 +x4 = 2

x2 +x5 = 4x1, x2, x3, x4, x5 ≥ 0

ベクトル・行列表現

minx

{c⊤x|Ax = b,x ≥ 0

}x B

[x1 x2 x3 x4 x5

]⊤, c B

[−1 −5 0 0 0

]⊤,

A B

1 1 1 0 0−2 1 0 1 00 1 0 0 1

, b B

824

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

Outline

1 線形計画問題

2 等式標準形

3 実行可能基底解

4 単体法

5 双対性

6 学習ガイド

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

x1 +x2 +x3 = 8−2x1 +x2 +x4 = 2

x2 +x5 = 4

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

xN = (x4, x5)t

基底変数/非基底変数:(xB|xN) = (x1, x2, x3|x4, x5)

x1 +x2 +x3 = 8−2x1 +x2 +x4 = 2

x2 +x5 = 4 1 1 1−2 1 00 1 0

︸ ︷︷ ︸AB

x1x2x3

+0 01 00 1

︸ ︷︷ ︸AN

[x4x5

]=

824

xN = (x4, x5) = 0としてABxB = bを解けば,

(x1, x2, x3) = (1, 4, 3)

xが全て非負→実行可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

xN = (x1, x2)t

基底変数/非基底変数:(xB|xN) = (x3, x4, x5|x1, x2)

x3 +x1 +x2 = 8x4 −2x1 +x2 = 2

x5 +x2 = 41 0 00 1 00 0 1

︸ ︷︷ ︸AB

x3x4x5

+ 1 1−2 10 1

︸ ︷︷ ︸AN

[x1x2

]=

824

xN = (x1, x2) = 0としてABxB = bを解けば,

(x3, x4, x5) = (8, 2, 4)

xが全て非負→実行可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

xN = (x1, x4)t

基底変数/非基底変数:(xB|xN) = (x2, x3, x5|x1, x4)

x2 +x3 +x1 = 8x2 −2x1 +x4 = 2x2 +x5 = 41 1 0

1 0 01 0 1

︸ ︷︷ ︸AB

x2x3x5

+ 1 0−2 10 0

︸ ︷︷ ︸AN

[x1x4

]=

824

xN = (x1, x4) = 0としてABxB = bを解けば,

(x2, x3, x5) = (2, 6, 2)

xが全て非負→実行可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

xN = (x2, x4)

t

基底変数/非基底変数:(xB|xN) = (x1, x3, x5|x2, x4)

x1 +x3 +x2 = 8−2x1 +x2 +x4 = 2

x5 +x2 = 4 1 1 0−2 0 00 0 1

︸ ︷︷ ︸AB

x1x3x5

+1 01 11 0

︸ ︷︷ ︸AN

[x2x4

]=

824

xN = (x2, x4) = 0としてABxB = bを解けば,

xB = (x1, x3, x5) = (−1, 9, 4)

x1 が負→実行不可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

ZZ

ZZ

ZZ

ZZ

ZZ

ZZ

ZZxN = (x1, x3)t

基底変数/非基底変数:(xB|xN) = (x2, x4, x5|x1, x3)

x2 +x1 +x3 = 8x2 +x4 −2x1 = 2x2 +x5 = 41 0 0

1 1 01 0 1

︸ ︷︷ ︸AB

x2x4x5

+ 1 1−2 00 0

︸ ︷︷ ︸AN

[x1x3

]=

824

xN = (x1, x3) = 0としてABxB = bを解けば,

(x2, x4, x5) = (8,−6,−4)

x4, x5 が負→実行不可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

ZZ

ZZ

ZZ

ZZ

ZZ

ZZ

ZZ

xN = (x3, x4)t 基底変数/非基底変数:(xB|xN) = (x1, x2, x5|x3, x4)

x1 +x2 +x3 = 8−2x1 +x2 +x4 = 2

x2 +x5 = 4 1 1 0−2 1 00 1 1

︸ ︷︷ ︸AB

x1x2x5

+1 00 10 0

︸ ︷︷ ︸AN

[x3x4

]=

824

xN = (x3, x4) = 0としてABxB = bを解けば,

(x1, x2, x5) = (2, 6,−2)

x5 が負→実行不可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

ZZ

ZZ

ZZ

ZZ

ZZ

ZZ

ZZ

xN = (x3, x5)t基底変数/非基底変数:(xB|xN) = (x1, x2, x4|x3, x5)

x1 +x2 +x3 = 8−2x1 +x2 +x4 = 2

x2 +x5 = 4 1 1 0−2 1 10 1 0

︸ ︷︷ ︸AB

x1x2x4

+1 00 00 1

︸ ︷︷ ︸AN

[x3x5

]=

824

xN = (x3, x5) = 0としてABxB = bを解けば,

(x1, x2, x4) = (4, 4, 6)

xが全て非負→実行可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

ZZ

ZZ

ZZ

ZZ

ZZ

ZZ

ZZ

xN = (x2, x3)

t

基底変数/非基底変数:(xB|xN) = (x1, x4, x5|x2, x3)

x1 +x2 +x3 = 8−2x1 +x4 +x2 = 2

x5 +x2 = 4 1 0 0−2 1 00 0 1

︸ ︷︷ ︸AB

x1x4x5

+1 11 01 0

︸ ︷︷ ︸AN

[x2x3

]=

824

xN = (x2, x3) = 0としてABxB = bを解けば,

(x1, x2, x5) = (8, 18, 4)

xが全て非負→実行可能

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の例

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9x 1=

0

x2 = 0

x3 = 0

x 4=

0x5 = 0

xN = (x2, x4)

t xN = (x1, x2)txN = (x1, x4)t xN = (x4, x5)

t

xN = (x1, x3)txN = (x3, x4)t

xN = (x3, x5)t

xN = (x2, x3)

t変数を基底変数 xB,非基底変数 xN

に分解すれば,等式制約Ax = bを満たす解は

x =

[xB

xN

]=

[A−1

B (b −ANxN)xN

]と xN のみを用いて表せる.

特に,xN = 0とした解:

x =

[xB

xN

]=

[A−1

B b0

]は基底解と呼ばれ,許容領域を構成する直線の「交点」に対応する.基底解の中で,x ≥ 0を満足するものは実行可能基底解と呼ばれ,許容領域の「端点」に対応する.端点は表現できた.次は,

ある端点が最適解か否かを判定する方法最適解でなかったときに,次の端点を探索する方法

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

Outline

1 線形計画問題

2 等式標準形

3 実行可能基底解

4 単体法

5 双対性

6 学習ガイド

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の実行可能基底解と最適性

たとえば,非基底変数をxN = (x1, x2)とする.目的関数および等式制約は

Z(x) = −x1 −5x2s.t. x3 +x1 +x2 = 8

x4 −2x1 +x2 = 2x5 +x2 = 4

非基底変数 xN のみで表せば

Z = −x1 − 5x2,x3x4x5

= 824

− 1 1−2 10 1

[x1x2

].

基底解 (xB|xN) = (8, 2, 4|0, 0)は実行可能で,端点 (0, 0)に相当.

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

t基底解における目的関数は Z = 0.

目的関数の xN に関する係数は(−1,−5)でどちらも負なので,x1や x2 を増やせば目的関数は減少

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

基底変数の入れ替えと次の実行可能基底解x1 = 0のまま x2 を増やす.

xB =

x3x4x5

= 824

− 111

x2

xB ≥ 0であるためには,x3 = 8 − x2 ≥ 0 ⇒ x2 ≤ 8,x4 = 2 − x2 ≥ 0 ⇒ x2 ≤ 2,x5 = 4 − x2 ≥ 0 ⇒ x2 ≤ 4

このうち,目的関数を最も小さくするのは,

x2 = min {8, 2, 4} = 2

と選んだときで,このとき(x3, x4, x5) = (6, 0, 2)となる.

ここで,ゼロとなった基底変数 x4非負となった非基底変数 x2

を入れ替えれば,新しい実行可能基底解

(xB|xN) = (x2, x3, x5|x1, x4)

= (2, 6, 2|0, 0)

が得られる.この入れ替えをピボット操作と呼ぶ.この基底解における目的関数は

Z = −x1 − 5x2 = −10

で,入れ替え前の目的関数Z = 0よりも小さい.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

ピボット操作:より目的関数の小さい隣合う端点へ

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x2)t

xB xN Zx3 x4 x5 x1 x2

8 2 4 0 0 0x2 = 0x4 = 2

→x2 = 2

x4 = 0

xB xN Zx2 x3 x5 x1 x4

2 6 2 0 0 -101組の基底変数と非基底変数の入れ替えは,「ある端点」から「より目的関数の小さい隣の端点」への移動に相当.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

ピボット操作:より目的関数の小さい隣合う端点へ

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x4)t6d

xB xN Zx3 x4 x5 x1 x2

8 2 4 0 0 0x2 = 0x4 = 2

→x2 = 2

x4 = 0

xB xN Zx2 x3 x5 x1 x4

2 6 2 0 0 -101組の基底変数と非基底変数の入れ替えは,「ある端点」から「より目的関数の小さい隣の端点」への移動に相当.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

2回目の挑戦 (最適性のチェック)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x4)t非基底変数 xN = (x1, x4)

目的関数および等式制約:

Z(x) = −5x2 −x1s.t. x2 +x3 x1 = 8

x2 −2x1 +x4 = 2x2 +x5 = 4

基底変数を非基底変数 xN のみで表せば1 1 01 0 01 0 1

x2x3x5

= 824

− 1 0−2 10 0

[x1x4

]AB =

[1 1 01 0 01 0 1

]の逆行列を用いて

x2x3x5

= 1 1 01 0 01 0 1

−1 824

− 1 0−2 10 0

[x1x4

]=

262

− −2 13 −12 −1

[x1x4

]

x2 = 2 + 2x1 − x4 を目的関数に代入すれば,

Z = −x1 − x2 = −x1 − 2 − 2x1 + x4

= −3x1 + x4 − 2.

非基底変数 xN = (x1, x4)に関する係数は (−3, 1)なので,x1 を増やせば目的関数は減少.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

2回目の挑戦 (最適性のチェック)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x4)t非基底変数 xN = (x1, x4)

目的関数および等式制約:

Z(x) = −5x2 −x1s.t. x2 +x3 x1 = 8

x2 −2x1 +x4 = 2x2 +x5 = 4

基底変数を非基底変数 xN のみで表せばx2

x3x5

= 262

− −2 13 −12 −1

[x1x4

]x2 = 2 + 2x1 − x4 を目的関数に代入すれば,

Z = −x1 − x2 = −x1 − 2 − 2x1 + x4

= −3x1 + x4 − 2.

非基底変数 xN = (x1, x4)に関する係数は (−3, 1)なので,x1 を増やせば目的関数は減少.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

2回目の挑戦 (基底変数の入れ替え)x4 = 0のまま x1 を増やす.

xB =

x2x3x5

= 262

− −232

x1

xB ≥ 0であるためには,x2 = 2 + 2x1 ≥ 0 ⇒ x1 ≥ 0なら OKx3 = 6 − 3x1 ≥ 0 ⇒ x1 ≤ 2x5 = 2 − 2x1 ≥ 0 ⇒ x1 ≤ 1

このうち,目的関数を最も小さくするのは,

x1 = min {2, 1} = 1

と選んだときで,このとき(x2, x3, x5) = (4, 3, 0)となる.

ここで,ゼロとなった基底変数 x5非負となった非基底変数 x1

を入れ替えることで,新しい実行可能基底解

(xB|xN) = (x1, x2, x3|x4, x5)

= (1, 4, 3|0, 0)

が得られる.この基底解における目的関数は

Z = −x1 − 5x2 = −21

で,入れ替え前の目的関数Z = −10よりも小さい.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

2回目の挑戦 (端点から端点へ)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x2)

xN = (x1, x4)t6d

xB xN Zx3 x4 x5 x1 x2

8 2 4 0 0 0

基底変数 x4 ↔非基底変数 x2

xB xN Zx2 x3 x5 x1 x4

2 6 2 0 0 -10

基底変数 x5 ↔非基底変数 x1

xB xN Zx1 x2 x3 x4 x5

1 4 3 0 0 -21

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

2回目の挑戦 (端点から端点へ)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x2)

xN = (x1, x4)xN = (x4, x5)t

6d�d

xB xN Zx3 x4 x5 x1 x2

8 2 4 0 0 0

基底変数 x4 ↔非基底変数 x2

xB xN Zx2 x3 x5 x1 x4

2 6 2 0 0 -10

基底変数 x5 ↔非基底変数 x1

xB xN Zx1 x2 x3 x4 x5

1 4 3 0 0 -21

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

3回目の挑戦 (最適性のチェック)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0xN = (x4, x5)t

非基底変数 xN = (x4, x5)

目的関数および等式制約:

Z(x) = −x1 −5x2s.t. x1 +x2 +x3 = 8

−2x1 +x2 +x4 = 2x2 +x5 = 4

基底変数を非基底変数 xN のみで表せば 1 1 1−2 1 00 1 0

x1x2x3

= 824

−0 01 00 1

[x4x5

]AB =

[1 1 1−2 1 00 1 0

]の逆行列を用

いてx1x2x3

= 1 1 1−2 1 00 1 0

−1 824

− 0 01 00 1

[x4x5

]=

143

− −0.5 0.50 1

0.5 −1.5

[x4x5

]

[ x1x2

]=[

1+0.5x4−0.5x54−x5

]を目的関数

に代入すれば,

Z = −1 − 0.5x4 + 0.5x5 − 20 + 5x5

= −21 − 0.5x4 + 5.5x5.

非基底変数 xN = (x4, x5)に関する係数は (−0.5, 5.5)なので,x4 を増やせば目的関数は減少.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

3回目の挑戦 (最適性のチェック)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0xN = (x4, x5)t

非基底変数 xN = (x4, x5)

目的関数および等式制約:

Z(x) = −x1 −5x2s.t. x1 +x2 +x3 = 8

−2x1 +x2 +x4 = 2x2 +x5 = 4

基底変数を非基底変数 xN のみで表せばx1

x2x3

= 143

− −0.5 0.50 1

0.5 −1.5

[x4x5

][ x1

x2

]=[

1+0.5x4−0.5x54−x5

]を目的関数

に代入すれば,

Z = −1 − 0.5x4 + 0.5x5 − 20 + 5x5

= −21 − 0.5x4 + 5.5x5.

非基底変数 xN = (x4, x5)に関する係数は (−0.5, 5.5)なので,x4 を増やせば目的関数は減少.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

3回目の挑戦 (基底変数の入れ替え)x5 = 0のまま x4 を増やす.

xB =

x1x2x3

= 143

− −0.50

0.5

x4

xB ≥ 0であるためには,x1 = 1 + 0.5x4 ≥ 0 ⇒ x1 ≥ 0なら OKx2 = 4 ≥ 0 ⇒ x1 とは無関係x3 = 3 − 0.5x4 ≥ 0 ⇒ x4 ≤ 6

従って,目的関数を最も小さくするのは,

x4 = 6

と選んだときで,このとき(x1, x2, x3) = (4, 4, 0)となる.

ここで,ゼロとなった基底変数 x3非負となった非基底変数 x4

入れ替えれば,新しい実行可能基底解

(xB|xN) = (x1, x2, x4|x3, x5)

= (4, 4, 6|0, 0)

が得られる.この基底解における目的関数は

Z = −x1 − 5x2 = −24

で,入れ替え前の目的関数Z = −24よりも小さい.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

3回目の挑戦 (端点から端点へ)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x2)

xN = (x1, x4)xN = (x4, x5)t

6d�d

xB xN Zx3 x4 x5 x1 x2

8 2 4 0 0 0

基底変数 x4 ↔非基底変数 x2

xB xN Zx2 x3 x5 x1 x4

2 6 2 0 0 -10

基底変数 x5 ↔非基底変数 x1

xB xN Zx1 x2 x3 x4 x5

1 4 3 0 0 -21

基底変数 x3 ↔非基底変数 x4

xB xN Zx1 x2 x4 x3 x5

4 4 6 0 0 -24

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

3回目の挑戦 (端点から端点へ)

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0

xN = (x1, x2)

xN = (x1, x4)xN = (x4, x5)

6d�d

xN = (x3, x5)t-d

xB xN Zx3 x4 x5 x1 x2

8 2 4 0 0 0

基底変数 x4 ↔非基底変数 x2

xB xN Zx2 x3 x5 x1 x4

2 6 2 0 0 -10

基底変数 x5 ↔非基底変数 x1

xB xN Zx1 x2 x3 x4 x5

1 4 3 0 0 -21

基底変数 x3 ↔非基底変数 x4

xB xN Zx1 x2 x4 x3 x5

4 4 6 0 0 -24

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

最適解

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0xN = (x3, x5)t

非基底変数 xN = (x3, x5)

目的関数および等式制約:

Z(x) = −x1 −5x2s.t. x1 +x2 +x3 = 8

−2x1 +x2 +x4 = 2x2 +x5 = 4

基底変数を非基底変数 xN のみで表せば 1 1 0−2 1 10 1 0

x1x2x3

= 824

−1 00 00 1

[x4x5

]AB =

[1 1 0−2 1 10 1 0

]の逆行列を用

いてx1x2x4

= 1 1 0−2 1 10 1 0

−1 824

− 1 00 00 1

[x3x5

]=

446

− −1 10 −1−2 3

[x3x5

]

[ x1x2

]=[

4−x3+x54−x5

]を目的関数に

代入すれば,

Z = −4 + x3 − x5 − 20 + 5x5

= −24 + x3 + 4x5

非基底変数 xN = (x3, x5)に関する係数は (1, 4) ≥ 0なのでx3 = x5 = 0のとき目的関数は最小.最適解が見つかった!

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

最適解

-2 -1 1 2 3 4 5 6 7 8 9

-1

1

2

3

4

5

6

7

8

9

x 1=

0

x2 = 0

x3 = 0

x 4=

0

x5 = 0xN = (x3, x5)t

非基底変数 xN = (x3, x5)

目的関数および等式制約:

Z(x) = −x1 −5x2s.t. x1 +x2 +x3 = 8

−2x1 +x2 +x4 = 2x2 +x5 = 4

基底変数を非基底変数 xN のみで表せばx1

x2x4

= 446

− −1 10 −1−2 3

[x3x5

][ x1

x2

]=[

4−x3+x54−x5

]を目的関数に

代入すれば,

Z = −4 + x3 − x5 − 20 + 5x5

= −24 + x3 + 4x5

非基底変数 xN = (x3, x5)に関する係数は (1, 4) ≥ 0なのでx3 = x5 = 0のとき目的関数は最小.最適解が見つかった!

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

単体法の手続き

1)初期化 ある実行可能基底解 (端点) x = (xB|xN)からスタート2)最適性の確認 基底変数 xB = A−1

B (b −ANxN)を目的関数に代入:

Z = c⊤BxB + c⊤NxN =

(c⊤N − c⊤BA−1

B AN

)xN + c

⊤BA−1B b

目的関数の係数 c⊤N − c⊤BA−1B AN が正→ xは最適解.

3)解の改訂 係数が負となる非基底変数が存在する場合,そのうちの 1つを選び,その値 xN

k をxB = A−1

B b −A−1B aN

k xNk ≥ 0を満たす最大の値とする

(ただし,aNk は xN

k に対応するAN の列):

xNk = min

k

{akbk

∣∣∣∣ bk ≥ 0},

{ak : A−1

B bの k番目要素bk : A−1

B aNkの k番目要素

このとき,少なくとも 1つの基底変数が x j = 0となるので,これを非基底変数 xk と入れ替える (より目的関数の小さい隣の端点への移動).2)へ戻る.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

ここで触れなかった単体法の基本的話題

単体表 単体法に現れる A−1B aN

k や A−1B bの計算で逆行列

A−1B を計算するのではなく,連立方程式の解法

(Gaussの掃き出し法)を用いる方法Brandの最小添字規則 ピボット操作 (基底変数と非基底変数の入

れ替え)において,候補となる非基底変数/基底変数が複数ある場合,添字が最小のものを選ぶことで巡回問題を回避する.

二段階法 常に自明な初期実行可能解が与えられる訳ではない→もとの問題を緩和した問題を単体法で解いて初期実行可能解を求めた後,それを用いた単体法によってもとの問題を解く.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

Outline

1 線形計画問題

2 等式標準形

3 実行可能基底解

4 単体法

5 双対性

6 学習ガイド

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

どこまでリア充になれるのか?上限を推定 I

リア充問題 (彼女が実家暮らしの場合)

maxx1,x2

x1 +5x2

s.t. x1 +x2 ≤ 8 · · · (1)−2x1 +x2 ≤ 2 · · · (2)

x2 ≤ 4 · · · (3)x1, x2 ≥ 0

制約条件から目的関数 (リア充度)の上限を見積ってみる(1) × 4 + (2) × 1

4x1 +4x2 ≤ 32+) −2x1 x2 ≤ 2

2x1 +5x2 ≤ 34

2x1 + 5x2 = (x1 + 5x2) + x1 と書き換えれば,x1 ≥ 0よりx1 + 5x2 ≤ 34. 目的関数の上限の 1つとして 34が得られる.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

どこまでリア充になれるのか?上限を推定 II

(1) × 3 + (2) × 1 + (3) × 1

3x1 +3x2 ≤ 24−2x1 +x2 ≤ 2

+) x2 ≤ 4x1 +5x2 ≤ 30

先程の 34より小さい (精度の高い)目的関数の上限として 30が得られる.(1) × 1 + (3) × 4

x1 +x2 ≤ 8+) 4x2 ≤ 16

x1 +5x2 ≤ 24

さらに小さい目的関数の上限として 24が得られる.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

よりシステマティックにリア充度の上限を推定 I

(1) × y1 + (2) × y2 + (3) × y3

y1x1 +y1x2 ≤ 8y1−2y2x1 +y2x2 ≤ 2y2

+) y3x2 ≤ 4y3(y1 − 2y2)x1 +(y1 + y2 + y3)x2 ≤ 8y1 + 2y2 + 4y3

不等式の左辺が目的関数 x1 + 5x2 より大きくなるように:

y1 − 2y2 ≥ 1

y1 + y2 + y3 ≥ 5

不等号の向きを変えない:

y1, y2, y3 ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

よりシステマティックにリア充度の上限を推定 II

リア充度上限 (不等式右辺)が最小となる y1, y2, y3 を探す:

miny1,y2,y3

8y1 + 2y2 + 4y3

リア充度の上限の最小値を求める問題

miny1,y2,y3

8y1 +2y2 +4y3

s.t. y1 −2y2 ≤ 1y1 +y2 +y3 ≤ 5

y1, y2 , y3 ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充度の上限推定問題と「もとの問題」との関係

最小のリア充度の上限を求める問題と,もとの問題を比べてみる

もとの問題maxx1,x2

x1 +5x2

s.t. x1 +x2 ≤ 8−2x1 +x2 ≤ 2

x2 ≤ 4x1, x2 ≥ 0

上限推定問題

miny1,y2,y3

8y1 +2y2 +4y3

s.t. y1 −2y2 ≥ 1y1 +y2 +y3 ≥ 5

y1, y2 , y3 ≥ 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

係数だけだとさらに判りやすい

もとの問題

(x1) (x2)max 1 5s.t. 1 1

≤8

−2 1 20 1 4≥

0 0

ベクトルと行列で表示

maxx

c⊤x

s.t. Ax ≤ b

x ≥ 0

⇐⇒

miny

b⊤y

s.t. A⊤y ≥ c

y ≥ 0

上限推定問題

(y1) (y2) (y3)min 8 2 4s.t. 1 −2 0 ≥ 1

1 1 1 5≥

0 0 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

主問題と双対問題 I

任意の (等式標準形の)線形計画問題に対して,その双対問題(そうついもんだい)を構築できるN次元列ベクトル c, M次元列ベクトル b, M ×N行列Aに対して,

【主問題 (P)】minx

c⊤x

s.t. Ax = b,

x ≥ 0

⇐⇒

【双対問題 (D)】maxy

b⊤y

s.t. A⊤y ≤ c

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の主問題と双対問題 (等式標準形の場合) I

リア充問題を等式標準形に直す(x1) (x2)

max 1 5s.t. 1 1

≤8

−2 1 20 1 4≥

0 0

(x1) (x2) (x3) (x4) (x5)min −1 −5 0 0 0s.t. 1 1 1 0 0

=8

−2 1 0 1 0 20 1 0 0 1 4≥0 0 0 0 0

等式制約の両辺に −1を乗じておく (本質的ではないが,後でラクなので)

(x1) (x2) (x3) (x4) (x5)min −1 −5 0 0 0s.t. −1 −1 −1 0 0

=−8

2 −1 0 −1 0 −20 −1 0 0 −1 −4≥

0 0 0 0 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

リア充問題の主問題と双対問題 (等式標準形の場合) II

等式標準形の双対問題を求める

【主問題】(x1) (x2) (x3) (x4) (x5)

min −1 −5 0 0 0s.t. −1 −1 −1 0 0

=−8

2 −1 0 −1 0 −20 −1 0 0 −1 −4≥

0 0 0 0 0

【双対問題】(y1) (y2) (y3)

max −8 −2 −4s.t. −1 2 0

−1−1 −1 −1 −5−1 0 0 0

0 −1 0 00 0 −1 0

整理する

(y1) (y2) (y3)min 8 2 4s.t. 1 −2 0 ≥ 1

1 1 1 5≥

0 0 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

双対問題の特徴 (双対性)

弱双対定理x,y が,それぞれ,主問題 (P)および双対問題 (D)の実行可能解→対応する (P)の目的関数値は (D)の目的関数値と同じかそれ以上:

c⊤x ≥ b⊤y, ∀x ∈ {Ax = b|x ≥ 0},y ∈ {A⊤y ≤ c}

双対定理(P)が最適解 x∗ を持つ→ (D)も最適解 y∗ を持ち,その最適値は等しい:

c⊤x∗ = b⊤y∗

相補性定理x,y が,それぞれ,(P)および (D)の実行可能解→

x,y が (P)および (D)の最適解⇔ x⊤(A⊤y − c

)= 0

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

弱双対定理とその証明

弱双対定理 (再掲)x,y が,それぞれ,主問題 (P)および双対問題 (D)の実行可能解→対応する (P)の目的関数値は (D)の目的関数値と同じかそれ以上:

c⊤x ≥ b⊤y, ∀x ∈ {Ax = b|x ≥ 0},y ∈ {A⊤y ≤ c}弱双対定理の証明x,y が,それぞれ,主問題 (P)および双対問題 (D)の実行可能解だから,

Ax = b,x ≥ 0, A⊤y ≤ c

を満足する.これより,

(P)の目的関数 =

c⊤x ≥(A⊤y

)⊤x = y⊤(Ax) = y⊤b

= (D)の目的関数

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

弱双対定理の系

弱双対定理より,以下の系が直ちに導かれる.系 (1)主問題が有界でない (i.e. 制約条件Ax = b,x ≥ 0を満足しながら目的関数 c⊤xを無限に小さくできる)ならば,双対問題は不能である (i.e. Ay ≤ cを満足する y が存在しない).系 (2) (目的関数値が一致する→最適解):(P)および (D)の実行可能解 x,y が

c⊤x = b⊤y

を満足するならば,これらは,それぞれ,(P)および (D)の最適解である.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

双対定理とその証明 I

双対定理 (再掲)(P)が最適解 x∗ を持つ→ (D)も最適解 y∗ を持ち,その最適値は等しい:

c⊤x∗ = b⊤y∗

双対定理の証明主問題 (P)の最適解を x∗ とし,それに対応する基底行列および基底変数ベクトルを,それぞれ,A∗B および x∗B とする.このとき,最適性条件 (単体法を思い出そう)より,

A∗Bx∗B = b,x∗B ≥ 0, (4)

cN − (A∗N)⊤(A∗B)−1

cB ≥ 0 (5)

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

双対定理とその証明 II

が成り立つ.ここで,y∗ B(A∗B)−1

cB とすれば,これは双対問題 (D)の最適解である.このことは以下のように証明できる:

y∗ は (D)の実行可能解A∗By

∗ = cB かつ cN ≥ (A∗N)⊤y∗ だから,

A⊤y∗ =[A∗B A∗N

]⊤y∗ =

[(A∗B)⊤y∗

(A∗N)⊤y∗

]≤[cB

cN

]= c

y∗ は (D)の最適解y∗ における (D)の目的関数値は,

b⊤y∗ = b⊤(A∗B)−1 cB =

(A∗B−1b)⊤

cB = (x∗B)⊤cB

であり,これは x∗ における (P)の目的関数に等しい.従って,弱双対定理の系 (2)より,y∗ は (D)の最適解である.同時に,(P)と (D)の最適解 x∗,y∗ において,目的関数値は一致する.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

双対問題って何の役に立つの?

工学的側面弱双対定理や相補性定理から,得られた解が最適か否かを簡単に確認できる.単体法よりも高速なアルゴリズム (eg. 主双対内点法)の開発に利用できる.双対問題の方が解き易い問題になることがある.(cや bの微小変化に対する)感度解析や再最適化に利用できる.

科学的側面同じ問題を様々な角度から考える多面的な視点を養える.より一般的な双対性 (凸解析理論が備える理論体系)の基礎になる.(経済学)市場における財の需要・供給量 (主変数)と価格 (双対変数)の関係をシステマティックに記述できる.

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

Outline

1 線形計画問題

2 等式標準形

3 実行可能基底解

4 単体法

5 双対性

6 学習ガイド

線形計画問題 等式標準形 実行可能基底解 単体法 双対性 学習ガイド

参考文献

1. 矢部博: 工学基礎最適化とその応用,数理工学社, 2006.

2. 福島雅夫: 数理計画入門,朝倉書店, 1996.

3. 刀根薫: 数理計画,朝倉書店, 2007.

4. 田村明久,村松正和:最適化法,共立出版, 2002.