情報数理学概論

   線形計画法入門	


       梅谷 俊治
大学院情報科学研究科 情報数理学専攻

     2012年6月22日
講義概要	
目標:線形計画法を分かったつもりになる

•    線形計画問題
•    不等式標準形・等式標準形への変形
•    実行不可能・非有界な線形計画問題
•    単体法(シンプレックス法)
•    双対問題の作り方
•    双対定理
•    感度分析
線形計画問題の定義	
•  目的関数が線形関数,制約式も線形式の最適化問題	

    目的関数は「最大化」「最小化」の
    どちらでもOK


  minimize     3 x1 + 4 x 2 − 2 x3     制約式は「≧」「≦」「=」
                                       のどれでもOK
  subject to    2 x1 = 4,
               x1 − 2 x3 ≤ 8,
               3 x 2 + x3 ≥ 6,
               x1, x 2 ≥ 0.
                                     変数の非負制約はあってもな
                                     くてもOK
線形計画問題の例	
•  ある飲料メーカーでは野菜ジュースを製造しており,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 ).
                                                       ,
線形計画問題の不等式標準形	
  •  任意の形の線形計画問題を扱うのは面倒 ⇒ 不等式標準形
  •  目的関数は「最大化」,制約式は「左辺≦右辺」,各変数は「非負」	

                                                          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.

           色々な表記が出てきますが全て同じ問題です.慣れて下さい.
標準形への変換	
•  全ての線形計画問題は不等式標準形に変換できる.
   制約式を分割
  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
不等式標準形への変形の例	
                                                                                       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.
線形計画問題の等式標準形	
•  目的関数は「最大化」,制約式は「左辺=右辺」,各変数は「非負」
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
線形計画問題のバリエーション	
•  最小値最大化問題
   ある資源を 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
線形計画問題のバリエーション(続き)	
•  絶対値の入った目的関数
   例えば目標値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 ).
線形計画問題のバリエーション(続き)	
•  分数計画問題
   以下の形の分数計画問題は実は線形計画問題として解ける.
                  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.
実行不可能・非有界な線形計画問題	
•  実行不可能:実行可能解が存在しない
•  非有界:実行可能解を持つが目的関数値をいくらでも良くできてしまう	
 実行不可能な線形計画問題の例	
                  非有界な線形計画問題の例	
  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なので解なし	
       目的関数値を無限大にできる
線形計画問題を解く	
•  変数の数を 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!
         総当り法では線形計画問題を効率良く解けない
単体法(シンプレックス法)	
•  凸多面体のある頂点(実行可能解)から出発して,目的関数値が改善す
   る隣接頂点への移動を繰返す
•  各頂点ではn本の線形式からなる連立方程式を解く
   (実際の単体法では連立方程式を解かなくて済むように工夫されている)	


   x2                 f (x1, x2)

                                   x2




                 x1                     x1
単体法の手続き	
•  与えられた線形計画問題を等式標準形に変形する.
•  各変数 x1~x5 が線形制約式に対応していることを確認する.	
 max x1 + 2 x 2                      制約式を等号で満たす=対応する変数の値が0	
 s.t.   x1 + x 2 ≤ 6,     ①                   x2
        x1 + 3 x 2 ≤ 12, ②                             ( x1, x2 , x3 , x4 , x5 ) = ( +,+,0,0,+)
                                                 ④
        2 x1 + x 2 ≤ 10, ③
                          ④ ⑤                       ① ③
        x1, x 2 ≥ 0.


 max x1 + 2 x 2                                                              ②
 s.t.   x1 + x 2 + x3 = 6,       ①
                                                                              ⑤      x1
        x1 + 3 x 2 + x 4 = 12,   ②

        2 x1 + x 2 + x5 = 10, ③
                                           ( x1, x2 , x3 , x4 , x5 ) = (0,0,+,+,+)
        x1, x 2 , x3 , x 4 , x5 ≥ 0. ④ ⑤
