【Excelで解く待ち行列M/M/Cモデル】物流現場で応用する方法を具体的に解説

2022年11月6日

Photo by Bernd Dittrich on Unsplash

窓口が一つしかない待ち行列はM/M/1モデルと呼ばれ、行列の人数や待ち時間を計算するための公式を【待ち行列|M/M/1モデル】5つの定理の証明方法と物流への適用事例の記事で紹介しました。

今回は窓口が複数ある待ち行列を見ていきます。

これはM/M/Cモデルと呼ばれ、M/M/1モデルより格段に応用範囲が広がります。

例えば、コールセンターには何十人、何百人というオペレーターがいるので、M/M/Cモデルでないと話しになりません。

物流でもそうですね。

ピッキングする人が複数いる倉庫でピッキングオーダーが溜まる枚数だとか、荷卸し場が複数ある倉庫でのトラックの待ち時間とかも、M/M/Cモデルで解析できます。

 

M/M/1モデルと同じように、M/M/Cモデルでも行列の人数(台数)待ち時間を計算する公式は既に知られているので、それに値を代入して計算するだけです。

ただ、M/M/1モデルよりも相当複雑な式になります。

また証明も難しいです。

でも大丈夫です。

私たちは別に数学者ではありませんので、先人たちが証明した公式を有り難く使わせてもらえばよいのです。

 

ただ、公式の中の変数が何を意味しているのかくらいは理解しておく必要があります。

そこでまずは理解するための重要ポイントを図解で解説します。

 

【円安の今こそチャンス!】

親日国カンボジアであなたの会社の商品を販売してみませんか?

食品/飲料ヘルスケアコスメ流通のスモールスタートを管理人がサポートします。

Royal Palace in Phnom Penh (2015)

M/M/Cモデルを理解するためのポイント

M/M/Cモデルは窓口が複数ある場合の待ち行列ですが、行列は1列であることを想定しています。

窓口がc個ある場合は、次のようになります。

 

下図のように、各窓口に別々に並ぶことは想定していないことに注意しましょう。

 

次に注意すべきは、系全体からの離脱率です。

行列は1列だけしかないため、系全体への到着率は、行列へ人が並ぶ速度λと一致します。

しかし、系から人が離れるスピードは、各窓口の処理スピードμにはなりません。

窓口がc個あれば、cμになるはずです。

 

例えば、各窓口の処理スピードが10人/時である場合、窓口が5か所あれば、系全体から人が離れるスピード(=離脱率)は50人/時になります。

ところが、人が少なくて、1つの窓口が空いていたらどうでしょう?

4つの窓口からしか人は出ていかないので、系全体からの離脱率は40人/時になりますね。

同様に、人が少なくて3つの窓口しか稼働していない場合は、系からの離脱率は30人/時になります。

このように、系全体に人が窓口の数以下しかいない場合には、

系からの離脱率=各窓口からの離脱率×稼働している窓口の数

になります。

 

一方、系全体に窓口の数以上の人がいる場合にはどうでしょうか?

窓口が5つしかなくて、各窓口からの離脱率が10人/時なら、系内に10人いても系からの離脱率は50人/時のままで変わりませんね。

なぜなら、窓口にいる5人以外の5人は行列に並んでいるからです。

従って、系全体に窓口の数以上の人がいる場合の系からの離脱率は、

系からの離脱率=各窓口からの離脱率×稼働している窓口と稼働していない窓口の合計数

になります。

 

以上を状態遷移図にまとめると次のようになります。

 

このようにM/M/Cモデルでは、系内の人数が窓口の数以下と以上で場合分けが必要です。

つまり、系内の人数をj人、窓口の数をcとすると、

j≦c:すべての人が窓口にいる

j≧c:すべての窓口が埋まっている

のような場合分けが必要になります。

 

M/M/Cモデルの公式

系にj人いる確率を計算する公式

系内にj人が滞留する確率を、待ち行列理論ではΠjと記載し、窓口が1つしかない場合のΠjは次のような公式で計算できることを前回の記事で紹介しました。

Πj=Π0λ0λ1λ2…λj-1/μ1μ2μ3…μj

待ち行列理論を使ってフォークリフトが正常稼働する台数を推定してみる

 

窓口が複数あるM/M/Cモデルでは、次の公式で計算できます。

j≦cの場合)

Πj=(cρ)Π0/J!  

j≧cの場合)

Πj=(cρ)Π0/c!cj-c 

 

但し、

ρ=λ/cμ

(以上、M/M/c queue – Wikipediaより抜粋&加筆)

 

難しい式ですね。

この公式の証明は更に難しいです。

でも、そんなこと気にすることはありません。

数字を代入して計算できればいいのです。

後ほど、一発で計算できる計算シートをExcelで作ります。

 

すべての窓口が埋まっている確率を計算する公式

上式を使うと、すべての窓口が埋まる確率(≒待ち行列ができる確率)は次のように求められます。

P(J≧c)=(cρ)cΠ0/c!(1―ρ)

M/M/c queue – Wikipediaより抜粋)

 

待ち人数と待ち時間を計算する公式

