グローバル・サプライチェーンの動きを地球儀(secium)の上に可視化する

 本記事は過去に投稿したグローバル・サプライチェーン関連の記事の続きです。

今回は、グローバルサプライチェーン計画を地球儀(secium)の上の製品ロットの動きとして可視化する方法について、ご紹介します。

 サプライチェーン計画データを地球儀(secium)にマッピングするデータ変換の詳細については後述するとして、ここではまず、Global weekly PSI Planの結果が地球儀上にどのように可視化されるか見ていきたいと思います。

 

図1. Global weekly PSI planによる製品ロットの動き(日本出荷~上海・広州着荷)
 
 Global Weekly PSI Plannerで生成された共通ロット単位のサプライチェーン計画は、secium地球儀シミュレータ上に、立方体の箱(=製品ロット)としてアニメーション表示することで、グローバル・サプライチェーンの動きを可視化しています。
 「図1. Global weekly PSI planによる製品ロットの動き(日本出荷~上海・広州着荷)」は、Global PSI Plannerで生成された製品ロットが、画面右上の東京で先行生産する(立方体で表現された製品ロットが積み上がる)ところからスタートして、海上輸送され、上海と広州に着荷した後、消費地の各販売チャネルにおいて、Purchase:購入(黄色)、Inventory:在庫(茶色)、Sales:販売(青色)のビジネス活動が週次で計画遂行される様子を示しています。

  このseciumの地球儀シミュレーションでは、左下にあるclockの設定を「1週間=1秒」としています。
2025年1月~12月の最終需要地(上海、広州)での販売需要(青色の立方体)に対応するために、2ヶ月前の2024年11月から生産拠点(日本)での先行生産(生産=黄色、在庫=茶色の製品ロットの積上げ)がスタートするように計画されている様子がわかります。

 

次に「図2. サプライチェーン上の製品ロットの動き(日本出荷~ハンブルグ経由~ミュンヘン着荷)」では、同様に生産拠点(日本)で先行生産された製品ロットは、ドイツのハンブルグ港に着荷後、フランクフルト、ミュンヘンの最終消費地の販売チャネルにおいて、P:購入着荷、S:販売、I:在庫保管される様子を可視化しています。

図2. サプライチェーン上の製品ロットの動き(日本出荷~ハンブルグ経由~ミュンヘン着荷)

「図3. グローバル・サプライチェーン全体で製品ロットの需給活動が連動」では、地球儀を回して、日本と中国とドイツ間のサプライチェーンの動きを確認することで、グローバル・サプライチェーン全体で製品ロットの需給活動が連動している様子がわかります。

図3. グローバル・サプライチェーン全体で製品ロットの需給活動が連動

注1: 画面キャプチャーした動画ファイル・サイズが大きくアップロードできなかったので、ここでは静止画を貼り付けています。
注2: 本来であれば、海上輸送ルートをプロットして、海上の中継点に輸送中の製品ロットを表示するべきですが、ここでは簡易的に東京とハンブルグの座標の中間点(カザフスタンの辺り)を計算して、製品ロットの移動の様子を表示しています。将来的には、コンテナ船の海上ルートをmarin trafficなどの航行座標情報から取り込みたいと考えています。

サプライチェーン計画から地球儀(secium)へのデータ変換】

 「図4. サプライチェーン計画から地球儀(secium)へのデータ変換方法」はデータ変換処理の概要を示します。ここでのポイントは、座標(経度・緯度)と高度、時間の単位(ISO標準の週番号)をサプライチェーン計画と地球儀(secium)で整合性を確保することです。

