The Single Queue Simulation is an implementation of a simulation model with multiple servers and queue priority. It simulates a system where customers arrive, join a single queue, and are served by a specified number of employees (servers). The simulation takes input parameters and generates statistics based on the simulated events.
The simulation model considers the following parameters:
NUMBER_OF_CUSTOMERS
: The number of customers in the calling population.NUMBER_OF_EMPLOYEES
: THe number of employees (resources, servers, etc.) that handle customer requests.PRIORITY_CHANCE
: The probability of a customer being in priority. (0-1) (defualts to 0.2)LOGGING
: Whether to log the events of the system in theout.txt
file.
To run the Single Queue Simulation, follow these steps:
- Navigate to the "src" folder in your command line or terminal:
cd src
- Execute the simulation by running the python . command:
python .
After running the simulation, you will obtain various statistics and visualizations. Here are some sample statistics:
The following statistics provide insights into the customers' experience:
Simulation states (first 10 rows):
Arrival Time Service Start Service End Service Time Service Wait Total Time Server #
0 1.27 1.27 13.86 12.59 0.00 12.59 0
1 1.63 1.63 9.28 7.65 0.00 7.65 1
2 1.71 27.81 38.39 10.58 26.10 36.68 1
3 1.99 25.33 32.55 7.22 23.34 30.56 0
4 2.95 32.55 43.91 11.36 29.60 40.96 0
5 3.07 17.42 27.81 10.39 14.35 24.74 1
6 3.28 13.86 25.33 11.47 10.58 22.05 0
7 3.52 38.39 48.90 10.51 34.87 45.38 1
8 3.64 9.28 17.42 8.14 5.64 13.78 1
9 4.46 43.91 53.41 9.50 39.45 48.95 0
Customer stats:
Arrival Time Service Start Service End Service Time Service Wait Total Time
count 10.000000 10.000000 10.00000 10.000000 10.000000 10.000000
mean 2.752000 21.145000 31.08600 9.941000 18.393000 28.334000
std 1.045432 14.874369 15.04994 1.776166 14.302249 14.489606
min 1.270000 1.270000 9.28000 7.220000 0.000000 7.650000
25% 1.780000 10.425000 19.39750 8.480000 6.875000 15.847500
50% 3.010000 21.375000 30.18000 10.450000 18.845000 27.650000
75% 3.460000 31.365000 42.53000 11.165000 28.725000 39.890000
max 4.460000 43.910000 53.41000 12.590000 39.450000 48.950000
Servers:
Customers Count Service Time Idle Time
0 5 52.137228 1.272772
1 5 47.268062 6.141938
Servers stats:
Customers Count Service Time Idle Time
count 2.0 2.000000 2.000000
mean 5.0 49.702645 3.707355
std 0.0 3.443021 3.443021
min 5.0 47.268062 1.272772
25% 5.0 48.485353 2.490063
50% 5.0 49.702645 3.707355
75% 5.0 50.919937 4.924647
max 5.0 52.137228 6.141938
System Events are logged in the out.txt
file if logging is enabled.
1.27 # New customer arrived and queued.
1.27 @ Customer assigned to server 1 and is set to finish in 13.86
1.63 # New customer arrived and queued.
1.63 @ Customer assigned to server 2 and is set to finish in 9.28
1.71 # New customer arrived and queued.
1.99 # New customer arrived and queued.
2.95 # New customer arrived and queued.
3.07 # New customer arrived and queued.
3.28 # New customer arrived and queued.
3.52 # New customer arrived and queued.
3.64 # New customer arrived and queued.
4.46 # New customer arrived and queued.
9.28 * Server 2 finished proccessing and is free.
9.28 @ Customer assigned to server 2 and is set to finish in 17.42
13.86 * Server 1 finished proccessing and is free.
13.86 @ Customer assigned to server 1 and is set to finish in 25.33
17.42 * Server 2 finished proccessing and is free.
17.42 @ Customer assigned to server 2 and is set to finish in 27.81
25.33 * Server 1 finished proccessing and is free.
25.33 @ Customer assigned to server 1 and is set to finish in 32.55
27.81 * Server 2 finished proccessing and is free.
27.81 @ Customer assigned to server 2 and is set to finish in 38.39
32.55 * Server 1 finished proccessing and is free.
32.55 @ Customer assigned to server 1 and is set to finish in 43.91
38.39 * Server 2 finished proccessing and is free.
38.39 @ Customer assigned to server 2 and is set to finish in 48.9
43.91 * Server 1 finished proccessing and is free.
43.91 @ Customer assigned to server 1 and is set to finish in 53.41
48.9 * Server 2 finished proccessing and is free.
53.41 * Server 1 finished proccessing and is free.