PSI計画連携の仕組みをサプライチェーン全体に拡張していくための考慮点

ここでは、PSI計画連携の仕組みについて、今回はサプライチェーン全体に拡張していくための考慮点を考えてみたいと思います。

まず初めに、サプライチェーンの全体像をどのように捉えるべきか考えておきたいと思います。ここから先、検討を進める上で理解のしやすいイメージとして、「図5-1サプライチェーンの全体像」のような見方で説明を進めていきたいと思います。

図5-1. サプライチェーンの全体像

「図5-1. サプライチェーンの全体像」の見方は、横軸が時間軸。縦軸がサプライチェーン上の事業単位(言い換えれば、登場人物)になります。
そして、事業単位(登場人物)の並び順は、図にもあるとおり、縦軸の一番上は最終消費者で、上から下へ、最終消費の市場に近い事業単位(登場人物)から供給サイドヘ順に「最終消費者」、「実需 前線店舗(小売店)」、「直接・間接 流通チャネル」、「メーカー各国事業会社」、「域内統括会社」、「供給拠点マザープラント」、「基幹部品サプライヤー」というように、サプライチェーン上の主要な登場人物を順に定義しています。
そして、それぞれの事業単位(登場人物)が行うビジネス・プロセス、処理のタイミング、処理の内容を定義します。ここで、物流と商流と情報流(PSI計画情報)という3つの流れで見ていく事でサプライチェーン全体の動きを俯瞰することができます。
なお、図5-1の図中、域内統括会社とは、欧州、北米、南米、中国、アジア、アフリカといった地域を統括する事業単位を指します。また、メーカー各国事業会社とは、例えば欧州統括会社の場合、その配下にある英国社、ドイツ社、フランス社、ベルギー社、オランダ社、イタリア社、スペイン社等々、域内の各国に事業会社が展開されていることを想定しています。

前回の記事では、サプライチェーン上の親子関係 ( 需給関係 ) にあるPSI計画間の整合性をとるためには、以下の3つの要件を満たすことが有効であることを簡易デモを通して説明しました。
●ロット積上げ方式PSI(Lot Loading PSI)
サプライチェーン上の共通計画ロット単位(Common Planning Lot Unit)
●週次の時間単位(Weekly Time Bucket)

つまり、サプライチェーン上のすべての事業単位(登場人物)を対象に上記の要件を満たすようにPSI計画を実装し、前後するPSI計画間の整合性を取ることができれば、サプライチェーン全体をカバーするPSI計画の相互連携機能を実装できる、という仮説を定義できます。

前回の記事で説明したPSI計画連携の仕組みは、供給拠点(マザープラント)と各国事業会社との間のPSI連携でした。これは「図5-2. 流通チャネルを活用するサプライチェーン」の図中、黄色の四角で示す部分で、検証用に簡単なデモをPythonで実装しました。
今回は、各国事業会社とその先の流通チャネルと最終消費者の間(赤枠の部分)を対象に、どのような考え方でPSI計画モデルを定義すれば、PSI計画間の整合性を確保することができるのかを見ていきたいと思います。

図5-2. 流通チャネルを活用するサプライチェーン

ここで、各国事業会社から先の流通チャネルには、
●メーカーの直販チャネル
●特定の地域・市場セグメントをカバーする販売代理店、間接チャネル
●ネット通販などの最終消費者向けダイレクト・チャネル
などがあり、それぞれの流通チャネルが混在している状態が想像できます。

「図5-2. 流通チャネルを活用するサプライチェーン」の赤枠の部分は直販、間接販売の流通チャネルが存在することを想定しています。
一方、「図5-3. 最終消費者に直送するサプライチェーン」では、例えば、amazonや自社通販チャネルなどのダイレクト・モデルを想定して、各国事業会社の物流倉庫から最終消費者に直送するため、図の赤枠の中に事業単位(登場人物)は存在しません。

図5-3. 最終消費者に直送するサプライチェーン

