待ち行列理論を応用して10分カットが儲かる仕組みを解明してみた。

2023年10月11日

Photo by Dan Gold on Unsplash

10分間カット – Wikipediaによると、10分カットは1990年代後半に日本で誕生した業態なのだそうです。

まさにデフレ日本の象徴という感じですが、カンボジアにはその上をいく1ドル床屋が路上に沢山あります。

これは人件費の差で成り立つ商売ですが、日本の10分カットで働いているスタッフの人件費は、普通の床屋で働いているスタッフの人件費と変わらないはずです。

従って、経営を成り立たせるためには、普通の床屋と同じくらいの売上高が必要です。

そこで普通の床屋と10分カットの売上高が同等になるかを、待ち行列理論を使って確認してみました。

 

系の収容人数に限りがある場合の待ち行列

窓口が1つしかない場合はM/M/1モデルという待ち行列になりますが、これは普通、系内に入れる人数(または個数)に制限がないことを前提にしています。

しかし現実世界では制限があることの方が多いと思います。

例えば、ATMの前にあまりに長い行列ができていたら、また出直してくるでしょう。

また、コールセンターに電話してくる人も、あまりに待ち時間が長ければ諦めるか改めてかけ直すと思います。

このように待ち行列の長さが有限であることは、「系内の収容人数に限りがある」と表現することもできます。

 

状態遷移図

まず、系の収容人数に制限のない場合のM/M/1モデルの状態遷移図をおさらいしておきましょう。

系の状態(人数や個数のこと)が取りうる値は無制限なので、それを0からjとし、到着率をλ、離脱率をμとすると、次のように書けました。

 

これが系の収容人数に制限がある場合、その収容人数をCとすると、次のように書けます。

 

状態はC+1以上にはならないため、このように短くなります。

 

次に、各状態になる確率Πiを求めます。

状態は0~Cまでしかないので、

Π0+Π1+Π2+、、、+ΠC=1

が成り立つはずですね。

また、系の収容人数に制限のないM/M/1モデルで成り立つ公式

Πj=Π0ρj  ・・・ 式1

は、収容人数に制限がある場合でも同じく成り立ちます。

従って、

Π0+ρΠ0+ρ2Π0+、、、+ρCΠ0=1

が成り立つはずです。

そして、等比級数の公式も利用しながらこれを変形すると

Π0=(1-ρ)/(1-ρC+1)  ・・・ 式2

となります。

式2を式1に代入することによって、すべての状態について、その状態になる確率を求めることができるようになりました。

 

系に滞留する人数

次に、系に滞留する人数を求める式を導きます。

系に滞留する人数という言い方ではイメージが湧かない人は、ATMの例でいうと、行列に並んでいる人数とATMでお金を下ろしている人数(これは1人)の合計のことだと考えて下さい。

これは期待値の公式より、各状態の値とその状態になる確率を掛けた値を、すべての状態について足し合わせた値になります。

従って、系に滞留する人数の期待値Lは

となります。

 

次に、このLを窓口にいる人数行列の人数に分解してみましょう。

この行列はM/M/1なので、窓口は1つしかありません。

ということは、窓口にいる人数は0か1の2通りしかないことになります。

従って、窓口にいる人数の期待値は、

Ls=0×Π0+1×(Π1+Π2+、、、+ΠC)

=0+Π1+Π2+、、、+ΠC

=1-Π0

になります。

 

行列にいる人数の期待値は、系全体の人数から窓口にいる人数を引けばよいだけなので、

Lq=L-Ls

と簡単に計算できます。

 

系に入れる人数

次に系に入れる人数を求めてみましょう。

「なんだそれは?」

と思われるかもしれませんが、これが系の収容人数に制限のあるM/M/1モデルの肝になります。

なぜ肝になるのかというと、単位時間当たりに到着する人数(到着率)と系に入れる人数が異なってくるからです。

ちなみに系の収容人数に制限のないM/M/1モデルでは、この2つは同じです。

 

なぜ異なってくるのかというと、系の中にすでにC人がいる場合は、次に来た人は定員オーバーで系に入れないからです。

系の中にC人いる場合・・・単位時間当たりに系に入れる人数=0

系の中にC-1人以下がいる場合・・・単位時間当たりに系に入れる人数=単位時間当たりに到着する人数=λ

これに注意して単位時間当たりに系に入れる人数の期待値を求めると、

0人×系にC人いる確率+λ人×系にC-1人以下がいる確率

=0×ΠC+λ(1-ΠC)

=λ(1-ΠC)  ・・・ 式3

となります。

この式3はとても重要で、次の10分カットのシミュレーションで使います。

 

10分カットを待ち行列でシミュレーション

問題設定

次のような普通の床屋さんと、10分カットの床屋さんがあるとします。

【普通の床屋さん】

料金:5,000円/人

カット時間:60分/人

店の収容人数:4人

客の到着率:8人/時

 

【10分カット】

料金:1,000円/人

カット時間:10分/人

店の収容人数:4人

客の到着率:8人/時

 

この時、1時間当たりの売上高の期待値はそれぞれいくらになるでしょうか?

 

考え方

1時間当たりの売上高は、1時間当たりに何人の客が店に入れるかで決まります。

定常状態では入りと出はバランスするはずなので、1時間当たりに店を出た(=お金を払った)人数は1時間当たりに店に入った人数に等しくなり、それに料金を掛けた値が1時間当たりの売上になるからです。

従って、単位時間当たりに系(=店)に入れる人数の期待値を式3で求め、それに料金を掛けるだけです。

 

Excelで計算

式1~3を使ってExcelシートで計算すると、次のようになります。

1時間当たりの売上高の期待値は、普通の床屋さんが4,999円、10分カットが5,378円となり、10分カットに軍配が上がりました。

 

最後に

条件を合わせるために、普通の床屋も10分カットも収容人数=4,到着率=8としてシミュレーションしましたが、実際には普通の床屋に4人も客がいる(待っている客が3人)ことはないでしょう。

最後に来た客は3~4時間も待つことになるからです。

実際には普通の床屋は収容人数=2、到着率=4くらいが現実的かもしれません。

その条件でシミュレーションすると、次のようになります。

 

普通の床屋の売上高が少し減りましたね。

これは可能性は低いものの、店に客が1人もいなくなってしまい、手待ちの時間ができる可能性が5%くらいあるためです。

これはΠ0を見れば分かります。

普通の床屋では.05になっていますね。

ちなみに10分カットではこうなる確率が10%もありますが、それでも売上高の期待値はこちらの方が大きくなります。

 

このようにして収容人数に制限がある場合の待ち行列は計算できますが、今回は床屋を訪れる人数は無限であることを想定していました。

でも実際には、遠くの県からわざわざ訪れてくるような床屋はカリスマ理容師がいる店くらいなものでしょう。

つまり潜在顧客数は有限であるのが現実的です。

次回はそのような待ち行列を扱います。

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

 

 

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…