Amusement Park Queueing
See the simopt.models.amusementpark module for API details.
Model: Amusement Park Queues (AMUSEMENT)
Description
This model simulates an amusement park with 7 attractions. Visitors arrive at each attraction according to a poisson distribution with a rate \(\gamma_i = 1\), \(i = 1,. . . , 7\). Each attraction can only take one visitor at a time, while others wait in a queue with capacity \(c_i\). If a visitor finds a queue full, they will immediately leave the park.
After visiting each attraction, a visitor goes to another attraction (or leaves) according to the transition matrix:
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Leave |
|
|---|---|---|---|---|---|---|---|---|
1 |
0.1 |
0.1 |
0.1 |
0.1 |
0.2 |
0.2 |
0.0 |
0.2 |
2 |
0.1 |
0.1 |
0.1 |
0.1 |
0.2 |
0.2 |
0.0 |
0.2 |
3 |
0.1 |
0.1 |
0.1 |
0.1 |
0.2 |
0.2 |
0.0 |
0.2 |
4 |
0.1 |
0.1 |
0.1 |
0.1 |
0.2 |
0.2 |
0.0 |
0.2 |
5 |
0.1 |
0.1 |
0.1 |
0.1 |
0.0 |
0.1 |
0.3 |
0.2 |
6 |
0.1 |
0.1 |
0.1 |
0.1 |
0.1 |
0.0 |
0.3 |
0.2 |
7 |
0.1 |
0.1 |
0.1 |
0.1 |
0.1 |
0.1 |
0.2 |
0.2 |
Rows represent the ride a tourist is currently at (i.e., the ride they just completed).
Columns represent the next ride the tourist chooses to go to.
The time that a visitor spends at an attraction follows an Erlang distribution with shape parameter \(k = 2`\) and rate \(\lambda = 9\). The park opens at 9AM and closes at 5PM, and time is measured in minutes. When the park closes, all visitors in the queue leave immediately.
Sources of Randomness
There are 3 sources of randomness in this model:
The arrival rate of visitors as a poisson distribution with rate of 1 for all \(i = 1, . . . , 7\).
The transition probabiliyt matrix that visitors follow after visiting each attraction.
The time spent at each attraction as an Erlang distribution with the shape parameter \(k = 2\) and rate = 9.
The Erlang distribution is the distribution representing a sum of \(k\) independent exponential variables with mean \(1/\lambda\) each. It is a special case of the gamma distribution wherein the shape of the distribution is discretized. The probability density function of the Erlang distribution is
\(f(x;k,\lambda) = \frac{\lambda^{k}x^{k-1}e^{-\lambda x}}{(k-1)!} \quad for \ x, \beta >= 0\)
where \(k\) is the shape parameter, \(\lambda\) is the rate parameter.
Alternatively, the pdf can be expressed as
\(f(x;k,\beta) = \frac{x^{k-1}e^{-x/\beta}}{\beta^k(k-1)!} \quad for \ x, \beta >= 0\)
where \(\beta\) is the scale parameter, which is the reciprocal of the rate parameter.
Note: In this model, Erlang variates are generated through the gamma distribution with the scale (\(\beta:\)) parameter set to 1/9.
Accordingly, the reciprocal of desired rate values should be used in the erlang_scale parameter.
Model Factors
- park_capacity: The total number of visitors waiting for attractions that can be maintained through park facilities, distributed across the attractions.
Default: 350
- number_attractions: The number of attractions in the park.
Default: 7
- time_open: The number of minutes per day the park is open.
Default: 480
- erlang_shape: The shape parameter of the Erlang distribution for each attraction duration.
Default: [2, 2, 2, 2, 2, 2, 2]
- erlang_scale: The scale parameter of the Erlang distribution for each attraction duration (reciprocal of the rate value).
Default: [1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9]
- depart_probabilities: The probability that a visitor will depart the park after visiting an attraction.
Default: [0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2]
- queue_capacities: The capacity of the queues for the attractions based on the portion of facilities allocated.
Default: [50, 50, 50, 50, 50, 50, 50]
- arrival_gammas: The gamma values for the poisson distributions dictating the rates at which visitors entering the park arrive at each attraction.
Default: [1, 1, 1, 1, 1, 1, 1]
- transition_probabilities: The transition matrix that describes the probability of a visitor visiting each attraction after their current attraction.
Default:
1
2
3
4
5
6
7
Leave
1
0.1
0.1
0.1
0.1
0.2
0.2
0.0
0.2
2
0.1
0.1
0.1
0.1
0.2
0.2
0.0
0.2
3
0.1
0.1
0.1
0.1
0.2
0.2
0.0
0.2
4
0.1
0.1
0.1
0.1
0.2
0.2
0.0
0.2
5
0.1
0.1
0.1
0.1
0.0
0.1
0.3
0.2
6
0.1
0.1
0.1
0.1
0.1
0.0
0.3
0.2
7
0.1
0.1
0.1
0.1
0.1
0.1
0.2
0.2
Rows represent the ride a tourist is currently at (i.e., the ride they just completed).
Columns represent the next ride the tourist chooses to go to.
Responses
total_departed: The total number of visitors to leave the park due to full queues.
percent_departed: The percentage of visitors to leave the park due to full queues.
average_number_in_system: The time average of the number of visitors in the system.
attraction_utilization_percentages: The percent utilizations for each attraction.
References
This model is adapted from the article: Vill’en-Altamirano, J. (2009). Restart Simulation of Networks of Queues with Erlang Service Times. Proceedings of the 2009 Winter Simulation Conference.
Optimization Problem: Minimize Total Departed Visitors (AMUSEMENT-1)
Decision Variables
queue_capacities
Objectives
Minimize total number of departed visitors.
Constraints
park_capacity = 350
\(\sum_{i=1}^{7}\) queue_capacities = park_capacity
queue_capacities \(\ge\) 0
Problem Factors
- Budget: Max # of replications for a solver to take.
Default: 1000
Fixed Model Factors
N/A
Starting Solution
queue_capacities = [50, 50, 50, 50, 50, 50, 50]
Random Solutions
Generate a solution uniformly from a space of vectors of length 7 that sum up to 350.
Optimal Solution
unknown
Optimal Objective Function Value
unknown