是迪斯尼的FastPass有效和/或有用的队列理论

时间:2009-03-13 14:46:02

标签: algorithm optimization performance

在迪斯尼乐园,他们使用一个名为Fastpass的系统为流行的游乐设施制作第二条较短的线。这个想法是你可以在标准线上等待,通常等待超过一个小时,或者你可以得到一个FastPass,它允许你在指定的时间段(通常是几个小时后)回来,只等待10几分钟或更短。您只能使用FastPass“等待”一次乘坐。

我一直试图找出这个概念背后的队列理论,但我发现的唯一解释是,它旨在让人们脱离困境并做一些能带来额外收入的事情(购物,吃饭,等等)。

这就是FastPass实施的原因,还是它解决了真正的访问者效率问题?是否有应用类似逻辑的软件应用程序?是否有 应用类似逻辑的软件应用程序?

我在软件中实现类似的部分问题是它基于用户选择队列。做到软件中更快的等待周期,我认为这个理论的良好应用需要应用程序足够聪明,以便根据需要知道将人们放入哪些队列,而无需最终用户选择。

21 个答案:

答案 0 :(得分:38)

这是关于积累,而不是排队效率。

Fastpass的工作原理是因为它使队列中的各个项目更有效地“消耗”某些东西。它不是像处理器那样等待执行指令的队列,因为人们在排队等待食物。

对于迪斯尼乐园的人来说,它可以让他们最大限度地发挥乐趣

考虑处理器接受指令。每条指令都在等待在队列中执行,以执行其任务。现在改变它 - 想象每条指令都排队等待不执行指令,但要从处理器获取某些东西 - 每次它到达处理器时都会获得金星奖励,并且它的工作是积累尽可能多的这些。

Fastpass就像允许指令进入其他地方,到另一个处理器,在那里获得金星,然后返回主处理器以获得金星。

对于迪斯尼乐园的用户,他们有兴趣享受乐趣 - 积累乘车体验。 Fastpass允许用户通过较短的线路找到不同的行程,从而实现最大化,因此它们可以在更短的时间内累积更多。

答案 1 :(得分:36)

快速传递线显然不会增加给定乘坐队列的总吞吐量,但它确实有助于资源调度和资源分配,其中人员和游乐设施是资源。

就像我说的那样,你不会为这次乘坐创造更多的总吞吐量,但可能在其他地方没有充分利用游乐设施。如果您现在能够乘坐这些游乐设施以及您必须等待的游乐设施,那么您可以提高公园的整体效率。我的意思是最大限度地减少乘客量以下的乘坐量。

如果您的计算机资源闲置,等待执行可能需要很长时间的任务,那么在此期间将此资源用于其他内容是否合理?从这个角度来看很简单。

答案 2 :(得分:21)

我尝试过FastPass,这就是我的看法:

假设您乘坐1小时的预计等待时间,如果您去FastPass,您将获得指定的时间段,保证您立即进入。通常超过1小时。

我们获得了流行游乐设施的FastPasses,在此期间,我们排队了10-15米的队列,允许我们排队并在FastPass虚拟队列中进行3次游乐。他们还为一些非常不受欢迎的游乐设施提供了额外的不计其数的FastPasses,如果我们使用那些我们会从更受欢迎的游乐设施中获得一些负载并填补非常不受欢迎的游乐设施。

这是一个比较我们花费的时间与非快速通道选项的图形:

fastpass

在我看来,作为一种有效的排队理论,它允许执行具有较少预期等待时间的资源,同时延迟具有更高预期等待时间的资源。

答案 3 :(得分:11)

FastPass基本上使用某种优先级队列来实现非阻塞访问者。他们不阻止,他们不睡觉,他们花钱。它起作用是因为约翰在上午11点使用它,乔在上午11:15(或上午11点01分)使用它。现在,如果每个人都有快速通行证,那么常规线路会更快,而大多数游客会花更多钱购买食物和礼物。对于迪士尼来说,这是一种理想的效果。

传球做出了一些假设并有一些局限性。它假定快速通行证持有者是少数...如果改变了,他们将不得不在多个游乐设施上通行证,或者快速通行证持有者会花钱而看到常规线上的人很少..适得其反。由于只支持一次骑行,因此没有两个快速通行证持有人会同时要求同一次骑行。

现在,考虑到Joe可能会在轮到他之前离开公园,你必须拿出一些访客'futex'来提高系统的效率。如果乔离开,约翰早到,约翰可以骑。此外,约翰会想知道为什么他的快速传球没有通知他他可以提前几分钟骑行。这就是它真正变得有趣的地方,如果乔只是为了从汽车上取一些防晒霜而又回来了怎么办?毕竟,他的回合还有两个小时的路程,除非他前面有200多人离开公园,而他正在阻挡(同时获得防晒霜),这项任务无法中断。因此,在那种情况下,我们将Joe置于某种磁盘睡眠状态,或者睡眠不能被中断或杀死。他没有任何信号,他没有投票,他已经离开了公园。

