スタートページWeb教材一覧オペレーションズリサーチ線形計画法

定式化の工夫

学習のポイント

線形計画法の定式化では、変数に上下限があるとか、制約条件に上限制約が必要な場合があります。また、製品の価格が販売量により変化する場合もあります。そのときの工夫について考えます。

キーワード

線形計画法,不等号の向き、等号


一般に線形計画法では、
  目的関数
   v+v+・・・+v → 最大
  制約条件
   a11+a12+・・・+a1n ≦ b
   a21+a22+・・・+a2n ≦ b
    ・・・・・・・・・・・
   am1+am2+・・・+amn ≦ b
      x,x,・・・,x ≧ 0

      v,v,・・・,v ≧ 0
で定式化される問題を扱います。これを「標準形」ということにします。

いちいちこの式を書くのは面倒ですから、
   目的関数: Z=3X+2Y → 最大
   制約式1:    X+2Y ≦ 5
   制約式2:   -X+ Y ≦ 1

をベースにします。

●留意

線形計画法の市販パッケージの機能は優れています。ここで掲げている事項の多くは、利用者が標準形に調整する必要はなく、システムが自動的に、しかも効果的な方法で解決しています。それなのに、あえて説明をするのは「柔軟な考えをすることにより、単純な技法を複雑な問題に適用できる」ことを理解してほしいからです。

最小問題の場合

標準形では、最大化を求める問題でしたが、費用の最小化を求める場合も多くあります。
 その場合には、目的関数の係数を -1倍 して、
    目的関数: Z’=-3X-2Y
とすれば、最大問題にすることができます。
 しかし、実務的には、最小問題の場合には、制約式の向きが ≦ ではなく、≧ の制約式が存在するのが通常でしょう。

制約条件の工夫

標準形では、制約条件が 左辺≦右辺(非負)になっていますが、実際には=や≧にする必要がでてきます。そのような場合には、下記のλやμのような人為変数を導入することにより、標準形にすることができます。

制約式が等号の場合

制約式1の条件が
   X+2Y=5
のように等号である場合は、変数μ(≧0)を導入して、形式的に
   X+2Y -μ ≦ 5
とすることができます。
 このとき、μは無理に導入した変数ですから、結果としてμ=0にしたいのです。それで、
   Z=3X+2Y -Mμ  (Mは非常に大きな値)
とします。

実務では、
   原料-製品=0
の関係になることが多あります。しかし、原料が余れば在庫にすればよいと考えれば、
   製品-原料≦0
とすることができます。そして、在庫が生じるようでは最適解にならないので、最適解では等号が成立しているのが通常です。

変数の上限、制約式の不等号の向きが異なる場合

標準形では、変数の条件は 0≦X になっていますが、製品の需要や装置の容量など、X≦2 のような上限値があるのがむしろ通常です。この場合には、この制約式が追加されるので、制約式での不等号の向きが異なる場合と同じに取り扱うことができます。
 以下、上の制約式2を、
   -X + Y ≧ 1
である場合を考えます。

この場合、両辺に-1をかけて
   X - Y ≦ -1
としたのでは、右辺が≦0になってしまいます。
それで、元の式を等号にするために変数λを導入して、
   -X + Y = 1 + λ   -X + Y -λ = 1
とすることが考えられます。
 しかしこれでは、X=0、Y=0のとき、λ=-1になってしまいます。それで、さらに変数μを導入して、
   -X + Y -λ + μ = 1
とします。このμは、「等号の場合」で説明したμと同じ意味であり、
   -X + Y -λ + μ ≦ 1
とすることができます。

変数の工夫

製品や原料の価格は、数量により変化する場合があります。変数の上限値を用いることにより、簡単にそれを定式化することができます。

数量による価格変化がある場合

製品Xは、X*までならC1円で売れるが、それ以上売るにはC2にする必要があるというような場合には、
   X=X1+X2
   X1≦X*
として、目的関数を、
   C11+C22
とすることで解決できます。

変数に下限値がある場合

Xmin≦Xの制約がある場合には、価格変化がある場合の応用として、
   X=X1+X2
   X1≦Xmin
として、目的関数のX1の係数を、-Mとすることで解決できます。

整数変数を用いる定式化

整数値だけをとることができる変数を含む線形計画法を整数計画法といいます。この解法は複雑なので省略しますが、それを用いることにより、複雑な問題を定式化できます。

排反条件がある場合

例えば、装置P1とP2のうち、両方を使うことはできないという制約がある場合には、整数変数K1とK2を導入して、
   K1+K2 ≦ 1
として、両方が1になることはないようにします。
 そして、装置の上限値をα1、α2として、
   α11 ≧ P1,  α11 ≧ P1
とすればよいのです。