データ解析の手法の1つとして「数理最適化」があります。
「数理最適化」とは、ヒトの経験と勘を超える成果が期待できるとってもとぉっても有用な手法です。 しかしながら、ビッグデータを解析する手段であり、ビジネス界においてはちょっとしたバズワードにもなった「統計」や「機械学習」と比べると、「数理最適化」は、イマイチ、ビジネスにおける浸透率が低いように感じています。
その原因は、「数理最適化」の説明が
複数の種類の複雑な制約条件を全て満たしながら、目的を達成させることが出来る組合せを大量に試算し、成果の最大化を追求する手法
といった、わかるようでよくわからない難解な文言の後に、たいてい
∋ Σ σ
といった不可解な記号をまじえた説明が、頻発するからなのではないかと考えました。
そこで、この記事では難しい話や記号を一切抜きにして、身近な例えを用いながら、どのようなシーンで「数理最適化」が活用できるのかということについてお話します。
目次
「おせち」を例に「数理最適化」の説明に挑戦
唐突ですが、私、毎年年末に「おせち」を作ってます。そうです、あの正月料理の「おせち」です。2020年コロナ禍の中でも例にもれずおせちを作りました。
あ、ちょっとまってください。ページを閉じないでください。 「何この記事、データ解析のこと書いてあると思ったら『おせち』について語りだそうとしてるよ」と思った方も、「ようわからん寄り道せずにとっとと結論書けよ」と思った方も、一旦、聞いていただきたいのです。
数理最適化って難しいんです。 概念自体も難しいので、この記事では「急がば回れ」の精神でお話ししようとしています。 そして思い切って、日本人なら誰しもが知っている「おせち」で数理最適化を解説しようと試みています。
「おせち」を通して最適化という手法と、どういう場面で活用ができるのかについて理解していただく事を目指し、頑張りますので、もう少しお付き合いください。
話を「おせち」に戻しましょう。
昨今では、まるっとおせち料理全てをセットで買うことも珍しくありませんが、値段や量がネックでご自宅でおせちを用意するという家庭もまだまだ多いはず(私もそうです)。
「おせち」を自宅で準備するとなると、頭を悩ます問題が色々と出てきます。
まず、「限られた予算の中で見栄えよいおせちにするために、何をどれだけ準備するべきなのか。また、何を買い、何を作るのか。」という問題。
おせちには、重箱の何段目に何を詰めるのかというしきたりがあります。そしておせちには30種類を超えるおかずがありますが、全てを手作りしていたら、安く済んだとしても年が明けてしまいます。せめて1日(12時間くらい)で作りきりたい。だけど、できる限り色々準備したい。
このように限られた予算の中、何を準備するのか。何を買い、何を作り、何を作らないのが一番品数の多いおせちになるのか。これが第1の問題です。
次に、「どんな順序、工程で作るのが最も効率的に早く作ることができるのか。」という問題があります。
忙しい師走、大掃除もしなければいけませんし、とっととおせちの準備は終わらせたいところ。
とはいえ、自宅のコンロの数には限りがあります。また調理スペースも、調理器具も限られています。電子レンジやオーブンといった調理家電を同時に動かすとブレーカーが落ちるといった制限もあります。
夫や妻、子供がお手伝いしてくれるとしても、料理は初心者。
このような中、キッチンの清潔さを保ちつつ、片付けとも平行しながら作業するにあたって、どういう日程と手順で作っていくのが最も効率的に作れるのかを考えねばなりません。 これが2つ目の問題です。
最後にあるのが「誰にたいして、何をどのように出したら不足することなく、腐らせることなく、かつ、余らせることなく、まんべんなく提供できるのか。」という問題
例えば我が家では、重箱を開けたらあれよあれよのうちになくなる筆頭は栗きんとんです。半日でなくなることもしばしば。
一方で、かまぼこやごまめ、黒豆、なますの余ること余ること。最後までおせちを楽しみたいし、楽しんでほしいので、メインになるようなおかずも残しておきたいものです。
かといって日持ちしないものを出し惜しみして腐らせるわけにもいかないのが悩みどころ。
こういったことを考慮しつつ、誰に対してどのように出すのか、あるいは重箱のレイアウトをどのように配置するのがもっともバランスよく在庫消費できるのか。 これが最後の問題です。
これらおせちに潜む、永遠に解決できそうのない問題(言い過ぎ)を解決できる手法。
それが数理最適化なのです。
制約条件を全部満たして、成果を最大にする「組合せ」を導いてくれる
ここで、数理最適化の説明をもう一度見てみましょう。数理最適化とは、
複数の種類の複雑な制約条件を全て満たしながら、目的を達成させることが出来る組合せを大量に試算し、成果の最大化を追求する手法
でした。
これだけを読むと、いまいちピンと来ないかもしれませんが、この数理最適化の説明を意識しつつ、おせちに潜む問題を少し言葉を変えてまとめてみます。
1つ目の問題は、
30種類を超えるおせち料理のうち、何を買い、何を作るのが、最も品数が多く、豪華になる組み合わせとなるのか。
制約は3つ。
* 限られた予算内である。
* おせちの”しきたり”を守って必須のおかずは揃える。
* おかずを作る時間は合計12時間以内にする。
です。
2つ目の問題は、
どういう順序で、どの調理器具を使って何のおかずを作るのが、最も早い組み合わせとなるのか。
制約は5つ。
* 2人で作る。1人は料理上級者だが、1人は料理初心者。
* コンロは2口で魚焼きグリルはない。フライパン、鍋、ボウルはたくさんある。
* 火を通せる調理家電は電子レンジとオーブンと電磁調理器。ただし、電子レンジとオーブンを同時に使うことはできない。
* 調理台のスペースは45×120cm。シンクのスペースは40×60cm。このスペースを超えた作業はできない。
* 下ごしらえや後片付け、調理を一気に進めてもよい。
例えば茹でる必要があるものは、同じお湯を使いまわしてもよい。
という感じです。
3つ目の問題は
いつ、誰に対して、どのおかずを提供するのが、最も余りが少なくなる組み合わせとなるのか。
制約は2つ
* それぞれのおかずの消費期限までしか そのおかずは提供できない
* 全ての人に対して、できるかぎり万遍なくおかずを提供する。
特に、メインとなるようなおかずを最低1つは提供する。
です。
お気づきでしょうか。全ての問題が、
ある制約条件のもと、成果を最大にするための組み合わせについての問題なのです。ちなみに赤字部分が、その問題において目指す成果です。
こういった問題に応えてくれるものが数理最適化です。
これらの問題について、人がエンピツと紙を使いながら、あーでもないこーでもないと組み合わせを考えていくのは非常に大変で時間がかかります。
しかし、数理最適化とコンピューターを用いれば、大量に存在する組み合わせを自動で計算して、それぞれの問題について成果を最大にする最適な組み合わせが何なのかを明らかにしてくれるのです。
さらに言うと、3つの問題全てを1つの数理最適化で解く、ということも可能です。
つまり、誰に何をどのくらい提供するのか、それはどういう順序で作るのか、という組み合わせを同時に考慮しながら、最もコスパの良いおせちのおかずの組み合わせを明らかにする、ということもできちゃうのです。
もちろん、扱う範囲や組み合わせの種類が増えれば増えるほど、数理最適化を適用するための知識・技術のハードルはグッと高くなります。
しかしそれでも、途方も無いように見える組み合わせパターンがある中、数理最適化の技術は、どのような組み合わせが最適なのかを人知を超えて計算し、自動で結果を出してくれる非常に強力な技術だと言えるでしょう。
ビジネスの成果に直結する「数理最適化」
さて、おせちの話はこれくらいにして、数理最適化の技術がビジネスでどのように活用できるのかについてお話しましょう。
数理最適が活かせるものとして、よく挙げられるのが下記のような例です。
- 製造業において、必要な供給量を満たしつつ、在庫管理や輸送のコストを最も少なくするために、どの商品を、どのくらいの量、どの工場で、どの順序で生産するのが望ましいかかという組み合わせを日々自動で計算する。
- 看護師やコールセンター等のスタッフのシフト調整にあたって、法令を遵守したうえで、最低必要人数の担保や、メンバのスキル、希望する休日なども考慮に入れた上で、最も人件費がかからないシフトを自動作成する。
- 商品を小売店まで届ける運送業において、店舗ごとに定められた入庫日時を守りつつ、入庫に必要な時間や渋滞等加味して、数多くある店舗をどういった順序でめぐるのが最も短時間ですむのか、という日々のトラックごとの巡る順番を自動計算する。
こういった例の他にも、「様々な制約下、最も成果が上がるための組み合わせを考える」場面であれば、現場/経営問わず、調達・生産・物流・販売に至るまで幅広く活用できるのが数理最適化の技術です。
活用できるビジネスシーンは、幾多もあるでしょう。
そもそも、数ある制約条件のもと、今ある資源を活用してより高い成果を目指していくことが経営の側面の1つであることを考えると、ビジネスと数理最適化の親和性が高いのもうなずけると思います。
「数理最適化」を活用するために必要な条件
最後に、数理最適化を使うために必要な条件について、まとめておこうと思います。
- 達成したい成果を、”測れるもの”として厳格に定義する必要がある。
「全体的なぁ、コスパを〜、爆上がりできたら激ageぇ♡」みたいな、ふわふわした目的では数理最適化は実現できません。
「輸送費コストを最小」「在庫コストを最小」「稼働率を最大」のように、何を成果とするのかを厳格に定義する必要があります。
また、定義した成果が本当に達成したいものなのか、ということをしっかり検討・決定して進めていく必要があります。(よくよく考えたら達成したい成果が間違っていた、という例はよくあります。)
- 制約事項を数値や式で表現する必要がある。
材料費や輸送費、保管費、上代などすでに金額という数値になっているものはわかりやすいのですが、数理最適化では数値化が難しいものを制約事項としたい場合があります。
例えば、スタッフのシフト表の自動作成を実施するのであれば、「スタッフのスキル」を数値で表現する必要があります。
また、工場での商品生産順を策定するのであれば、ラインごとに各商品製造に掛かる時間が数値でわかっている必要があります。
- 制約事項は全て洗い出す必要がある。
数理最適化では、人間が考えたら「こんなの当たり前だよね、わざわざ言わなくてもわかるよね」といったような事柄も制約として洗い出す必要があります。 - 最適化の範囲が広くなり、制約が複雑になると、計算処理に莫大な時間が掛かって現実的な時間内で解けないことがある。
- 数値を用いた厳密な制約式を作れたとしても、それらの制約を満たす最適化の実施が不可能なことがある。
単純な例を挙げると、「原材料費の底値が500円の商品を最低5つ作る」ことと、「商品5つの原材料コストを2000円以内に収める」ことは両立できません。
この例は非常に単純なのでわかりやすいですが、複雑な制約下だと思わぬところで制約が矛盾して最適化の実施が不可能になるということもあります。
また、ビジネス側の課題として
- ある部署の中で最適な解が出たとしても、他の部署とのつながりをみたら全然最適じゃなかったりする
- 「数理最適化」の心得があるデータサイエンティストが必要
と言った様に、ビジネスの一部だけを最適化しても、効果が限定的だったり、数式を立てて、その結果を運用に載せるためには高い専門性が必要だったりします。
しかし、これらの条件を満たすことが出来れば、ビジネスの工程を、これまでの経験と勘をはるかに超えた生産性の高いものに、置き換えることが可能です。
かっこでは、数理最適化でみなさんの挑戦を応援します。
その問題が最適化で解けるテーマなのか、数式を立てられる条件が揃っているか、判断するレベルから、ビジネスへの実装まで、一貫して、かっこのデータサイエンスではご相談に乗っております。
ぜひ、お問い合わせください。