特殊なケースでの定式化技法
株式会社 数理システム

1. はじめに
本稿は，特殊な数理計画問題を線形計画問題（Linear Programming：LP）ないしは混合整数計画問題（Mixed Integer Programming：MIP）に置き換える為の，幾つかの代表的な手法についてまとめたものである．具体的には以下の話題を扱った．
 LP による定式化
・絶対値最小化問題
・最大値最小化問題
・ノルム最小化問題
 MIP による定式化
・インディケータ変数を用いた定式化
・セパラブル・モデルを用いた非線形計画問題の近似

2. 絶対値最小化問題
本章では，絶対値最小化問題の LP による定式化について説明する．
ここでは，絶対値最小化問題の例として，以下の問題を考える．
nMinimizec xj 1j

ただし， c j  0jn

subject toa x  bj 1ijji( j  1,..., n)(i  1,..., m)

本問題を，絶対値を用いず，LP で表現する方法を以下に説明する．

2.1. 自由変数
本節では，絶対値最小化問題の定式化の準備として，自由変数について説明する．自由変数とは，上下限値を持たない，制約の無い変数の事である．自由変数 x は，以下のような置き換えをすることが出来る．

x  x  xx   0, x   01

ただし，x  x ， x  0x  0 の時 x   0 ， x    xである．これは， x , x のどちらかが必ず 0 になる事を示している．この x , x を用x  0 の時

いると， x は x  x で表現できる．

2.2. 絶対値最小化問題の LP による定式化
上の絶対値最小化問題を，2.1 節の自由変数の置き換えを用いて書き換えると以下の様になる．
nMinimize c ( x  x ) ただし， c  0j 1jjn

subject tojj a (x  x )  bj 1jij

j( j  1...n)(i  1,..., m)ix j  0, x j  0x j x j  0（＊）


ここで，（＊）の制約は， x j , x j の少なくとも一方が必ず 0 になるというものであるが，問題が最小化問題であることと， c j  0 ( j  1,..., n) という仮定より，省略することが出来る．1 このように，絶対値最小化問題は LP で表現できる．

3. 最大値最小化問題
本章では，最大値最小化問題を LP で表現する方法について説明する．
最大値最小化問題の例として，以下の問題を考える．
Minimizemaxz1 , z 2 ,...z k 

subject toz i   c j xijn(i  1,..., k )j 1

これを，LP で表現する方法を以下に説明する．

3.1. 最大値最小化問題の LP による定式化
Minimizemaxz1 , z 2 ,...z k 

1 この証明はここでは省略する．最大化問題の場合は

c j  0 ( j  1,..., n) という仮定が必要．
2

は次の問題と等価である．
Minimizesubjectzz  zi(i  1,.., k )よって，最大値最小化問題を LP で表現すると以下のようになる．
Minimizezsubject toz   c j xi , j  0nj 1

4. ノルム最小化問題
この章では，ノルム最小化問題を LP で表現する方法について説明する．以下に標準的なノルムの定義をあげる．

z  ( z1 , z 2 ,..., z m ) の時，
 1－ノルムmz 1   zii 1

 2－ノルム
1 m 2 2z 2    zi  i 1 ∞―ノルムz   max z i1i  m2 章,3 章で述べた 2 つの方法を応用すれば，1－ノルム，∞－ノルムの最小化を LP で定式化することが出来る．ただし，2－ノルムに関しては，LP で表現することは出来ない．

4.1. 1－ノルム最小化問題
この節では，上で述べた１－ノルムの最小化問題，すなわちmMinimizezi 1iを LP として，表現する方法を以下に述べる．
これは，2.1 節で説明した絶対値の定式化を用い，vi  vi  z i

3vi  0, vi  0のように，絶対値の中身を置き換えればよい．よって，1－ノルム最小化の定式化は，以下の様になる．
mMinimize (v  v )i 1subject toiivi  vi  z ivi  0, vi  0(i  1,..., m)(i  1,..., m)

4.2. ∞－ノルム最小化問題
この節では，∞－ノルムの最小化問題，すなわちMinimizez   max z i1i  mを LP として，表現する方法を以下に述べる．
この問題も 4.1 節同様，絶対値の中身を，vi  vi  zivi  0, vi  0のように，置き換える．
さらに，最大値最小化問題であるため，新しい変数 q を導入しMinimizeq

subject toq  vi  vi
vi  0, vi  0(i  1,..., m)(i  1,..., m)と置き換えられる．

5. インディケータ変数を含む問題
インディケータ変数とは，状態の on/off を表す変数である．これを用いることによって，以下に挙げ る様な事例を混合整数 計画問題（ Mixed Integer ProgrammingProblem：MILP）で表現することが出来る．

45.1. 固定値の表現
この節では，以下のような問題を考える．
ある製品を x 単位生産するものとする，このとき，1 単位あたりの生産に要する費用は C1 である．これに加え，もし，その製品が少しでも生産されるならば，立ち上げの為の初期費用 C 2 も発生する．
このことは次式で表現される．

