データ活用
2021-10-11
データ活用
2021-11-01
AI(人工知能)への関心が高まりを見せる近年、同時に「数理最適化」という手法が有名になりつつあります。導入を検討しつつも実態がよく分からないまま二の足を踏んでいる経営者の方もいらっしゃるのではないでしょうか。この記事ではそんな数理最適化について、その定義や特徴、活用事例や導入プロセスに至るまで分かりやすく解説します。
AI(人工知能)への関心が高まるなど IT 技術の革新はめまぐるしく、新しい技術や手法の導入は企業にとってかかせないものになっています。その中で耳にすることも増えてきたのが「数理最適化」という言葉です。
「数理最適化」とは、仕事や日常生活の中で遭遇するさまざまな課題を、数理モデルを用いて機械的に解決することを指します。この課題は、例えば「友達の家に行く」「仕事のシフトを決める」といった単純な課題から考えることができます。ルールの中でよりベストな目標を達成するための課題で「最適化問題」と呼ばれます。
先ほどの例を「最適化問題」として考えてみましょう。友人の家に向かう際には、なるべく早く、なるべくお金をかけずにたどり着きたいと考えるのが普通です。また、従業員の勤務シフトを作る際には、なるべく公平に、なるべく生産効率が高くなるように組みたいものです。
道はあらかじめ決まっており、各工程に必要なスタッフ数もあらかじめ決まっています。これらのルールの中で「なるべく早く・安く・公平に・効率的に」というニーズを満たすベストな順路決定やシフト作成を達成するという課題、これが「最適化問題」と呼ばれる種類の課題です。
「数理最適化」というのは、この最適化問題を「数理モデル」を用いて機械的に解決することです。平たく言えば「課題を数式に“翻訳”してシミュレーションをおこないベストを見つける」ということです。
数量最適化は意思決定に関する課題解決を得意分野としています。例えば、与えられたたくさんのデータ(教師データ)からパターンを見つけ出す、ディープラーニングのような抽象化のプロセスを経由する必要はありません。そのため与えられた条件に対しての最適解を出力するのが数理最適化という手法の特徴であり、それによって高精度な提案をおこなえるのが最大のメリットといれるでしょう。
ただし、英訳が困難な日本語文が存在するのと同じように、複雑な条件が絡み合った現実を数理モデルに落とし込むのが難しいケースもあります。条件を明確な形で数式に反映するために、状況をある程度単純化しなければならない場合があることには注意しておく必要があります。
ここで実際のビジネスシーンでの応用事例を 2 つ見ておきましょう。
いずれのケースでも「ルールの中でのベストを達成するための計画(最適な意思決定)」に数理モデルが用いられていることを確認してください。
トラックでなるべく効率的に取引先を巡回することを考えてみます。いくつかの地点を通る配送コースを計画する場合、「総コスト」を最小にしなければなりません。このようなときに有効なアプローチが数理最適化です。
総移動距離やドライバーの数、あるいは新設すべき中間拠点などによってコストを算出することができます。ここに巡回の順番や道路ごとの交通量といった制約条件を与えることで、数学的に最適なコースを決定することができるのです。
勤務シフトを作成する際には、「従業員間の業務量」を平準化しつつ「生産性・業務効率」を最大化する必要があります。このように最適化の目標となる値が複数ある場合にも数理最適化は活用されます。
会社が有している人的リソースや、各業務に必要な工数はあらかじめ決まっています。しかし、これらの制約条件にかなう勤務表を手計算でその都度作成するには時間がかかってしまいます。アルゴリズムを利用することによって「負担が公平に分配された効率的な人員配置」を自動的に算出することができるのです。
ここからは実際に数理最適化を導入する際の手順について解説します。
導入手順は大きく「問題を整理・明確化する」「整理した問題を数式の形で表現し、最適化モデルのプロトタイプを仮組みする」「実際の状況と照らし合わせてプロトタイプを検証・修正する」「完成したアルゴリズムをシステムとして実装する」
という4つのフェーズに分けることができます。
まずは目標を設定します。
始めからいきなり数式に表すのではなく「最適化(最大化・最小化・平準化)したい値は何か」「どのような条件があらかじめ決まっているのか」を正確に見定めましょう。
また、次の段階ではこれらを数学的に定式化することになるので、明確な定義を与えることも必要です。
数理モデル構築の本番です。
上記の1で整理した問題を数式の形に改めます。 1 で見定めた「最適化したい値」を、状況を表すベクトル(パラメータの組)を引数に取る関数、つまり「目標関数」として表現します。
また、「あらかじめ決まっている条件」を、等式や不等式などの形で「(各パラメータに関する)制約条件」に落とし込みます。
あくまで暫定的なものではありますが「最適化アルゴリズムのプロトタイプ」が、ここで出来上がることになります。
「数理最適化の特徴とメリット」でも述べたとおり、数理モデルは複雑な現実をそのまま反映するものではありません。
単純化する際に、こぼれ落ちたパラメータや制約条件がモデルそのものの信頼性を左右することもあります。アルゴリズムから得られた最大値・最小値が現実を上手く反映しているかを実際のデータと照らし合わせて検証し、適切な修正をおこなうフィードバックの段階が必要です。
検証と修正を繰り返し、十分に信頼できるアルゴリズムが得られたら、プロトタイプをシステムとして実装します。実務におけるプログラミング言語としては Python が用いられることが多いです。
数理モデルを用いたシミュレーションによる意思決定手法「数理最適化」について、その定義から、特徴・メリット、活用例、実際の導入プロセスにわたって紹介してきました。「数理最適化」をおこなうことは、これまでわからなかった問題も数値的に明確化しルールがある中での最適解を見つけ出すことに役立ちます。