这是推动实际无锁编程的理论。它和dining philosophers problem一样有趣,实际上更多。

就迪斯尼而言......这不是一个错误,它是一个特征,人们不太愿意离开公园而更倾向于花钱。

答案 4 :(得分:6)

我认为您可以通过某种方式将其与asynchronous programming model进行比较。

您要求系统执行某个操作,稍后您将返回结果。

最大的区别在于,您可以指定在完成时调用哪个事件/回调,或者在您准备等待时需要输入等待。我没有看到一种机制可以告诉你以后回来并保证更短的等待时间。

答案 5 :(得分:6)

在普通的队列中,你无法真正估计出你的骑行速度。你很紧张,有时会想到放弃这个想法。

使用FastPass,您“知道”骑行将在精确定义的时间段内发生。你对这种情况发生时“确定”并考虑减少戒烟的时间。你去购物,吃饭,并在需要时返回。您可能会回来,因为您已提前申请乘车并感受到承诺。 Joel Spolsky describes a similar commitment idea used at Starbucks queues

所以FastPass对公园和游客来说都是一种便利。游客们更加高兴,公园可以在等待的时候卖得更多。

只是良好社会工程的一个例子。

答案 6 :(得分:5)

对我而言,这似乎是priority queue

首次使用 SpeedPass 时,会获得更高的优先级。然后,当弹出general line queue时, SpeedPass 在队列中具有更高的优先级。

如果我们同意这是一个优先级队列,那么最明显的软件实现是OS scheduling

从调度维基文章修改:

  

迪斯尼乐园调度程序主要关注:

     
  • 乘车使用 - 尽可能保持乘坐   
  • 吞吐量 - 每个时间单位完成骑行的人数   
  • 周转时间 - 执行特定骑行的时间   
  • 等待时间 - 一个人在准备队列中等待的时间   
  • 响应时间 - 从排队到生成第一个响应所需的时间。
      
  • 公平 - 每个人的平等骑行时间。

答案 7 :(得分:2)

对我来说,FastPass的想法看起来像是我需要执行任务1到N的系统的解决方案,并且基于我对自己的一些知识(在迪士尼,我可能知道我的孩子会很开心骑马在等待Soarin'FastPass时间片到达时测试跟踪)我可以安排自己进入任务N的“FastPass”队列,并进入任务M的标准队列。这将适用于任务不一定重要,并且排队时间已知,我可以估计完成任务M或N需要多长时间。不确定我有一个很好的现实编程示例 - 我们的大部分思路是线性的自然,所以我们的工作流程往往就是这样。

答案 8 :(得分:1)

FastPass允许您同时在多行中等待。它允许您避免等待,但会增加平均等待时间,因为线条有效地变长了。

但是大多数人并没有把他们的整个时间都用在游乐设施上。有些事件,比如游行,实际上没有等待时间。通过使用快速传球,您可以在不牺牲尽可能多的长线骑行的情况下进行更多这些无线或短线事件。

答案 9 :(得分:1)

我想到有两个地方在软件开发中有类似的行为。然而,两者都不是完全类比,因为它们都需要

首先是异步编程。作为mentioned before,就您如何等待而言,异步模型和快速通道模型之间存在一些差异。但是,其他一些编程模型(例如Message Passing Interface)会为您提供一些其他选项,这些选项可能会更接近FastPass模型。

特别是,我在考虑MPI中的MPI_Gather方法 - 他们使用的模型可能更接近一点。每个函数都在集群中传递出来,然后您可以从根调用collect来获取当前处理的数据。目标是相同的(让所有人等待[不阻止用户]并四处走动,花费[或处理数据])。

我可以看到相似的另一个地方是高级线程编程模型,例如TPL中的新调度程序。进入C#4的TPL的主要优点之一是调度程序将允许工作窃取,这对我来说似乎是一个明确的软件实现,试图动态地转换线 - 这与FastPass有关。快速通过的好处之一是你坐得更少,骑得更多,并且更多地移动。使用TPL,(希望)可以减少阻塞和等待,因为完成队列的线程可以从其他队列中窃取任务。

答案 10 :(得分:1)

FastPass的一个有趣的方面是它为迪士尼引入了反馈渠道。通过使一条线几乎总是等待吸引力变得可用,除了以某种方式测量线在白天以固定的时间间隔行进多长时间之外,您无能为力。使用FastPass迪士尼实时收集每个景点的需求和流量数据并已经数字化 - 它应该立即进入他们的数据仓库进行采矿。

我倾向于同意那些将FastPass限定为资源分配系统而不是资源排队系统的人。另一个类比是将每个迪士尼客户视为单线程的操作系统流程,直到客户选择FastPass。这使得客户成为一个双线程进程,可以像以前一样在整个公园内循环,并运行另一个等待指定资源(FastPass吸引力)的线程。允许多个FastPasses到用户(进程)将使这些进程更多线程。当客户最终获得FastPass吸引力时,线程同步就会发生。

答案 11 :(得分:0)

你没有更多的游乐设施。不受欢迎的线条的线条现在更长,因为更多的人在等待他们的热门骑行通行证成熟时正在消耗时间。容量是容量。

“Twitter目前非常忙碌。请在15:00到15:15之间回来,我们保证在5秒或更短的时间内收到你的推文。”

答案 12 :(得分:0)

我能看到的唯一软件类比是这种方法可以避免溢出队列缓冲区 - 如果许多客户端都在尝试添加到队列的同时快速填满该队列。如果要求客户端等待一段给定的时间,那么在添加到队列之前,他们必须在本地缓冲(相对)较少的项目。

在大多数其他情况下,这会导致吞吐量降低,因为如果等待时间选择不当,可能会导致队列变得饥饿。

尝试编写一个测试应用程序,该应用程序在各种指标下使用和不使用“FastPass”进行排队并比较结果 - 如果您发现任何有趣的内容,请告诉我们! :)

