AIによる予測と数理最適化は、業務の中で異なる役割を担えます。例えば需要予測は「どれだけ必要になりそうか」を見積もり、数理最適化は「限られた設備や人員をどう配分するか」を条件に沿って考えます。
AIは広い概念であり、数理最適化をその一部として扱う場合もあります。本稿では、予測する段階と、制約の下で意思決定する段階を分けて説明します。
決めるもの・目的・制約を整理する
GoogleのOR-Toolsは、制約を満たす組合せの探索や、制約の下での目的関数の最適化を扱います。Google: About OR-Tools
業務へ当てはめると、次の三つを明確にします。
| 要素 | 配分問題での例 |
|---|---|
| 決めるもの | 誰をどの作業へ割り当てるか |
| 目的 | 合計の作業時間を小さくする |
| 制約 | 各作業に一人、各人は一作業まで |
「効率を上げたい」だけでは、何を良くするかが定まりません。時間、費用、負荷の偏りなど、評価するものを具体化します。また、必ず守る条件と、できれば満たしたい希望を区別します。
二人と二つの作業で考える
以下は説明用の仮の所要時間です。実在する担当者の実績ではありません。AさんとBさんが、作業Xと作業Yを一つずつ担当するとします。
| 担当者 | 作業X | 作業Y |
|---|---|---|
| Aさん | 2時間 | 3時間 |
| Bさん | 4時間 | 8時間 |
それぞれの作業を最も短時間でできる人に選ぶと、両方ともAさんになります。しかし「各人は一作業まで」という制約を満たしません。
条件を満たす配分は二つです。AさんがX、BさんがYなら合計10時間。AさんがY、BさんがXなら合計7時間です。この仮例の目的と制約では後者を選べます。
これは合計作業時間の比較であり、並行して終えるまでの経過時間を最小にする問題とは別です。何を最適にしたいかで、比較する値も変わります。
予測は入力であり、配分の答えではない
作業量や所要時間を機械学習で予測し、その値を配分の計算へ使う構成が考えられます。ただし、予測値が決まっても、勤務可能な時間、設備の上限、優先する仕事などの条件は別に必要です。
予測が外れた場合の影響も確認します。少し作業時間が増えただけで計画が成立しなくなるなら、余裕の持たせ方や再計算する条件を検討します。需要の見積りそのものは、AIによる需要予測を参照してください。
解がない場合と、まだ見つからない場合を分ける
先ほどの例で、Bさんが作業XもYも担当できないという条件を加えると、二人が一作業ずつ受け持つ配分は成立しません。条件の入力誤りなのか、本当に体制を変える必要があるのかを調べます。
一方、大きな問題では、制限時間までに答えを見つけられない場合もあります。GoogleのCP-SATは、最適解、実行可能解、実行不可能と証明された状態、未判定などを区別します。Google: CP-SAT return values
実行可能な案が得られたことを、最良と証明されたことと混同しないでください。未判定も「絶対に解がない」とは扱えません。
現場の条件を表現できているか確かめる
計算上の良い案でも、必要な資格、引継ぎ、利用者の都合などがモデルへ入っていなければ、そのまま実行できないかもしれません。目的関数で評価していない負担が、一部に集中することも考えます。
最初は、小さな範囲で人が確認できる配分を作ります。条件を一つ変えたときに結果がどう変わるか、現行の案と比べて何が良くなり何が悪くなるかを確認してください。計算結果を採用する責任と、例外時の見直し方法まで含めて業務へ組み込みます。