サプライチェーンでは、最終需要がわずかに変化しただけでも、その変動が上流へ伝わる過程で大きな発注変動へ変わることがあります。今回は、このブルウィップ効果を単なる時系列の比較ではなく、顧客需要から小売、卸、製造、上流サプライヤーへ進む一つの「増幅場」として可視化しました。
この図は何を表しているのか
縦方向はサプライチェーンの階層です。最も下が顧客需要、その上に小売発注、卸発注、製造発注、上流サプライヤー発注が並びます。
横方向は、それぞれの階層における平均数量からの偏差率です。中心の0%は、そのstageの平均と同じ数量を意味します。
非常に細い線は、同じscenario・同じ時点の需要と発注量を5階層にわたって結んだものです。下流の需要偏差が、その時点で上流へどのような発注信号として現れているかを一つのpathとして読めます。
半透明のfieldは分布の広がりです。内側は25–75%、外側は5–95%の範囲を表します。青いboundaryは下側、橙色のboundaryは上側のquantileです。
可視化から読み取れること
今回のSynthetic Dataでは、40 scenarioについてwarm-up後140期間を解析し、合計5,600本の階層flow pathを作りました。
Customer demandの変動係数は2.51%でした。比較的小さな需要変動です。
一方、Customer demandのvarianceを1.0とした場合、発注variance ratioはRetailerで1.26、Distributorで2.32、Manufacturerで5.24、Upstream supplierでは13.87まで増加しました。
95% absolute deviationもCustomer demandでは4.9%でしたが、Upstream supplierでは18.3%でした。図でも、下流では中心付近に集まっているflowが上流へ進むほど左右へ広がっています。
この構造をどう解釈するか
今回のData Generating Processでは、顧客需要そのものの揺らぎを大きくしているわけではありません。Customer demandは平均約100を中心とする小さなAR(1) variationと弱い季節性から生成しています。
その需要を受けたRetailerは、最近の需要からforecastを更新し、目標inventory positionとの差を補正して上流へ発注します。Distributor、Manufacturer、Upstream supplierも同じ種類の意思決定を繰り返します。
このforecast revisionとinventory correctionを階層ごとに重ねることで、下流の小さな変化が上流ではより大きな発注調整になります。今回のbullwhip structureは、この繰り返しから生成されています。
可視化の仕組み
まず40個のcustomer-demand scenarioを生成しました。各scenarioは180期間ですが、最初の40期間は初期状態の影響を避けるwarm-upとして除外し、残り140期間を分析しています。
顧客需要には小さなAR(1) variation、弱い周期変動、そして1回だけ小さな一時pulseを加えています。
各stageではexponential smoothingによってforecastを更新し、forecastから計算したtarget inventory positionと現在のinventory positionとの差を使って次の発注量を決めます。
可視化では、それぞれのstageの数量をstage平均からの偏差率へ変換しました。同じscenario・periodの5つの値を一本のtrajectoryで接続し、数千本を重ねています。
なぜこの可視化方法を選んだのか
ブルウィップ効果は、各stageの時系列を別々に描いても確認できます。ただし今回見せたいのは、同じ需要信号が階層を進むにつれてどのように「幅を持つようになるか」です。
Hierarchical amplification flow fieldでは、各時点のsignal pathを同じ階層空間へ重ねるため、下流では狭かった分布が上流ほど開く形を直接見ることができます。
また、分布のquantile envelopeと個別trajectoryを同時に残すことで、典型的な増幅と極端な発注pathを一枚の図で扱えます。
実データへの応用可能性
実データでは、販売実績、店舗発注、卸発注、製造計画、サプライヤーへの注文など、複数階層の時系列が揃っていれば同様の構造を探索できる可能性があります。
たとえば、最終需要のvarianceに対して各階層の発注varianceがどの程度増えているかを比較したり、特定の需要変化がどのstageで大きく増幅されているかを調べたりする用途が考えられます。
ただし、実際のbullwhipには需要予測だけでなく、ロットサイズ、価格変動、欠品、供給制約、発注間隔、情報共有の遅れなど複数の要因が関係する可能性があります。
データと分析方法
今回はSynthetic Dataを使用しています。scenario数は40、各scenarioの解析期間は140、階層間flow path数は5,600です。乱数シードは260926です。
Customer demandは平均約100のAR(1) processに弱いseasonalityと小さなpulseを追加して生成しました。
Retailer以降の各stageでは、exponential-smoothing forecastとbase-stock型inventory-position correctionを使用しています。bullwhipの強さはCustomer demandを1.0としたvariance ratioで評価しました。
さらにGround Truth validationとして、一定需要100に+4 unitsの小さなpulseを2期間だけ与えたところ、peak responseはCustomerの4.0に対し、Retailer 5.0、Distributor 6.2、Manufacturer 8.0、Upstream supplier 11.2となりました。
このVisualization Studyの限界
今回のbullwhip processはSynthetic Dataとして設計したものです。実際の企業間取引が同じ発注ruleやparameterに従うことを示すものではありません。
各stageは同じ種類のbase-stock型ruleを使い、上流へ進むほど一部parameterを少し強くしています。そのため、今回の増幅量はこのData Generating Processに依存します。
また、供給能力上限、輸送lead time、欠品、backorder、価格変動、supplier capacity、複数品目間の代替などは扱っていません。
したがって、このStudyは実際のbullwhip effectの大きさを推定するモデルではなく、階層的な増幅構造をどう可視化できるかを検討するVisualization Studyです。
まとめ
今回は、顧客需要の小さな変動が小売、卸、製造、上流サプライヤーへ伝わる過程で増幅される構造を、Hierarchical amplification flow fieldとして可視化しました。
Synthetic Dataでは、下流のCustomer demandに比べて上流の発注varianceが段階的に大きくなり、Visualizationでも狭いflowが階層を上がるほど大きく開く形として現れました。
この見方は、実データでも単一stageの変動を見るだけでなく、需要signalがサプライチェーンのどこでどの程度増幅されているかを探索するための入口として利用できます。