このような、いくつかの流通チャネルが混在するサプライチェーンをどのようにPSI計画でモデル化していけば良いか考えてみたいと思います。
結論としては、「それぞれの流通チャネルの違いは、チャネル内にどのくらいの在庫が滞留しているか、在庫滞留期間の違いとして表現できる。」という考え方で、複数の流通チャネルが混在する状態をPSI計画のモデルに置き換えることができると思います。

例えば、「図5-4. 流通チャネルの違いをPSIの在庫滞留期間で表現する」に示すとおり、製品の在庫滞留期間の長短で、それぞれの流通チャネルの特性をPSI計画上で定義することができます。
つまり、1つの流通チャネルに対応する1つのPSI計画モデルを定義するという、非常に荒いPSI計画モデルではありますが、こうすることでサプライチェーン内のPSI計画間の整合性を確保し、サプライチェーン全体をカバーする計画機能を実装することができると思います。

なお、図中の実販Sell-In、実需Sell-Out(またはSell-Through)は、需要の発生場所の違いで、実販Sell-Inは販売会社の出荷売上ポジション、実需Sell-Outは最終消費者が実際に商品を購入したポジションを指します。
余談になりますが、販売会社の仕入れ担当者が、自社の足元の出荷実績だけをみて、仕入と出荷を進めているうちに、最前線の市場では思うように商品が売れずに在庫が積み上がっていた、という状況は少なくない話で、実需sell-outの動きと市場の在庫滞留の変化には十分な注意が必要になります。

例えば、間接チャネルの場合には、
販売代理店とその小売店で構成されているので、間接チャネル内に滞留する在庫量も多く、筆者の経験からは、滞留在庫の期間は4週間~8週間分程度の在庫が滞留していると想定されます。

直接チャネルの場合には、
販売代理店や小売店は存在せず、自社の直販店のみで構成されるので、直接チャネル内に滞留する在庫量は少なく、例えば、在庫の高さは2週間程度の在庫が滞留していると想定されます。

最終消費者向けダイレクト・チャネルの場合には、
ネット注文、即出荷という対応であることから、滞留する在庫はほとんど無しで、主に物流の移動時間となることから、在庫滞留期間は1週間程度の在庫が滞留していると想定されます。

図5-4. 流通チャネルの違いをPSIの在庫滞留期間で表現する

このように、流通チャネルのPSI計画モデルを定義し、それぞれの流通チャネルの売上比率で、複数の流通サプライチェーンを表現します。
例えば、
●メーカーの直販チャネル 50%
●販売代理店経由の間接チャネル 20%
●ネット通販のダイレクト・チャネル 30%
という考えかたで、流通チャネルの混在をモデル化します。

以上、今回は「PSI計画連携の仕組みをサプライチェーン全体に拡張していくための考慮点」について説明させていたたせきました。

次回は、今回説明したの流通チャネルのPSI計画をPyhtonで実装して、その後、サプライチェーンを繋いでいく簡易デモをご紹介したいと思います。

PSI計画のコスト評価方法について

2022年6月 追記 : 本記事でご紹介したPSI計画のpythonのソース・コード一式をgitgubで公開しております。ご興味のある方は参照ください。
なお、ライセンスはMIT Licenseです。

github.com

前回の「PSI計画に機械学習の機能を組み込むための考え方」に続いて、今回は、PSI計画のコスト評価方法について説明します。

PSI計画のコスト評価、コスト・パラメータの検討を始めた当初の問題意識は、「製品のコスト構造を、PSI計画の機械学習の評価関数に設定することで、発注サイクルを自動で調整して、コスト最適化する発注計画を作成してくれるはずだ。」というものでした。
その結果はどうなったか、以下で見ていきたいと思います。

まず最初に、今回のPSI計画コスト評価で使用した利益コスト計算式は「図3-1. 利益コスト計算式」に示すとおりです。
この計算式を機械学習の評価関数に組み込んでいます。