x  0 の時 総費用＝0x  0 の時 総費用＝ C1 x  C 2
これを表現するために，インディケータ変数  を導入した以下の式を考える．
総費用＝ C1 x  C 2

0  x  M （ M は x が取り得ることない，十分大きなパラメータ） (＊)

この時(＊)によって，  0 の時には， x の値は 0 に固定され，総費用＝0 が表現出来る．また，  1 の時には，x は 0 ではない値を取ることができ，総費用＝ C1 x  C 2 を表現することが出来る．

5.2. 不等式制約の切り替え
インディケータ変数  を用いると，不等式制約として g ( x)  0 と g ( x)  0 のどちらを用いるかを切り替えることが出来る．その為には以下の 2 つの式を連立させればよい．
（ M ： g (x) の絶対値より十分大きなパラメータ）
g ( x)  (1   )M（  ： g (x) が 0 とみなせる十分小さなパラメータ）
 g ( x)    M
この時，   1 ならば， g ( x)  0 ，  g ( x)    M である．これらをまとめると，
0  g ( x)  M   である．これは事実上，0  g ( x) という制約が適用される事を示している．また   0 ならば， g ( x)  M ，  g (x)   である．これはすなわち，
 M  g (x)   である．これは事実上， g ( x)  0 という制約が適用される事を示している．

5.3. インディケータ変数の利用
インディケータ変数  を用いると，変数の値を固定したり，関数を差し替えることが出来る．
例えば  が 0[1]の時，変数を 0 に固定するには，

0 x [ 0  x 1  ]とすればよい．
また，5.2 節の内容を用いると，  の値によって関数 f を差し替える事が出来る．その為には，十分大きなパラメータ M を用いて，

5 M  (1   )  f  a  x  M (1   ) M   f  b  x  M （１）（２）とすればよい．
この時，  ＝１ならば， f は（１）により a  x に固定され，（２）は事実上有効ではない．また  ＝0 ならば， f は（２）により b  x に固定され，（１）の制約は効いていない事がわかる．

5.4. 起動・停止コストの表現
この節では，機器が起動または停止する際にかかるコストを最小化する問題を考える．
これもまた，インディケータ変数  で表現することが出来る．この表現方法を以下に説明する．
時系列の運転インディケータ変数  t

 t , t(t  1,...., T ) と，起動・停止インディケータ(t  1,...., T  1) を導入する．  t は機器が運転している時に 1，停止している

時に 0 となるものとする．また  t は機器が運転を開始した時刻のみに 1 となり，残りの時刻では 0 となるものとする．同様に， t は機器が停止する時刻のみに 1 をとるものとする．これらの一例を次の表に挙げる．

t1234tt
t0010000…

21222324

1110010000-00010-

この時，起動・停止にかかるコストは

 (C    D  )tt（※）

tで表現できる．
さらに，  t と  t , t の関係は，以下の 2 つの式を連立させる事によって表現できる．

 t   t 1   t （起動） t   t 1   t （停止）
この式の左辺は，運転状態の変化を示している．すなわち，運転状態が変化すると 1であり，変化がないと 0 である．これらの式だけでは，運転状態の変化がない時刻にも  t , t が 1 となる可能性があるが，  t , t は最小化される目的関数（※）に現れる事に注意すると，起動・停止時のみ 1，その他の時には 0 であることが言える．

5.5. 論理条件の表現
インディケータ変数を用いると，状態間の論理的な結びつけが可能となる．例として，論理和と論理積について表現すると，論理和：    1   2  2
論理積： 2     1   2  1  6となる．

5.6. 折れ線関数の表現
インディケータ変数を用いると，折れ線関数を表現することも出来る．
折れ線関数 f (x) が連続で， x の定義域がその中において f (x) が線形関数とみなせる

n 個の区間に分割される場合を考える．この時 f (x) は次のように表される．
ny  f ( x )   s i xi  y 0i 1nx   xii 10  xi  Li (i  1,..., n)
Li zi  xi  Li z i 1 (i  1,..., n)
ここで， z i (i  1,..., n) はインディケータ変数であり， s i (i  1,..., n) は各折れ線の傾き， y 0 は x  0 の時の y の値， Li (i  1,..., n) は各区間の幅である．
ただし， z 0 , z n は z 0  1 ， z n  0 と固定しても一般性を失わない．よって，必要なインディケータ変数の実際の総数は n  1 個である．

yy0  s1 x1  s2 x2  s3 x3y0  s1 x1  s2 x2

傾き s 3y 0  s1 x1y0

傾き s 2

傾き s1L2L1
図 1L3x折れ線関数の例

具体的に，3 つの区間に分割されている，折線関数を定式化してみる．

y  s1 x1  s2 x2  s3 x3  y0x  x1  x2  x370  x1  L10  x2  L20  x3  L3
L1 z1  x1  L1

（ L1 z1  x1  L1 z 0 ）L2 z 2  x2  L2 z10  x3  L3 z 2（ L3 z 3  x3  L3 z 2 ）本定式化により，インディケータ変数 z1 , z 2 の組み合わせで，各場合を表現できている事になる．以下，その事を確認してみる．
z1  0, z 2  0 の時
0  x1  L10  x2  00  x3  0
この時， x 2 , x3 は 0 に固定され， x1 により L1 の区間が表現されている．

