サプライチェーン・シミュレーション(EV 2023 OUTLOOKベース)

本記事は、以前に投稿した「機械学習の機能を付加した在庫管理(PSI)計画」と「PSI計画機能のグローバル・サプライチェーンへの拡張」に関連する追加の記事です。

なお、ここでご紹介しているPSI計画のpythonソースコードは、以下のgithubに公開しています。

githubのパッケージは下記の3つに分かれています。
 ●初期データ設定用(ini) サプライチェーンの各拠点データの初期設定
 ●PSI計画の連携処理用(main) PSI計画のサプライチェーン連携処理

 ●サプライチェーンのダイアグラム図作成
※ロット・サイズ=1と設定して、約33万件の最終需要地の需要(販売)情報をサプライチェーンの拠点毎に製品一つ一つを積上方式でPSI計画した処理時間はノートPC(AMD3020e  windows11)で約30分でした。

GitHub - Yasushi-Osugi/PySI_V0R2SC_main_P: PySi is , Inventory Planning and financial analyse for Global Supply Chain PySi is , Inventory Planning and financial analyse for Global github.com  
GitHub - Yasushi-Osugi/PySI_V0R2SC_ini_P: initial setting for PySI_V0R2SC_main_P. that is, creating node_all directory and setting 3 initial PSI files. initial setting for PySI_V0R2SC_main_P. that is, creating nod github.com  

 

 本記事で定義したサプライチェーンの全体を把握するために、マザープラントから最終需要地までの需給関係をダイアグラム図で示します。

リンク先のURLを開くとダイアグラム図のノード ( サプライチェーン拠点 ) の情報表示、移動など対話操作ができます。

https://yasushi-osugi.github.io/PySI_V0R2SC_diagram_P/

 


 このPSI計画の簡易デモは、一般には、PoC: Proof of Concept ( コンセプトの検証 ) と呼ばれる検証用ソフトに近い位置づけですが、
計画対象となる製品を絞り込むことで、実務に適用することも可能な機能レベルにあると思います。

入力ファイルとして、
●年間の月別の最終需要 最終消費地
●計画マスター 製品・拠点別
を整備することで、サプライチェーン上の最終需要拠点から供給元マザープラントまでの需要と供給の連鎖を処理して、各拠点毎の在庫、売上、利益を年間52週でシミュレーションします。

最終需要の予測と計画マスターの設定は、一人で行なうことは難しいと思いますが、生産物流部門、経理部門、事業企画部において、グローバル・サプライチェーンの発注業務・在庫管理業務、物流業務、事業計画の立案など、関連する計画機能に詳しい方々に、計画パラメータの設定をアンケート方式でお願いすることで、比較的容易に短期間で計画マスターを整備できると思います。

ここで、機械学習のアプローチを在庫管理(PSI)計画に応用する上でポイントになるのは、
累計値でPSI計画の状態をとらえる
●発注量は単位ロットを積み上げることで経営分析・評価し、発注量を確定する
という点が特徴になります。「図A 機械学習のために累計値でPSI計画状態を見る」参照。

また、PSI計画の単位ロットをグローバル・サプライチェンのPSI計画間で共通の計画単位(Common Planning Unit)としてデータ共有することで、サプライチェーンの階層構造とPSI計画間の整合性を実装しました。「図B サプライチェーンの最終需要と整合したマザープラントPSI計画イメージ」参照。

図A 機械学習のために累計値でPSI計画状態を見る
図B サプライチェーンの最終需要と整合したマザープラントPSI計画イメージ



前回までの記事で、「最終消費地の需要予測データを入力として、サプライチェーン全体のPSI計画を連携処理」するために単純なバッチ処理を行こなっていた部分を、今回は、サプライチェーンの階層構造を最終消費地から順に探索する処理に変更しています。

機能面からの主な変化点は下記の3点です。
1. サプライチェーンの階層を取り扱うツリー構造モデルへの拡張
2. 定期発注在庫管理(PSI)計画の計画パラメータの整理
3. 売上利益シミュレーション・グラフの追加

1. 想定するグローバル・サプライチェーンの全体像

