精密などんぶり勘定 – オリコンにブロックを詰めてみる

精密などんぶり勘定とは

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

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

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

同じブロックでも、入れ方で入る量は倍ちがう

まずは全部同じ大きさのブロックで比べます。ブロックの大きさは切り替えられます。①は組み立てるようにギチギチに積んだ場合、②はバラーっと流し込んだ場合です。オリコンは同じ50Lです。

① ギチギチに積む

向きを揃えて、隙間なく積み上げる

–%

② バラーっと流し込む

上から流し込んで、自然に落ち着いたところ

–%

同じブロック、同じ箱でも、入れ方だけで入る量が倍近く変わります。倉庫で毎日起きているのは、②のほうです。

②の箱は「とんとんする」を押すと、揺すって隙間を詰め、空いた分にブロックを足します。何回か揺すると6割近くまで上がりますが、そこで止まります。ギチギチに組み立てた①には、どうやっても届きません。「流し直す」を押すたびに、流し込み方は毎回ランダムに変わります。最初の数字はばらつきますが、とんとんした後は、どの回も同じあたりに集まります。

※このシミュレーションでは、ブロックは必ずまっすぐ置かれ、斜めにはなりません。実際に流し込むと、ブロックは斜めに引っかかったり、もたれかかったりして、その下にもっと大きな隙間ができます。なので、流し込んだだけの充填率は、実際にはここよりもう少し低くなるはずです。とんとんすると斜めのブロックは倒れて落ち着くので、揺すった後の数字はあまり変わりません。斜めまで再現するにはブロック同士がぶつかる物理計算が必要で、ブラウザでは重くなりすぎるため、ここでは省いています。

丁寧に詰めても、計算の数には収まらない

今度は流し込まずに、丁寧に詰めます。荷物は大きさも形もバラバラな商品で、①と②でまったく同じ、量はオリコン2個ちょっと分です。①はコンピュータが全部並べ替えて詰めた理想、②は人が向きを揃えて寄せながら詰めた場合です。

① コンピュータが理想どおりに詰める

全部の荷物を先に並べて、大きい順に一番低い場所へ(現実にはできない)

–個

② 人がいつもどおりに詰める

ピッキングで来た順に。向きを揃えて、壁や隣の箱に寄せる。入らなければ次のオリコンを開け、前の箱の隙間には小物を入れる

–個

何回やっても、計算より少なくはならない

箱、ボトルや缶のような円筒、平たい商品を混ぜた荷物を100回ずつ作り、人が向きを揃えて丁寧に詰めた場合のオリコン数を、商品マスタの容積から計算した数と比べました。

疑わしいと思ったら、計算が当たりやすくなるように条件を自分で選んでください。条件を変えると、100回からやり直します。

計算のオリコン数 = 商品の容積の合計 ÷(オリコン1個の容積 × 1個に詰まると見込む割合)を切り上げ

–回
計算より少ない数で済んだ回数
–回
計算より多く必要だった回数

詰め方を理想にしても、商品をきれいな箱だけにしても、1個に詰まると見込む割合を80〜100%にしている限り、計算より少なく済むことはまずありません。ズレは必ず同じ向きに出ます。だから溢れは起きても、トラックが余る事件は起きません。

見込む割合を60〜70%まで下げると、ようやく計算が当たり始めます。つまり、計算を当てたければ、見込む割合を現実の詰まり具合に合わせるしかありません。そして、その数字は実績からしか分かりません。

頑張って詰めても、充填率はほとんど上がらない

人は箱の向きを揃えたり、壁や隣の箱に寄せたりと、最低限の工夫はしています。そのうえで、さらに「置き場所を何か所見比べてから置くか」を増やすと、充填率がどう変わるかを測りました。見比べる場所を倍にすれば、作業時間もほぼ倍になります。

向きを揃えて寄せるだけで、充填率は6割前後まで行きます。ところが、そこから先は見比べる場所を128倍にしても、ほとんど変わりません。来た順に詰める限り、全部並べ替えた理想を超えることはできません。現場が5〜6割に落ち着くのは、手を抜いているからではなく、作業時間と詰まり具合がちょうど釣り合うところだからです。

同じ大きさの球を容器に流し込んだときの詰まり具合は、粉や粒の研究でよく調べられていて、そっと落ち着かせると55%前後、手で詰めても60%前後、揺すって固めても64%前後です。形も大きさもバラバラな商品なら、これより上がることはまずありません。

色ごとに分けると、箱はもっと増える

倉庫では、売り場や区分ごとにオリコンを分けます。少ししかない色でも、オリコンは1つ開けることになります。ここでは毎回、中身の合計をオリコン10個分にそろえて、それを6色にばらばらの割合で分けています。

–個分
商品の容積を全部足すと、オリコン何個分か(隙間ゼロで詰められた場合)
–個
実際に使ったオリコン

商品マスタのサイズがズレていても、オリコンの数はほぼ変わらない

色ごとに8種類ずつ、合計48種類のブロック商品を作ります。商品マスタには、本当のサイズから縦・横・高さがそれぞれランダムにズレた値が入っているとします(円筒は直径と高さ)。ズレは商品ごとに決まっていて、100日のあいだは同じです。マスタに間違った値が入りっぱなしの状態です。どの商品がどれだけずれるかは、ボタンを押すたびにランダムに作り直されます。毎日の出荷を100日分作り、本当のサイズで詰めた場合と、マスタのサイズで計算した場合のオリコン数を比べます。

