[最適化問題のすゝめ:第1部]と[最適化問題のすゝめ:第2部]の記事は既にご覧いただけましたでしょうか。想像していたより実社会における適用範囲が広いのではないかという可能性を感じていただけたと思います。
一般的に数理最適化問題を作成し、問題解決に至るまでは以下のようなステップを踏むことが理想となります。一番最後のステップまで行くと最初に戻り、繰り返すことで、よりよく社会へと馴染む最適化問題へと変化することが可能です。
今回は上記4つのうち、1つ目の「現実問題の情報整理・収集する」に着目し、著者が個人的に好きなスケジュール問題に絡めて説明することにします(他3つについては別記事「[最適化問題のすゝめ:第1部] 数理最適化とは?種類や特徴を解説 」や「第2部] 数理最適化の問題を解いて理解を深めよう 」にて説明しています)。
本記事を通して、モデル化や定式化までの道のりの第一歩となる現実問題の情報整理・収集をどのようにしていば良いかを知ってもらえれば幸いです。
- Contents -
みなさんは、そもそもスケジューリング問題にどのようなものがあるかご存知でしょうか。
ご覧の通り、対象となる主人公にはヒトや機械などさまざまです。
以下では、このうちのいくつかをピックアップしてどのようなものがあるか、詳しく紹介します。
シフトスケジューリングは、一定期間のシフトを作成する問題のことをいいます。
数理最適化業界ではよく割当問題(月曜X時に一人シフトを割り当てするという意味で割当という単語をつかって表現する)と呼ばれることもあります。
ここで目的とされることは、以下のようなものがあります。
また、目的関数を設けず、組合せ(人員とシフト)を探すためだけに用いることも可能です。ただし、問題を考える際の注意点があり、例えば以下が考えられます。
ナース スケジューリング問題はシフトスケジュール問題の一部として割り当てられる場合もありますが、このジャンルにおいて盛んに研究されているテーマの一つです。
ポイントとしては、特に患者さん・生命に関わるお仕事なので、人数、人員同士の相性や人員の健康状態などといった制約は特に気にする必要があるというところです。
それでは、ここからは本記事の本題である「現実問題の情報整理・収集」をどのようにすれば良いかについて紹介していきます。
まずはどのような問題になりそうなのかを下記例を用いて整理します。
勤務者でチームやグループを組むことでできれば、数理最適化問題のモデルとして起こす際にチームでの集合を定義する必要があります。また、新人には指導者が必ず必要であれば、そのチームの中に新人がいる場合はベテランは少なくとも一人いれるなどの対応(制約)ができそうです。
条件として考えたいことがあればあるほど、一般的には数理最適化問題は解くことが困難な問題へと近づく可能性があります(制約の種類にもよる)。そのため、制約として順位をつけておくことをおすすめします。そうすることで、問題の難易度をコントロールできる可能性があります(絶対守るべき制約が守れないことに最大のペナルティがかかるようにし、そのペナルティを最小にする目的の問題にするなどといった対応)。
次に目的としたいことを以下の例のように、一つ決めてみます。
最後に制約を考えてみます。この際、絶対守るべき制約となるべく守りたい制約にわけることが可能ならチャレンジしてみてもいいかもしれません。
どうでしょうか、意外と情報として収集すること・考えておくべきことの量の多さに圧倒されませんか?
ここまでのような作業ができてようやく、数式などを用いて定式化することが見えてきます。ここからは、だんだんとハードルが高くなってきます。筆者の個人的な意見ですが、定式化をすんなり行えるようになるには、かなりの訓練が必要です。情報整理ができたら、まずは弊社のようなプロに相談して定式化できそうか依頼するのも一つの手ではないかと思います。(お問い合わせフォームよりお気軽にお問い合わせください)
スケジューリングを行うといっても、数理最適化を用いる以外に、GA(遺伝的アルゴリズム)やSA(アニーリング)を用いることもあります。今回は「はじめに」で紹介した4つステップのうち、1つ目を取り上げて説明しました。残り3つの要素について詳しく知りたい場合には是非「[最適化問題のすゝめ:第1部] 数理最適化とは?種類や特徴を解説 」や「第2部] 数理最適化の問題を解いて理解を深めよう 」をご覧ください。
次回更新もお楽しみに!
執筆者:山本