単体法の手続き(続き)	
•  変数 n 個,制約式 m 本だが,各変数の非負制約もあるので制約式は
   (m+n) 本ある.
•  ここから n 本の制約式を選んで(対応する変数の値を0にして),連立方
   程式を解く.
•  すると,凸多面体の頂点に対応する実行可能解が求まる.	

                                                max z
max x1 + 2 x 2
                                                s.t.   x3 = 6 − x1 − x 2 ,
s.t.   x1 + x 2 + x3 = 6,
                                                       x 4 = 12 − x1 − 3 x 2 ,
       x1 + 3 x 2 + x 4 = 12,
                                                       x5 = 10 − 2 x1 − x 2 ,
       2 x1 + x 2 + x5 = 10,          分かり易く
                                      書き直すと	
          z = x1 + 2 x 2 ,
       x1, x 2 , x3 , x 4 , x5 ≥ 0.
                                                       x1, x 2 , x3 , x 4 , x5 ≥ 0.
                                                x1=0,x2=0とすると実行可能解が求まる
単体法の手続き(続き)	
 •  現在の実行可能解に隣接する実行可能解を求めるには?	
                           ( x1, x2 , x3 , x4 , x5 , z) = (0,0,6,12,10,0)
                                          x1かx2を増加すると目的関数が改善しそう	
max z
s.t.    x3 = 6 − x1 − x 2 ,             x3 ≥ 0なのでx2 = 6まで増やせる	
                                                 	
                                                                                        x2=4まで
         x 4 = 12 − x1 − 3 x 2 ,        x4 ≥ 0なのでx2 = 4まで増やせる	
                                                 	
                                     増やせて
         x5 = 10 − 2 x1 − x 2 ,         x5 ≥ 0なので	
 2 = 10まで増やせる	
                                                 x                                      x4=0となる	
        z = x1 + 2 x 2 ,
                                                           max z
         x1, x 2 , x3 , x 4 , x5 ≥ 0.
                                                           s.t. x 3 = 2 − 2 3 x1 +1 3 x 4 ,
           1     1                                                  x 2 = 4 −1 3 x1 −1 3 x 4 ,
x2 = 4 −     x1 − x 4を代入して書き直すと
                              ・・・
           3     3
       (実は連立方程式を解いている)	
                                            x 5 = 6 − 5 3 x1 +1 3 x 4 ,
                                                                   z = 8 +1 3 x1 − 2 3 x 4 ,
  ( x1, x2 , x3 , x4 , x5 , z) = (0,4,2,0,6,8)
                                                                    x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0.
単体法の手続き(続き)	
•  前ページの手続きを図で確認すると・・・	
  max z
  s.t.   x3 = 6 − x1 − x 2 ,
                                         x2
                                                    ( x1, x2 , x3 , x4 , x5 , z) = (0,4,2,0,6,8)
         x 4 = 12 − x1 − 3 x 2 ,
         x5 = 10 − 2 x1 − x 2 ,
         z = x1 + 2 x 2 ,
         x1, x 2 , x3 , x 4 , x5 ≥ 0.


  max z
                                                                             x1
  s.t. x 3 = 2 − 2 3 x1 +1 3 x 4 ,
          x 2 = 4 −1 3 x1 −1 3 x 4 ,    ( x1, x2 , x3 , x4 , x5 , z) = (0,0,6,12,10,0)
          x 5 = 6 − 5 3 x1 +1 3 x 4 ,
         z = 8 +1 3 x1 − 2 3 x 4 ,
          x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0.
単体法の手続き(続き)	
  max z                                   x1を増加すると改善しそう	
                                                      	
  s.t.      x 3 = 2 − 2 3 x1 +1 3 x 4 , ← x1 ≤ 3
                                                             x1は3まで増やせて
            x 2 = 4 −1 3 x1 −1 3 x 4 , ← x1 ≤ 12             x3=0 となる	
           x 5 = 6 − 5 3 x1 +1 3 x 4 , ← x1 ≤ 18 5
           z = 8 +1 3 x1 − 2 3 x 4 ,           x2
                                                        ( x1, x2 , x3 , x4 , x5 , z) = (0,4,2,0,6,8)
            x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0.
           3      1