まず最初に、本記事で取り上げたグローバル・サプライチェーンの全体像をご説明したいと思います。
今回、グローバル・サプライチェーンの問題を取り扱うにあたっては、対象商品として電気自動車(以下EV)を想定しています。
EVは、これからグローバルに普及する商品なので、従来からのサプライチェーン計画の様々な事例を参考にしながら、まったく新しいサプライチェーン計画を作成する試みになります。

1-1. 最終消費地の需要情報
電気自動車の需要予測(EV 2022 OUTLOOK)を使ってサプライチェーン全体のPSI計画を作成

EVの2023年のグローバル需要予測(IEA 2023 outlook)のレポート(注1)をベースに、世界各国の最終消費地の需要データを仮に作成して、各国の最終消費地から日本のマザープラントまでのPSI計画連携を処理しています。

最終消費地の需要情報については、IEAからEVの2023年月別の予測値が提供されているので、マーケットシェア10%と仮に置いて、月バケットから週バケット ( ISO Week No)への簡易的な変換処理を行って各国の需要情報を作成しています。

(注1) Global EV Outlook 2022 – Analysis - IEA

Global EV Outlook 2022 – Analysis - IEA Global EV Outlook 2022 - Analysis and key findings. A report www.iea.org  
表1. 電気自動車の国別需要予測(IEAレポート)をもとに2023年の需要計画を作成


1-2. サプライチェーンの階層構造と処理手順
サプライチェーンの階層構造は、日本をマザープラントとして、グローバル全体で90拠点を結ぶサプライチェーン・ネットワークを定義しています。
サプライチェーンの需給(親子)関係は、親ノード、子ノードとして、PSI計画パラメータ(profile)に登録して表現します。ノード毎のprofileを読み込むと「図1. サプライチェーンの階層構造」のようにツリー構造が内部的に生成されます。
PSI計画profileで親子ノードの関係を正しく設定した後、サプライチェーン・ネットワーク中の各ノード、事業拠点の事業特性に注目することで、サプライチェーンのモデル定義を進めます。

図1. サプライチェーンの階層構造

ここでのポイントは、サプライチェーン上の需要情報の流れをどのように表現するか、最終消費地から域内の中間在庫を経てマザープラントまで、どのように需要情報を伝播させ、世界各国の需要情報を集計するか、その処理手順にあります。

「図2. グローバル・サプライチェーンのためのツリー構造の探索手順」にあるとおり、
情報処理の観点からは、ツリー構造で表現されたサプライチェーンに対して、葉ノード(=最終消費地)から根ノード(=マザープラント)までのツリーを「深さ優先」の「帰りがけ順(postorder)」で探索することで実装することができます。

サプライチェーンの実務の観点からは、各事業所間での発注オーダーPOの整合性をサプライチェーン全体でどのように整合させるかがポイントになりますが、
ここでは供給元の出荷ヤードに1週間滞留している仕掛在庫の状態で、各仕向地への在庫引当が行われるという業務オペレーションを想定しています。
つまり、最終需要地からの要求量、出荷ポジションを1週間単位サマリーして、1週間単位の総量レベルで需給量が一致することで、整合性を保っています。
したがって、発注オーダーPO単位の在庫引当の詳細はここでは取り扱っておりませんが、実行系の業務システムにおいて、週次POの効率的な出荷管理、出荷ヤードでの在庫引当が別途行われていることを想定しています。
自動車であれば、港の出荷ヤードに完成車が滞留している間に、仕向地の船と引当てられるというイメージです。

再度、グローバル・サプライチェーンのPSI計画連携の内部処理に話しを戻しますと、
ツリー構造の中間ノード(=中間在庫拠点)を含め、サプライチェーンのツリーを構成する各ノードに対応するPSI計画を配置して、最終消費地の需要情報(S)から要求供給量(P)を順次生成して、葉ノード、中間ノード、根ノードへと需要情報を帰りがけ順(postorder)に伝播・集計していくことで、中間在庫拠点を経由して、マザープラントまでのすべて需要情報を生成しながら、PSI計画を処理することができます。
この結果、マザープラントの在庫出荷計画が生成されます。

