2人客が増えるとラーメン屋は潰れるか

はじめに

こんにちは、AI技術開発2グループの田村です。普段はデータ分析を通したプロダクト改善に従事しています。
今回は業務とは直接関係のない、個人的な興味から取り組んだ話題をご紹介します。

先日ラーメン屋に行った時、気になった場面に出くわしました。  
店内はよくあるカウンター席のみで、自分の前の番は2人組のお客さんが並んでいました。

店はこの2人客を隣り合う席に案内しようとしていて、運用としては次のようなものでした。

  • 空席ができても、隣同士で空いていなければ2人組は案内しない  
  • 2人客の後ろに1人客が並んでいても、1人客を先に案内しない(順番は守る)

こうした運用はラーメン屋では珍しくなく、2〜3人で来たときにはありがたいサービスでもあります。一方で、店の立場で考えると気になる点もあります。

店にとってはマイナスになり得る

カウンター席で1席だけ空いている状況はよくあります。  
1人客ならすぐ案内できますが、2人客が先頭にいると「隣接2席が空くまで」待つことになり、空席がそのまま残る時間が発生します。

この空席時間は、店の売上(回転)に対してマイナスの影響があるはずです。

ここから素朴な仮説として、

2人客が増えるほど、席がうまく埋まらず回転が落ち、売上が下がるのではないか

という疑問が出ます。

この記事でやること

本稿では、2人客の増加が店の回転率に与える影響を、以下の手順で定量的に検証します。

  1. 数理モデルの構築: 損失系モデルをベースに、カウンター席特有の「隣接した2席が必要」という制約を加えた連続時間マルコフ連鎖(CTMC)を定義
  2. 定常分布と評価指標の定義: 長期的な営業状態における平均的なパフォーマンスを算出するため、各状態の出現確率を示す定常分布 $\pi$ を算出。これに基づき、入店確率および売上の指標となる人数スループット $T_{\text{people}}$ を定義
  3. シミュレーションによる影響評価: 到着率(混雑度)と2人客率($p$)の組み合わせにおいて、スループットがどのように変化するかを調査


1. モデル構築

この現象を解析するため、待ち行列理論をベースに独自の制約を加えたモデルを構築します。

1.1 損失系モデルと「席の配置」の考慮

待ち行列理論における損失系モデル(M/M/s/s)をベースに構築します。これは「到着した瞬間に案内可能な席がなければ、客は待たずに立ち去る」という仮定です。

通常の損失系モデルでは「店内に何人いるか」という合計人数のみを状態としますが、今回は「空席が2つあっても、離れていたら2人客は座れない」という配置の制約を扱う必要があります。そのため、各席の「空き(0)・埋まり(1)」の状態を並べたビット列 $s = (s_1, s_2, \dots, s_N)$ を一つの「状態」として定義します。

1.2 主要パラメータ:到着率 $\lambda$ と 2人客率 $p$

モデルの挙動を決定するメインの変数は以下の2点です。

  • 到着率 $\lambda$(=混雑度): 単位時間あたりに平均して何組の客が来店するかを表す。(客が互いに独立かつランダムに現れるポアソン過程を仮定)
  • 2人客率 $p$: 到着した客が「2人組」である確率(1人客である確率は $1-p$)

また、補助的なパラメータとして退店確率 $\mu$(各客が単位時間あたりに食べ終えて席を立つ確率)も定義しますが、今回は全客一律の固定値として扱います。

1.3 なぜ「定常分布 $\pi$」が必要なのか

店内の状態は、客の到着と退店によって時一刻と変化します。特定の瞬間の状態だけを見ても、店全体の長期的なパフォーマンスは測れません。

私たちが知りたいのは、長期間営業した際の「単位時間あたりの平均入店人数」という期待値です。この期待値を計算するために、各状態 $s$ に長期的に滞在する確率の分布である定常分布 $\pi(s)$ を求める必要があります。

1.4 定常分布を用いた指標の定義

定常分布 $\pi(s)$ が求まれば、以下のプロセスで評価指標を定義できます。

各客層の受け入れ確率 ($A_1, A_2$)

  • 1人客の受け入れ確率 $A_1$: 来店時に少なくとも1席の空きがある状態の出現確率
  • 2人客の受け入れ確率 $A_2$: 来店時に隣接する2席 00 が空いている状態の出現確率

人数スループット ($T_{\text{people}}$)

最終的な評価指標として、単位時間あたりに入店できる平均人数を人数スループット $T_{\text{people}}$ と定義します。

$$
T_{\text{people}}(\lambda, p) = \lambda(1-p)A_1 + 2\lambda p A_2 $$

右辺第1項が「1人客の入店期待値」、第2項が「2人客の入店期待値(×2人分)」を表します。

この式では、2人客の項に係数 2 がかかっています。2人客率 $p$ が増えると、一度に2人を案内できるためスループットは向上する方向へ働きますが、同時に隣接席が埋まりにくくなり $A_2$ が減少する(席割れロス)という負の側面も持ち合わせます。


2. シミュレーション

理論上は平衡方程式 $\pi \mathbf{Q} = \mathbf{0}$ を解けば定常分布 $\pi$ が求まりますが、計算パターンの網羅性を優先し、シミュレーションによる近似推定を用いました。 (この手法の妥当性は Appendix D で検証しています。)
また、シミュレーションで使用したコードはこちらにまとめています。

2.1 実験のやり方(概要)

座席数 $N$ と退店確率 $\mu$ を固定し、到着率 $\lambda$ と 2人客率 $p$ を動かして $T_{\text{people}}$ を計算します。

