ロジスティックネットワーク設計(ケーススタディ 1)
ABC分析
注意:このケーススタディは,幾つかの企業のコンサルティングから抽出したもので,特定の企業を想定したものではない.データや登場人物は,架空のものである.
あなたは新たに結成されたマーケティングチームに配属された新人社員だ.新しい上司から,需要と製品の膨大なデータを渡されて,分析するようにと命令された.さて,何から始めれば良いだろうか?
まずは,データの概要を調べることから始めよう. ここではSCMOPTのランダムデータ生成関数を用いる.そのため,データ概要は以下のように既知である.
- 1000個の顧客と100個の製品があり,1年分の需要が与えられている. 顧客と製品はパレート分布にしたがい,製品の方が偏った分布になっている.
- 全部で36500000の需要データがあり, 年次と週次の周期がある.
- 欠損値はない.
本当の問題は欠損値や入力ミスがあることが前提だが,そういったものの前処理はそれほど難しくない.たとえば,GoogleのOpenRefineを使えば無料である程度のことができる.
顧客数1000,製品数100というのはそれほど大規模な問題例ではない.普通のメーカーのサブブランド程度の規模感だ.それでも(たった)1年分の需要データで, 36500000 件にもなる.csvファイルに保存しても,Excelでは開くことさえ出来ない.
サプライ・チェイン分析は,最初にこのような大きな問題例を,本質を損なわずかつ取り扱いが容易になるようにすることから始めるのが良い.
通常の(実際の)需要データは,パレートの法則(全体の数値の大部分は、全体を構成するうちの一部の要素が生み出しているという理論。別名、80:20の法則、もう1つの別名、ばらつきの法則)に従う.
これを利用して取り扱う製品数を減らすための方法が,ABC分析である.
SCMOPTに含まれる基本分析システムSCBASには,ABC分析をするための関数が準備されているので,それを使うことにする. 製品についてはAカテゴリーに8割の需要をもつものを入れたいので,閾値に 0.8, 0.1, 0.1 と入力する.
すると以下のような製品のABC分析の結果が表示される.
ABC分析の結果
集約
カテゴリーAに含まれる25個の製品だけで全体の80%以上をカバーしていることが分かる. 以降では,これらの製品に絞って解析を行う.
一方,顧客数1000は解析するには多すぎるので,地点の近さによって集約を行う.需要の集約を行い,顧客の需要量の合計を地点の重みとして,重み付きのクラスタリングを行う.
集約する点の数を色々変えてkmean法でクラスタリングを行う.評価値(各地点から集約地点への重み付き距離の和)が変化しなくなる集約数を求める.それには,エルボー(肘)法を用いる.
後で集約した地点を候補地点として実際の倉庫を決めるので,曲げた肘に相当する場所(施設数が30あたり)ではなく,少し大きめの50くらいが良い.ここでは,集約数を50としてクラスタリングを行う.
集約のための方法としては,kmeans法を使うべきではない.kmeans法は高速であるためエルボー法と相性が良いが,クラスタリングは重み付き重心を求めているにすぎない.重心は距離の自乗なので,本来の重み付き距離の和を評価値にした場合とは異なった地点に収束する.重み付き直線(大圏)距離の和を最小にするための方法として反復Weiszfeld法と呼ばれる解法がある.これは不動点アルゴリズムを利用したもので,kmeans法より遅いが,より正確な地点を算出する.もう一つの方法として,階層的クラスタリングを用いたものがある.この方法は直線(大圏)距離を用いるのではなく,実際の道路距離を用いることができる.ここでは,地図から計算した本当の移動時間を尺度としてクラスタリングを行うことにする.
その結果を地図上に描画すると以下のようになる.ピンクの点がオリジナルの顧客で,赤い点が集約された新しい顧客群(クラスター)である.点の大きさが需要量の大きさを表している.点の大きさが需要量の大きさを表している. これをもとに顧客と需要データの集約を行う.
ネットワーク生成
倉庫と工場データを追加した後で,ネットワークを生成して図示してみる. 直線距離ではなく,道路距離を用いる. 距離と移動時間の計算には,OSRM (Open Streetmap Routing Machine) を使う. あまり遠い点同士は使わないので,工場と倉庫間は1万km,倉庫と顧客間は300km以下の経路だけを生成する.
また,工場・倉庫間は20トントラック,倉庫・顧客間は4トントラックを使用していると仮定し,1kmあたりの費用をそれぞれ20円,10円,1時間あたりの費用を両方とも8000円と仮定して,1kgあたりの輸送費用を計算する.
最適化を行うためのネットワークは以下のようになる.オレンジ色の点が工場で,赤色が顧客である.簡単のため,ここでは倉庫を立地するための候補地点は顧客の位置と同じと仮定している.
最適化
集約されたデータをもとにロジスティックネットワーク設計問題を解く.単一ソース制約の有無で,得られるネットワークが変わる. 単一ソース制約がつくと,顧客に割り当てられる倉庫が1つになる.これによって,複数の倉庫から配送されることによるオペレーションの煩雑さが避けられる. 単一ソース制約がないと,複数の倉庫から配送されるが,それによって全体の費用は安くなる. 会社の方針によって決める必要があるが,ここでは両方で解いて比較してみよう.使用している数理最適化ソルバーはフリーのものだが,集約やネットワークの生成に工夫をしてあるので,十分に高速に求解できる.
単一ソース制約ありの場合:
total cost= 13710019100.0, Wall Time = 8.55 s
cost | value | |
---|---|---|
0 | transportation (plant to dc) | 4.120540e+09 |
1 | delivey (dc to customer) | 4.479342e+09 |
2 | dc fixed | 3.582394e+09 |
3 | dc variable | 1.527743e+09 |
4 | infeasible penalty | 0.000000e+00 |
単一ソース制約なしの場合:
total cost= 12863794500.0, Wall Time =1 min 5s
cost | value | |
---|---|---|
0 | transportation (plant to dc) | 4.373986e+09 |
1 | delivey (dc to customer) | 3.379672e+09 |
2 | dc fixed | 3.582394e+09 |
3 | dc variable | 1.527743e+09 |
4 | infeasible penalty | 0.000000e+00 |
この場合は,現場のオペレーションの容易さを考慮して,単一ソース制約ありを採用することにする.得られたネットワークは以下のようになる.オレンジ色の点が工場で,赤色が開設した倉庫で,青色が顧客である.
続きは...
最適化をしただけで終わりではない.まずは,色々なケースを考えて最適化を行い,意思決定の補助とすることが重要だ.これはWhat If分析と呼ばれる.たとえば,今後,人経費の高騰により倉庫での積替え費用が上昇することが見込まれるときに,どのような結果になるかをシミュレーションすることができる.また,自動運転車の導入により,遠距離のトラック輸送が容易になるシナリオも考えられる.そのような場合に,どのように対処すればよいのか,もしくは今からどのような準備をしておけば良いのかを最適化を部品として検討できるのである.
他のモデルとの連携も重要な課題である.
ロジスティックネットワーク設計モデルは,配送費用を単純な輸送費用として近似的に扱っている.実際には,トラックは複数の顧客を巡回輸送する.これには,別の最適化モデルである配送計画問題を解く必要がある.SCMOPTには,METRO IVという高性能の配送最適化ソルバーが含まれているので,それとデータのやり取りをして,より精度の高い最適化モデルを構築できる.
また,上のロジスティックネットワーク設計モデルには,在庫の概念が含まれていなかった.(倉庫の容量制約としては考慮されていたが,費用としては輸送費用や積替え費用に含めた「線形な」費用として扱っていた.)実際には,在庫費用は非線形な費用であり,それを直接,ネットワーク設計モデルに組み込むことは難しい.幸い,SCMOPTには幾つかの在庫最適化モジュールが含まれている.それらとデータを介してやり取りをすることによって,在庫費用も含めた最適化が可能になるのである.
他にも生産計画との融合やリスクを考慮した最適化など様々なモデルがSCMOPTには準備されている.それらと相互にデータをやり取りしながら,全体最適化を目指すのである.
長くなったので,続きは別のケースとしてご紹介していこうと思います.本ケースで用いたのは,サプライ・チェイン基本分析システム SCBAS (Supply Chain Basic Analytics System) とロジスティックネットワーク設計システム MELOS (MEta Logistic Optimization System)です.両方ともサプライ・チェイン最適化システムSCMOPT に含まれています.
SCMOPTデモ&トライアルはこちら