上式を使って、行列に並ぶ人数の期待値(=平均値)は次のように計算できます。

Lq=P(j≧c)ρ/(1―ρ)

M/M/c queue – Wikipediaより抜粋)

 

また、リトルの法則から行列に並ぶ時間の期待値は次のように計算できます。

Wq=Lq/λ=P(j≧c)/(cμ―λ)

 

ExcelでM/M/Cモデルの計算テンプレートを作成

以上の公式は覚える必要はありません。

でも実際の数字を当てはめて手計算するのは面倒なので、Excelで計算シートを作っておきましょう。

コールセンターに毎時間平均40件の電話があり、1人のオペレーターが1件に対応するのに平均5分かかるところ、4人のオペレーターがいるとします。

この時、顧客の平均待ち時間を推定してみましょう。

まずは、到着率λ、離脱率μ、窓口数cを求めます。

λ=40件/時

μ=1件/5分=1件/(5/60)時間=12件/時

c=4人

となりますね。

 

あとは、先ほどの式に代入するだけです。

求めたいのは顧客が行列で待つ時間Wqですから、

Wq=P(j≧c)/(cμ―λ)

を計算します。

この式の中でλ、μ、cは分かっているので、分からないのはP(j≧c)だけですね。

これは、

P(J≧c)=(cρ)cΠ0/c!(1―ρ)

で求めることができます。

そして、この式をよく見ると、分からないのはΠ0だけです。

このΠ0は、

で計算できます。

ρ=λ/cμですから、この式の中の変数はすべて分かっています。

つまり、Π0が計算できれば、Wqも計算できるということになります。

 

それでは、まずΠ0をExcelで計算してみましょう。

下図のように入力すれば計算できます。

 

Π0は0.02131と計算できました。

このΠ0を使ってP(j≧c)LqWqは次のように計算できます。

 

これで電話がつながるまで顧客を待たせる時間が分かりました。0.0822時間≒5分です。

日本人は気が短いようで、約6分しか待てないといわれています。

5分なので、ギリギリセーフということが分かります。

 

物流センターへの適用事例

次にM/M/Cモデルが物流にどのように適用できるかについて見ていきましょう。

ある物流センターでは荷卸場が4か所ありますが、荷卸しのスピードが間に合わず、平均1時間くらいトラックを待たせています。

トラックは平均6台/時で物流センターに到着し、荷卸場1か所当たり5人のスタッフが担当していて、平均1.7台/時で処理できます。

センター長は、この待ち時間を平均10分に短縮したいと考えています。

そこで2つのオプションを考えました。

  1. 荷卸場を1か所増やし5か所にする
  2. 荷卸場は4か所のままで、荷卸しスタッフを増やして1か所当たりの生産性を高める

 

オプション1は設備投資が必要ですが、オプション2は人件費増だけで済みます。

センター長はどちらを選択すべきでしょうか?

 

この状況をM/M/Cモデルを使って待ち時間を計算すると、次のようになります。

先ほど作った計算テンプレートを使っています。

 

確かにWqは0.94時間、つまり待ち時間がほぼ1時間かかっていることが分かります。

ついでにLqは5.、つまり平均6台のトラックが待っているということも分かります。

 

それでは荷卸場を1つ増やして5か所にしたらどうなるかを計算してみましょう。

 

このように待ち時間は0.15時間=約10分、待っているトラックは1台に減ることが分かります。

次に荷卸場は4か所のままで、スタッフを3割増員して荷卸しの生産性を3割増しにしたらどうなるかを計算してみましょう。

荷卸場1か所当たりの荷卸スピードが1.7台/時でしたが、3割増しの2.2台/時になったと仮定します。

 

するとこのように、この方法でも待ち時間は約10分まで短縮できることが分かります。

一応、スタッフの人数を比較してみましょう。

現状は荷卸場が4か所あり、1か所当たり5人で担当していますので、合計20人のスタッフが作業しています。

荷卸場を5か所に増やすと、単純にスタッフが5人増えて、合計25人になります。

それでは、荷卸場を増やさずに、スタッフを3割増やす場合はどうでしょうか?

5人×4×1.3=26人

ですね。

つまり、荷卸場を5か所にする場合と比べて、1人多いだけです。

これなら、わざわざ設備投資をして荷卸場を増やす必要もなさそうですね。

 

但し、この作戦がいつまでも使えるわけではありません。

ある程度の人数まではスタッフの数に比例して生産性も上がるかもしれませんが、あまり増やし過ぎるとどこかで頭打ちになってしまうでしょう。

今回はスポットでスタッフを増やすだけで対応できますが、近い将来、設備投資が必要になることもセンター長は頭に入れておく必要がありそうです。

 

 

Udemyの関連講座

Optimization with Excel: Operations Research without Coding

Optimization with Gurobi, CBC, IPOPT. Linear programming, nonlinear, genetic algorithm. Using Excel, without coding

 

Assignment and Transportation Problem Operations Research 01

The Hungarian Assignment Problem and Transportation Problem

 

Optimization with Python: Solve Operations Research Problems

Solve optimization problems with CPLEX, Gurobi, Pyomo… using linear programming, nonlinear, evolutionary algorithms…