x1 = 3 −     x 3 + x 4 を代入して書き直すと	
           2      2
  max z
   s.t.     x1 = 3 − 3 2 x 3 +1 2 x 4 ,
            x 2 = 3 +1 2 x 3 −1 2 x 4 ,
            x 5 = 1+ 5 2 x 3 −1 2 x 4 ,
                                                                                    x1
            z = 9 −1 2 x 3 −1 2 x 4 ,
            x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0.
                                                                            (
                                                   (x1,x 2 ,x 3 ,x 4 ,x 5 ,z) = 3,3,0,0,1,9   )
                         もう改善できない!
初期実行可能解を求める(2段階法)	
•  線形計画問題を解くには初期実行可能解が必要.
•  自明な実行可能解が分からない場合には? ⇒ 補助問題を作る
•  補助問題=自明な実行可能解を持つ線形計画問題
   ⇒ 単体法を2回適用すると解ける(2段階法)

                                  人為変数 x4 , x5 を導入
                                  制約条件の違反度の合計を最小化	
 自明な実行可能解を持たない	
 min    − 2 x1 − x 2 − x3           min    x 4 + x5
 s.t.   x1 + 2 x 2 = 12,            s.t.   x1 + 2 x 2 + x 4 = 12,
        x1 + 4 x 2 + 2 x3 = 20,            x1 + 4 x 2 + 2 x3 + x5 = 20,
        x1, x 2 , x3 ≥ 0.                  x1, x 2 , x3 , x 4 , x5 ≥ 0.

                目的関数値が0 ⇒ 元の問題の実行可能解
                目的関数値が0より大 ⇒ 元の問題は実行不可能
非有界の判定	
•  線形計画問題が非有界かどうか単体法の手続き中に判定できる.	

 max z
                                                    x1を増やすと改善しそう	
 s.t.      x 4 = 4 + 2 x1 − 2 x 2 + x3 ,
          x5 = 4 + 2 x1                − 4 x3 ,
                                                    x1をいくら増やしてもx4,x5,x6は
          x 6 = 1 + 4 x1 − 3 x 2 + x3 ,             負にならない!	
          z = 0 + 2 x1 − x 2 − x3 ,
           x1, x 2 , x3 , x 4 , x5 , x 6 ≥ 0.
( x1, x2 , x3 , x4 , x5 , x6 , z) = (0,0,0,4,4,1)
最適値の上界を求める	
•  難しい最適化問題では簡単に最適値が求まらないことが多い.
•  与えられた最適化問題の最適値の上界と下界を簡単に求める方法は?
   ⇒ 実行可能解を求めれば下界は計算できる.では,上界は?	

          max    f (x)
          s.t.   x ∈S
 f (x )                      上界	
        実行不可能	

最                        最適値	
大
化                                   最
                                    大 実行可能	
	




                             下界	
   化




                                    	
                         x
          実行可能領域 S
線形計画問題の最適値の上界を求める	
•  制約式の1次結合を作ることで最適値の上界が求められる.	


                                6 × ( 3 x1 + x 2 ≤ 12 )
  max     20 x1 + 10 x 2        2 × ( x1 + 2 x2 ≤ 10 )
  s.t.   x1 + x 2 ≤ 6,              20 x1 + 10 x2 ≤ 92
         3 x1 + x 2 ≤ 12,
         x1 + 2 x 2 ≤ 10,       5 × ( x1 + x2 ≤ 6 )
         x1, x 2 ≥ 0.           5 × ( 3 x1 + x2 ≤ 12 )
                                    20 x1 + 10 x2 ≤ 90

                            線形計画問題の最適値の上界!
線形計画問題の最適値の上界を求める(続き)	
 •  線形計画問題の最適値の上界を求める一般的な手続きは?
 •  制約式の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
