【ここまでできる!】Webアプリを使って物流ネットワークを最適化する方法

2024年9月17日

Photo by NASA on Unsplash

◆仕事や勉強の息抜きに。。。

多くの場合はカスタマイズが必要

前回の記事【これは便利!】適正発注を行った場合のトータル調達物流コストを計算するアプリで、適正発注を行う前提でトータル調達物流コストをシミュレーションできるWebアプリを公開しました。

 

> 適正発注を行った場合のトータル物流コストを計算するアプリ

※デフォルトで入っている80アイテム分のデータで毎回シミュレーションを行うため、画面更新に多少時間がかかります。

 

でもこのアプリは万能ではありません。

万能アプリを作るには様々なパターンに対応する必要があるため、コードがとても複雑になってしまうからです。

大して使わない機能のために重たいプログラムになって、計算時間がかかってしまうのは勿体ないですからね。

 

一方で、このアプリはPythonで書いていますので、機能追加するのは比較的簡単です。

管理人はこのアプリを使って(実際にはExcel VBAを使っていた時代が長い)多くの物流ネットワークの最適化プロジェクトに関わってきましたが、その度に異なるカスタマイズを行ってきました。

本記事ではよくあるカスタマイズについてQ&A方式で紹介します。

きっとあなたの会社の物流ネットワーク最適化に活かせる内容もあると思います。

 

本アプリのデフォルト機能

発注方式

本アプリでは適正発注量を決めるのに定期発注方式を使っています。

発注先ごとに輸送を同じ日にまとめられるため、よく用いられます。

しかし、すべての発注先に対して同じ日に発注を行うのは業務負荷の点で現実的ではないため、発注サイクルが同じであっても発注日をズラせるようにしています。

発注量には最低発注単位が設定されていることがありますが、それには対応していません。

 

輸送コストの計算方法

発注先からの輸送は貨物の容積m3に応じたトラックのサイズが自動で選択されるようになっています。

重量勝ち貨物の場合は積載容積に達していなくても、重量制限に引っかかり積載容量を積めない場合がありますが、そこは考慮していません。

トラック/航空/海上貨物で容積重量の計算方法が違うのはなぜ?

トラックサイズは5種類まで設定できます。

料金体系は貸切料金のみで、混載料金には対応していません。

輸送モードはトラック輸送のみで、海上や航空輸送には対応していません。

 

倉庫コストの計算方法

倉庫での入庫コストは貨物容積m3当たりの単価を設定するようにしています。

また倉庫での保管コストは貨物容積m3当たり、1日当たりの単価を設定するようにしています。

 

欠品コストの計算方法

欠品の場合は当該商品を販売していたら得られたであろう粗利益額を欠品コストとしています。

 

よくあるカスタマイズ要望

定量発注方式にも対応できるの?

できます。

定量発注方式Min-Max発注方式の他、定期発注と定量発注を組み合わせたハイブリッド発注方式も実装できます。

またすべての商品アイテムに同じ発注方式を適用するのではなく、商品グループに分けてそれぞれに異なる発注方式を適用することも可能です。

商品グループの分け方は発注先ごとの他、ABC分類で分けることも可能です。

 

商品の重要度に応じた発注方式を適用できるの?

できます。

商品の出荷量を基準とするABC分類の他、出荷頻度や商品売上高、商品粗利益を基準とするABC分類をして、各分類に応じた発注方式を適用することが可能です。

また出荷量+出荷頻度や商品売上高+出荷量など、複数の指標に基づくマルチレベルのABC分類により発注方式を変えることも可能です。

 

需要予測ソフトを使った発注方式にも対応できるの?

できます。

本アプリでは需要予測ソフトを使わない前提で、需要実績データの一部を訓練データとして平均と標準偏差を計算し、そこから安全在庫を計算しています。

需要予測ソフトを使っている会社の場合は、各アイテムの需要予測値と実績値を収集していれば、そこから安全在庫を計算できます。

今は需要予測ソフトを使っていないけれども、使った場合のシミュレーションを行いたいという場合には、代表的な需要予測アルゴリズムであるSARIMAモデルを実装することも可能です。

【SCM分析7】需要予測による在庫削減効果を適正在庫シミュレーション

 

出荷量が極端に少ない商品でも安全在庫理論を使えるの?

使えます。

世の中で売っている商品の中で、いわゆるA商品と呼ばれるような売れ筋商品は割合で言うとほんの一握りしかありません。

大多数のBC商品に対して使えないのでは安全在庫理論の存在意義がありませんからね。