コスト評価の計算式を検討する上での留意点として、実務担当者に馴染みのある分かり易い評価方法であること、コスト・データの整備、設定に時間をかけない方法であることを意識して、比較的ざっくりした「製品コスト構成比率」という考え方で、コスト・パラメータとコスト評価の計算式を定義しました。
したがって、この利益コスト計算式にはまだまだ改良の余地があると思います。
例えば、コスト関連データが整備されていて、負荷をかけずにデータ入手可能であれば、在庫保管コストや物流コストのデータ精度の高いコスト・パラメータを取込みたいところです。
あるいは、製品ライフサイクル後半で販売価格に値引率が適用される場合など、売上・利益に影響する時系列変化をパラメータ化することも課題になると思います。

画像を拡大表示
図3-1. 利益コスト計算式

利益コスト計算式で使うコスト関連パラメータのサンプルは、「表3.製品コストテーブルの例」のとおりで、計画対象となる製品のコスト構造をコスト・テーブルとして事前に設定しておきます。
表3のコストテーブルには、製品のコスト構成の他に、在庫管理に必要なLTリードタイム、ロットサイズを設定しています。
このコスト・テーブルは、図3-1. 利益コスト計算式のパラメータと対応しています。
このコスト・テーブルは、特定の業界のものではなく、筆者の経験から平均的なコスト構造を想定して仮に定義しています。

画像を拡大表示
表3.製品コストテーブルの例

次に、機械学習の報酬(reward)との関係ついて、報酬(reward)には利益率を使うのが一般的と思います。ただ、事業会社のビジネススタイル、事業方針によっては、利益率ではなく売上(出荷)の最大化を重視するなど、供給方針は一律ではなく、報酬(reward)に適用する評価パラメータ(利益、売上など)を事業方針、発注スタイルに合わせて調整する必要が出てくると思います。

PSI計画の機械学習で報酬(reward)に利益率、利益、売上を指定した場合、どのようなPSI計画を作るのかは、図3-2にそれぞれの結果を比較しています。

報酬(reward)に「利益率」、「図3-1. 利益コスト計算式」を指定した場合の結果は、ほぼ定期発注を繰り返しており、最も自然な購入計画Pを作成しているように見えます。

報酬(reward)に「利益」、「図3-1. 利益コスト計算式」の分子、を指定すると、ほとんど購入Pを発注しなくなり、これは前々回の記事で述べた「八百屋さん、あるいはアパレルZARAの売り切り商売」のような「仕入コストの増加を抑えて売り切って利益を出す」という方針になっているように見えます。

報酬(reward)に「売上」、「図3-1. 利益コスト計算式」の分母、を指定すると、売上(出荷)を最大限にあげる方向にあるため、仕入コストを無視して発注サイクルを縮めて、毎週発注をかけています。なお、年間の後半で発注がストップする原因は、需給バランスの総量を規制する制約条件が定義されているのが原因ではないか思います。

画像を拡大表示
図3-2. PSI計画の機械学習で報酬(reward)に利益率、利益、売上を指定した結果比較

本稿の最初にお話しした、コスト・パラメータの検討を始めた当初の問題意識、「製品のコスト構造を、PSI計画の機械学習の評価関数に設定することで、発注サイクルを自動で調整して、コスト最適化する発注計画を作成してくれるはずだ。」という点について、
実際に機械学習でPSI計画を作ってみると、当初の想定に近い動きをしていることが分かります。
例えば、図3-2のreward=利益率の場合で見ると、月次サイクルに近い発注を自動生成しています。
ただ、発注サイクルは月1回、月2回、月4回、週次といった型にはまった発注サイクルにはならず、利益率を重視して、その都度伸び縮みしている様子が分かります。

以上、PSI計画のコスト評価方法について説明させていただきました。

PSI計画に機械学習の機能を組み込むための考え方 (ロット積上げPSI計画:Lot Loading PSI)

