Optimizing Coffee Shop Capacity with Monte Carlo Simulations

Mansoor Aldosari
2 min readAug 31, 2024

--

Photo by Roman Bozhko on Unsplash

Managing peak hours in a coffee shop can be challenging, especially when it comes to balancing customer flow with seating capacity. Using Monte Carlo simulations, you can predict how many customers your shop can handle during busy times, helping you optimize your layout, staffing, and service strategy.

What is a Monte Carlo Simulation?
Monte Carlo simulations use randomness to model complex systems, allowing you to estimate outcomes by running multiple scenarios. For a coffee shop, this means predicting customer arrivals, how long they stay, and whether you have enough seats to serve them efficiently.

The Code:

import numpy as np
import matplotlib.pyplot as plt

seating_capacity = 30
arrival_rate = [10, 20]
service_time = [20, 40]
peak_hours = 4

num_simulations = 1000
customers_served = []

for _ in range(num_simulations):
total_customers = 0
current_customers = 0

for _ in range(peak_hours):
arrivals = np.random.uniform(*arrival_rate)
departures = current_customers / (60 / np.random.uniform(*service_time))
current_customers = max(0, current_customers + arrivals - departures)
served_this_hour = min(current_customers, seating_capacity)
total_customers += served_this_hour

customers_served.append(total_customers)

average_customers = np.mean(customers_served)
print(f"Average Customers Served During Peak Hours: {average_customers:.0f}")

plt.hist(customers_served, bins=30, color='coral', edgecolor='black')
plt.axvline(average_customers, color='red', linestyle='dashed')
plt.title('Distribution of Customers Served During Peak Hours')
plt.xlabel('Total Customers Served')
plt.ylabel('Frequency')
plt.show()

The Output:

In conclusion, Monte Carlo simulations offer valuable insights into managing peak hours at your coffee shop by showing how many customers can be served and visualizing capacity through histograms. By analyzing these results, you can optimize your shop’s layout, adjust staffing levels during busy times, and enhance the customer experience by anticipating wait times. This data-driven approach helps maximize efficiency and ensures that your operations are well-equipped to handle high traffic periods effectively.

--

--