まとめ◆仕事や勉強の息抜きに。倉庫レイアウトにより保管効率は大きく異なる倉庫では先入れ先出しが基本です。食品など賞味期限のある商品では必須です。そのために、パレットラックで保管してあると便利です。すべてのパレットにフォークリフトでアクセスできるからです。パレットを床に置いて保管してある場合、下図のようにすべてのパレットにアクセスできる通路を設けるのは、場所の制約上難しいことがあります。そのため下図のように、パレットへのアクセスを制限する代わりに、パレットを詰めて置く運用がなされることがあります。この時、同じ列のパレット5枚分は、同一ロット(同じ入庫日)の商品しか置けません。手前の3パレット分のスペースが空いているとしても、奥に古い日付の商品が置いてあると、そこには新しいロットの商品を置けません。先入れ先出しができなくなってしまうからです。従って、このように詰めて置いても保管効率が悪くなり、結局各列に通路を設ける方がいいケースも考えられます。ロットの大きさにより、どちらの置き方にするのが良いかが左右されそうです。ところが、これを解析的に求めることはできません。出荷量が確率的に変動するため、式で解くことはできないのです。するか?こういう場合に役に立つのが、適正在庫シミュレーションです。そこでまず前回Excelで自作した適正在庫シミュレーションソフトに新しい機能を追加します。追加する機能は、入荷ロットごとの在庫数を求める機能と、保管ロケーション数を求める機能です。そのソフトを使って上記2通りのレイアウトでの保管効率をシミュレーションしてみます。この記事の最後でサンプルファイルを無料でダウンロードできます。シミュレーションソフトに機能を追加する在庫を入荷ロットで分ける前回作成した在庫シミュレーションソフトでは、毎日の倉庫内在庫数は算出しますが、それを入荷ロットごとには分けていませんでした。VBAまずは、これを入荷ロット別の在庫に分けます。倉庫内在庫は次式のように計算されています。倉庫内在庫=前日の倉庫内在庫-売上+入荷量4,855=3,819-1,264+2,300クリックすると拡大します(このシミュレーションでは、リードタイムが3日となっているため、2/18に発注した2,300個は2/21に入荷しています)しかし、この4,855個はすべて同じ入荷ロットではありません。先入れ先出しがされているとすれば、3,819-1,264=2,555個は古いロット、2,300個が新しいロットです。このような在庫のロット分けをエクセル上でするには、次のように行います。入荷ごとに倉庫内在庫を分ける(ロット1在庫、ロット2在庫、、、)一番古いロットの在庫から出荷数を差し引く一番古いロットの在庫がゼロになったら、次に古い在庫から差し引く言葉ではイメージが湧きにくいので、図で説明します。クリックすると拡大します上図では、初期在庫の814個で2/24までの出荷は賄えていますが、2/25の出荷201個は賄えません。そのため、次に古い在庫(ロット2在庫)の150個からも賄います。そのため、ロット3在庫からも賄うことによって、やっと出荷数量を充足することができました。ロット4在庫は手つかずのままです。以上のような計算はExcel上でやると、どうしても手作業が必要になってしまいますが、VBAを使うと自動化できます。詳細は割愛しますが、主な追加ロジックは次の通りです。初期ロットの在庫数を入荷量の隣の列に書き込む新しい在庫が入荷する度に、新しく隣の列に入荷量を書き込む。その時、カウンターで入荷回数を数えることにより、何列目に書き入れるかを制御する古いロット在庫から出荷量を差し引いていき、ゼロになったら、次に古いロット在庫から差し引く。この場合もカウンターで、どのロット在庫まで消費したかを数えることにより、差し引くロット在庫を制御する以上のロジックで、倉庫内在庫を入荷ロットごとに分けることが可能になります。パレットロケーション数を計算する次に、パレットロケーション(保管ロケーション)の数を計算するロジックを追加します。これは2つのケースを考えます。すべてのパレットにアクセスできる通路を設けるケースパレット間のスペースなしで押し込み、列の先頭からのみパレットを出し入れするケースまず、1パレットに載る個数Aと、ケース2で1列当たりのパレット数Bを変数として入力できるようにしておきます。すると、ケース1では、ロット在庫ごとに在庫数量をAで割り、それを切り上げ、最後にすべてのロット在庫について足し合わせれば求まります。例)ロット1在庫:173個ロット2在庫:300個ロット3在庫:100個1パレット当たりの個数:50個の場合、ロット1在庫のパレット数:4パレットロット2在庫のパレット数:6パレットロット3在庫のパレット数:2パレット合計:12パレットケース2では、ロット在庫ごとに在庫数量をA×Bで割り、それを切り上げ、最後にすべてのロット在庫について足し合わせ、それをB倍すれば求まります。VBAで計算できます。VBAのプログラムを使って、実際にシミュレーションをしてみましょう。1列当たり5パレット置く場合まずは、下記のデータでシミュレーションしてみます。日々の出荷数の平均が110個、標準偏差が69個です。詰めて置くケース2の場合の、1列当たりのパレット数は5です。シミュレーションの結果は下図の通りです。ケース1(すべてのパレットにアクセス可能な通路を設ける)の方が、パレットロケーション数が少なくなっているのが分かります。平均を計算すると65%になります。これは、ケース2の場合に歯抜けになっている列が多いことを意味します。列の手前側が空いているが、入荷ロットが違うために、その列に置けないのです。この傾向は、日々の入出荷ボリュームに対して、1列当たりのパレットロケーションが多い場合に顕著になることが予想できます。次に1列当たりのパレットロケーション数を5から3に変えてシミュレーションしてみると、下図のようになります。比率を計算してみると、ケース1のパレットロケーション数は、ケース2に比べて80%になりました。次に、最低発注ロットを50個から200個に変えてシミュレーションしてみましょう。差が大きくなりました。比率を計算してみると72%になります。最低発注ロットが1列に収まる数量より大きくなることによって、ケース2の保管効率が下がったことが分かります。このように、入出庫の数量、1列当たりのパレットロケーション数、最低発注ロットによって、ケース2の保管効率は大きく影響を受けることが分かります。繰り返しになりますが、これを数式から解析的に計算することはできません。シミュレーションにより、確率的にしか求められません。在庫シミュレーションは、このようなケースにも役立つのです。まとめいかがでしたでしょうか?今回のファイルも無料でダウンロードできますので、ご自由にお使い下さい。フリーダウンロードはこちら以上、在庫シミュレーションによって、ケース2の場合の保管効率を求めましたが、これが絶対的な結果というわけではありません。過去のある時点の実績データでシミュレーションしたにすぎないからです。未来の出荷数は過去データとは当然変わりますので、また違う結果になる可能性が高いのです。このシミュレーションは無駄なのかと言うと、そうとも言えません。未来の出荷傾向は、過去実績と近いものになると考えるのが自然です。今回のシミュレーションで使った出荷データの平均は110、標準偏差は69でした。未来の出荷データも、日々の出荷数量はいろいろ変動するとしても、平均と標準偏差は似たようなものになる可能性が高いでしょう。すると、平均110、標準偏差69となるような乱数データを何回も発生させて、そのデータで何十回、何百回とシミュレーションを行ってはどうかというアイデアが出てきます。その何回もおこなったシミュレーション結果の平均を求めれば、不確定な未来を予測することができるのではないかと考えるのです。これを行うのがモンテカルロシミュレーションです。今回から数回に渡って、物流センターのレイアウト設計のやり方を解説していきます。...◆キーワードで探すイチローの安打数がポアソン分布にならず正規分布になる理由を考察してみた【マルコフ連鎖】標準体重の人が太りすぎになるまで平均何年かかる?待ち行列理論を応用して10分カットが儲かる仕組みを解明してみた。計算グラフモンテカルロ積分クラスタリングカーネルトリックPythonSimPy(離散事象シミュレーション)inventorize(在庫シミュレーション)SARIMAX(時系列解析)investpy(財務データ取得)PyPDF2(PDF操作)仕事や勉強の合間の息抜きに管理人ロジギークロジスティクス業界で6か国に勤務。