SD閑話-16 2012年1月9日  
                  松本憲洋(POSY Corp.)
タイトル:
「 文系学生のSD講座−3 : 定量モデル編 」

目 次
 1.概要
 2.課題
  (1)ブルウィップ効果の 概要
  (2)5段チャネルのモデルに現れるブルウィップ効果
  (3)出題した問題
 3.課題の原モデルの説明
  3.1 ブルウィップ効果の発生時の各変数の挙動
  3.2 ブルウィップ効果の抑制方法の検討
  3.3 需要がランダムに変動する場合の原モデルの挙動
 4.特徴のある回答例
  4.1 参考例1(PC番号:36)
  4.2 参考例2(PC番号:08)
  4.3 参考例3(PC番号:05)
  4.4 提出された全レポートに対する感想
 【 附録 フリーのSDツールの入手 】
 【 附録 方程式一覧 】

1.概要
「文系学生のSD講座」と題して、前々回のSD閑話−14では「総括編」を、前回のSD閑話−15では「定性モデル編」をお送りしました。今回は、「定量モデル編」をお送りします。

15コマを6回に分けた講義の5回目の講義で、サプライチェーンを学習した後に、レポート形式で答える課題を出しました。その課題は、ブルウィップ効果が現れるモデルを渡して、ブルウィップ効果を抑制する方法を提案し、モデルを加工して、その提案を検証するというものです。

今回のSD閑話−16では、その課題を説明し、提供したモデルをダウンロードできる形で掲載します。Powersim Studio をお持ちでない方も、フリーのSDツールPowersim Studio 8 Expressをダウンロードすれば、このモデルを操作したり加工したりできます。ダウンロードの方法については、この閑話の最後に附録として掲載します。
世の中にはブルウィップ効果について様々な知見があふれていますが、ビジネス・プロセスの上で、具体的にその抑制策を確認できる手段はそう多くはないはずです。グループで相談しながら、あるいは書斎で一人密かに、ブルウィップ効果の本質とその抑制策とについて、独自の仮説を立て、モデリング&シミュレーション(仮想経営)で、それを検証してみませんか?

さて、ブルウィップ効果と言うと、この現象を発見したと言われているJ.W.Forrester教授が始めたビールゲームを思い出します。今でもビールゲーム盤を取り寄せて、一般の講習会や大学の講義で使っている人がいるようです。しかし、ゲーム中に同期をとってゲームを進めるのは結構難しく、J.D.Sterman教授が1980年代の4年間で行なった48ゲームでも、重大なエラーを除外すると残ったのは11ゲームだけだったそうです。成功やまあまあ成功に終わったのは1/4以下です。これから推測すると、日本で行なわれているビールゲームはさてどうなんでしょう?

仮に、ビールゲームが無事に終了したとして、そこまでのプロセスを辿りながら、どの行為がブルウィップ効果に繋がったかを含めて、まともに解説しているのでしょうか?はなはだ疑問です。

ビールゲームを行なうぐらいなら、今回提供しているモデルを使って、ブルウィップ効果が現れるプロセスに関して自分で仮説を立てて、シミュレーションして、その仮説を検証する。この方が、自分や自分が属するグループのメンタルモデルをポテンシャル・アップするのにはるかに効果的です。このように、システム・ダイナミックスによるモデリング&シミュレーションは、各種の問題解決のための仮説検証において重要な役割を果たすことができます。

さて、この閑話では、第1章の概要に続いて、第2章で受講生に出題した課題について説明します。第3章では課題の中で提供している5段のチャネル・モデルについて説明します。最後の第4章で、受講生の解答の中から特徴のあるものを参考までに記載します。

2.課題
5回目のサプライチェーンの講義の終了後に出題した課題「ブルウィップ効果の抑制」を、少し変更して以下に記載します。

課題名 :ブルウィップ効果の抑制               2011811日 松本憲洋

(1)ブルウィップ効果の概要

ブルウィップ効果とは、チャネルにおいて、川下から川上へ発注情報が伝達される際に発生する、情報劣化の現象。

(2)5段チャネルのモデルに現れるブルウィップ効果

a) ブルウィップ効果のモデルの入手
ブルウィップ効果のモデルは、ここをクリックして、zipファイルをダウンロードしてください。
ダウンロード後、ファイルをWinZip他の適当なツールで解凍してください。このZipファイルには、7種類のモデルが保管されています。稼動するには、Ps Studio 8 が必要です。商用版をお持ちでない場合には、この閑話の最後に記載した【附録 フリーのSDツールの入手】に沿って、フリーのPs Studio 8 Express をダウンロードしてインストールしてお使いください。

b) ブルウィップ効果のモデルの説明
ダウンロードしたモデルの内、(1)ブルウィップ-原版.sipを開いてください。
取上げている経営は、インターネットビジネスです。最下流の店頭販売では、毎日100枚の需要があり、店頭の注文台帳であるレベルの“店頭残”に累積記帳されます。翌日、店頭残がその日の店頭受注(量)になり、販売商品が発送されます。ただし、店頭在庫が店頭受注に比べて不足する場合には、あるだけ販売して、不足分は店頭残に残して翌日分に回します。
当日販売しようとした店頭受注に基づき、上流の“卸2”への店頭からの発注(量)を計算するために、下方に示す橙色の枠で囲った発注簿に、店頭受注(量)を累積記録します。なお、チャネルに連なるレベルである全ての在庫の初期値は、100枚としています。(このモデルを作っていた頃、なでしこジャパンが大進撃していました。スポーツ・ショップではそのユニフォームが品切れぎみでした。それで、ユニフォームの販売を想定して、商品の単位を枚数としました。)

   