図4. サプライチェーン計画から地球儀(secium)へのデータ変換方法

 pythonで開発したGlobal Weekly PSI planの計画結果を可視化する方法について、サプライチェーン全体を俯瞰できる見通しの良い可視化ツールがないか、色々と調べる中で、地球上の座標(経度、緯度)と高度を定義してBOXやLINEを秒単位の時間設定で表示コントロールできるseciumにたどり着きました。
 seciumの地球儀シミュレータの機能は、CZMLという図形描画の簡易言語を持っており、立方体や線に対して、positionパラメータで座標(経度、緯度)と高さを指定して、showパラメータで秒単位の表示、非表示を時間設定することで、様々な図形、ここでは製品ロットに該当する立方体を描画することができます。

 一方、サプライチェーン上の製品ロットについては、各事業拠点の座標(経度・緯度)と、製品ロットが在庫状態の時に何段積みされているか(=在庫の高さを高度としてmで定義)、あるいは海上物流ルート上のどこの座標を搬送中か、といった物理的な位置情報を持っています。
それから、時間の単位情報として、計画開始年のISO WEEKの第1週から始まる週番号の連番YYYYWWWをタイムバケットとして、第何週目に、どこの座標に、製品ロットが存在するかを指定して製品ロットを立方体で描画します。
 ところで、立方体の一辺の長さは、一般的には、約1m前後の梱包された搬送ロットであることが多いと思います。今回のデモでは、地球儀上で見える大きさとするために、サプライチェーン計画で定義したlot_sizeと立方体のサイズが比例するとして、一辺の長さを1,000倍~10,000倍にしてBOX立方体を描画しています。
BOXの高さについても、同様に、一般的には1m前後の梱包ロットが5段積み、7段積みなどとなっていることが多いのですが、secium地球儀上では、例えば1000倍したBOXの高さは、高度1000mの上空に描画されています。

 

 次に、立方体の一辺の長さ=100mとした場合について、どのように描画されるかを示したのが「図5. 製品ロットの立方体の一辺を100mとしてデータ変換した場合」です。
 ここでは、日本からハンブルグ港を経由して、ミュンヘンの在庫拠点に製品ロットが着荷した後、3つの販売チャネル(直接販売、間接販売、ネット販売)に出荷された製品ロットが、それぞれの販売チャネルで購買・販売・在庫のPSI管理が計画されており、それぞれ、P:黄色、S:青色、I:茶色の立方体の製品ロットとして、高さが何段積み(ここでは、1段=100m)になっているかを表現しています。

なお、各販売チャネルの在庫拠点の座標は、サプライチェーン計画の対象となる製品・事業の各拠点の位置を座標登録することになりますが、ここでは特定の事業を意識することを避けるために、世界中の街角にどこにでもある事業店舗のサンプル例として、スターバックスの店舗の位置座標を流用して、座標登録しています。


言い換えれば、スターバックスのような業態の店舗展開をしている事業において、全世界の前線の在庫管理と関連するグローバル・サプライチェーン ( 中間流通の在庫拠点、域内在庫拠点、マザープラントの生産・出荷、基幹素材の供給拠点など)との統合需給の整合性を確保できることが、少なくとも簡易デモのレベルでは、確認できます。

ただ、グローバルサプライチェーンの本番データを使った場合、システムのメモリ制約や演算スピードなど、様々な課題が出てくると思います。

画像
図5. 製品ロットの立方体の一辺を100mとしてデータ変換した場合


 なお、サプライチェーン計画の初期処理で、製品ロットには、最終需要地におけるISO WEEK NO毎にユニークなLOT_IDが付番されています。
さらに、計画されたタイムバケット単位で製品ロットの座標位置が変化することから、seciumのCZMLで定義する図形のID_NAMEは、計画上でユニークな製品ロットとなるように、以下の構成を持ちます。
ID_NAME = 最終需要地のnode_name + 最終需要地での需要発生週 + 計画週

 

以上のように、位置情報positionを座標と高度で対応させ、時間情報をISO WEEK NOで対応させることで、Global Weekly PSI Planが生成した共通ロットのデータを地球儀(secium)のCZML文字列に自動変換することができます。

 今回は、グローバルサプライチェーン計画を地球儀(secium)の上の製品ロットの動きとして可視化する方法について、ご紹介しました。
