0-8

Model Building in Mathematical Programming: 4.2 〜 4.3

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

ブログ書くのを一週間放置していたら、せっかく議論した内容の7割くらいわすれていてさみしかったので、来週はもうちょっと早めに更新します。

Chapter 4

4.2 Stochastic programses

実際の数理最適化のプロジェクトでは、与えられるデータに不確実性が含まれることが多い。例えば、前章で扱った多期間問題はその典型で、。そういった状況で、不確実性をモデルに組み込む方法の1つに確率計画法 (Stochastic Programming) がある。

不確実なデータの取りうる値が離散化できる場合は、以下のようにする。

  1. 可能性のある値それぞれに対応する変数をすべて用意する。
  2. 上記の変数に確率値を掛け算することで、期待値としたものを目的関数に用いる

ただし、多期間問題のような状況では、考える期間の指数オーダーで変数が増えるので注意が必要。

ロバスト最適化と呼ばれる方法とも関係があるが、ロバスト最適化の場合は、データの不確実性に対する解の安定性を評価することが多く、この方法は不確実性が定量化できなかったとしても適用可能。 Section 6.3 で感度分析を取り扱うので、多分そこで出てくる。

4.3 Decomposing a large model

この章では、 Dantzig-Wolfe 分解というアルゴリズムについて学んだ。

Section 4.1 で出てきたような、構造を持っているようなモデルは、サブモデルに分解することで、効率的に解を探索できる可能性がある。

ではどうやってサブモデルに分解するかというと、有名な手法が2つあって、割当による分解(decomposition by allocation, Rosen(1964)) と価格による分解(decomposition by pricing, もしくは Dantzig-Wolfe分解)。

割当による分解は直感的だが、この本で具体的に扱っているのは Dantzig-Wolfe 分解の方。

いわゆる列生成法と呼ばれる手法(列生成法についてはこちらの資料がわかりやすい)。マルチプラントモデルを例にとれば、全体で最適な生産計画を練ろうとすると、

  1. 各プラントにどれだけの原材料を配分して、
  2. 各プラントで何をどれだけ作るかを決める

必要がある。 逆に言うと、この2つの問題を解けば、全体で最適な生産計画が得られることになる。 1. のことを主問題、2. のことを子問題と呼ぶ。Dantzig-Wolfe分解では、主問題で原材料の配分割合を直接指定する代わりに、原材料の価格(internal price) という変数を定義して、ちょうどいい配分になるような価格を探る問題として解く。

この辺の話は双対問題で考えると考えやすい(実際、前述の列生成法の資料でも双対問題を解いている)と思うけど、この本ではそういった話はしていなかったのもあり、著者の思惑をきちんと理解できたかはかなりあやしい。なんとか直感的に理解したいものだが。。

分散計画経済の話が出てきたが、きちんと理解できていない。ただ、米国の電力会社などでそれに似た事例が報告されているらしい。

日本でも米国でも、事例を集めるのはとても有意義な気がするので、やってみよう。

今回も自分が発表担当したので、当日の発表資料 も合わせてご覧ください。

TODO

  1. 宿題: 12.24 Yield management を解く
  2. Chapter 5 を読む
  3. Dantzig-Wolfe分解について、双対の概念なしに、図形的に理解できないか、もうちょっと頑張ってみる。