答案 13 :(得分:0)

这很棒。迪士尼实际上是两个队列,服务率线性降低,具体取决于FASTpass的分布数量。

短FASTpass队列可以建模为一个总是处于均衡状态以进行短暂等待的队列。保持队列简短可以最大限度地减少两个队列之间的反馈 - 这对于随机建模很有用。另一个队列是典型的队列,服务速率较慢。

当然,如果FASTpass配额过大,两个队列之间的反馈就会随之发生,使系统变得混乱,并最大限度地减少排队模型描述结果的影响。

另一个策略是最小化用户等待将严格按预约安排乘车,在这种情况下,它是纯批量队列,并且易于优化。我认为这不会在美国有效。 : - )

答案 14 :(得分:0)

这在某些方面类似于实时操作系统。

某些进程有快速传递,并标记为实时。

他们保证在一定时间内获得资源。他们没有排队,但他们可以推进!虽然他们没有使用该车,但其他非实时客人可以使用它。

-Alex

答案 15 :(得分:0)

满足客户需求符合迪士尼的最佳利益。虽然商品销售肯定是巨大的收入,但获得回头客的价值要高出许多倍。

如果我支付150美元买1天的公园跳票,只能乘坐10次,因为线路太长,我会质疑这些游乐设施是否真的值15美元一件。但是,如果有一种方法让我去乘坐30次,那么我将获得更好的体验,不太可能质疑该体验的价值,更有可能返回并给予迪士尼乐园另外150美元+食品+商品。

在FastPass之前,我骑10次骑行和30次骑行之间的唯一区别是公园拥挤程度。这是其他理想吸引力试图以其他方式解决的常见问题。例如,Tahoe的Northstar滑雪胜地将限制他们在某一天(或至少他们习惯)出售的电梯票数。这也解决了这个问题,但在某种程度上会对收入产生更大的负面影响。

在软件中,类似的范例是加载网页。在古代,这个过程是单线程的:获取所有内容,呈现所有内容并显示页面。随着交通和数据的增加(特别是图像的整合),这个模型面临着与迪斯尼乐园相同的问题。如果页面上有很多图像并且需要很长时间才能加载,我不会等待内容并且可能不会再回到该网站。

现在天网页的加载方式不同了。在另一个线程加载,渲染和显示图像时,首先加载,渲染和显示内容。这极大地改善了用户体验,并且如果有理想的内容,我将继续回到该网站,它可以将我重复的页面视图转换为$$$。

答案 16 :(得分:0)

关于流行游乐设施的资源调度以及通过销售商品来产生额外收入的方法。如果你排队等候,这意味着你没有机会花更多的钱。

答案 17 :(得分:0)

  

我发现的唯一解释是,它旨在让人们脱离困境并做一些可带来额外收入的事情(购物,吃饭等)。

我认为你已经触及了那里的主要观点,但是你认为它听起来更像是企业 - 它可能是应得的。我宁愿在购物和吃饭时“虚拟排队”而不是排队等候。

理论上,FastPass可以在自然需求较低时尝试安排更多人;这就是为了从真实的预定队列中获得更多吞吐量而采取的措施。但实际上,我怀疑这些游乐设施在一天中的大部分时间里都能正常运行,所以从中获得的生产力很少。

答案 18 :(得分:0)

从我的供应链课程中,立即来到我的排队方面是减少你的等待时间,所以人们根本不介意等待。我认为它不会缩短主线,但它确实减轻了人们对在常规线上等待的焦虑,因为他们知道一旦他们下车,他们就可以第二次回来(如果他们的快速通过时间到了,无论如何)。

我知道我觉得我可以乘坐快速通道更多地乘坐,但我不知道是不是真的如此,或者只是巧妙地重新构建我的等待时间。

答案 19 :(得分:0)

鉴于它是being exploited,你必须信任队列用户; - )

答案 20 :(得分:0)

不知道如何在软件中应用它。但是这个系统对游客来说绝对有其优势:你可以在一次骑行中使用Fastpass,同时去另一个行程不长的骑行(或者,如你所说,去购物,吃饭等)。当我和我的家人在那里时(虽然不可否认,这是休赛期),这真是救星。