線形計画問題の双対問題	
 •  双対問題:最適化問題の最小の上界(最大の下界)を求める問題
 •  線形計画問題では,問題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          最小化
線形計画問題の双対問題(続き)	
       •  線形計画問題の変数に非負制約がない場合は?
       •  線形計画問題が等式標準形の場合は?

                                                         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の正負は関係なし	
                                                                                                                   号の向きが逆転する
緩和問題を用いて最適値の上界を求める	
 •  最適解を求めることが難しい最適化問題に対するアプローチ
 •  元の問題を簡単な問題(緩和問題)に置換えて上界を求める方法	

     原問題	
                          緩和問題	
     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
線形計画問題のラグランジュ緩和	
•  ラグランジュ緩和(罰金法):
   制約式を単に取り除くのではなく,その代わりに制約式を違反する解には
   ペナルティがかかるように,目的関数に制約式を繰り込む方法.
   (全ての制約式を取り除く必要はない)	

 原問題	
                     ラグランジュ緩和問題	
 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は各制約式の重み係数

    ラグランジュ緩和を用いて線形計画問題の双対問題を導ける!
ラグランジュ緩和を用いて双対問題を導く	
•  最適値の良い(小さい)上界値を与えるラグランジュ緩和問題を作る
   ⇒ 重み係数 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.
ラグランジュ緩和を用いて双対問題を導く(続き)	
  •  不等式標準形の線形計画問題でも上手く双対問題を導けるだろうか?	

              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)
ラグランジュ緩和を用いて双対問題を導く(続き)	
 •  等式標準形の線形計画問題の双対問題も上手く導けるだろうか?	
         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 に置き換える
主問題と双対問題の関係	
 •  弱双対定理
      主問題の実行可能解の目的関数値≦双対問題の実行可能解の目的関数値
 •  強双対定理
      主問題が最適解を持つなら双対問題も最適解を持ち,それらの最適値は一致する	


                     y
g (y )                                             双対問題	

 最         双対問題	
              主問題と          実行可能	
                                                         実行
 小                            双対問題の
 化                            組合せは?	
       有界	
   非有界	
 不能	
 	




                               実    有界	
     ○       ×      ×
 最                             行
                         主     可
 大                       問     能    非有界	
    ×       ×      ○
 化         主問題	
         題
                               	
 	




                         	




                                実行不能	
       ×       ○      ○
f (x )
                     x
主問題と双対問題の関係(続き)	
•  弱双対定理より以下の補題が成り立つ
   主問題(双対問題)が非有界 ⇒ 双対問題(主問題)は実行不能

•  ちなみに逆「主問題(双対問題)が実行不能 ⇒ 双対問題(主問題)が非
   有界」は成り立たないので注意すること.
   (主問題・双対問題ともに実行不能の場合がある)
感度分析	
•  線形計画問題は最適解を出すだけではない!
•  問題の条件や数値が変化 → 最適解の変化を分析したい
•  以下の生産計画問題の例で考えてみよう.	


生産計画問題の例	
あるシャトーでは3種類のブドウ,カルベネ,メルロー,セミヨンを原料として,
3種類のワイン,赤ワイン,白ワイン,ロゼワインを製造している.
収益が最大となる各ワインの1日当たりの製造量を求めよ.
	
種類	
     赤ワイン	
 白ワイン	
 ロゼワイン	
 供給量	
                                       max    p1x1 + p2 x2 + p3 x3
カルベネ	
      a11    a12     a13 b1      s.t.   a11x1 + a12 x2 + a13 x3 ≤ b1,
メルロー	
      a21    a22     a23 b2             a21x1 + a22 x2 + a23 x3 ≤ b2 ,
セミヨン	
      a31    a32     a33 b3             a31x1 + a32 x2 + a33 x3 ≤ b3 ,
収益	
         p1    p2       p3                x1, x2 , x3 ≥ 0.