2022年6月 追記 : 本記事でご紹介したPSI計画のpythonのソース・コード一式をgitgubで公開しております。
ご興味のある方は参照ください。
なお、ライセンスはMIT Licenseです。
github.com


ここでは、前回ご紹介した機械学習の機能を組み込んだPSI計画の仕組みについて、内部処理の概要を説明します。

「図2-1. PSI計画表とロット積上げ表」は、Pythonで実装する前にEXCELで作ったプロトタイプの入出力データのイメージです。
上部の青枠部分は一般的なPSI計画(定期発注方式の在庫管理)の計算とコスト評価を行う領域、
下部の赤枠部分は発注ロット単位にロットを積上げる領域です。
2つの領域は、Python上では以下の2つのクラスに対応しています。
class PlanSpace PSI計画・評価領域
class LotSpace ロット積上げ領域

図2-1. PSI計画表とロット積上げ表

クラスPlanSpaceでは、PSI計画の計画状態を更新・評価する処理
i_PlanSpace.CalcPlanSIP()
reward = i_PlanSpace.EvalPlanSIP()
が主な処理となります。
クラスLotSpaceでは、発注ロットを処理単位としてロットを積上げる処理
lot_no, week_no, lot_step =i_LotSpace.place_lot( lot_no , week_no )
が主な処理となります。

より詳しい説明は後述するとして、少し大雑把な説明になりますが、機械学習の処理との対応は以下の通りです。
1. ロット積上げ処理(place_lot) ・・・・・行動(action)
2. PSI計画の更新処理(CalcPlanSIP) ・・・・・状態更新(update state)
3. PSI計画の評価処理(EvalPlanSIP) ・・・・・報酬(reward)
4. Q学習のQ_Tableの更新

グラフ出力は「図2-2. 一般的なPSIグラフと累計グラフ」のとおりで、
● PSI計画の一般的なPSIグラフ(上図)
● PSI計画の累積グラフ(下図)
2つのPSIグラフを想定しています。それぞれのグラフの見え方は異なりますが、同一のPSI計画状態を表示しています。
前回の記事で紹介した図1のアニメーションは、機械学習の上記1.2.3.4の処理サイクル実行の都度、PSI計画の累積グラフが変化する様子を示しています。

図2-2. 一般的なPSIグラフと累計グラフ

以下では、ロット積上げ(Lot Loading)方式によるPSI計画の処理手順をもう少し詳しく見ていきましょう。
表2と図2-3に処理手順と処理イメージを示します。

表2. PSI計画の機械学習の処理手順

ポイントは、
手順3と4: LotSpaceの中でロットを積み上げる行動(action)により、
手順6: P購入の値が生成・増加し、
手順7と8: PlanSpaceの中でPSI計画状態の更新とコスト評価が行われて報酬(reward)が生成されるという流れです。
この後、Q学習が進行して行動(action)の選択肢を管理するQ-Tableが更新されます。

なお、手順1の入力情報、S販売(予測と実績)の取り扱いについては需要予測の様々な手法があるので、ここでは需要は事前に与えられている、所与のものとして深く検討することは避けたいと思います。
グローバルSCMでの筆者の経験からは、グローバル需給計画を検討している経営本部側で利益計画を策定する中で、各販売事業会社への供給量の割り振り(あるいは販売目標数)が事業計画レベルの月次計画で事前に作成されており、この情報を週次計画にブレイクダウンすることでS販売予測に相当する入力情報を生成できるのではないかと思います。
ただ、近年のIoTの進展もあり、リアルタイムで実需の変化をとらえて、S販売情報に軌道修正をかける仕組みが活用されてくる、あるいは既に活用されているのかもしれません。

図2-3. PSI計画の機械学習の処理イメージ

今回は、「PSI計画に機械学習の機能を組み込むための考え方(ロット積上げPSI計画)」について説明させていただきました。
次回は、「PSI計画のコスト評価の計算方法」について説明したいと思います。

在庫管理におけるコスト評価と機械学習機能を持つPSI計画(定期発注方式)について