図2. グローバル・サプライチェーンのためのツリー構造の探索手順

2. PSI計画の機能拡張 変化点

1. サプライチェーンの多階層を取り扱うツリー構造モデルへの拡張

ここでは、サプライチェーンの多階層のPSI計画の定義について見ていきます。
例えば、日本=>ハンブルグ=>ミュンヘン=>ミュンヘン直販チャネル
といった、中間に2つの在庫拠点を持つ3階層のPSI計画であれば、PSI計画プロファイルに親子関係を、JPN-HAM  HAM-MUC  MUC-MUC-Directというように定義します。
PSI計画は、初期処理でサプライチェーンのツリー構造を「帰りがけ順」postorderで探索して、最終消費地からマザープラントまでのPSI連携を処理します。アウトプットは、それぞれの事業拠点の在庫変化、売上利益の変化を1年間52週でExcelグラフ用に出力します。
「図3. サプライチェーン上の3階層 4事業拠点のPSI計画と売上利益グラフ」参照

このサプライチェーンの階層構造の定義は、需給関係の親子ノードの登録を正しく整合性を持って登録すれば、何階層でも比較的簡単に定義できます。

図3. サプライチェーン上の3階層 4事業拠点のPSI計画と売上利益グラフ

もう一つの留意点として、各事業拠点の在庫方針をどのように設定するかが問題になります。
これは各事業拠点に対応するPSI計画の目的関数、機械学習でいう報酬rewardを、売上優先、利益優先、利益率優先など、後述のPSI計画のパラメータ設定で切り替えることで在庫方針を設定できます。

今回のケースでは、マザープラントと中間在庫は売上優先で、最終消費地は利益率優先で在庫方針を設定することにより、前線の最終消費に適正在庫を配置して、供給サイドは在庫を薄くするというサプライチェーンのイメージを想定しています。
例えば、域内の中間在庫で季節変動を吸収したいという場合には、中間在庫の在庫日数を高めに設定します。

2. 在庫管理(PSI)計画の計画パラメータの整理

 

 前回までの記事でご紹介したグローバルPSI計画の機能を拡張して、PSI計画の基本パラメータとして、
①在庫管理の条件テーブル(ロット・サイズ、リードタイムなど)
②拠点事業所間の需給関係(サプライチェーン・ツリーの親子関係定義)
③評価方法の切替えフラグ(売上、利益、利益率)
を計画パラメータ・ファイルにセットし、
PSI計画の入力となる最終消費地の月別の需要予測を(月別需要を週別需要に変換処理して)与えるとサプライチェーン全体のPSI計画を連携処理できるように修正しました。

 

PSI計画パラメータの分類を、時間制約、計画エンジン、コスト構成、物流条件に整理。
「図4. PSI計画パラメータ(Profileの定義例)」参照

例えば、リードタイムなどの各計画パラメータの設定は、profileで指定できるようにしました。
同様に、計画エンジンは、ML: 機械学習機能、FS: 固定シーケンスの2種類があります。特に、ML: 機械学習機能については、以前の記事で紹介した3つの評価指標、①利益率、➁売上、➂利益をprofileで切り替え指定できます。

なお、今後の機能拡張として、グローバル・サプライチェーンで問題になる、為替、関税、HSコード、移転価格などの要素を取り扱えるように計画パラメータのみprofileを拡張していますが、対応するPSI計画の内部処理は実装しておりません。

図4. PSI計画パラメータ(Profileの定義例)

さらに、「図5. サプライチェーン上の事業拠点(node)毎のPSI計画パラメータを一括定義」に示すとおり、サプライチェーン上の事業拠点(node)毎のPSI計画パラメータを一括定義することができます。
一括定義することで、サプライチェーン全体を俯瞰しながら各事業拠点の特性を意識したPSI計画条件設定ができます。
また、対象製品の売上利益シミュレーションをサプライチェーン全体で可視化できるようになるので、経営判断に有効な情報を提供できます。

ところで、各事業拠点のPSI計画パラメータを一括定義を実際に行う際には、
事業会社の事業責任者、物流担当者、経理担当者といった各事業部門の有識者が分担しながら計画パラメータを登録することで、比較的容易に設定できるのではないでしょうか。

