- 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
No comments:
Post a Comment