プロローグ:紀元前9世紀、女王ディドと牛1頭の皮
いまから約3000年前、現在のチュニジア北部の海岸に、フェニキアからの逃亡者を率いた一人の女性が上陸しました。彼女の名はディド。後にカルタゴを建国する伝説の女王です(Wikipedia: Isoperimetric inequality、Univ. of Illinois: The Problem of Queen Dido)。
上陸したディドは地元の王と土地の取引をします。王は意地悪く、こう告げました。
「牛1頭の皮で囲める分の土地なら、お前にやろう」
普通に考えれば、せいぜい畳数枚分の土地しか得られません。しかしディドは違いました。彼女は牛の皮を細い細い紐に切り裂き、それを繋いでひと続きの長い紐にしたのです。そしてその紐を海岸線に沿って半円形に置き、内側の土地をすべて手に入れました。これがカルタゴの始まりです。
この逸話、実は人類最古の最適化問題として知られています。「限られた資源(皮)で目的(面積)を最大化する」という構造は、3000年経った現代の経営課題とまったく同じ。なぜディドは半円を選んだのか? 本当にそれが最大なのか? ── これは数学的に「等周問題(isoperimetric problem)」と呼ばれ、紀元前2世紀のゼノドロスが「同じ周長なら円が最大面積」を経験則として示し、19世紀のシュタイナーがようやく厳密に証明しました。
試しに、皮の長さを L=100 として、いくつかの囲い方の面積を比べてみます。

細長く囲うと面積はわずか225。バランスを取って正方形寄りにすると600。「最適な長方形」(縦L/4 × 横L/2)でも1250。それに対して半円は1592 ── 同じ皮の長さで、最も賢い長方形よりもさらに約27%広い土地が手に入ります。ディドは紀元前9世紀に、この「半円が最強」という直感を持っていたのです。
私たちの仕事も、突き詰めればディドと同じ問いの繰り返しです。「限られたリソース(人・時間・お金)で、何かを最大化(または最小化)したい」。本記事ではこの3000年続く問いを「数理最適化」という現代の道具で解いてみます。実際にコードを書いて回した結果も載せますので、ぜひそのインパクトを感じてみてください。
数理最適化とは何か:ディドの問題を分解する
最近よく聞く「AI」と、本記事で扱う数理最適化は別物です。両者の違いを最初に押さえます。
両者は競合ではなく補完関係です。「需要をAIで予測 → その予測に基づいて在庫量を最適化」のように、セットで使うのが本来の姿です。
数理最適化のすべての問題は、3つの要素に分解できます。
この3要素を書き出せれば、後はソルバー(最適化計算エンジン)が自動で最適解を見つけてくれます。今回はGoogle製のオープンソース最適化エンジン「OR-Tools」を使い、自分のMacでコードを実行した結果をそのまま載せます。
ケース①:看護師のシフト表を70ミリ秒で組む
シフト作成は、多くの現場が「ベテランが半日かけて手作業で組む」業務の代表格です。看護師、コールセンター、飲食、警備…。組合せが膨大で、休み希望や夜勤の偏りまで気にすると人間にはなかなか辛い作業です。
問題設定
これを OR-Tools の制約プログラミング(CP-SAT)で解きました。

結果:70ミリ秒で最適解が出ました(M3 Max MacBook Pro実行)。8人×14日×4シフトの組合せは理論上 4^112 ≒ 10^67 通りありますが、ソルバーは制約を活用して効率的に絞り込みます。
夜勤回数を見ると、最大2回・最小1回で差は1回まで圧縮されています。手作業で組むと特定の人に夜勤が偏りがちですが、ソルバーは公平性を数式として追求できます。
現実のシフトはもっと制約が多い(個人の希望、有給、スキルレベル、ペアワーク…)ですが、それも「制約条件」の形で追加するだけで対応できます。
ケース②:配送ルートを最適化、走行距離を約半分に
配送業の利益を圧迫する一番の要因は走行距離(=燃料費・人件費・時間)です。ヤマト運輸のCO₂削減目標、Amazonの配送効率、Uber Eatsの配達順…どれもVehicle Routing Problem(VRP)という古典的な数理最適化問題に行き着きます。
問題設定
「最適化なし」(拠点から各方面へ順番に出発)と「OR-ToolsのVRPソルバーで最適化」を比較しました。