–日
100日のうち、オリコン数がまったく同じだった日
–日
ズレても1個以内だった日

カゴ車でも、効くのは売り場と重さ。サイズのズレはほぼ効かない

ケースのままカゴ車に積む商品は、同じ商品が何ケースも並びます。40種類のケースを6つの売り場に分け、毎日15〜30種類を1〜12ケースずつ出荷する日を100日分作りました。カゴ車は内寸 約78×58×156cm、1台500kgまでです。カゴ車は売り場ごとに分け、人が向きを揃えて積みます。商品マスタのケースサイズ(縦・横・高さそれぞれ)と重さが、ランダムにズレていたらどうなるかを比べます。ズレは商品ごとに決まっていて、100日のあいだは同じです。どの商品がどれだけずれるかは、ボタンを押すたびにランダムに作り直されます。

–日
100日のうち、マスタがズレていてもカゴ車の台数がまったく同じだった日
–日
ズレても1台以内だった日

–台
ケースの容積を足しただけの計算(隙間ゼロ、売り場も重さも無視)
–台
売り場で分けて、500kgで止めて、実際に積んだ台数

ザックリ数学で言うと

ここまでの話は、全部この1本の式で説明できます。

オリコンの数 = 中身の量 ÷ 1個に入る量(余りが出たら1個増やす)

ポイントは「1個に入る量」です。オリコンは50Lですが、人が詰めると隙間ができて、実際に入るのは6割の30Lくらいです。

1. 計算は、いつも少なめに出る
中身が100Lあるとします。「50L全部に入る」と考えると、100 ÷ 50 = 2個です。でも本当に入るのは30Lなので、100 ÷ 30 = 3.3…で、余りが出るから4個になります。入る量を多めに見積もると、答えは必ず少なめに出ます。逆に、計算より少なく済むことはありません。

2. 商品マスタが少しずれていても、ほとんど変わらない
クラス50人のテストの合計点を考えてください。何人かの点を少し多めに、何人かを少し少なめに書き間違えても、合計はほとんど変わりません。多めと少なめが打ち消し合うからです。商品も同じで、1個1個のサイズが1割くらいずれていても、50個足せば、合計のずれは1%くらいになります。

3. それでも数が変わる日は、境目の日だけ
30Lずつ入るオリコンなら、中身が91Lから120Lまでは、どれも4個です。中身が少しずれて100Lが102Lになっても、4個のままです。数が変わるのは、ちょうど120Lのあたり、つまり境目ぎりぎりの日だけです。発注がバラバラなら、そういう日はめったにありません。

ただし、オリコンや車にちょうど収まるように、物流量から逆算して発注量を決めている現場(物流量逆算発注)では話が変わります。中身の量が境目のすぐ手前に集まるので、ちょっとのずれで4個と5個がひっくり返る日が、ぐっと増えます。箱をきっちり使おうと工夫するほど、台数は当てにくくなるわけです。そういう現場ほど、台数を1つに言い切らず、「4個か5個、5個になる確率4割」のように確率で出すことが大事になります。

4. 答え合わせを続けるほど、当たるようになる
「1個に30L」は計算では決められません。でも、毎日の実績から「昨日は中身◯Lでオリコン◯個だった」と答え合わせをすれば、逆算できます。1日分だと、たまたまの分が混じります。何日分も集めると、たまたまの分がならされて、本当の値に近づいていきます。だから、続けるほど当たる確率が上がります。

まとめると、「1個に入る量は、実績で答え合わせして決める」「細かいずれは、足し算と余りの切り上げにまかせる」。この2つだけで、台数が当たる確率は上がっていきます。

逆に使えば、オリコンの数から発注量を決められる

ここまでは「この発注だと、オリコンは何個になるか」を予測する話でした。同じ仕組みを逆向きに使うと、「オリコン◯個に収めるには、どこまで発注できるか」が出せます。

発注量 → オリコンの数(いつもの予測)
オリコンの数 → 発注量(逆算発注)

たとえば、1個に30L入るオリコンで考えます。

  • 中身が118Lなら:オリコンは4個。あと2Lまでなら、4個のまま足せます。
  • 中身が122Lなら:オリコンは5個。でも5個目には2Lしか入っていません。2L分減らせば4個で済みます。逆に、5個目を使うなら、あと28L足しても5個のままです。

発注の画面で「あと何個まで入ります」「これを足すと1個増えます」と出せれば、少しだけはみ出す発注をなくせます。「4t車1台に入る分だけ売ってくれ」という注文にも、溢れない量で答えられます。

ここでも大事なのは確率です。境目ぎりぎりまで攻めると、少しのずれで溢れます。「4個に収まる確率9割の量まで」のように、どこまで攻めるかを選べるようにしておくと、運賃を使い切りつつ、2台目を出す事故を減らせます。

だから、実績で台数が当たる確率を上げる

詰まり具合は、頑張っても上が頭打ちで、下はどこまでも下がります。商品マスタのサイズを正確にしても、この差は埋まりません。それでも予測が大きく外れないのは、細かいブレが箱の段階ごとに丸められるからです。

商品が数個ずれてもオリコンの隙間に入って、箱の数は変わらない
オリコンが1〜2個ずれてもカゴ車の隙間に入って、台数は変わらない
カゴ車が1台ずれても前日に予備を押さえておけば困らない

毎日同じ人が同じように詰めて、台数を決めるのは大物だけ。それを毎日、実績で答え合わせする。これが精密などんぶり勘定です。