次に、“店頭発注”の計算方法について考えてみましょう。需要が毎日100枚で、商品を毎日仕入れる場合、顧客に販売する店は、発注間隔1日の定期発注方式で店頭在庫を管理していることになります。店頭で発注して店頭在庫になるまでが納品リードタイムです。
システム・ダイナミックスのツールでは、刻み時間(timestep)ごとに時系列の計算をしますから、上記のモデルでは、明示的な遅れを規定しない場合でも、フローからモノが流入して、ステータスであるレベルが納品があったと表示するまでに、1timestep分の時間がかかります。したがって、納品リードタイムは、このモデルの場合は1日(=1 timestep)です。
定期発注方式の目標在庫は、販売率が一定の場合は、販売率に“納品リードタイム+発注間隔”を乗じて求めます。この場合は、販売率が100枚/日ですから、目標在庫=100枚/日*2日=200枚になります。上記のモデルでは、右下に記載した供給リードタイムが“納品リードタイム+発注間隔”を表しています。

目標在庫が計算されると、そこから現時点の店頭在庫を差し引いて店頭発注(量)を計算します。このとき、発注量が負になることはありませんから、仮に計算値が負になる場合には、発注は0枚/日とします。毎日100枚の需要の場合には、現時点の店頭在庫は100枚ですから、店頭発注=目標在庫−店頭在庫=200枚−100=100枚となります。店頭発注は、卸2の在庫であるWI-2の範囲内で販売され、在庫量が不足した場合には、店頭補充残に販売できなかった不足分が残ります。

以上の在庫管理と上流への発注および販売の方式は、5段のチャネルの中で上述の最下流の店頭だけでなく、その上流の卸2、卸1、工場でも同じ形態をとります。

さて、毎日100枚の需要に対して前出のモデルの妥当性を確認してみましょう。右端にある“需要”のプロパティ画面を開けて、定義枠を100枚/日と設定してください。定義枠で行の頭に“//”を付けるとコメント行になります。シミュレーションを実施してみましょう。需要は100枚/日、全ての在庫は100枚、全ての販売は100枚/日となりましたか。
卸2の近辺のモデルの方程式を、参考までに以下に掲載します。

Name              Unit     Definition              
WI-2                 mai        100<<mai>>
店頭在庫           mai        100<<mai>>
WI2販売             mai/da   MIN('WI-2'/TIMESTEP,店頭発注)
WI1
販売             mai/da   MIN('WI-1'/TIMESTEP,WI2発注)
店頭受注           mai/da   店頭残/TIMESTEP
店頭発注           mai/da    MAX(0<<mai>>,
                       店頭補充残*'供給リードタイム'-店頭在庫)/TIMESTEP
店頭補充            mai/da   店頭受注
店頭補充残
         mai        //0<<mai>>// 100<<mai>>
店頭補充清算      mai/da   //MIN(店頭補充残/TIMESTEP,WI2販売)// WI2販売
----------------------------------------------------------

c) ブルウィップ効果の出現
さて、シミュレーションを開始して11日目に、需要が100枚/日から110枚/日に上昇した場合の在庫、    “在庫−残”、需要の結果を以下に示します。ここで、“在庫−残”とは、上記の卸2で言うと、“WI-2WI2残”を意味し、在庫から翌日販売予定の注文累積を差し引いた量です。
下流から上流に向かうにつれて、在庫量がどんどん過大になることが分かります。

       

     

次に、それぞれの在庫を繋ぐフローレートを以下に示します。この図によっても、下流の店頭から上流の工場に向かうにつれて、販売の振幅が大きくなっていることが分かります。

                       

(3)出題した問題

@ ブルウィップ効果とは何か?
提出形式:Wordの文章

A     上記(2)の“5段チャネル”のモデルで、ブルウィップ効果が発生するメカニズムを説明しなさい。
そのためには、シミュレーションを実施し、諸変数の途中経過をモニターして分析する必要があります。
提出形式:Wordの文章

B ブルウィップ効果のチャネルに及ぼす問題について説明しなさい。
           提出形式:Wordの文章

C ブルウィップ効果を抑制する方法について提案しなさい。
           提出形式:Wordの文章

D 上記(2)の“5段チャネル”のブルウィップ効果をCの提案に基づいて抑制できることを、モデルを変更してシミュレーションして検証しなさない。
提出形式:上記@〜CのWordの文章の次に、モデルの構造図を貼り付け、モデルの変更点を説明する。
提出形式:Wordの文章
Studio 8 で変更したモデルのファイル(拡張子.sip)を添付する。

(4)レポートの提出先
下記の講師のアドレスに、メールに添付して送付する。
Business-Dynamics-owner@yahoogroups.jp

(5)レポートの提出期限
2011819日(金)24

(6)レポートのヘッダーのフォーム
以下に示す。
―――――――――――――――――――――――――――――――――――――
Bullwhip効果に関するレポート
                              送付先:business-dynamics-owner@yahoogroups.jp
                              
提出期限:819日(金)24
提 出 日 :
提出者PC番号&氏名 :
   レポートのファイル名 :                  .doc
   モデルのファイル名  :                  .sip

 (注意)レポートとモデルのファイル名は、必ず“PC番号−名前(姓)”とすること。

                 < 以下省略 >
     ―――――――――――――――――――――――――――――――――――――

3.課題の原モデルの説明
需要が毎日100枚である場合には、5段チャネルが定常的に稼動することを、既に確認しました。
一般論として、需要が定常状態に加えてランダムな状態が重なる場合には、定期発注方式の在庫管理における目標在庫は下式となります。

 目標在庫=平均供給で必要な在庫+変動予防の安全在庫
   平均供給系で必要な在庫=平均需要速度*(供給リードタイム+発注間隔)
       変動予防の安全在庫=安全在庫係数*単位時間の需要標準偏差
                                       *(供給リードタイム+発注間隔)^0.5