2022年6月 追記 : 本記事でご紹介したPSI計画のpythonのソース・コード一式をgitgubで公開しております。
ご興味のある方は参照ください。
なお、ライセンスはMIT Licenseです。
github.com

コロナ禍の2年間、以前から興味のあった囲碁・将棋のAIや機械学習について調べているうちに、だんだん自分でも何か作ってみたくなり、コンサル時代に馴染みの深かったPSI計画(定期発注方式の在庫管理)に機械学習を適用できないか、というふとした思いつきから、Python言語で機械学習を付加したPSI計画を作ってみました。
ここでは、製造業のグローバル・オペレーションで問題になるサプライチェーン計画、Global PSIに関する新しいアプローチをサンプル・デモのアニメーションなど含めご紹介したいと思います。

ネットから機械学習Python言語の基礎知識を習得、試行錯誤しながら作ったPSIのサンプル・デモが以下の「図1.コスト評価と機械学習機能を持つPSIのデモ」です。
このデモでは、機械学習で計画状態(state)を取り扱う都合から、一般的なPSI計画のグラフではなく、PSIの累計グラフを使って計画状態を表示しています。一般的なPSI計画のグラフと累計グラフとの対比、機械学習を組み込んだPSIの仕組みの詳細については次回の記事で説明していきたいと思います。

図1. コスト評価と機械学習機能を持つPSIのデモ
このPSIの仕組みを作る過程では、様々な課題が出てきました。

PSIの内部ロジックの観点からは、
例えば、機械学習でいうreward(評価関数)にPSI計画の「利益率」を適用した場合と「売上金額」を適用した場合、あるいは「在庫管理コスト」を適用した場合で、PSIはどのような振る舞いをするのか?
あるいは、「利益」を最大化するPSIの結果が、「需要があるにもかかわらず仕入れ(コスト)を少なくして利益を上げる」方向、例えて言えば「八百屋さん、あるいはアパレルZARAの売り切り商売」のような仕入れスタイルになってしまい、これはこれで一つの正解とは思いますが、一方で「仕入れを増やして売上を伸ばしたい」場合には、どのようにパラメータを設定するべきか?
評価関数に利益と売上を入れて、0から1の中で正規化するのが良いのか?
はたまた、機械学習でいうガンマ補正を使うべきか?
などなどです。
PSI管理の業務の立場からは、
需要に供給が間に合わなかった場合(S販売 > I在庫 + P購入 )には、お客様はその商品(の次回の入荷)を待っていてくれる(需要はcarry overされる)のか、競合他社の商品に流れてしまう(需要は消えてしまう)のか、といった状況をPSI計画でどのように表現するのが実務上、現実的か?
ちなみに、図1のデモでは「需要はcarry overされる」前提でPSI計画を立案しています。
あるいは、物流や在庫管理の総コストを抑える発注サイクル(週次、月次など)をどのように設定するか?

この他にも様々な課題がありますが、従来からのGLobal PSI(定期発注方式の在庫管理)の仕組みに対して、機械学習によるアプローチを適用することで、いままで解決できなかった問題に光を当てるソリューションとなるのではないかという予感がしています。
従来のPSIと新しいPSIの違いは「表1. 従来PSIと新PSIの機能比較」のとおりです。

そして、以下は、この新しいPSIの仕組みの先にある将来の夢、言い換えると「取り組み仮説」のイメージです。
「ある特定の製品を対象に、もし、海外事業会社間の生産・物流・販売の各業務コストの評価機能と機械学習による再計画機能を持つGlobal PSIの仕組みを相互に連携する計画機能を実現することができれば、サプライチェーンの総コスト(生産コスト、出荷コスト、物流コスト、在庫管理コスト、発注管理コスト)を最適化する業務オペレーションを実行することができる。」
という仮説を定義することができます。

表1. 従来PSIと新PSIの機能比較
次回は、「PSI計画に機械学習の機能を組み込むための考え方」について、もう少し詳しく説明させていただきたいと思います。