感度分析(続き)	
•  3種類のブドウ,カルベネ,メルロー,セミヨンの供給量を増やしたいと考
   えている.どのブドウの供給量を増やすのが最もお得だろうか?	
   主問題	
              双対問題	
 max    p1x1 + p2 x2 + p3 x3                min    b1y 1 + b2 y 2 + b3 y 3
 s.t.   a11x1 + a12 x2 + a13 x3 ≤ b1,       s.t.   a11y 1 + a21y 2 + a31y 3 ≥ p1,
        a21x1 + a22 x2 + a23 x3 ≤ b2 ,             a12 y 1 + a22 y 2 + a32 y 3 ≥ p2 ,
        a31x1 + a32 x2 + a33 x3 ≤ b3 ,             a13 y 1 + a23 y 2 + a33 y 3 ≥ p3 ,
        x1, x2 , x3 ≥ 0.                           y 1, y 2 , y 3 ≥ 0.
                  *    *     *     *     *     *
            最適解( x1 , x2 , x3 )と( y1 , y 2 , y 3 )が得られたとすると	
               	
               	
                           	
 *         *          *  *  *    *
            目的関数値はp1x1 + p2 x2 + p3 x3 = b1y1 + b2 y 2 + b3 y 3
供給量をぞれぞれΔ1, Δ 2 , Δ 3                               *               *               *
                                         (b1 + Δ1 )y1 + (b2 + Δ 2 )y2 + (b3 + Δ 3 )y3
増やしたときの最適値
         は?

最適解における各双対変数の値は,各ブドウの潜在的な収益を表している!
(双対変数は潜在価格とも呼ばれる)
まとめ	
•    線形計画問題
•    不等式標準形・等式標準形への変形
•    実行不可能・非有界な線形計画問題
•    単体法(シンプレックス法)
•    双対問題の作り方
•    双対定理
•    感度分析
参考文献	
•    森雅夫,松井知己『オペレーションズ・リサーチ』朝倉書店,2004.
•    福嶋雅夫『(新版)数理計画入門』朝倉書店,2011.
•    加藤直樹『数理計画法』コロナ社,2008.
•    今野浩『線形計画法』日科技連,1987.
•    刀根薫『数理計画(増補版)』朝倉書店,2007.
•    V.Chvatal, Linear Programming, W.H.Freedman and Company,
     1983.

