在庫管理におけるコスト評価と機械学習機能を持つ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計画に機械学習の機能を組み込むための考え方」について、もう少し詳しく説明させていただきたいと思います。