- Source code to accompany Defunctland's video "FASTPASS: A Complicated Legacy"
- Download the video at https://www.youtube.com/watch?v=9yjZpBq1XBE
- This source code is licensed under the Creative Commons 4.0 International License
- See the file named LICENSE for details
The simulation is written in Python and has been tested with python 3.6.9. Download the latest version of python here: https://www.python.org/downloads/
The code also uses Jupyter Notebooks, available here: https://jupyter.org/install
Clone this repository to your local machine:
$ git clone https://github.com/TouringPlans/shapeland.git
Inside the repository is a directory called "Code". Start Jupyter Notebook like this and you'll see the entire notebook that runs the simulator and prints results:
$ jupyter notebook amusement_park_sim.ipynb
There are 5 main classes in this simulation:
-
activity.py: An activity is something an agent can do inside the park. Activities include going on rides, eating, and so on.
-
agent.py: Simulates one guest making decisions in the park.
-
attraction.py: Encapsulates all of the calculations to simulate an attraction, including whether it has FASTPASS, its hourly capacity, how that capacity is split among different lines, and so on.
-
behavior_reference.py: Each Agent has a behavioral archetype. -- Ride Enthusiast: wants to stay for a long time, go on as many attractions as possible, doesn't want to visit activites, doesn't mind waiting -- Ride Favorer: wants to go on a lot of attractions, but will vists activites occasionally, will wait for a while in a queue -- Park Tourer: wants to stay for a long time and wants to see attractions and activities equally, reasonable about wait times -- Park Visitor: doesn't want to stay long and wants to see attractions and activities equally, inpatient about wait times -- Activity Favorer: doesn't want to stay long and prefers activities, reasonable about wait times -- Activity Enthusiast: wants to visit a lot of activities, reasonable about wait times -- Archetypes can be tweaked and new archetypes can be added in behavior_reference.py.
-
park.py: The park contains Agents, Attractions and Activities. -- Total Daily Agents: dictates how many agents visit the park within a day -- Hourly Percent: dictates what percentage of Total Daily Agents visits the park at each hour -- Perfect Arrivals: enforces that the exact amount of Total Daily Agents arrives during the day -- Expedited Pass Ability Percent: percent of agents aware of expeditied passes -- Expedited Threshold: acceptable queue wait time length before searching for an expedited pass -- Expedited Limit: total number of expedited pass an agent can hold at any given time