オペレーションズリサーチ(OR)とシミュレーションゲーム――プロジェクトスケジューリング

or-top

今日はちょっとお堅めの話。オペレーションズリサーチ(OR)とシミュレーションゲームについて。

アイキャッチ画像は、最も典型的なOR手法のひとつ「線形計画法」のグラフ。


スポンサーリンク

そもそもオペレーションズリサーチ(OR)ってなに?

Wikipediaの該当ページをにあるように、「数学的・統計的モデル、アルゴリズムの利用などによって、さまざまな計画に際して最も効率的になるよう決定する科学的技法」を言います。

もっと噛み砕いて言うと、現実の問題を数学の問題に置き換えて解決する手法と考えれば、大筋では間違いないかと思います。さらに言うと「小学生の頃やった文章題のすごく複雑になったバージョン」です。

その典型的なものが、トップ画像のようなグラフを描く「線形計画法」。高校数学で習う内容なので、ご存じの方も多いと思います。

このORは第二次大戦時の英米軍でさまざまな問題を解決するのに使われたのが元となって、戦後は工場などの生産現場でよく使われるようになったそうな。

で、これがシミュレーションゲームとどう関係するの?

ORは現実の問題を数理モデルに置き換えて解決するので、どうしても現実の複雑さの壁にぶつかりますが、シミュレーションゲームでは、そもそもゲームになる段階でそうした複雑さが取っ払われているわけです。つまり、かなり有効にORの手法が適用できるはずです。

そこで「ORの手法をゲームに使うことはできないか」というのが、この記事の狙いです。

実際に使ってみる

or-hoi2dh

今回は、HoI2DHの技術開発への応用を考えてみましょう。例題として、1914年日本で「Great War Tank」を開発することを考えます。どうすれば最速でこの技術開発にたどり着くのかを見てみましょう。

この問題には、PERT/CPM法というプロジェクトスケジューリング手法を適用できそうです(今回の計算で参考にしたのはこちら)。この方法ではアローダイアグラムという図を作り、そこから判明するクリティカルパス(そこが遅れるとプロジェクト全体が遅れる工程の流れ)を重点管理することで、プロジェクトの遅延を防ぎます。

or-arrow

というわけで作ってみたのがこちら。

年代については無視し、開発期間として開発難易度の和(例:Great War Tankなら5+5+5+5+10=30)を使っています。図の下のインデントした技術名が開発順序、その後の数字が開発期間、末尾のアルファベットが矢印のアルファベットと対応しています。

ノードの上段が最早開始時間E(始点から開発期間を加算していったときの、そのノードに達する最小の期間)、下段が最遅完了時間L(最後のノードのEからさかのぼって開発期間を減算していったときの、そのノードの次のノードをEで始めるために必要な最も遅い時間)、赤い矢印がクリティカルパスです。

単純に説明すると、ELの差が余裕時間となります。上図では、BとDの研究は38単位の遅れがあっても、GとHの開発には影響しないということがわかります。

E=Lとなっているノードをつなぐ矢印はクリティカルパスとなっており、クリティカルパスの遅れはプロジェクト全体の遅れに直結します。したがって、この研究ではACEFGHの研究をいかに早くするかに開発期間の長さがかかっているわけです。

……とここまでの情報で、Great War Tankへの最短の道は

  1. Prewar Armoured Carからつながる研究の連なりを先に開発する
  2. Prewar Armoured CarからGreat War Tankまでのクリティカルパスにあたる研究には最優先で最適な研究機関を割り当てるべき

ということがわかりました。

ここまでの説明をお読みいただいて、「そんなの計算しなくてもわかるでしょ」とお思いのそこのあなた! それは今回の例題が8個の研究というごく少ない数だからなんとなく直感でもわかるのです!

研究数が50個100個となったとき、最短時間の計算と技術開発の管理に、このPERT/CPM法がきっと役に立つことでしょう……たぶん。


というわけで、見切り発車で大変なことを始めてしまいましたが、お役に立ちそうでしょうか……。

私はORについてはせいぜい大学で1コマ授業を取った程度のド素人なので、間違い等々ございましたらごめんなさい。

スポンサーリンク
スポンサーリンク