結果は劇的でした。最適化なし199.2 km → 最適化後 107.1 km、削減率46.2%。同じ15件を配送するのに、走行距離は半分以下になります。実際の配送業ではこの差がそのまま燃料費・人件費・CO₂排出量に跳ね返ります。
この計算もMacで5秒。配送先が100箇所、200箇所と増えても、同じ仕組みでスケールします。
ケース③:パン屋の発注量を、勘から数理に切り替える
3つ目は在庫最適化。「明日の食パンを何個仕入れるか」── 多すぎれば廃棄、少なすぎれば品切れ。これはNewsvendor model(新聞売子モデル)という古典的問題で、解析的に最適発注量が求まります。
問題設定(パン屋を想定)
臨界比率(critical fractile)= (販売価格 − 仕入価格) / 販売価格 = 0.6 から、最適発注量は Q* = 86 個。これを Monte Carlo シミュレーション(5万回試行)で検証し、4つの戦略を比べました。

興味深いのは、「需要平均そのまま(Q=80)」でも30日累計 28.5万円、「最適化(Q*=86)」だと28.8万円と、その差は月2,331円。年間でも28,000円程度です。
「思ったほど差がない」と感じたかもしれません。それこそが大事な気付きです。
実際の店舗では商品数が数十〜数百あります。1商品で年28,000円の差でも、100商品なら年280万円。最適化は静かに、しかし確実に効いてきます。
AIと最適化の使い分け:機械学習はパートナー
ここまで読むと、AI(機械学習)と数理最適化の役割分担が見えてきます。
つまり、AIで予測 → 最適化で意思決定という二段構えが本来の姿です。AIだけでも、最適化だけでも片手落ち。両方が組み合わさって、初めて経営の現場で機能します。
「AIで全部解決する」というブームの裏側で、実は数理最適化のほうが地味に大きな利益を生んでいる、というのは業界では昔から知られた話です。
中小企業でも、もう手の届く時代
「うちみたいな会社には関係ない話でしょ?」と思われるかもしれません。実際、10年前まではそう言って良かったのです。最適化ソルバーは年間数百万円のライセンス料が必要で、専門家を雇う体力のある大企業向けの世界でした。
でも、今は違います。
最適化に必要なのは、「自分の業務を3要素(決定変数・制約・目的)に分解する力」だけです。コーディングはAIが手伝ってくれます。むしろ自社の業務フローを言語化できるかどうかが鍵、というのは前回のハーネスエンジニアリングの記事でも触れた通りです。
おわりに:3000年前のディドと、いまのあなた
ディドが牛の皮を切り裂いたとき、彼女は数理最適化という言葉を知らなかったはずです。それでも「限られた資源を最大化する」という直感が、後の世にカルタゴを生み、地中海貿易の中心地を作り上げました。
今あなたの会社のシフト表を組んでいるベテラン、配送ルートを朝決めている管理者、明日の発注量を悩んでいる店長 ── 彼らが日々向き合っているのは、本質的にディドと同じ問題です。違いはただ一つ、その答えを
それだけです。そして3000年経った今、後者の入口は無料で開かれているのです。
Kurasakuでは、シフト・配送・在庫・スケジューリングなど、業務に潜む最適化テーマの洗い出しから、実際の運用ツールの構築まで支援しています。「うちのこの業務、最適化できないかな?」というアイデアがあれば、一度お気軽にご相談ください。
技術ブログ一覧へ戻る
