精密などんぶり勘定 – ソルバーに配車を組ませる

精密などんぶり勘定とは

経験と勘で行っていた見積もりを、実績データとの照合で継続的に補正し、人や日によるばらつきを小さくする手法です。補正には機械学習などを使います。

どんぶり勘定なのは、細かいところは丸めて、結果が変わるところだけを見るからです。

精密なのは、人間と違って、過去との答え合わせを自動で続けるからです。人は昨日の外れを忘れたり、たまたま当たった日だけを覚えていたりします。ソフトウェアは毎日の実績を全部同じ重さで覚えていて、ずれた分だけ次の日の見込みを直します。

配車を自動で組む「ソルバー」は、魔法の箱でもAIでもありません。やっていることは、条件を満たす組合せを並べて、点数の良い順にランキングすることです。

ソルバーに渡すもの

守る条件:車に積める台数、1台に混載できるお店の数、届けなければいけない締め切り。

点数の付け方:コストは、車両費・走った距離の分・ドライバーの拘束時間の分を足したものです。安く済ませたいのか、早く届けたいのか。何を重視するかは、人が決めます。

返ってくるもの:点数の良い順に並んだ配車の組合せ。一番上を使うか、2番目を使うかも、人が選べます。

50店舗の配車を、見切りながら選ぶ

倉庫から50のお店に配送します。お店ごとに、届けるカゴ車の台数が違います。車は2t・4t・10tの3種類で、1台に混載できるのは最大3店舗まで。全部のお店に、締め切りまでに届けなければいけません。

–
全部調べた場合の組合せの数
–
候補にしたルート(近いお店どうしだけ)
–
組み直して比べた回数

50店舗では、組合せが多すぎて全部は調べられません。そこで、近いお店どうしの組み方だけを候補にして、点数の良さそうなルートから順に選んで配車を組みます。これを何百回も、少しずつ順番を変えて組み直し、一番点数の良かったものを残します。勝ち目のない組み方は、最初から候補に入れていません。

上位3つの配車です。押すと地図が切り替わります。

何を重視するかで、一番が入れ替わる

「コスト」にすると、大きい車にまとめて台数を減らす配車が上に来ます。「早く届ける」にすると、小さい車を何台も出して、それぞれ近いお店だけを回る配車が上に来ます。条件も組合せも同じなのに、点数の付け方を変えるだけで一番が変わります。

ソルバーにとって、どちらが正しいということはありません。運賃を抑えたい日もあれば、締め切りに余裕を持たせたい日もあります。それを決めるのは、配車担当の人です。

点数(バランス)= コスト + 最後のお店に着くまでの時間 × 1分あたり100円

バランスでは、遅く着くほど1分あたり100円の損、とみなして、コストと時間を一つの点数にまとめています。この「1分あたりいくら」を決めるのも人です。

お店が増えると、全部は調べられない

6店舗なら、組合せは1万通りくらいなので、全部調べて並べられます。ところが、お店が増えると組合せは一気に増えます。混載は3店舗まで、車は3種類として数えると、こうなります。

10店舗を超えたあたりで、全部調べるのは現実的でなくなります。実際のソルバーは、「この組み方は締め切りに間に合わない」「この方向はもうこれ以上安くならない」と分かった時点で、その先を見切って探します。全部は調べないけれど、一番いい答えか、それにかなり近い答えにたどり着けます。

ソルバーが外すのは、入れた数字が外れたときだけ

ソルバーは、渡された条件と数字の中では、ほぼ間違えません。外れるのは、そもそも渡した数字が外れていたときです。お店のカゴ車が5台のはずが7台だった、という日は、どんなにいいソルバーでも、組んだ配車は崩れます。

だから、ソルバーの前に、カゴ車が何台になるかを当てることが大事になります。そちらの話は、「オリコンにブロックを詰めてみる」と「混ぜた飲み物の中身を当てる」で扱っています。

このページの計算は、考え方を説明するためにかなり単純にしています。実際の配車では、道路の混み具合、荷降ろしの時間、車の空き状況なども条件に入ります。原則としては、こういう組み方で配車を推測しています。