図5. サプライチェーン上の事業拠点(node)毎のPSI計画パラメータを一括定義

3 売上利益シミュレーション・グラフの追加

いままでの在庫管理PSIグラフに加えて、売上利益の推移を週次でグラフ化することで、サプライチェーンの各事業拠点毎の売上、利益、利益率の変化を俯瞰的に把握することができます。
「図6. 売上・利益・利益率の年間推移グラフ」参照。

図6. 売上・利益・利益率の年間推移グラフ


 ここまで、サプライチェーンに対応するためのPSI計画の機能拡張、およびグローバル・サプライチェーンのシミュレーションについてご紹介させていただきました。

 

 3. いままでの経緯と今後の課題

 一連の記事を投稿することになった最初の動機は、ステイホームの2年間、囲碁や将棋のAIの仕組みを調べているうちに、だんだん自分でも何か簡単な機械学習のアプリを作ってみたいと思うようになり、経営コンサルタント時代の経験から、以下のような取り組み仮説が頭をよぎるようになりました。
機械学習のアプローチを在庫管理(PSI)計画に応用することで、経営分析の評価手法で機械学習の評価関数を定義し、PSI計画を作成することができる
●グローバル・サプライチェーンの在庫管理(PSI計画)をモデル化することで、サプライチェーン全体の在庫、売上・利益を可視化し、経営の意思決定をサポートすることができる

これらの仮説を検証するために、機械学習の機能を付加したPSI計画の簡易デモをpythonで実装してみることに至りました。

 

今後の課題としては、サプライチェーン全体を経営視点で俯瞰すると、
( OR : オペレーションズ・リサーチの世界ではあまりにも一般的な問題ですが) 以下のような問題を、PSI計画+機械学習のアプローチで解いてみるとどうなるのか、興味深いところです。
1. 事業拠点の施設配置問題の最適化 ( 現地オペレーション・コスト、関税 )
2. マザープラントからの供給配分問題 ( 利益率と特定市場優先 )

 これらの問題を解決するために、サプライチェーン全体を対象に機械学習を行うアプローチが考えられます。
例えば、
サプライチェーン全体を経営評価する評価関数(利益率、顧客満足度、廃棄率など)を用意する
 => これは拠点毎に出ている売上・利益の評価をサマリーして求められる
サプライチェーンの拠点配置や供給ルート、供給先、供給量を変更する操作ACTIONを用意する
 => これは様々な状況対応力が必要となるので、まずは、
   簡単なサプライチェーンのネットワーク変更操作などを用意して、
   どのように学習が進むか実験してみる

 

このアプローチは、いままでの延長としてpythonで実装することができると思います。
pythonで実装する上での取り組みイメージとしては、今回のPSI計画連携の上位機能として、もう一つ別の機械学習の機能でサプライチェーン計画全体をラップすることで、問題を解決できるのではないかと思います。

 ただ問題は、一回の処理サイクル(行動Action-状態更新-評価Eval)の処理時間が分単位になっている点です。
 グローバル・オペレーションにおいて、PSI計画をロット単位に一つ一つ積み上げる計算処理は、最初にも述べたとおり、自動車であれば一台一台を逐次PSI計画で連動して、グローバル90拠点、33万台分のグローバル需給を解くのに、ノートPCで30分かかっていました。機械学習を繰り返して解を求める上で、できる限り処理時間を短く抑えたいところです。

 最も簡単な解決方法は、
1. ロット・サイズを大きくして、PSI計画で取り扱うデータ量を少なくする
 =>輸送ロット・サイズ=1単位を、例えば6単位にするなど
2. サプライチェーンの対象範囲を狭める
    => グローバル90拠点ではなく、例えば、欧州域内30拠点を対象とするなど
3. 処理マシンをノートPCから、より高性能なものに変更する
といった方法で、処理時間の短縮を図ることができます。

このようなアプローチで、サプライチェーン全体を対象に機械学習の機能を付加したサプライチェーン計画を実装していくことができると思います。

 

2022年7月
大杉 泰司