Shapeland
Theme park simulation code from Defunctland's video "Disney's FASTPASS: A Complicated Legacy"
Install / Use
/learn @TouringPlans/ShapelandREADME
Shapeland Simulator
- Source code to accompany Defunctland's video "FASTPASS: A Complicated Legacy"
- Download the video at https://www.youtube.com/watch?v=9yjZpBq1XBE
License
- This source code is licensed under the Creative Commons 4.0 International License
- See the file named LICENSE for details
Tools You Will Need to Run The Simulation
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
Installation and Setup
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
Code Organization
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
Related Skills
qqbot-channel
352.0kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
claude-opus-4-5-migration
111.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
docs-writer
100.6k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
352.0kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