毎日の需要が100枚の定常状態では、目標在庫として、“平均供給系で必要な在庫”のみを考えていました。しかし、需要が変動する場合には、需要変動予防在庫を考慮する必要があるのは明らかです。

以降では、原モデルがブルウィップ効果を発生する時の変数の挙動を調べた後、需要がステップ状に増加したことをきっかけに発生するブルウィップ効果を抑制する対策を検討します。さらに、需要がランダムに変動する場合の5段チャネルの挙動について調査します。
読者の皆さんも、シミュレーションを1timestepずつ勧めながら、挙動を確認してみてください。

3.1 ブルウィップ効果の発生時の各変数の挙動
定常状態のビジネスが始まって11日目に、需要が100枚/日から110枚/日に上昇した場合、定常状態に適応した各チャネルのプロセスは、どのように対応しているでしょうか。モデルのそれぞれの変数にshow auto-reportを表示して、1日毎にシミュレーションを実行して、それぞれの変数の挙動を観察してみましょう。

開始日〜10日:需要100枚の定常状態として推移

11日:需要のみ110枚になり、その他は定常状態と同じ。

12日:店頭残と店頭受注は110枚になるが、店頭在庫は100枚しかないので、販売は100枚。
店頭残として10枚(=110-100枚)が残る。

13日:店頭残は新たに累積される110枚と合わせて120枚。店頭在庫は相変わらず100枚だから、販売は100枚で、店頭残には20枚が残る。店頭受注が店頭補充に伝えられて、店頭補充残は110枚。店頭発注は、120枚(=110*2-100)。しかし、WI-2在庫は100枚のため、WI2販売は100枚。

14日:WI-1へ需要変動が伝わる。それぞれの在庫には100枚しか蓄積されていないために、それぞれの販売は100枚となり、店頭残、店頭補充残、WI2補充残には、販売できなかった量が溜まっていく。

15日:工場へ、需要変動が伝わる。

16日:前日にWI1発注の180枚が工場補充に充当され、それが本日は工場補充残として保存されている。製造指示は260(=180*2-100)となり、260/日の製造指示が出される。

17日:各チャネルの需要をまかなうだけの量が各チャネルの在庫に補充されていないために、店頭残、店頭補充残、WI2補充残、WI1補充残、工場補充残には、不足分が累積し、それがそれぞれの上流へ遡るごとに、供給リードタイム倍される。その結果、上流になるにつれ増加しながらその段階の補充量となる。その補充量が最上流の工場まで伝わると、そこでは無条件に補充量全てを製造するので、その製造量は各チャネルの販売を通して、各チャネルの在庫へと流されていく。

18日:16日に製造された製品が、WI-1在庫にまで送られてくる。
各変数の値をshow auto-reportで表示したモデルを以下に示す。

  

19日:16日に製造された製品が、WI-2在庫にまで送られてくる。

20日:16日に製造された製品が、店頭在庫にまで送られてくる。

30日:各変数の値を表示したモデルを以下に示す。

    
以上の時間経過における挙動をまとめると、あるときの需要の増加に在庫が応えられず、補充残が溜まり、それが供給リードタイム倍されて上流への発注量となることから、発注量は上流に遡るにつれて段々と増加します。その発注量がひとたび製造まで達すると、その量は全て製造され、販売を通じて下流の在庫に流されてきます。

読者の中には、定期発注方式で必要となった供給リードタイムが2日ではなく、1日にすれば発注量が上流に遡るにつれて、大きくはならないと単純に考える人がいるかも知れません。モデルの条件を変えてシミュレーションしてみてください。その推測が全くの的外れで、毎日100枚の定常的な需要の場合でさえ、ブルウィップ効果が発生することを確認できるでしょう。

3.2     ブルウィップ効果の抑制方法の検討
先にも述べたように、ブルウィップ効果はチャネルにおいて、川下から川上へ発注情報が伝達される際に発生する情報劣化の現象と言われています。この発生原因として、一般論として、@チャネルのそれぞれの主体が独自に予測を行なっていること、Aそれぞれの主体でオーダーがバッチ処理されていること、Bプロモーション等の価格政策の影響、C不足しがちな売れ筋商品に起きる見かけの需要などが挙げられています。
しかし、今回取上げた5段チャネルの業務プロセスは、上述のような複雑なプロセスではありません。ブルウィップ効果の発生原因も、ある日突然に需要が10%だけ増加したことです。
ブルウィップ効果の発生経過を前節で分析して、このモデルにおける発生の仕組みが分かりました。それは、在庫が不足した状態で在庫以上の発注がかかると、販売できなかった量が販売残となり、次回の発注量に加算されます。それが、供給リードタイム倍されチャネルを遡るごとに増加し、最上流の工場段階に到達します。工場では増加した発注量がそのまま生産され、それは下流の在庫として販売されます。ブルウィップ効果は、5段チャネルの構造そのものに基づいて発生しているようです。

では、発生を抑える構造について、前述の発生の仕組みを参考にしながら考えてみましょう。1番目には、各段階の販売に伴う在庫の補充量を制限することが考えられます。具体的には、販売に伴って在庫を補充するのを、その販売した量だけとしてみましょう。2番目には、需要の情報をチャネル全体で共有することを考えてみましょう。3番目には、チャネルの中抜きが考えられます。それらを先に説明した原版のモデルを変更して作り直し、仮想経営でその挙動を確認します。
なお、実際のチャネル構造では、全ての在庫を最小にして、最下流の品切れも最小にする条件を見出す必要があります。この両者は相対する関係にありますから、例えば、利益が最大となる条件などを使って、在庫と品切れのバランス点を探すことになります。しかし、今回の説明では、各段階の在庫と最下流の品切れとを表示するに留めます。

