0-8

Model Building in Mathematical Programming: Chapter 7

Optimization NightH. Paul Williams, Model Building in Mathematical Programming, 5th Edition, Wiley, 2013. の輪読会をしているので、そのメモです。

Chapter 7 Non-linear models

ここでは、非線形問題をどうやって線形な問題に変形するか、関数の凸性等について学んだ

7.1 Typical applications

目的関数が線形の場合、スケールによるメリットやデメリットを表現できない。例えば、目的関数が利益だった場合、

目的関数が線形である == 生産量が少なくても多くても、1単位あたりの利益は同じ

という意味だ。現実的には、生産量が多くなるほど1単位あたりのコストが下がったり、逆にリソースの取り合いが発生してコストが上がったりする。

価格弾力性  E _ {x} は以下の式で定義される

 E _ {x} = \frac{\rm 需要の変化量}{\rm 価格の変化量}

これがある範囲で一定だと思うと、適正な価格は  p(x) = kx^{-1/E_x} という形となるので、目的関数には、  p(x)x = kx^{1-1/E_x} のような項が入ってくることになる。

他の例だと、2つ以上の原料を混ぜ合わせて新しいものをつくる混合問題で、硬さなどの指標が必ずしも各原料の割合に比例するわけではない場合や、地理情報を入れる場合に、多項式の項が出てきたりする。

7.2 Local and global optima

ここでは、凸性の定義などを確認した。凸であることがとても大事だというお話だ。

7.3 Separable programming

ここは短いけれども結構面白かった。 まず、 separable (分離可能)とは、1変数の関数の和の形であらわせる関数のこと。例えば  x ^ 2 _ 1 + 2 x _ 2 は separable だが、  x_1 x_2 + x_2 / (1 + x _ 1) は separable ではない。

separable だと、非線形な項があったとしても、該当する変数を適当に分割して、区分線形の形にして解くことができる。

区分線形の形にするのは、凸だとかんたんだけど、非凸だと途端に面倒になって、整数計画法がでてきたりするので嫌だ。

ちなみに、非線形である とか 凸である とかいう話は目的関数だけでなく、制約式の方も含んだ話のはず。

7.4 Converting a problem to a separable

 x _ 1 x _ 2 みたいな項があったとしても、実は変数を追加することで、 separable な形に変形することができる。具体的には

 
u_1 = x_1 + x_ 2 \\
u_2 = x_1 - x_2

みたいな変数を追加して、  x _ i を置き換える。この時全ての  x _ i を置換する必要はない (上式を成約に入れておけば十分)。変数が3つ以上に増えても、同様の方法が使える。ただし変数が多くなるので注意。

TODO

  1. 宿題: 12.21 Agricultural pricing をとく