とはいえBC商品、中でもC商品の需要分布は正規分布にはならないかもしれません。

そのような場合はポアソン分布で近似することで安全在庫理論を適用可能です。

Pythoninventorizeライブラリでもポアソン分布で在庫シミュレーションする関数がいくつか用意されており、それをアプリに実装することができます。

またほとんどの日の需要がゼロであっても、1週間単位や1ヶ月単位で見るとノンゼロの需要量になることがほとんどです。

そのような場合は1週間や1ヶ月単位でまとめた需要量の平均や標準偏差を使えば、正規分布やポアソン分布で近似できるようになります。

間欠需要を正規分布になるようにして在庫理論を使えるようにするための工夫

 

最低発注単位を反映させることもできるの?

できます。

アルゴリズムは簡単で、Excel VBAだとこのように実装できます。

【サンプル付き】最低発注ロットを考慮した在庫シミュレーションの作り方 by Excel VBA

Pythonでも同様に実装できます。

 

容積勝ちと重量勝ちの貨物が混在していても輸送コストは計算はできるの?

できます。

商品マスタでアイテム1個当たりの実重量、輸送マスタでトラック別の最大積載重量を設定すれば可能です。

1輸送当たりの貨物容積m3と貨物重量Kgを計算して、それぞれトラック当たりの最大積載容積と最大積載重量と比較し、厳しい方の条件で判断します。

【線形計画法②】シンプレックス法でトラックの積載率が最大になる条件を求めてみた

 

トラックサイズは6種類以上設定できるの?

できます。

無制限にするとコードが長くなるため5種類以内に限定していますが、上限を増やすことは簡単です。

 

混載輸送にも対応できるの?

できます。

特積みのように貨物容積や重量によってステップ関数的に輸送料金が決まるケースと、1台のトラックで複数の拠点で荷積みする共同輸送のケースがありますが、いずれのケースも実装可能です。

特積みのケースは料金テーブルをマスタデータとして予め読み込むことにより、貸切料金と同様のアルゴリズムで輸送料金を計算できます。

共同物流のケースでは料金体系によりますが、例えば一台の貸切料金を貨物容積で按分する場合にはm3がわかっているため簡単に計算できます。

 

販売物流コスト(顧客への輸送コスト)も計算できるの?

ケースバイケースです。

扱う貨物が生産財で顧客への輸送が大ロットで、貸切輸送か共同輸送の場合には調達輸送と同様のアルゴリズムで計算可能です。

しかし扱う貨物が消費財などで顧客への輸送が小ロットである場合には、配車ルートを配車ソフトや職人技で決めることがあります。

このような場合には配車アルゴリズムをアプリに組み込むことは困難です。

 

海上輸送や航空輸送にも対応できるの?

できます。

これは国際調達の最適化を図るためには必須ですが対応できます。

海上輸送費や航空輸送費には通関費用港湾費用もついてきますが、いずれも①物量に関係しない固定料金、②物量に比例して増加する変動料金、③物量に応じてステップ状に増加する変動料金3つに分類することができます。

これらをアルゴリズムとして実装する方法については、下記の記事を参照して下さい。

物量が少ない時のFCLとLCLはどっちが安い?アプリでトータル物流コストをシミュレーション

 

三期制の保管料金にも対応できるの?

できます。

三期制や週単位制へ対応するアルゴリズムについては、下記の記事を参照して下さい。

【物流担当者必見!】三期制の保管料はこんなに損!?アプリで簡単シミュレーション

 

欠品が絶対に許されない場合のシミュレーションもできるの?

ケースバイケースです。

扱う貨物が生産財で顧客の内示情報によって生産し、安全在庫も顧客の指示で水準を決められている場合は、平均や標準偏差から安全在庫を求めるやり方が使えないため本アプリは適していません。

一方、自ら在庫水準を決められるけれども欠品が許されない場合には、輸送モードを変更して緊急対応をすることがあります。

例えば、通常は海上輸送で対応しているけれども、緊急時にはコストはかかるが航空輸送するようなケースです。

この場合は緊急対応を始める在庫水準を決めておき、在庫がその水準を下回ったら緊急発注をして短いリードタイムで航空運賃を適用するようなアルゴリズムを組んでおくことによりシミュレーションで再現できます。

 

> 適正発注を行った場合のトータル物流コストを計算するアプリ

※デフォルトで入っている80アイテム分のデータで毎回シミュレーションを行うため、画面更新に多少時間がかかります。