z1  1, z 2  0 の時
L1  x1  L10  x2  L20  x3  0
この時， x1 , x3 は x1  L1 , x3  0 に固定され， x 2 により， L2 の区間が表現されている．

z1  1, z 2  1 の時
L1  x1  L1
L2  x2  L20  x3  L3
この時， x1 , x 2 は x1  L1 , x2  L2 に固定され， x 3 により L3 の区間が表現されている．

z1  0, z 2  1 の時
L2 z 2  x2  L2 z1 という制約があるため，選ばれることは無い．

86. セパラブル・モデル
最後にセパラブル・モデルの MIP による近似について説明する．
セパラブル・モデルについて説明するため，まずセパラブルな関数について説明する．
セパラブルな関数とは，1 変数関数の和として表される関数の事である．つまり，１つの項の中に含まれる変数の数は 1 つである．2例） x1  2 x2  e 32x

セパラブルな関数は，以下の性質を持つ．
 インディケータ変数を用いて折れ線近似が出来る 最小化問題で凸な問題に対して，折れ線近似した問題において，大域最適解を得ることが出来る（ただし，非凸な問題に対しては，局所的最適解が得られる）
つまり，セパラブル・モデルとは，上で述べたセパラブルな関数をもつ，数理計画モデルの事である．

6.1. セパラブル・モデルの MIP による定式化
セパラブル・モデルを MIP として定式化する為には，セパラブルな関数の非線形項を線形近似する必要がある．ここでは，例として二次の非線形項がある，凸計画問題のセパラブル・モデルの定式化を以下に示す．
例）Minimize
subject tox1  4 x1  2 x22x1  x2  42 x1  x 2  5
 x1  4 x 2  2x1 , x 2  02 一般には，これとは違った概念で「セパラブル」という言葉を定義する事もあるが，ここではその定義は割愛する．

9y  x126.256543210.51.0

図 21.52.02.5x1

折れ線による近似の例

上の例で，非線形項 x1 を取り除くことを考える．ここでは区間 0  x1  2.5 を20  x1  1 ，1  x1  2 ， 2  x1  2.5 の 3 つの区間に分割し，図 2 のように折線近似を行う．

x1  01  12  23  2.54y  01  12  43  6.254

1  2  3  4  1
i  0 (i  1,...,4)
ただし， i はたかだか 2 つの隣り合った i のみがゼロではない．
（※1）（※1）は y ， x1 が折れ線上の値を取る事を保証するものである．この制約を定式化するには，インディケータ変数  i (i  1,...,3) を導入して，
1   1  0
2   1   2  0…(※2)
3   2   3  0
4   3  0
1   2   3  110とすればよい．
上記を踏まえ，上の例のセパラブル・モデルを MIP として定式化すると，次のようになる．
Minimize y  4 x1  2 x2
subject to x1  2 x2  42 x1  x2  5
 x1  4 x2  2
 x1  2  23  2.54  0
 y  2  43  6.254  0
1  2  3  4  1
y, x1 , x2 , 1 , 2 , 3 , 4  0…(※3)

条件（※2）
さらに，今回の問題は次の特徴を持つ．
y は最小化される目的関数に含まれている

y は凸関数である

これらの特徴により，問題(※3)から条件(※2)をとり除く事が出来る．従って問題はLP として表現できる．
本定式化には，折れ線近似を用いているので，ある程度の不正確さは伴う．しかし，不正確性は近似する直線の数を増やすことによって減らす事が出来る．また，不正確性を取り除く事が非常に重要であると考えられる場合には，本定式化で得られた，最適解付近の分割を細かくし，再度最適化を行うという方法もある．

6.2. 凸関数の線形近似の一般化6.1.で示した凸関数の線形近似を一般化すると，次のようになる．
非線形項 y  f (x) を区間 i に分割する時，新しい変数 i を導入し，

y  i f ( xi )x   i x ii

  1iiのように，定式化できる．

6.3. セパラブルな関数への変換
セパラブル・モデルは，セパラブルな関数だけに適用可能であるが，セパラブルでな11い関数をセパラブルな関数に組み替える事が可能な場合がある．現実のモデルのセパラブルでない関数は，２つ，もしくはそれ以上の変数の積である事が多い．この変換の例を以下に示す．
例） x1 x 2 という項をセパラブルな形に変換する

u1 ,u 2 という２つの新しい変数を以下の様に定める．
u1  ( x1  x2 ) / 2u 2  ( x1  x2 ) / 2
この時，x1 x2  u1  u 222となるので， x1 x 2 をセパラブルな形に変換する事が出来た．
参考文献[1] H.P.ウイリアムス（前田栄次郎 監訳，小林栄三 訳）数理計画モデルの作成法，
産業図書，1995[2] Gerge B.Dantzig, Mukund N. Thapa Linear Programming 1:Introduction
Springer-Verlag，1997

12