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

2022年11月27日

Photo by Jake Nebov on Unsplash

ある物流会社では経費削減のため、減価償却が済んだフォークリフトをなるべく長い期間使い続ける戦略を取っています。

勿論、それだけ故障頻度は高くなりますが、修理代や修理中の機会損失等を考慮しても、その方がお得だろうという考え方です。

 

物流センターAでは5台のフォークリフトを所有しています。

平均車齢が7年と古いため、平均して1年に1度くらい故障します。

そして故障すると修理が終わるまでに平均1か月かかります。

この国ではフォークリフトを輸入に頼っているため、スペアパーツが在庫になくて修理に2か月くらいかかるなんてこともざらにあるためです。

修理期間中は少ないフォークリフト台数でしのぐことになります。

この時、4台のフォークリフトでしのぐことになる確率は何%あるでしょうか?

 

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

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

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

Royal Palace in Phnom Penh (2015)

一般的な待ち行列モデル

この問題は一見、待ち行列理論など使えなさそうに思えますね。

なぜなら、待ち行列理論で扱うのは一般に次のような問題だからです。

 

あるATMは昼休み時間に平均2分間に1人がお金を下ろしに来ます。

一方、ATMを操作してお金を受け取れるまでの時間は平均1分間です。

この時、行列で平均何分間待つことになるでしょうか?

 

図で描くと次のようになります。

 

拡大解釈して待ち行列モデルに当てはめる

ここで冒頭の問題に当てはめるために、銀行物流センターフォークリフトとしてみましょう。

 

この図を見て一目でピンと来る人は相当良いセンスの持ち主です。

普通はピンと来ないです。

 

待ち行列では、何を「」とするかを始めに決めないといけません。

ATMの例では銀行が系になります。

フォークリフトの例では、「修理工場」と「物流センター」が系の候補になりますが、普通は「修理工場」を系として考えるのではないでしょうか?

なぜなら、修理工場で修理待ちの列ができることが予想されるからです。

ところが、この例では物流センターを系と考え、その中にフォークリフトが何台滞留するか?と考えます。

 

次にわかりにくいのが、離脱率の考え方です。

ATMの例では系、つまり銀行からの離脱率はATMの処理速度のことでした。

ATMの処理速度が上がれば、銀行からの離脱率も上がります。

ところが、フォークリフトの例では、フォークリフトの故障速度を離脱率と考えます。

フォークリフトが故障する速度が上がるほど(より故障し易くなるほど)、物流センターから離脱する速度も上がると考えるのです。

 

もう一つわかりにくいのは、到着率と離脱率が場面によって異なることです。

どういうことなのでしょうか?

 

到着率や離脱率が一定にならない待ち行列とは?

銀行の例では人の到着率は一定と考えています。

これは銀行に来る人は無限にいると考えているためです。

実際には来る可能性がある人は数千人くらいしかいないかもしれませんが、皆がみんな同じ時間に来ることはなく、到着率は一定と考えても大きな問題にはなりません。

また、ATMが1台であれば離脱率も当然一定と考えられます。

 

これに対し、フォークリフトの例ではフォークリフトの到着率も離脱率も一定ではありません

フォークリフトの台数が5台と限られているため、場面場面で異なってきます。

例えば、修理工場にフォークリフトが1台、物流センターに4台ある時の到着率と離脱率は次のようになります。

 

故障したフォークリフトを修理するのに1か月かかるということは、1日で1/30台分を修理できるということなので、修理工場を出て物流センターにやってくる到着率λは1/30台/日になりますね。

 

少し難しいのは、離脱率μの計算です。

フォークリフトは1年に1回故障するので、1日に1/365故障すると考えられます。

物流センターにはこのフォークリフトが4台あって、どれも1日に1/365回故障します。

ですので、物流センター全体では1日に4/365故障します。

1日に4/365回故障するということは、1日に4/365のフォークリフトが物流センターから出ていくということなので、離脱率μは4/365台/日になるのです。

 

次に、修理工場にフォークリフトが2台、物流センターに3台ある時の到着率と離脱率はどうなるでしょうか?

同じように考えると、次のようになります。

 

同様に他の場合については以下のようになります。

修理工場にフォークリフトが3台、物流センターに2台ある時の到着率と離脱率

 

修理工場にフォークリフトが4台、物流センターに1台ある時の到着率と離脱率

 

修理工場にフォークリフトが5台、物流センターに0台ある時の到着率と離脱率

 

修理工場にフォークリフトが0台、物流センターに5台ある時の到着率と離脱率

 

各状態の確率を求める定理を適用する

これですべてのパターンを網羅できました。

物流センターの中のフォークリフトの台数は0~5の6通りありました。

これを待ち行列風にいうと、「系の中に滞留している台数」ということになります。

6通りの定常状態が考えられるということです。

この定常状態と上述した到着率と離脱率をまとめて書くと、次のように状態遷移図を描くことができます。

 

これを前回の記事で解説したM/M/1モデルと比べてみましょう。

M/M/1モデルにおける状態遷移図は次図のようでした。

 

このようにM/M/1モデルでは到着率λと離脱率μを、系の中に滞留している人数に関わらず一定としていましたが、今回は異なります。

でも系内に滞留する人数がj人である確率Πjは、M/M/1モデルと同じようにして求めることができます。

 

M/M/1モデルでは、ΠjはΠ0を使って次のように計算できました。

ΠjΠ0ρj

=Π0λj/μj

【待ち行列|M/M/1モデル】5つの定理の証明方法と物流への適用事例

今回はλとμが一定でないため、次のようになります。

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

 

本サイトは数学を実務に使うためのやり方を紹介するサイトですので、この式の証明は省略しますが、これは簡単に証明できます。

 

フォークリフトの例ではj=0~5ですが、j=1~5におけるΠjは次のように計算できます。

Π1=Π0λ0/μ1

Π2=Π0λ0λ1/μ1μ2

・・・

Π5=Π0λ0λ1λ2λ3λ4/μ1μ2μ3μ4μ5

 

また、すべての状態の確率を足したら1になるので、

Π0+Π1+Π2+Π3+Π4+Π5=1

が成り立ちます。

 

よって、

Π0(1+λ0/μ1+λ0λ1/μ1μ2+・・・+λ0λ1λ2λ3λ4/μ1μ2μ3μ4μ5)=1

が成り立ちます。

この式の中で未知なのはΠ0だけであるため、この方程式を解けばΠ0が求まります。

すると、他の式にΠ0を代入することにより、Π1~Π5も求まることになります。

 

以上をExcelで計算すると、次のようになります。

クリックすると拡大します

 

これで最終行にΠ0~Π5が計算されました。

知りたいのは、物流センターの中で稼働中のフォークリフトが4台になる確率なのでΠ4を知りたいわけです。

その確率は28%あることがわかります。

1か月の28%、つまり1週間くらいはフォークリフトが1台欠けた状態で運営しないといけないことを覚悟しましょうということです。

 

まとめ

  1. 待ち行列理論は行列の人数を推定するためだけのものではない。モノが滞留する個数を推定することにも使える
  2. 人やモノが滞留する場所、つまり「系」は銀行、スーパー、レストラン、物流センター、家の中など、いかなる場所でもよい
  3. 人やモノが無限ではなく限られている場合、到着率や離脱率は一定にならない。しかし、その場合でも各状態に落ち着く確率Πjは同じように計算できる

 

このフォークリフト問題を待ち行列理論で解く方法には別の方法もあります。

こちらの方が応用範囲が広い解法です。

【有限ソースの待ち行列】フォークリフトが正常稼働する台数を求める別解

 

 

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…