4. 線形計画問題の例
• ある飲料メーカーでは野菜ジュースを製造しており,n種類の野菜を混合
してm種類の栄養素を充足している.どの野菜をどれだけ購入するのが
最も経済的だろうか?
aij : 野菜jに含まれる栄養素の量
i 変数xjを野菜 j の購入量とすると
bi : 栄養素iの必要量 n
c j : 野菜jの1kg当たりの値段千円]
[ min ∑c x j j
j =1
n
s.t. ∑a x ij j ≥ bi (i = 1 2,…, m ),
,
j =1
xj ≥ 0 ( j = 1 2,…, n ).
,
5. 線形計画問題の不等式標準形
• 任意の形の線形計画問題を扱うのは面倒 ⇒ 不等式標準形
• 目的関数は「最大化」,制約式は「左辺≦右辺」,各変数は「非負」
n
max c1x1 + c 2 x 2 + + c n x n
max ∑c x j j
s.t. a11 x1 + a12 x 2 + a1n x n ≤ b1, j =1
n
a21 x1 + a22 x 2 + a2n x n ≤ b2 ,
s.t. ∑a x ij j ≤ bi (i = 1 2,…, m ),
,
j =1
am1x1 + am 2 x 2 + amn x n ≤ bm , xj ≥ 0 ( j = 1,2,…, n ).
x1, x 2 ,…, x n ≥ 0.
max cT x
{
max cT x Ax ≤ b, x ≥ 0 } s.t. Ax ≤ b, x ≥ 0.
色々な表記が出てきますが全て同じ問題です.慣れて下さい.
6. 標準形への変換
• 全ての線形計画問題は不等式標準形に変換できる.
制約式を分割
n n n
∑a x
j =1
ij j = bj ⇔ ∑a x
j =1
ij j ≥ b j , ∑ aij x j ≤ b j
j =1
目的関数を-1倍
n n
max ∑ c j x j ⇔ min − ∑ c j x j
j =1 j =1
制約式の両辺を-1
n n
∑a x
j =1
ij j ≥ bj ⇔ − ∑ aij x j ≤ −b j
j =1
非負制約なしの変数を2つの非負制約あり変数で置き換え
x j (非負制約なし) ⇔ x j → (w j 1 − w j 2 ), w j 1 ≥ 0, w j 2 ≥ 0
7. 不等式標準形への変形の例
max − 3 x1 − 4 x 2 + 2 x3
min 3 x1 + 4 x 2 − 2 x 3 max − (3 x1 + 4 x 2 − 2 x3 )
s.t. 2 x1 ≤ 4,
s.t. 2 x1 = 4, s.t. 2 x1 = 4,
2 x1 ≥ 4,
x1 − 2 x 3 ≤ 8, x1 − 2 x3 ≤ 8,
x1 − 2 x3 ≤ 8,
3 x 2 + x 3 ≥ 6, 3 x 2 + x3 ≥ 6,
3 x 2 + x3 ≥ 6,
x1, x 2 ≥ 0. x1, x 2 ≥ 0.
x1, x2 ≥ 0.
max − 3 x1 − 4 x 2 + 2 x3 max − 3 x1 − 4 x 2 + 2(w 31 − w 32 ) max − 3 x1 − 4 x 2 + 2w 31 − 2w 32
s.t. 2 x1 ≤ 4, s.t. 2 x1 ≤ 4, s.t. 2 x1 ≤ 4,
− 2 x1 ≤ −4, − 2 x1 ≤ −4, − 2 x1 ≤ −4,
x1 − 2 x3 ≤ 8, x1 − 2(w 31 − w 32 ) ≤ 8, x1 − 2w 31 + w 32 ≤ 8,
− (3 x 2 + x3 ) ≤ −6, − 3 x 2 − (w 31 − w 32 ) ≤ −6, − 3 x 2 − w 31 + w 32 ≤ −6,
x1, x2 ≥ 0. x1, x 2 ,w 31,w 32 ≥ 0. x1, x 2 ,w 31,w 32 ≥ 0.
8. 線形計画問題の等式標準形
• 目的関数は「最大化」,制約式は「左辺=右辺」,各変数は「非負」
max c1x1 + c 2 x 2 + + c n x n n
s.t. a11 x1 + a12 x 2 + a1n x n = b1, max ∑c x j j
j =1
a21 x1 + a22 x 2 + a2n x n = b2 , n
s.t. ∑a x ij j = bi (i = 1,2,…, m ),
j =1
am1x1 + am 2 x 2 + amn x n = bm ,
xj ≥ 0 ( j = 1,2,…, n ).
x1, x 2 ,…, x n ≥ 0.
max cT x
{
max cT x Ax ≤ b, x ≥ 0 } s.t. Ax ≤ b, x ≥ 0.
• 全ての線形計画問題は等式標準形に変換できる.
不等式に新たな変数を加えて等式にする
n n
∑a x
j =1
ij j ≤ bj ⇔ ∑a x
j =1
ij j + xn + i = b j , xn + i ≥ 0
n n
∑a x
j =1
ij j ≥ bj ⇔ ∑a x
j =1
ij j − xn + i = b j , xn + i ≥ 0
9. 線形計画問題のバリエーション
• 最小値最大化問題
ある資源を n 人に配分するとき,各人の配分量を(x1,x2,…,xn)とする.
このとき,配分量 xi の最小値をなるべく大きくするのはある意味で公平と言
える.
max min{x1, x2 ,…, xn }
s.t. Ax ≤ b
min
この問題に
{x1, x2,…, xn } ≥ zとなる変数 z を新たに導入する.
max z
s.t. x1 ≥ z, x 2 ≥ z,…, x n ≥ z,
Ax ≤ b
10. 線形計画問題のバリエーション(続き)
• 絶対値の入った目的関数
例えば目標値djからの絶対誤差を最小化する目的関数を考える
n
min ∑c x j j −dj
j =1
n
s.t. ∑a x ij j = bi (i = 1,2,…, m ).
j =1
t j = c j x j − d j となる変数 tj を新たに導入する.
n
制約式に絶対値が入って
min ∑t j いる場合も適用できるが,
j =1
そもそも線形計画問題に
s.t. − tj ≤ cjxj − dj ≤ tj ( j = 1,2,…, n ), 変換できない例もあるの
で注意!
n
∑a x
j =1
ij j = bi (i = 1,2,…, m ).
11. 線形計画問題のバリエーション(続き)
• 分数計画問題
以下の形の分数計画問題は実は線形計画問題として解ける.
d T x + d0 > 0
任意の実行可能解 x について と仮定する.
cT x + c 0
min
d T x + d0
s.t.Ax ≥ b.
1
ここで新たな変数
t = T , y = tx を導入すると,
d x + d0
min cT y + c0t
s.t. Ay − bt ≥ 0.
d T y + d 0 t = 1.
12. 実行不可能・非有界な線形計画問題
• 実行不可能:実行可能解が存在しない
• 非有界:実行可能解を持つが目的関数値をいくらでも良くできてしまう
実行不可能な線形計画問題の例
非有界な線形計画問題の例
max 3 x1 + 4 x 2 + x3 max 3 x1 + 3 x 2
s.t. − x1 + x 2 + x3 = −5, s.t. x1 + 2 x 2 ≥ 2,
2 x1 + x 2 − x3 = 7, 2 x1 + x 2 ≥ 2,
x1, x 2 , x3 ≥ 0. x1, x 2 ≥ 0.
x2
2 × ( − x1 + x 2 + x3 = −5 )
+ 1 × ( 2 x1 + x 2 − x3 = 7 ) 最大化
3 x 2 + x3 = −3
x1
x2 , x3 ≥ 0なので解なし
目的関数値を無限大にできる
13. 線形計画問題を解く
• 変数の数を n 個,制約式の数を m 本とする.
• 実行可能領域は (m+n)個の平面に囲まれている ⇒ 超凸多面体
• n 本の平面が交差する頂点のどれかに最適解がある!
x2
max x1 + 2 x2 ⑤ 最適解
③
s.t. x1 + x2 ≤ 6, → ①
①
x1 + 3 x2 ≤ 12, → ② 最大化
2 x1 + x2 ≤ 10, → ③
x1 ≥ 0, → ④ ②
x 2 ≥ 0. → ⑤
④ x1
⎛ m + n ⎞ ( m + n )!
調べる点の数は
⎜
⎜ ⎜ = 個ありうる!
⎝ n ⎠ m! n!
総当り法では線形計画問題を効率良く解けない
24. 線形計画問題の最適値の上界を求める(続き)
• 線形計画問題の最適値の上界を求める一般的な手続きは?
• 制約式の1次結合から上界を与える関数を求める
• 最適値に近い方が良い推定 ⇒ 上界を与える関数を最小にする
max 20 x1 + 10 x 2
min 6 y 1 + 12 y 2 + 10 y 3
s.t. x1 + x 2 ≤ 6,
y 1 × ( x1 + x 2 ≤ 6) s.t. y 1 + 3 y 2 + y 3 ≥ 20,
3 x1 + x 2 ≤ 12,
y 2 × (3 x1 + x 2 ≤ 12) y 1 + y 2 + 2y 3 ≥ 10,
x1 + 2 x 2 ≤ 10,
y 3 × ( x1 + 2 x 2 ≤ 10 ) y 1, y 2 , y 3 ≥ 0.
x1, x 2 ≥ 0.
不等号の向きが逆転すると よく見慣れた問題に?
まずいので,y1,y2,y3≧0
( y1 + 3y 2 + y 3 )x1 + ( y1 + y 2 + 2y 2 )x2 ≤ 6y1 + 12y 2 + 10 y 3
≧
≧
最小化
20 10
25. 線形計画問題の双対問題
• 双対問題:最適化問題の最小の上界(最大の下界)を求める問題
• 線形計画問題では,問題D(双対問題)の双対問題は問題P(主問題)と
なる ⇒ 確かめてみよう!
n 不等号の向きが逆転すると
P : max 主問題
∑c x
j =1
j j
まずいので yi≧0
n
s.t. ∑a x ij j ≤ bi (i = 1 2,…, m ),
, m ⎛ n ⎞ m
j =1 ∑ y i ⎜ ∑ aij x j ⎟ ≤ ∑ y i bi
⎜ ⎟
xj ≥ 0 ( j = 1,2,…, n ). i =1 ⎝ j =1 ⎠ i =1
m
D : min ∑b y 双対問題
n
i i ⎛ m ⎞ m
i =1
m
∑ x j ⎜ ∑ aij y i ⎟ ≤ ∑ y i bi
j =1
⎜
⎝ i =1
⎟
⎠ i =1
s.t. ∑a y ij i ≥ cj ( j = 1,2,…, n ),
≧
i =1
y i ≥ 0. (i = 1 2,…, m ).
, cj 最小化
26. 線形計画問題の双対問題(続き)
• 線形計画問題の変数に非負制約がない場合は?
• 線形計画問題が等式標準形の場合は?
n
不等号の向きが逆転する
P : max ∑c x j j 主問題
とまずいので yi≧0
j =1
n
m n n
⎛ ⎞ s.t. ∑a x ≤ bi (i = 1,2,…, m ).
∑ y ⎜ ∑ a x
⎜ i ij j ⎟ = ∑ c j x j
⎟ j =1
ij j
m ⎛ n ⎞ m
i =1 ⎝ j =1 ⎠ j =1
∑ y i ⎜ ∑ aij x j ⎟ ≤ ∑ y i bi
⎜ ⎟
≦
i =1 ⎝ j =1 ⎠ i =1
最大化
bi
n
⎛ m ⎞ m
D : min
m
∑b y i i 双対問題
∑ x j ⎜ ∑ aij y i ⎟ ≤ ∑ y i bi
j =1
⎜
⎝ i =1
⎟
⎠ i =1
i =1
=
n
⎛ m ⎞ n m
∑ x j ⎜ ∑ aij y i ⎟ = ∑ x j c j
⎜ ⎟ s.t. ∑a y = cj ( j = 1 2,…, n ),
,
j =1 ⎝ i =1 ⎠ j =1 i =1
yi ≥ 0
ij i
(i = 1 2,…, m ).
,
cj 最小化
xjが負の値を取ると不等
等号なのでxiの正負は関係なし
号の向きが逆転する
27. 緩和問題を用いて最適値の上界を求める
• 最適解を求めることが難しい最適化問題に対するアプローチ
• 元の問題を簡単な問題(緩和問題)に置換えて上界を求める方法
原問題
緩和問題
P : max f (x) RP : max fRP ( x )
s.t. x ∈S s.t. x ∈ SRP
ただし,以下のR1,R2を満たす.
fRP ( x ) (R1) SRP ⊇ S
最
大
化 (R2) fRP ( x ) ≥ f ( x ) ( x ∈ S )
f (x )
x
S SRP
28. 線形計画問題のラグランジュ緩和
• ラグランジュ緩和(罰金法):
制約式を単に取り除くのではなく,その代わりに制約式を違反する解には
ペナルティがかかるように,目的関数に制約式を繰り込む方法.
(全ての制約式を取り除く必要はない)
原問題
ラグランジュ緩和問題
max 20 x1 + 10 x 2 max 20 x1 + 10 x 2
s.t. x1 + x 2 ≤ 6, − w 1( x1 + x 2 − 6)
3 x1 + x 2 ≤ 12, − w 2 (3 x1 + x 2 − 12 )
x1 + 2 x 2 ≤ 10, − w 3 ( x1 + 2 x 2 − 10 )
x1, x 2 ≥ 0. s.t. x1, x 2 ≥ 0.
w1,w 2 ,w 3 ≥ 0は各制約式の重み係数
ラグランジュ緩和を用いて線形計画問題の双対問題を導ける!
29. ラグランジュ緩和を用いて双対問題を導く
• 最適値の良い(小さい)上界値を与えるラグランジュ緩和問題を作る
⇒ 重み係数 w を上手く調整したい ⇒ w に関する最適化問題
z(w ) = max 20 x1 + 10 x2 − w1( x1 + x2 − 6) − w 2 (3 x1 + x2 − 12) − w 3 ( x1 + 2x2 − 10)
x
s.t. x1, x2 ≥ 0.
最小化
z(w ) = max (20 − w1 − 3w 2 − w 3 )x1 + (10 − w1 − w 2 − 2w 3 )x2 + 6w1 + 12w 2 + 10w 3
x
s.t. x1, x2 ≥ 0.
0より大きいと上界値が∞(非有界)になる!⇒常に0以下
そのような条件の下では常にx1,x2=0となる!
min z(w ) = 6w1 + 12w 2 + 10w 3
s.t. 20 − w1 − 3w 2 − w 3 ≤ 0, 双対問題の
でき上がり!
10 − w 1 − w 2 − 2w 3 ≤ 0,
w 1,w 2 ,w 3 ≥ 0.
30. ラグランジュ緩和を用いて双対問題を導く(続き)
• 不等式標準形の線形計画問題でも上手く双対問題を導けるだろうか?
n
max 主問題
wi ≥ 0(i = 12,…, m)は各制約式の重み係数
,
∑cj xj
j =1 n m ⎛ n
n ≦ max
⎞
∑ c j x j − ∑ w i ⎜ ∑ aij x j − bi ⎟
⎜ ⎟
s.t. ∑a x ij j ≤ bi (i = 1 2,…, m ),
, j =1 i =1 ⎝ j =1 ⎠
j =1
s.t. x j ≥ 0 ( j = 12,…, n ).
,
xj ≥ 0 ( j = 1 2,…, n ).
,
m
n m
min ∑ bi w i 双対問題
⎛ ⎞ m
i =1 ≧ max ∑ x j ⎜ c j − ∑ aij w i ⎟ + ∑ bi w i
j =1
⎜
⎝ i =1
⎟
⎠ i =1
m
s.t. c j − ∑ aij w i ≤ 0 ( j = 1 2,…, n ),
, s.t. x j ≥ 0 ( j = 1 2,…, n ).
,
i =1
wi ≥ 0 (i = 1 2,…, m ).
, 0より大きいと非有界になる!⇒ 常に0以下
そのような条件の下では常にxj=0(j =1,2,…,n)
31. ラグランジュ緩和を用いて双対問題を導く(続き)
• 等式標準形の線形計画問題の双対問題も上手く導けるだろうか?
n
max ∑c x j j 主問題
j =1 wi ,v i ≥ 0(i = 12,…, m)は各制約式の重み係数
,
n n m ⎛ n ⎞
max ∑ c j x j − ∑ w i ⎜ ∑ aij x j − bi ⎟
s.t. ∑a x
j =1
ij j ≤ bi (i = 1,2,…, m ), ≦ j =1 i =1
⎜
⎝ j =1
⎟
⎠
n m n
⎛ ⎞
∑a x ij j ≥ bi (i = 1,2,…, m ) − ∑ v i ⎜ bi − ∑ aij x j ⎟
⎜ ⎟
j =1 i =1 ⎝ j =1 ⎠
xj ≥ 0 ( j = 1,2,…, n ). s.t. x j ≥ 0 ( j = 1,2,…, n ).
等式⇒2本の不等式に置き換え
n m ⎛ n ⎞
min
m
≧ max ∑ c j x j − ∑ (w i − v i )⎜ ∑ aij x j − bi ⎟
⎜ ⎟
∑b y
i =1
i i 双対問題
j =1 i =1 ⎝ j =1 ⎠
s.t. x j ≥ 0 ( j = 12,…, n ).
,
m
s.t. c j − ∑ aij y i ≤ 0 ( j = 1,2,…, n ).
i =1
yi に置き換える