以降ではダウンロードしたモデルの(1)から(5)を使ってブルウィップ効果の抑制策について説明します。そのモデルの名前は以下のとおりです。
    (1)ブルウィップ-原版
    (2)ブルウィップ-縮小均衡
    (3)ブルウィップ-共有情報で発注
    (4)ブルウィップ-店頭情報共有
    (5)ブルウィップ-卸抜き

(1)ブルウィップ-原版.sip
原版(原型)のモデルで、シミュレーションを開始して11日後に、需要が100枚から110枚に増加すると、前述のようにブルウィップ効果が発生します。今回のチャネルのビジネスでは、販売しょうとした量以上に在庫がなくて販売できなかった場合には、その不足分が販売積み残しとして次回の販売量に加算されます。この量が“店頭残”です。

一方の“品切れ”は、その店頭残と実際に販売された量との差になり、“品切れ累積”はその積算値です。したがって、次回再び在庫が十分な量なければ、再び積み残しになりますから、このモデルの“品切れ累積”は、販売積み残しの積算値である店頭残がさらに積算されていることに留意してください。。

さて、原版モデルの販売積み残しである店頭残は、需要が110枚になっても在庫が100枚しかありませんから在庫が110枚以上になるまで上昇しますが、過剰な在庫が上流より送られてきますので、間もなく需要の110枚に落ち着きます。この原版では、品切れは問題ではなく、在庫過剰が問題です。

(2)ブルウィップ-縮小均衡.sip
このモデルではブルウィップ効果を抑制するために、販売に伴って減少した在庫をその販売量だけ補充しています。確かにブルウィップ効果は発生しないのですが、いわゆる“縮小均衡”状態に陥ります。在庫は100枚のまま変化しませんから、需要が110枚になってから、毎日10枚ずつ販売積み残しである店頭残が増えていきます。したがって、現実の対策としては、あまりに消極的過ぎる対応策と言えます。

(3)ブルウィップ-共有情報で発注.sip
需要の情報をチャネル全体で共有するには二通りの方法が考えられます。この(3)では、最下流の店頭受注を共有して、チャネルの各段階でそれぞれが在庫を補充する予測計算を行う方法について説明します。次の(4)では、最下流の店頭受注をそのまま各段階の発注量として指示し、各段階では在庫を補充する予測計算を行わない方法について説明します。

モデルの構造図を以下に示します。最下流の店頭発注のデータが、上流の各補充に送られ、各発注量が計算されます。各発注量の計算式は、「各発注=各補充*供給リードタイム−各在庫」です。

   
時系列挙動図を以下に示します。
ブルウィップ効果は全く現れていません。需要が100枚から110枚に切り替わる時期に、各在庫も各販売も過渡的な遷移現象を見せますが、その後は、新しい定常状態に落ち着いています。販売の積み残しもその過渡期に発生するだけで、品切れの問題は僅かのようです。

   

(4)ブルウィップ-店頭情報共有.sip
需要の情報をチャネル全体で共有するもう一つの方法です。最下流の店頭受注をそのまま各段階の発注量として各販売指示に使い、各段階では在庫を補充する予測計算を行わない方法です。モデルの構造図を以下に示します。

   
時系列挙動図を以下に示します。
ブルウィップ効果は全く現れていません。(3)の挙動図と似ていますが、こちらの各在庫と各販売の遷移現象の方が単純です。

   

(5)ブルウィップ-卸抜き.sip
チャネル構造の中間段階である卸を中抜きをすれば、最下流の顧客への販売の様子が最上流の工場に伝わるまでの時間が短くなりますから、ブルウィップ効果はなくなると思いがちです。しかし現実には、タンデムな構造は残っていますから、情報の劣化は発生します。

中抜きしても製造販売を一つの主体で全て行なうのでなければ、工場と店頭の2つの在庫を持つチャネル構造になります。以下に構造図を示します。

       

この短縮モデルでは、原版の業務プロセスをそのまま踏襲しています。その結果、振幅の増幅は小さくなりますが、各在庫と各販売には、ブルウィップ効果が残ります。時系列挙動図を以下に示します。

ブルウィップ効果を抑制するには、中抜きだけでなく、さらに最下流の店頭受注の情報をチャネルで共有するなどの工夫が必要です。

   
3.3     需要がランダムに変動する場合の原モデルの挙動
以上のモデルでは、需要がある日突然100枚から110枚に増加した際に発生したブルウィップ効果を抑制する方法を検討しました。読者の多くは、この需要変動は現実的ではないと感じておられるのではないでしょうか。

そこで、(3)と(4)のモデルに対して、ランダム変動の需要を与えて、その挙動を調べてみましょう。

需要のランダム変動は、下記の特性を持つ正規分布の乱数とします。
   期待値=100枚/日
   標準偏差=30枚/日

今回のモデルの構造では直接には当てはまりませんが、この乱数の値の90%までをカバーできる安全在庫係数は1.28ですから、定期発注方式での需要変動予防在庫は下式となります。

   需要変動予防在庫=安全在庫係数*単位時間当たりの需要標準偏差
                                   *供給リードタイム^0.5
               =1,2830枚/日*2^0.5
                                
54枚/日
これに伴って、各段階の在庫の初期値は、100枚から154枚に変更します。

(6)ランダム需要-共有情報で発注.sip
前節の(3)のモデルの需要をランダム変動に変更したものです。各発注は以前の値に需要変動予防在庫を加えて、下式となっています。
       各発注=各補充*'供給リードタイム'+54枚−各在庫

時系列挙動図を以下に示します。

