TECH BLOG

サムネイル_v5_正方形.png

2026.07.27

数理最適化、実案件では何を考えているのか  ―消防訓練スケジュール平滑化の裏側―

1. はじめに  数理最適化を扱った教材は、世の中に数多くあります。多くは、「こ...

投稿者:アグー

1. はじめに

 数理最適化を扱った教材は、世の中に数多くあります。多くは、「こういう考え方でモデルを組みました」というコンセプトや理論の紹介が中心です。一方で、現場では何に悩み、どう試行錯誤したのかという「仕事の中身」まで書かれているものは少ないように感じています。 

 そこで今回は、弊社グループが展開するサテライトオフィスサービス「ZXY(ジザイ)」の消防訓練スケジュールを題材に、実装のリアルな部分を紹介したいと思います。

2. 背景

 全国に340拠点以上を展開し、各拠点では消防法に基づき年1~2回の消防訓練が義務付けられており、その都度スタッフが現地で訓練を実施する必要があります。課題は実施時期の偏りで、月によって実施数に大きな差があり、特定の月にスタッフの負担が集中していました。

  そこで本プロジェクトでは、この偏りを解消し、毎月の実施数をできるだけ均等にすることを目指しました。ただし、現場には「この拠点は毎年この月に固定」「前回の訓練から一定期間あける」といった多くの制約があり、それらすべてを満たしたスケジュールを作成する必要がありました。 

3. ハード制約とソフト制約の見極め 

 この案件で一番悩んだのは、業務側の要望を「どの枠組みで定式化するか」でした。数理最適化では、ルールの表現方法が大きく2つあります。

  • ハード制約:必ず満たすべき条件。制約式として定式化し、1つでも充足できなければ「解なし」となる。
  • ソフト制約:違反を許容する代わりに、違反量に応じたペナルティ(コスト)を目的関数に加える条件。

 準備として、拠点 i が月 m に訓練を実施するとき1をとる0-1変数 x(i, m) を定義します。

math1_決定変数.png

例えば「年1回実施する拠点は、上半期(4〜9月)に実施したい」という制約を考えます。 

 ハード制約にするなら、上期の実施回数をちょうど1回に固定します。

math2_ハード制約.png

 ソフト制約にするなら、下期に実施した場合のコストを目的関数に加えます。

画像3.png

 


図1_ハード制約vsソフト制約.pngどちらでも表現できそうに見えます。では、何を基準に選べばよいのでしょうか。

 私が判断軸に置いたのは、「最終的に誰がこのツールを運用するのか」です。モデル開発者が毎年ツールを回していては、依頼者の作業を代行しただけで、本当の意味で業務は効率化できません。依頼者自身が運用できて初めて効率化と言えます。その前提に立つと、要望を忠実に表現できるかだけでなく、運用時にエラーを起こしにくいことも重要になります。そこで、避けるべき2つの罠がありました。 

  1つ目は、ハード制約の積みすぎです。「上期に必ず実施」「前年度と同じ月に必ず実施」などを積み重ねると、制約同士が衝突し、「解なし」が返ることがあります。モデル開発者が手元で回すなら原因を調べて直せますが、事業部の運用ではツールが「動かない箱」になってしまいます。 

  2つ目は、ソフト制約の乱用です。ソフト制約が増えると、今度は「どの制約をどれだけ重視するか」という重みの設計問題が発生します。今回の目的関数は、次の形になりました。

math4_目的関数 (1).png

  • c時期:年1回拠点が上期を外れた場合のペナルティ
    (10月=100、11〜1月=1000、2〜3月=10000)
  • c移動:前年度と実施月がズレた場合のペナルティ
    (年1回拠点:±1ヶ月=10、それ以上=100 / 年2回拠点:±1ヶ月=100、それ以上=10000)

 注目してほしいのは、重みの「比率」です。例えば「年2回拠点を前年度から大きく動かす(10000)」は、「年1回拠点を大きく動かす(100)」の100倍のペナルティです。これはソルバーに「調整するなら年1回拠点を優先して動かす」という優先順位を与えています。 つまり重みの値そのものではなく、ペナルティ同士の相対的な大小関係こそが、モデルの振る舞いを決めるのです。

図2_ペナルティ比率と優先順位.png

  では、この重みは誰が決めるのでしょうか。

  モデル開発者には業務の肌感覚がなく、判断できません。かといって依頼者に「これはハード制約ですか?ソフト制約ですか?」と聞いてもこたえられません。結局必要だったのは、地道なヒアリングでした。「すべての希望が叶わないとしたら、なにを優先しますか?」といった質問を重ね、依頼者の暗黙の優先順位を重みへ落とし込みました。

  ヒアリングで引き出した依頼者の優先順位をもとに、ルールをハード制約・ソフト制約・前処理へ適切に振り分けます。この振り分けの見極めと、重みに暗黙知を写し取る作業が、数理最適化を実務に落とし込む上でのキモだと感じています。

4. 結果とおわりに

 最適化の導入により、月ごとの実施数の偏りは大幅に縮小し、ほぼ均等なスケジュールを実現できました。従来は人手で膨大な時間をかけていた作業も、いまでは数分で完了します。

  今回の案件を通して感じたのは、数理最適化の難しさは、アルゴリズムや数学そのものではなく、依頼者のルールをどう定式化するかの見極め──ハード制約にするのか、ソフト制約として重みをつけるのか、それとも前処理で切って人の判断に残すのか。そして、その判断材料となる暗黙知を、ヒアリングを通じて引き出すことです。

  モデルの美しさよりも、現場で回り続けること。数理最適化の実務は、思っていたよりずっと泥臭く、だからこそ面白い仕事でした。