線形計画法入門

  • 1.
    情報数理学概論 線形計画法入門 梅谷 俊治 大学院情報科学研究科 情報数理学専攻 2012年6月22日
  • 2.
    講義概要 目標:線形計画法を分かったつもりになる •  線形計画問題 •  不等式標準形・等式標準形への変形 •  実行不可能・非有界な線形計画問題 •  単体法(シンプレックス法) •  双対問題の作り方 •  双対定理 •  感度分析
  • 3.
    線形計画問題の定義 •  目的関数が線形関数,制約式も線形式の最適化問題 目的関数は「最大化」「最小化」の どちらでもOK minimize 3 x1 + 4 x 2 − 2 x3 制約式は「≧」「≦」「=」 のどれでもOK subject to 2 x1 = 4, x1 − 2 x3 ≤ 8, 3 x 2 + x3 ≥ 6, x1, x 2 ≥ 0. 変数の非負制約はあってもな くてもOK
  • 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! 総当り法では線形計画問題を効率良く解けない
  • 14.
    単体法(シンプレックス法) •  凸多面体のある頂点(実行可能解)から出発して,目的関数値が改善す る隣接頂点への移動を繰返す •  各頂点ではn本の線形式からなる連立方程式を解く (実際の単体法では連立方程式を解かなくて済むように工夫されている) x2 f (x1, x2) x2 x1 x1
  • 15.
    単体法の手続き •  与えられた線形計画問題を等式標準形に変形する. •  各変数x1~x5 が線形制約式に対応していることを確認する. max x1 + 2 x 2 制約式を等号で満たす=対応する変数の値が0 s.t. x1 + x 2 ≤ 6, ① x2 x1 + 3 x 2 ≤ 12, ② ( x1, x2 , x3 , x4 , x5 ) = ( +,+,0,0,+) ④ 2 x1 + x 2 ≤ 10, ③ ④ ⑤ ① ③ x1, x 2 ≥ 0. max x1 + 2 x 2 ② s.t. x1 + x 2 + x3 = 6, ① ⑤ x1 x1 + 3 x 2 + x 4 = 12, ② 2 x1 + x 2 + x5 = 10, ③ ( x1, x2 , x3 , x4 , x5 ) = (0,0,+,+,+) x1, x 2 , x3 , x 4 , x5 ≥ 0. ④ ⑤
  • 16.
    単体法の手続き(続き) •  変数 n個,制約式 m 本だが,各変数の非負制約もあるので制約式は (m+n) 本ある. •  ここから n 本の制約式を選んで(対応する変数の値を0にして),連立方 程式を解く. •  すると,凸多面体の頂点に対応する実行可能解が求まる. max z max x1 + 2 x 2 s.t. x3 = 6 − x1 − x 2 , s.t. x1 + x 2 + x3 = 6, x 4 = 12 − x1 − 3 x 2 , x1 + 3 x 2 + x 4 = 12, x5 = 10 − 2 x1 − x 2 , 2 x1 + x 2 + x5 = 10, 分かり易く 書き直すと z = x1 + 2 x 2 , x1, x 2 , x3 , x 4 , x5 ≥ 0. x1, x 2 , x3 , x 4 , x5 ≥ 0. x1=0,x2=0とすると実行可能解が求まる
  • 17.
    単体法の手続き(続き) •  現在の実行可能解に隣接する実行可能解を求めるには? ( x1, x2 , x3 , x4 , x5 , z) = (0,0,6,12,10,0) x1かx2を増加すると目的関数が改善しそう max z s.t. x3 = 6 − x1 − x 2 , x3 ≥ 0なのでx2 = 6まで増やせる x2=4まで x 4 = 12 − x1 − 3 x 2 , x4 ≥ 0なのでx2 = 4まで増やせる 増やせて x5 = 10 − 2 x1 − x 2 , x5 ≥ 0なので 2 = 10まで増やせる x x4=0となる z = x1 + 2 x 2 , max z x1, x 2 , x3 , x 4 , x5 ≥ 0. s.t. x 3 = 2 − 2 3 x1 +1 3 x 4 , 1 1 x 2 = 4 −1 3 x1 −1 3 x 4 , x2 = 4 − x1 − x 4を代入して書き直すと ・・・ 3 3 (実は連立方程式を解いている) x 5 = 6 − 5 3 x1 +1 3 x 4 , z = 8 +1 3 x1 − 2 3 x 4 , ( x1, x2 , x3 , x4 , x5 , z) = (0,4,2,0,6,8) x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0.
  • 18.
    単体法の手続き(続き) •  前ページの手続きを図で確認すると・・・ max z s.t. x3 = 6 − x1 − x 2 , x2 ( x1, x2 , x3 , x4 , x5 , z) = (0,4,2,0,6,8) x 4 = 12 − x1 − 3 x 2 , x5 = 10 − 2 x1 − x 2 , z = x1 + 2 x 2 , x1, x 2 , x3 , x 4 , x5 ≥ 0. max z x1 s.t. x 3 = 2 − 2 3 x1 +1 3 x 4 , x 2 = 4 −1 3 x1 −1 3 x 4 , ( x1, x2 , x3 , x4 , x5 , z) = (0,0,6,12,10,0) x 5 = 6 − 5 3 x1 +1 3 x 4 , z = 8 +1 3 x1 − 2 3 x 4 , x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0.
  • 19.
    単体法の手続き(続き) maxz x1を増加すると改善しそう s.t. x 3 = 2 − 2 3 x1 +1 3 x 4 , ← x1 ≤ 3 x1は3まで増やせて x 2 = 4 −1 3 x1 −1 3 x 4 , ← x1 ≤ 12 x3=0 となる x 5 = 6 − 5 3 x1 +1 3 x 4 , ← x1 ≤ 18 5 z = 8 +1 3 x1 − 2 3 x 4 , x2 ( x1, x2 , x3 , x4 , x5 , z) = (0,4,2,0,6,8) x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0. 3 1 x1 = 3 − x 3 + x 4 を代入して書き直すと 2 2 max z s.t. x1 = 3 − 3 2 x 3 +1 2 x 4 , x 2 = 3 +1 2 x 3 −1 2 x 4 , x 5 = 1+ 5 2 x 3 −1 2 x 4 , x1 z = 9 −1 2 x 3 −1 2 x 4 , x1,x 2 ,x 3 ,x 4 ,x 5 ≥ 0. ( (x1,x 2 ,x 3 ,x 4 ,x 5 ,z) = 3,3,0,0,1,9 ) もう改善できない!
  • 20.
    初期実行可能解を求める(2段階法) •  線形計画問題を解くには初期実行可能解が必要. •  自明な実行可能解が分からない場合には?⇒ 補助問題を作る •  補助問題=自明な実行可能解を持つ線形計画問題 ⇒ 単体法を2回適用すると解ける(2段階法) 人為変数 x4 , x5 を導入 制約条件の違反度の合計を最小化 自明な実行可能解を持たない min − 2 x1 − x 2 − x3 min x 4 + x5 s.t. x1 + 2 x 2 = 12, s.t. x1 + 2 x 2 + x 4 = 12, x1 + 4 x 2 + 2 x3 = 20, x1 + 4 x 2 + 2 x3 + x5 = 20, x1, x 2 , x3 ≥ 0. x1, x 2 , x3 , x 4 , x5 ≥ 0. 目的関数値が0 ⇒ 元の問題の実行可能解 目的関数値が0より大 ⇒ 元の問題は実行不可能
  • 21.
    非有界の判定 •  線形計画問題が非有界かどうか単体法の手続き中に判定できる. maxz x1を増やすと改善しそう s.t. x 4 = 4 + 2 x1 − 2 x 2 + x3 , x5 = 4 + 2 x1 − 4 x3 , x1をいくら増やしてもx4,x5,x6は x 6 = 1 + 4 x1 − 3 x 2 + x3 , 負にならない! z = 0 + 2 x1 − x 2 − x3 , x1, x 2 , x3 , x 4 , x5 , x 6 ≥ 0. ( x1, x2 , x3 , x4 , x5 , x6 , z) = (0,0,0,4,4,1)
  • 22.
    最適値の上界を求める •  難しい最適化問題では簡単に最適値が求まらないことが多い. •  与えられた最適化問題の最適値の上界と下界を簡単に求める方法は? ⇒ 実行可能解を求めれば下界は計算できる.では,上界は? max f (x) s.t. x ∈S f (x ) 上界 実行不可能 最 最適値 大 化 最 大 実行可能 下界 化 x 実行可能領域 S
  • 23.
    線形計画問題の最適値の上界を求める •  制約式の1次結合を作ることで最適値の上界が求められる. 6 × ( 3 x1 + x 2 ≤ 12 ) max 20 x1 + 10 x 2 2 × ( x1 + 2 x2 ≤ 10 ) s.t. x1 + x 2 ≤ 6, 20 x1 + 10 x2 ≤ 92 3 x1 + x 2 ≤ 12, x1 + 2 x 2 ≤ 10, 5 × ( x1 + x2 ≤ 6 ) x1, x 2 ≥ 0. 5 × ( 3 x1 + x2 ≤ 12 ) 20 x1 + 10 x2 ≤ 90 線形計画問題の最適値の上界!
  • 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 に置き換える
  • 32.
    主問題と双対問題の関係 •  弱双対定理 主問題の実行可能解の目的関数値≦双対問題の実行可能解の目的関数値 •  強双対定理 主問題が最適解を持つなら双対問題も最適解を持ち,それらの最適値は一致する y g (y ) 双対問題 最 双対問題 主問題と 実行可能 実行 小 双対問題の 化 組合せは? 有界 非有界 不能 実 有界 ○ × × 最 行 主 可 大 問 能 非有界 × × ○ 化 主問題 題 実行不能 × ○ ○ f (x ) x
  • 33.
    主問題と双対問題の関係(続き) •  弱双対定理より以下の補題が成り立つ 主問題(双対問題)が非有界 ⇒ 双対問題(主問題)は実行不能 •  ちなみに逆「主問題(双対問題)が実行不能 ⇒ 双対問題(主問題)が非 有界」は成り立たないので注意すること. (主問題・双対問題ともに実行不能の場合がある)
  • 34.
    感度分析 •  線形計画問題は最適解を出すだけではない! •  問題の条件や数値が変化→ 最適解の変化を分析したい •  以下の生産計画問題の例で考えてみよう. 生産計画問題の例 あるシャトーでは3種類のブドウ,カルベネ,メルロー,セミヨンを原料として, 3種類のワイン,赤ワイン,白ワイン,ロゼワインを製造している. 収益が最大となる各ワインの1日当たりの製造量を求めよ. 種類 赤ワイン 白ワイン ロゼワイン 供給量 max p1x1 + p2 x2 + p3 x3 カルベネ a11 a12 a13 b1 s.t. a11x1 + a12 x2 + a13 x3 ≤ b1, メルロー a21 a22 a23 b2 a21x1 + a22 x2 + a23 x3 ≤ b2 , セミヨン a31 a32 a33 b3 a31x1 + a32 x2 + a33 x3 ≤ b3 , 収益 p1 p2 p3 x1, x2 , x3 ≥ 0.
  • 35.
    感度分析(続き) •  3種類のブドウ,カルベネ,メルロー,セミヨンの供給量を増やしたいと考 えている.どのブドウの供給量を増やすのが最もお得だろうか? 主問題 双対問題 max p1x1 + p2 x2 + p3 x3 min b1y 1 + b2 y 2 + b3 y 3 s.t. a11x1 + a12 x2 + a13 x3 ≤ b1, s.t. a11y 1 + a21y 2 + a31y 3 ≥ p1, a21x1 + a22 x2 + a23 x3 ≤ b2 , a12 y 1 + a22 y 2 + a32 y 3 ≥ p2 , a31x1 + a32 x2 + a33 x3 ≤ b3 , a13 y 1 + a23 y 2 + a33 y 3 ≥ p3 , x1, x2 , x3 ≥ 0. y 1, y 2 , y 3 ≥ 0. * * * * * * 最適解( x1 , x2 , x3 )と( y1 , y 2 , y 3 )が得られたとすると * * * * * * 目的関数値はp1x1 + p2 x2 + p3 x3 = b1y1 + b2 y 2 + b3 y 3 供給量をぞれぞれΔ1, Δ 2 , Δ 3 * * * (b1 + Δ1 )y1 + (b2 + Δ 2 )y2 + (b3 + Δ 3 )y3 増やしたときの最適値 は? 最適解における各双対変数の値は,各ブドウの潜在的な収益を表している! (双対変数は潜在価格とも呼ばれる)
  • 36.
    まとめ •  線形計画問題 •  不等式標準形・等式標準形への変形 •  実行不可能・非有界な線形計画問題 •  単体法(シンプレックス法) •  双対問題の作り方 •  双対定理 •  感度分析
  • 37.
    参考文献 •  森雅夫,松井知己『オペレーションズ・リサーチ』朝倉書店,2004. •  福嶋雅夫『(新版)数理計画入門』朝倉書店,2011. •  加藤直樹『数理計画法』コロナ社,2008. •  今野浩『線形計画法』日科技連,1987. •  刀根薫『数理計画(増補版)』朝倉書店,2007. •  V.Chvatal, Linear Programming, W.H.Freedman and Company, 1983.