今回のトライアルで気になった点は、データ量が増えるとseciumの地球儀を表示するhtmlファイルが立ち上がらなくなる点で、これはWindowsの稼働環境を拡張するなどハードとOSの両面で、環境設定を見直す必要がありそうです。
また、CZMLの図形定義ファイルが10,000,000行を超えるとエディタで開けなくなるといった制約に遭遇したことも付け加えておきたいと思います。

 

 本記事を作成するにあたっては、特に、サプライチェーン計画ロットデータをseciumのCZMLデータに変換する処理の部分で、bing GTP4との会話を繰り返す中で生成されたpythonコードを採用しています。
GTP4の生産性の高さに改めて驚かされました。

参考まで、以下はデータ変換で生成されたCZML文字列のサンプルです。
説明用のコメントを付けていますが、コード本体はデータ変換で生成されたもので、//STARTからのBOX定義が製品ロットに対応しています。

// shape definitions var czml = [ { "id": "document", "name": "CZML Path", "version": "1.0" },
// START   // ここからBOX定義スタート
{
"id": "MUC_I20240102020040",                  // ユニークなLOT_ID
"position": {
"cartographicDegrees": [139.94, 35.39, 0]  // 座標の経度と緯度と高度
                  },
"box": {
    "dimensions": {
        "cartesian": [ 25000, 25000, 25000 ] },  // 立方体の一辺の長さ
    "material": {
        "solidColor": {
            "color": {
                "rgba": [ 0, 0, 255, 255 ]         // BOX色の青は販売出荷ロットを示す
                        }
                        }
                        },
    "show": [ {                       // BOXの表示、非表示の期間 ISO計画週に対応
"interval": "2024-09-30T12:00:00Z/2024-10-07T11:59:59Z", 
"boolean": true
},
{
"interval": "2024-10-07T11:59:59Z/9999-12-31T24:00:00Z",
"boolean": false
}
]
}
},   // continue
{
// ここに次のBOX定義を記述
},  // continue
{
// 最後のBOX定義を記述
}  // END // カンマ無し
] ;
//end

以上です。

 

話が前後して恐縮ですが、グローバルサプライチェーン計画について付記します。

 グローバルサプライチェーン計画とは、国内外のサプライチェーン拠点を連携させることで全体の流れを管理し、最適化する方法です。ビジネスのグローバル化に伴い、その必要性は増大しています。
しかし、グローバルサプライチェーン計画の実施には、多くの課題があります。例えば、複雑なデータを分析し、最適な生産計画や在庫管理を行うこと、需要変動や環境変化に対応すること、サプライチェーンのリスクを予測し、対策を講じることなどです。

 このような課題に対処するために、グローバルサプライチェーン計画を共通計画単位(CPU:Commom Planning Unit)と呼ぶ、サプライチェーン内で共通の製品ロットを定義し、週次の時系列データで表現するとともに、
製品ロット毎のPSI計画、
P:Production/Purchase生産または購入(仕入)
S: Ship&Sales出荷(売上)
I:Inventory在庫保管
の活動計画をグローバル・オペレーションとして可視化することで、以下のような経営効果を目指しています。
サプライチェーンの全体を俯瞰できる仕組みを作ることで、グローバル需給に関連する生産と物流のオペレーションを直感的に把握して、経営課題の発見、対策検討に役立てる
サプライチェーン上の各事業拠点の管理者間で、将来にわたるグローバル需給の情報を共有、需給調整することで、グローバル・レベルでのオペレーション効率を最大化する

 

※本記事のpythonおよびsecium javascript CZMLのソースコードは、githubの下記URLを参照ください。
Yasushi-Osugi/PySI2CPU_lots2CZML2secium: Visualising Supply Chain activities on earth(secium) with translating Supply Chain Planned lots to CZML for secium. PySI is Global weekly PSI planner, that has a trial function decoupling point and its buffer inventory analysis. (github.com)

 

2024年1月 
Yasushi Ohsugi with bing GTP4