- With an arrival rate $\lambda$ (customers per time unit)
- A service rate $\mu$ (customers per time unit)
- and a reward and cost for service that can actually just be considered as a "value for service": $\beta$

Naor then considered two types of customers: Selfish and Optimal.

It is relatively straightforward to see that Selfish customers should join if and only if:

$$\frac{n+1}{\mu}\leq \beta$$

where $n$ is the number of other customers in the system upon arrival.

What is slightly less straightforward is that Optimal customers should join if and only if $n\leq n^*$ where:

\[\frac{n^*(1-\rho)-\rho(1-\rho^{n^*})}{(1-\rho)^2}\leq \beta \mu < \frac{(n^*+1)(1-\rho)-\rho(1-\rho^{n^*+1})}{(1-\rho)^2}\]

(where $\rho=\lambda/\mu$)

It's a really cool result and one that has given rise to a lot more research (including what I mainly enjoy looking at).

I was asked recently be a colleague to give a 15 minute talk about my research to her second year OR class who will have just seen some queueing theory. I decided to talk about Naor's paper and thought that it would be nice if I could give a graphical representation of the customers arriving at the queue (similar to the DES package: +SIMUL8). So I spent some time writing a simulation engine and using the in built +Python Turtle library to get some graphics.

**A part from some of the optional plotting (matplotlib), this only uses base python libraries.**Here's a gif from an early prototype:
Here's a video discussing Naor's result and showing demonstrating everything with my simulation model:

**The code is all up on github and it really could do with some improving so it would be great if anyone wanted to contribute:**https://github.com/drvinceknight/Simulating_Queues