平井 伸幸
株式会社 日立コンサルティング マネージャー
みなさんこんにちは、日立コンサルティングの平井です。
本コラムでは、以前のコラムにて解説した意思決定デザインと意思決定デザインフレームワーク(FW)で可視化した最適化ユースケースを数理モデルに変換する方法について、ビジュアルイメージを交えて解説します。
第3回では、最適化の簡単な仕組みについてアナロジーを使って説明を行い、以前解説したビジネスイシューを視覚的に理解する方法について解説しました。
第4回である今回は、前半のビジュアルイメージを交えつつ意思決定デザインFWで定義したイシューを数理モデルに変換していくコツについて解説しようと思います。
本コラムは本意思決定デザインと意思決定デザインFWについての知識が前提になりますので、まだ読んでいないという方は先に前述のコラムを読まれることをお勧めします。
また、こちらのコラムで意思決定デザインFWの各エレメントを詳細に検討するための方法について解説しておりますので、そちらも併せてご覧いただけますと幸いです。
最適化モデリングを行ううえで、「キー」と「バリュー」は重要な概念です。まずはそれを解説したいと思います。
データベースやデータ構造を扱うとき、「キー」と「バリュー」という考え方は、データを保存し、必要に応じて素早く取り出すために使われます。この概念は、特に「キーとバリューのペア」として呼ばれるデータ管理の基本形です。キーとバリューの関係性を代数記法で表現すると図4-1のようになり、xがバリュー、i,j,kといった添え字がキーとなります。
キー(Key):データを識別する「ラベル」
「キー」は、特定のデータを識別するための「ラベル」や「タグ」、「ID」のような役割を果たします。データの中で一意の値を持ち、他のデータと区別するために使われます。キーは、探しているデータをすばやく見つけるための通し番号のようなものです。
たとえば、電話帳で「名前」を使って人を探すとします。この「名前」がキーにあたり、特定の人物を識別するために使われます。羊飼いの問題で言えば、x, yの各座標がキーに該当します。
バリュー(Value):キーに対応する「情報」
「バリュー」は、キーに対応する実際の「情報」や「データ」です。キーで探し当てたデータがこのバリューに相当します。バリューはキーによって呼び出されるデータであり、通常、私たちが最も必要とする具体的な情報が含まれています。
電話帳の例で言えば、「名前」がキーであれば、それに対応する「電話番号」や「住所」がバリューです。つまり、キーを使ってバリューにアクセスするのです。羊飼いの問題では、座標ごとの標高や柵の内側/外側であるかのフラグがそれに相当します。それぞれの参照情報のイメージとインプットデータの形を図4-2に示します。
このキーとバリューは参照情報(インプットデータ)だけでなく、アクション(決定変数)の定義にも使われます。羊飼いの問題では「どの座標に羊を誘導するか」を決めたいので、アクションは図4-1のように表現されます。どの座標を選ぶ/選ばないは1/0の2つの値として表現することは前述の通りです。ただし、代数記法での表現は理解の妨げになることも考えられるため、本コラムでは日本語による表現に置き換えて解説したいと思います。
ここからは上述の内容と前回コラムの羊飼いの問題を基に、ルールや価値を数式として表現、つまり定式化する方法について解説したいと思います。
ルール1: 柵を超えてはいけない
羊を導く場所は、牧場の柵の内側に限られます。この条件は、「羊が柵外に出てはならない」という制約です。これをビジュアルで表現すると図4-3のようになります。
左辺は決定変数、右辺は柵の内側/外側のフラグになります。ではなぜこの数式でルールを表現できるのでしょうか?
右辺のフラグは柵の内側で1、外側で0となりますが、柵の内側のマスでは右辺が1となり、左辺は1/0どちらの値も取れる、つまり誘導する/しないを選べるようになります。逆に柵の外側では右辺が0となるため、式を成立させるためには左辺を必ず0にしなければならない、つまりそのマスを選ぶことはできません。こうして値を代入してみると、数式がルールを表現していることが分かると思います。
ルール2: 羊を誘導できるのは1つの地点のみ
羊は一度に1つの場所にしか導くことができません。これをビジュアルで表現すると図4-4のようになります。
今回は右辺が1の固定値、左辺がすべてのマスの決定変数の合計値になっています。それぞれのマスの決定変数は1か0しか選べないので、複数のマスが選ばれると式を成立させることができません。また、右辺と左辺はイコールでなければならないので、どれか1つのマスを必ず選ばなければならず、この数式によってルールが表現されていることが分かります。
価値: 標高の高さ
では、どこに誘導すれば一番高い場所に辿り着けるでしょうか?
羊飼いの問題における価値(目的関数)は、アクション(決定変数)と参照情報(インプットデータ)の掛け合わせで表現することができます(図4-5参照)。
それぞれのマスの標高に対し1/0の決定変数を掛け、すべてのマスの合計値を計算することで数式として表現できます。誘導できるマスは1つだけというのはルールで決められているので、選ばれたマスの標高のみが目的関数の値として残ります。選択するマスによって目的関数の値も変わるので、ルールの中で値が一番大きくなる選択肢を探索し、最終的に一番大きな値になる決定変数が選択されます。
今回は前半で解説した最適化モデルのビジュアルイメージを使い、意思決定デザインFWで定義したイシューを数理モデルに変換していくコツについて解説しました。
今回は最適化の仕組みを交えてモデリング方法の解説を行う都合上、ビジネスイシューとの関係性が薄い問題を選択しましたので、今後同様の方法でいくつかのビジネスイシューのモデリング方法について解説をしていきたいと思います。また、モデリング以外にも最適化のビジネス適用に役立つ情報を発信していく予定ですので、時折当サイトをチェックしていただけますと幸いです。
ここまでお読みいただきありがとうございました、またお会いしましょう。