2.2 シミュレーション結果:混雑度によるスループットの推移

座席数 $N=10$ とし、常に客の絶えない繁盛店($\lambda=15.0$)と比較的落ち着いた閑散店($\lambda=2.0$)の比較結果を以下に示します。

図1: 横軸は2人客率 $p$、縦軸は人数スループット $T_{\text{people}}$

結果から、到着率(混雑度)によって 2人客率 $p$ がスループットに与える影響が反転する挙動が確認できました。

  • 閑散店($\lambda$ が小さい): $p$ が増えるほど $T_{\text{people}}$ は上昇する。隣接2席 00 が自然に発生しやすいため、2人客を一度に案内できるメリットが直接的に寄与するためです。
  • 繁盛店($\lambda$ が大きい): $p$ が増えるほど $T_{\text{people}}$ は低下する。「1席だけ空く」状態が増え、2人客用の 00 が揃いにくくなることで、空席があるのに誰も座れない「席割れロス」が支配的になるためです。

また、中程度の到着率($\lambda=8.0$)では、2人客率が一定の閾値を超えると、スループットが低下に転じるピークが存在することも分かります。

図2: 横軸は2人客率 $p$、縦軸は人数スループット $T_{\text{people}}$

2.3 最適な2人客率 $p^*$ の探索

前節で観察された「混雑度によるスループットへの影響の反転」を定量的に捉えるため、様々な $\lambda$ に対してスループットを最大化する最適な2人客率 $p^*$ を計算し、その推移を調査しました。

図3: 横軸は到着率 $\lambda$、縦軸は最適な2人客率 $p^*$。

結果として、$\lambda$ の増加に伴い $p^*$ は単調に減少することが確認されました。繁盛店ほどスループット最大化の観点からは2人客率を低く抑えるべきであり、逆に空いている店では2人客を積極的に受け入れた方が効率的であると言えます。

これまでのシミュレーション結果から、単純に「2人客は悪」とは言い切れないことが分かりました。2人客は案内できれば一度に2人分の売上が立つため、

  • 2人客が増えるメリット(人数が増える)
  • 2人客が増えるデメリット(隣接2席が揃わず空席が生まれる)

のバランスは、混雑度によって大きく変わります。


まとめ

今回の結論はシンプルで、

2人客が店にとって得か損かは、混雑度によって変わる

ということでした。

カウンター席のように「隣接席が必要」という制約がある場合、  
繁盛店ほど 2人客が“席割れ”を引き起こして回転を落とす可能性が高くなり、逆に、閑散店では 2人客は一度に人数を稼げるため、回転にプラスに働きやすいことが、モデルとそのシミュレーションから明らかになりました。

以上、損失系モデルをベースに「隣接2席が必要」という制約を追加し、2人客率がスループットに与える影響をシミュレーションで調べました。  
今回の設定はかなり単純化していますが、今後は、2人客が同時に退店するケースや、行列(待ち)を明示的に入れたモデルなども検討してみたいと思います。  
最後まで読んでいただき、ありがとうございました。


Appendix

A. 状態空間の厳密な定義

席数 $N$ に対し、店内の状態をベクトル $s=(s_1,\dots,s_N)$ で定義します(各 $s_i$ は0または1)。状態数は $2^{N}$ 通りとなり、到着および退店イベントによって各状態間を遷移します。

B. 受け入れ確率と人数スループット $T_{\text{people}}$

定常分布を $\pi(s)$ としたとき、各指標は以下のように定義されます。

ここで $\mathbf{1}[\cdot]$ は指示関数(indicator function)であり、括弧内の条件が真のとき1、偽のとき0を返します。

  • 1人客の受け入れ確率 $A_1$:

    $$A_1(\lambda,p)=\sum_{s}\pi(s)\,\mathbf{1}[s \text{ に } 0 \text{ を含む}]$$

  • 2人客の受け入れ確率 $A_2$:

    $$A_2(\lambda,p)=\sum_{s}\pi(s)\,\mathbf{1}\left[s \text{ に連続} 00 \text{ を含む}\right]$$

  • 人数スループット $T_{\text{people}}$: $$T_{\text{people}}(\lambda,p) = \lambda(1-p)A_1 + 2\lambda p A_2$$

C. 「席割れ」の具体例($N=3$ の場合)

混雑時($\lambda=6, \mu=1, p=0.3$)における理論的な定常確率の分布です。

状態 $s$ 定常確率 $\pi(s)$ 2人客(00)可否 備考
111 0.5199 × 満席
110 / 011 0.2374 × 1席空き
101 0.1018 × 席割れ(2人客不可)
100 / 001 0.0751 案内可能
010 0.0457 × 1席空き
000 0.0201 全空き

D. 定常分布 $\pi$ の求め方と妥当性検証

定常分布 $\pi$ は、理論上は平衡方程式 $\pi \mathbf{Q} = \mathbf{0}$ を解くことで厳密に得られます。 今回は計算効率を考慮し、シミュレーションによるサンプリング近似を採用しています。

$N=3$ において厳密解と比較することで、この近似手法の精度を確認しました。

状態 $s$ 厳密解 ($\pi \mathbf{Q} = \mathbf{0}$) シミュレーション近似 絶対誤差 備考
000 0.020334 0.020149 0.000185 全空き
001 0.036020 0.036237 0.000217
010 0.049965 0.049387 0.000578
011 0.115674 0.116972 0.001298
100 0.036020 0.036111 0.000091
101 0.108000 0.108216 0.000216 席割れ
110 0.115674 0.115085 0.000589
111 0.518312 0.517843 0.000469 満席