ブルウィップ効果は発生していません。在庫はほぼ150枚の周りで変動しており、販売積み残しの店頭残は200枚を越えることはないようです。
品切れ累積は3ヶ月で約200枚です。サービス率を90%にして需要変動予防在庫を求めていますので、単純な乱数については10%の品切れが発生するはずです。平均値が100枚/日で3ヶ月ですから9000枚の10%900枚です。しかし、このモデルでは、在庫不足で販売できなかった場合には、その量が店頭残に残され、その後、在庫に余裕があるときに販売されて品切れでは無くなります。そのために、サービス率をはるかに越える販売量が可能になっています。
結論として、この形式の需要に対して、このチャネルは問題なく運営できることを表しています。

   

(7)ランダム需要-店頭情報共有.sip
前節の(4)のモデルの需要をランダムに変更したものです。時系列挙動図を以下に示します。

ブルウィップ効果は発生していません。
(6)と比べると、在庫の変動が極端に小さく、各販売はほとんどが同じ値になっています。店頭販売が在庫不足に陥ったときに、品切れが発生していますが、その値は(6)の場合より小さな値です。在庫の変動が極端に小さいのは、ある一つの在庫変数の前後の販売が同じ販売量を入出しているためです。強力な支配力を持つ巨大小売業者が製造業や卸業を支配している図に見えます。

結論として、この形式の需要に対しては、このチャネルは問題なく運営できることを表しています。

   

4.特徴のある解答例
受講生は31人でしたが、この課題のレポートを提出したのは29人でした。ブルウィップ効果を抑制する提案を分類すると、情報共有が12人、卸削減が8人、リードタイム短縮が4人、意味不明が5人でした。

情報共有は望ましい段階まで到達したものと、その半ばまでのものとがありました。卸削減は、前章でも示しましたように中抜きだけでは望ましい結果は得られないのですが、中抜きだけで終わったものばかりでした。リードタイムの短縮は、定期発注方式に関する理解不足による誤解で、今回のモデルに対してこの提案は抑制の意味をなしません。そのほか、提案する内容とモデルが一致しないもの、モデルによる表記と検証がないものを意味不明として分類しています。

以下では、情報共有の提案の3件を参考例として掲載します。なお、この閑話で説明したモデルは、講義の際のモデルを少し整理しましたので、モデルの細部は異なります。しかし、本質的な違いはありませんので、受講生がレポートで提出したモデルをそのまま、以下には掲載します。なお、レポートは提出されたままで、誤字脱字に対して一切修正していません。

4.1 参考例1(PC番号:36
         抑制策の形態 :需要を各段階で共通の販売指示として共有
                   前出の(4)ブルウィップ-店頭情報共有.sipに類似

(1) ブルウィップ効果とは何か
ブルウィップ効果とは、消費者のわずかな需要変動が、増幅してメーカーに伝わっていくこと。川下にある小売店での需要変化が、卸業者、メーカーと川上に向かっていく段階で、その変動幅が拡大してしまい、全体で過剰な在庫を生み出してしまう現象のことを指す。これは各段階で、独自の判断によって通常より多い注文をしてしまうことで、拡大が連鎖してしまうのである。もともとの語源は「牛の鞭」の意味で、手元では少しの振りでも先端にいくと大きな振りとなることから、このように言われる。
 

原因

顧客の需要が完全に安定しているということはめったにあることではないので、在庫やその他のリソースを正しく確保しておくためには需要を予測しなければならない。需要予測は統計を元に行われるが、これもまた完全に正確であるということは殆どなく、予測がはずれることは分かっていることなので、企業は予測からはずれた分を吸収するために、余裕をもたせた在庫もつことがしばしばある。その余裕分を安全在庫とよぶ。最終顧客から原材料供給者までのサプライチェーンをさかのぼって見ていくと、サプライチェーン上のそれぞれの組織がより大きな需要の変動を受ける為、より大きなサイズの安全在庫が必要になる。実際の需要が増える局面では安全在庫の確保の為、下流側の組織がそれぞれ発注量を増やしていき、実際の需要が減る局面では、逆に発注量を減らすか、在庫を圧縮するために発注を止める。その変動はサプライチェーンを一つさかのぼるごとに増幅されていってしまうため、過剰な在庫の発生を引き起こしてしまう。

 

(2)ブルウィップ効果が発生するメカニズム
需要を110mai/da リードタイム2日を定型として、販売や在庫の変動のグラフにブルウィップ効果は見られない。ここから需要の変数を変えて、グラフがどう変化するかを分析していく。
まずは需要を増やして210mai/da、リードタイム2日とする。需要が増えて一定となる場合は、購入者が一定に存在するということなので、グラフの変動は極端に少なくなり、供給量が安定する。
では反対に需要を減らして20mai/da、リードタイム2日とする。販売、在庫のグラフともに激しいブルウィップ効果が見られる。
しかし、これではメカニズムが不明なのでどこからブルウィップ効果が発生しだすのかを調べる。注目するのは、在庫変動において店頭在庫から完成在庫へ影響しているかである。先ほど定型とした110mai/da リードタイム2日において、店頭在庫はほとんど同じ量の在庫を有していることを示しており、完成在庫も同じ形なのでそう見えるが、在庫が6000を超えている。これは少しブルウィップ効果の兆しがあるということではないか。販売変動のグラフではここで製造販売が大きく動いている。
店頭在庫が一定のとき、完成在庫は少し変動が激しいものの4000の在庫をキープしていると言える。
需要を80としたとき、完成在庫が一時的にかなり低下するが店頭在庫に影響は見られない。つまりこれは、リードタイムのおかげで、店頭には影響がでなかったのではないか。つまり安全在庫は必須のものではないということである。だが、店頭で品切れを防ぐために、おきてしまう現象ということが言える。
需要が70以下になっていくと店頭在庫が小刻みに、安全在庫を必要とし細かくグラフが動くようになってしまう。
これはリードタイムが長くなればなるほどブルウィップ効果は見られることはなく在庫は一定量保管されているが、減ることがないので余る可能性を大量に秘めている。

(3)ブルウィップ効果がチャネルに及ぼす問題
上記の分析から3点問題があると言える。まず一つ目は、川上事業者は供給能力が足らずに欠品することと、過剰在庫を持ってしまうことを恐れて、わずかな需要変化に対して敏感に反応しているということ。
二つ目に、川上事業者ほど最終顧客に直に接する機会が少ないため、需要動向が伝わるのが遅くなって変動が大きくなりがちだということ。
三つ目には、生産リードタイムが数日から数週間程度あると、どうしても現在の需要動向から、より不確定要素の高い将来の生産計画や購買計画を立てなければならないという問題もあるのではないかと推測が出来る。

(4)ブルウィップ効果を抑制する方法
ブルウィップ効果による意図しない在庫の増加を抑制する対策としては、まず何よりも情報の共有化を図ることである。販売実績と既存在庫数量の情報を、小売店を起点に販売会社、メーカー、仕入先で可能な限り共有することで、情報不足と不安心理の双方を回避し、過剰な生産や仕入れ、それによる過剰在庫の発生を抑制ができる。
具体的には、需要変動のとくに大きな商品や価格の高い商品に絞り、販売会社がその商品の販売実績と在庫数の情報を小売店から集め、その頻度(日次や週次など)、伝達手段(FAXや電子メール、または通常の発注書に追記する形など)を取り決め、ルール化する。販売会社はその情報をまとめてメーカーに提供し、メーカーではその情報を参考にして、より実需に近い生産計画を立てるようにする。
留意することは、メーカー側からも供給予定数や納期などを販売会社や小売店に提供し、相手側の販売計画・仕入計画の立案、入庫作業の事前準備などに協力することである。当然ながら、各社は別会社であり、自社の情報を社外に開示することには抵抗感もあるはずなので、相互にとってメリットが生まれる仕組み・ルールをつくり、それを理解して進めることが重要である。
しかし情報の共有化を図っても、必要なすべての情報が揃うわけではない。販売会社におけるメーカーへの発注や、メーカーにおける生産計画・原材料調達計画の立案は、限られた情報をもとに予測を立てて行わなければならない。予測が外れることもあるが、仮に予測が外れたとしても、直近の受注が増えたので多めにつくっておこう、そうすれば安心だといった考え方ではなく、少なくとも過去の実績やその傾向など既存の情報を分析して、一定の根拠に基づいた発注数量の決定方法、生産計画の立案方法を採用することが重要である。そしてその方法を継続し、確立することが求められる。仮に計算の根拠が誤っていて、やはり在庫が増えてしまうことがあれば、その根拠を見直して改善し、次第に精度を高めていくようにし、経験を蓄積して次に活かすことがポイントだと言える。

(5)ブルウィップ効果抑制のシュミレーションモデル
モデル
ブルウィップ効果を抑制するためには、情報の共有が最優先と考え、製品を受注する際に、需要の情報が行き渡っていることを示すためにこのモデルを作成した。需要を各段階で把握できれば、余分に生産し在庫を持つことは防げる。よって情報を互いに不利なく共有できるシステムを構築していくべきである。

 

       
シミュレーション結果

   


4.2 参考例2(PC番号:08
         抑制策の形態 :需要を各段階の発注簿の共通加算量として共有

(1)ブルウィップ効果とは何か?
ブルウィップ効果とは需要予測により発注量が決められる流通チャネルにおいて発生する現象で、川下で起きた需要の変動(もしくは需要予測の変動)が川上へ向かうにつれて連鎖的に拡大していく状況を意味する。

(2)5段のチャネルモデルにおけるブルウィップ効果発生のメカニズム

    @

   
A

@はブルウィップ効果が発生した場合の各チャネルにおける需要、もしくは発注量の変動を表すグラフである(シミュレーション期間は2ヶ月)。図@では分かりづらいが、このシミュレーションでは最終消費者の需要が10日目に100110へと変動した場合を想定している。図@から分かる通り、需要が変動した10日目を堺に各チャネルの発注量は膨れ上がり、1週間程度で振幅は最大に達する。しかもこの振幅は流通チャネルの川上にいくほど急激に大きくなっている事が分かる。

Aは同シミュレーションにおける各チャネルの在庫状況を表したグラフである。最終消費者の需要は100110に変動しただけだが、流通チャネルの一番川上にある工場の在庫(完成在庫)は一時的に6000を超える量にまで膨れ上がってしまっている。これは図@に示した各チャネルの発注量の増大により、不要な在庫まで抱えてしまっている事を示している。

川下で起きた需要の変動は1つ上のチャネルの発注量において拡大し、その変動はさらに1つ上のチャネルにおいても拡大する。よってチャネルを経過すればするほど元の需要とはかけ離れた数値に達してしまう、これがブルーウィップ効果発生のメカニズムである。

(3)ブルウィップ効果のチャネルに及ぼす問題
需要が100で一定の時、各チャネルの一日あたりの発注量および在庫量は100で一定である。しかし需要が110にシフトしブルウィップ効果が発生すると、図Aで示したように各チャネルが抱える在庫量が増大し、最終消費者レベルの需要の数十倍の数値に達する。さらに発注量と在庫量が短期間で波のように変動するため、在庫と発注の管理にかかるコストも増大してしまう。このケースでは店頭在庫が0になる事はないが、在庫量の波が場合によっては需要を下回り、在庫切れを起こす可能性も考えられる。

(4)ブルウィップ効果を抑制する方法
ブルウィップ効果の引き金となるのは需要の増大であるが、これ自体は販売量を増やす良い傾向なので抑制するのは好ましくない。在庫量を増大させる要因として、問題なのは図@に示した発注量の激しい変動である。発注量の変動はチャネル間の販売と発注のタイミングの誤差から生じるものであるから、この誤差を改善すれば良い。すなわち工場の生産量と各卸売店の発注量は1つ下のチャネルの発注量によって決めるのではなく、最終消費者の需要を下に決めれば良いのである。

次に示すモデルでは「需要」と同じ数値の「製造・発注基準」を設定し、「WI2加算」「WI1加算」「製造加算」の値をそれと同じ数値に設定している。要するに各チャネルの製造・発注量は需要と同数になり、需要の変動と時間的誤差なしに同じ量だけ変動するようなモデルである。なお、もともと加算値にリンクしていた「店頭発注」「WI2発注」「WI1発注」「工場発注」についてはこのモデルでは使用しない。

このような状況は店頭における実際の販売量の情報をコンピューターで管理し、各チャネルがそのタイムリーな数値を把握する事で実現が可能である。しかしながら店頭と工場が直接的に連携を持っているケースは少なく、チャネルを一貫した管理体制の確立にかかるコストについては別の問題として考える必要がある。

(5)ブルウィップ効果改善のモデル

    B

    図C

変更前
WI2加算」=「店頭発注」、「WI1加算」=「WI2発注」、
「工場加算」=「WI1発注」、「製造加算」=「工場発注」

変更後
「需要」=「製造・発注基準」=「WI2加算」「WI1加算」「工場加算」「製造加算」

Bの様なモデルを組みシミュレーションを行なった場合の在庫変動の様子を表した物が図Cである。在庫は一定とはいかないものの周期的かつ一様に変動し、各チャネルにおいて在庫の上限は450を下回っており図Aに比べれば安定的である。


4.3 参考例3(PC番号:05
         抑制策の形態 :需要を各段階で共通の発注量として共通の目標在庫を計算し、
                                その値から各段階の在庫を引いて各段階の販売指示量とする
                                (3)ブルウィップ-共有情報で発注.sipに類似

 (1) ブルウィップ効果とは何か?
ブルウィップ効果とは、消費者需要の変動が、サプライチェーンの川上に行くほど増幅され、メーカーに伝わっていく現象のことである。結果、川上に行くほど多くの在庫を抱えることとなり、サプライチェーン全体としても多くの過剰在庫を抱える原因となる。
手もとの小さなブレが先端の大きな揺れを引き起こすということで牛のムチ(ブルウィップ)にちなみ、名づけられた。

(2)5段のチャネルモデルにおけるブルウィップ効果発生のメカニズム

   
これは、ブルウィップ効果が観測された際のサプライチェーンの各チャネルの在庫の値の一部である。需要に対し川上に行く程大きな在庫を抱えていることが観測できる。
これは、需要が111日段階で100枚から110枚に変動しても店頭在庫が100枚しかしかないため、受注が増えても販売が増えずチャネルごとの残に蓄積されていく事が原因で起こる。

   
メカニズムを説明すると、受注したものの販売ができなかった分が、111日から19日にかけて10枚ずつ蓄積されていき店頭残が最大190枚まで膨らむ。店頭残りと店頭受注はイコールなので、店頭受注も同様に膨らむ結果となる。さらに店頭受注は川上のWI-2残りの量に影響を与え、WI-2受注でリードタイム分の2を掛けて店頭在庫に販売しようとする。同様のことを川上に向けて繰り返すため、川上の上へ行く程初めの10枚の誤差がリードタイム分2倍され、在庫がより膨れ上がる結果となる。

(3) ブルウィップ効果がチャネルに及ぼす問題
ブルウィップ効果が発生した際の問題としては、まずサプライチェーン全体としての過剰在庫の発生が挙げられる。これは川上のチャネルであるほど影響が大きく、在庫の処理若しくは保管に多大なコストを必要とすることになり、会社の利益を圧迫する。
その他の問題としては、在庫の量に山と谷が出来てくることで、社員の仕事量にも山と谷が出来上がり、人的資源の運用効率が下がるという問題や、設備の運用効率も低下するという問題も発生する。

(4) ブルウィップ効果を抑制する方法
ブルウィップが起こる原因は、川上のチャネルが需要を正確に把握できない事にある。つまり、ブルウィップ効果を抑制するためには、全チャネルが可能な限り需要を把握若しくは予測する仕組みが必要となるということである。
私の提案としては、川下から川上に向けての情報共有のシステムを構築することである。これにより受注を需要情報に合わせて行うことができるようになるため、受注と販売の誤差が生じても川上のチャネルで在庫を抱えすぎるという事態を回避できる。
ただし、この場合需要に合わせて最低限の量しか受注をしないことになるので仕入れの回数が多頻度化することとなるため、流通のコストが上がることに注意しなくてはならない。

(5) ブルウィップ効果抑制のシュミレーションモデル

   

モデルの変更点としては、まず需要の情報の共有を表わすために需要情報のコンバーターを設置し、Definitionには『需要』と入力する。
その後、需要情報からコネクタをWI-2受注、WI-1受注、工場受注、製造指示へと伸ばし、それぞれのDefinition

WI-2受注:MAX(0<<mai>>,WI-2*'供給リードタイム'-店頭在庫)/TIMESTEP
                     ↓
MAX(0<<mai>>,需要情報*TIMESTEP*'供給リードタイム'-店頭在庫)/TIMESTEP

WI-1
受注:MAX(0<<mai>>,WI-1*'供給リードタイム'-'WI-2')/TIMESTEP
                     ↓
MAX(0<<mai>>,需要情報*TIMESTEP*'供給リードタイム'-'WI-2')/TIMESTEP

工場受注:MAX(0<<mai>>,工場残*'供給リードタイム'-'WI-1')/TIMESTEP
                     ↓
MAX(0<<mai>>,需要情報*TIMESTEP*'供給リードタイム'-'WI-1')/TIMESTEP

製造指示:MAX(0<<mai>>,製造残*'供給リードタイム'-'WI-1')/TIMESTEP
                     ↓
  MAX(0<<mai>>,需要情報*TIMESTEP*'供給リードタイム'-'WI-1')/TIMESTEP

と変更しました。これにより需要にあわせた受注が行われることとしてシミュレーションを行います。

シミュレーション結果

   

   

4.4     提出された全レポートに対する感想
この出題に取り組むには、先ず、ブルウィップ効果を発生する原モデルに対して、諸々の条件を変更してシミュレーションを繰り返す必要があります。それを通じて、ブルウィップ効果を発生するモデルの構造とプロセスとを理解することができます。レポートを見る限りでは、2/3程度の受講生が、この段階にまともに取り組んだようです。これは想定していた以上の割合でした。
また、仮想経営であるシミュレーションを繰り返すことにより、チャネルの稼動状態の基本的な挙動を理解し、問題解決のきっかけを掴むことを期待していました。いわゆる“モデルベースト経営”の主要な機能である、@“仮説検証”と、A“問題解決策の探索”のうちの後者Aです。このような問題解決策の探索には、全レポートの内で1/3程度がまともに取り組んだようです。それにより、ビジネスの世界でSDをどのように活用できるかを体験的に身に付けることができたろうと思います。

文系学生のシステム・ダイナミックス教育については、次のような結論を得ました。
適切な時間数と適切な教材を準備して、SDに関する確信と情熱を持って講義する。
ならば、文系学生にシステム・ダイナミックスを実学として教育することに、何等問題はないと言うのが結論です。
今回提供しているモデルや説明文は、サプライ・チェーンやチャネル・マネジメントの導入教育で参照いただけると思います。企業内研修や大学教育の中で、お使いいただけると幸いです。
 

【附録 フリーのSDツールの入手】

評価版Ps Studio Expressのダウンロード方法
Powersim社の評価版です。SDに関して初心者の方が、SDの実用化の可能性を探るために、SDの概要を学習した上で、Studio8を評価したい場合などにお使い下さい。
ダウンロードの方法
  @ http://www.posy.co.jp/PS-download-f.htm を開く。
  A 上端の“評価版のダウンロード”をクリック。
  B ■評価版:Studio Express のダウンロードにある空色のボックスをクリックすると、Powersim社のダウンロードのページに入りますから指示に沿って進んでください。

Studio 8 Expressの機能
  ▼再インストール:繰り返し可能
  ▼機能:商品版と全く同一機能(具体的には、その時点での最新のProfessional版と同じ)
  ▼要素数:50以下
  ▼有効期間:Powersim社がメールでプロダクト・キィを送付した後60日間
 

【附録 方程式一覧】

Name                 Unit       Definition           
WI-1                  mai       100<<mai>>
WI-2                  mai       100<<mai>>
WI1
発注             mai/da   MAX(0<<mai>>,
                                     WI1
補充残*'供給リードタイム'-'WI-1')/TIMESTEP
WI1
補充             mai/da   WI2発注
WI1補充残          mai        //0<<mai>>// 100<<mai>>
WI1
補充清算       mai/da   //MIN(WI1補充残/TIMESTEP,工場販売)// 工場販売
WI1−残             mai        'WI-1'-WI2補充残
WI2発注             mai/da    MAX(0<<mai>>,
                                      WI2
補充残*'供給リードタイム'-'WI-2')/TIMESTEP
WI2
補充             mai/da   店頭発注
WI2補充残          mai        //0<<mai>>// 100<<mai>>
WI2
補充清算       mai/da   //MIN(WI2補充残/TIMESTEP,WI1販売)// WI1販売
WI2販売              mai/da   MIN('WI-2'/TIMESTEP,店頭発注)
WI2
−残              mai        'WI-2'-店頭補充残
WI1販売             mai/da   MIN('WI-1'/TIMESTEP,WI2発注)
供給リードタイム               2
品切れ                mai/da   MAX(0<<mai/da>>,店頭受注-販売)
品切れ累積          mai        0<<mai>>
工場在庫             mai        100<<mai>>
工場在庫−残       mai        工場在庫-WI1補充残
工場補充
             mai/da   WI1発注
工場補充残
          mai        //0<<mai>>// 100<<mai>>
工場補充清算       mai/da   //MIN(工場補充残/TIMESTEP,製造)// 製造
工場販売
             mai/da   MIN(工場在庫/TIMESTEP,WI1発注)
店頭加算             mai/da   需要
店頭受注
             mai/da   店頭残/TIMESTEP
店頭在庫             mai        100<<mai>>
店頭在庫−残       mai        店頭在庫-店頭残
店頭残
                mai        //0<<mai>>// 100<<mai>>
店頭清算             mai/da   //MIN(店頭残/TIMESTEP,販売)// 販売
店頭発注
             mai/da   MAX(0<<mai>>,
                                       店頭補充残*'供給リードタイム'-店頭在庫)/TIMESTEP
店頭補充              mai/da   店頭受注
店頭補充残
           mai        //0<<mai>>// 100<<mai>>
店頭補充清算       mai/da   //MIN(店頭補充残/TIMESTEP,WI2販売)// WI2販売
期日
                    @da        TIME
製造                    mai/da   製造指示
製造指示
              mai/da   MAX(0<<mai>>,
                                        工場補充残*'供給リードタイム'-工場在庫)/TIMESTEP
販売                    mai/da   MIN(店頭在庫/TIMESTEP,店頭受注)
需要         mai/da   (100<<mai>>+STEP(10<<mai>>,
                   STARTTIME+10<<da>>))/TIMESTEP
                                    //100<<mai>>/TIMESTEP
 

SD閑話-16 了