Является ли Disney FastPass действительной и / или полезной теорией очередей - PullRequest
164 голосов
/ 13 марта 2009

В Disney World они используют систему под названием Fastpass , чтобы создать вторую, более короткую линию для популярных поездок. Идея состоит в том, что вы можете ждать в стандартной строке, часто с ожиданием более часа, или вы можете получить FastPass, который позволяет вам вернуться в течение определенного временного блока (обычно пару часов спустя) и ждать только 10 минут или меньше. С помощью FastPass вы можете «ждать» только одну поездку за раз.

Я пытался выяснить теорию очереди, стоящую за этим понятием, но единственное объяснение, которое я нашел, состоит в том, что оно предназначено для того, чтобы вывести людей из строя и делать то, что принесет дополнительный доход (покупки, еда, так далее).

По этой причине был внедрен FastPass или существует реальная проблема эффективности посетителей, которую он решает? Существуют ли программные приложения, которые применили подобную логику? Существуют ли программные приложения, которые должны применять аналогичную логику?

Часть проблемы, которую я вижу при реализации чего-то похожего в программном обеспечении, заключается в том, что оно основано на выборе пользователями своей очереди. Чтобы ускорить циклы ожидания в программном обеспечении, я думаю, что хорошее применение этой теории потребовало бы, чтобы приложение было достаточно умным, чтобы знать, в какие очереди помещать людей, исходя из их потребностей, не требуя выбора конечного пользователя.

Ответы [ 21 ]

38 голосов
/ 13 марта 2009

Речь идет о накоплении, а не об эффективности очереди.

Fastpass работает, потому что он делает отдельные элементы в очереди более эффективными в "потреблении" чего-либо. Это не столько очередь, сколько процессор, ожидающий выполнения инструкций, сколько люди, стоящие в очереди за едой.

В случае людей в Диснейленде, это позволяет им максимизировать их веселье .

Подумайте о процессоре, принимающем инструкции. Каждая инструкция ожидает выполнения в очереди, чтобы выполнить свою задачу. Теперь измените это - представьте, что каждая инструкция ожидает в очереди не для выполнения инструкции, а для получения чего-то от процессора - каждый раз, когда он попадает в процессор, он награждается золотой звездой, и его работа накопить как можно больше из них.

Fastpass подобен разрешению инструкции перейти куда-то еще, на другой процессор, чтобы получить там золотую звезду, прежде чем вернуться обратно к основному процессору, чтобы получить золотую звезду от него.

В случае пользователей в Диснейленде, они заинтересованы в том, чтобы получать удовольствие - накапливая опыт езды. Fastpass позволяет максимизировать, позволяя пользователю найти другую поездку с более короткой линией, чтобы они могли накапливать больше за более короткое время.

36 голосов
/ 13 марта 2009

Строка быстрого прохода, очевидно, не собирается увеличивать общую пропускную способность в данной очереди на поездку, но она помогает в планировании ресурсов и назначении ресурсов, где ресурсы - люди и поездки.

Как я уже сказал, вы не собираетесь создавать больше общей пропускной способности для указанной поездки, но в других местах может быть недостаточно загруженных поездок. Если вы теперь можете ездить на этих аттракционах, а также на аттракционах, на которых вам приходится ждать, вы можете повысить общую эффективность парка. Под этим я подразумеваю сведение к минимуму количества поездок, которые выполняются ниже вместимости пассажира.

Если ваши компьютерные ресурсы бездействуют, ожидая выполнения задачи, которая может занять много времени, имеет смысл использовать этот ресурс для чего-то еще, не так ли? С этой точки зрения все просто.

21 голосов
/ 13 марта 2009

Я пробовал FastPass, и вот как я это вижу:

Допустим, вы отправляетесь в поездку с ожидаемым временем ожидания 1 час. Если вы перейдете на FastPass, вы получите назначенный период времени, когда вам гарантирован немедленный вход. Обычно это более чем через 1 час.

Мы получили FastPasses для популярных поездок, и в течение этого времени стояли в очереди в 10-15 м очередях, позволяя нам стоять в очереди и идти на 3 поездки, находясь в виртуальной очереди FastPass. Они также дали нам дополнительные несчетные FastPasses для некоторых очень непопулярных поездок, если бы мы использовали их, мы бы получили нагрузку от более популярных поездок и заполнили бы очень непопулярные.

Вот график, сравнивающий время, которое мы потратили, с опцией non-fastpass:

fastpass

Мне представляется действительной теорией очередей, она позволяет выполнять ресурсы с меньшим ожидаемым временем ожидания, а задерживать ресурсы с более высоким ожидаемым временем ожидания еще больше.

11 голосов
/ 13 марта 2009

FastPass в основном реализует неблокирующих посетителей с какой-то очередью приоритетов. Они не блокируют, они не спят, они тратят деньги. Это работает, потому что Джон использует его в 11:00 утра, Джо использует его в 11:15 утра (или 11:01 утра). Теперь, если бы у всех был быстрый пропуск, регулярная линия была бы намного быстрее, в то время как большинство посетителей тратили больше денег на еду и подарки. Для Диснея это желаемый эффект, в некоторой степени.

Пропуск делает некоторые предположения и имеет некоторые ограничения. Предполагается, что держатели fastpass составляют меньшинство ... если это изменится, им придется заставить проход работать на нескольких поездках, или держатели fastpass потратят деньги, увидев очень мало людей в регулярной линии ... контрпродуктивно. Поскольку поддерживается только одна поездка, ни один из владельцев Fastpass не будет запрашивать одну и ту же поездку одновременно.

Теперь, учитывая, что Джо может покинуть парк до того, как займет свою очередь, вам придётся придумать какой-нибудь «фьютекс» посетителя, чтобы сделать систему эффективной. Если Джо уйдет и Джон приедет рано, Джон сможет покататься. Более того, Джон удивлялся, почему его быстрый пас не предупредил его, что он может ехать на н минут раньше. Вот где действительно весело, что, если Джо уйдет, чтобы просто взять солнцезащитный крем из машины, и вернется? В конце концов, его очередь находится в двух часах езды, если только 200 человек до него не покинули парк, когда он блокировал (получая солнцезащитный крем), задачу, которую нельзя прервать. Таким образом, в этом случае мы помещаем Джо в какой-то режим сна диска, или сна, который не может быть прерван или убит. Он не получает никаких сигналов, он ничего не опрашивает, он вне парка.

Это теория, которая стимулирует практическое программирование без блокировок. Это так же интересно, как проблема столовых философов , на самом деле больше.

Что касается Диснея ... это не ошибка, это особенность, люди менее склонны покидать парк, но более склонны тратить деньги.

6 голосов
/ 13 марта 2009

В обычной очереди вы не можете точно оценить, насколько быстро вы доберетесь. Вы нервничаете и иногда думаете о том, чтобы просто отбросить идею.

С FastPass вы «знаете», что поездка произойдет в точно определенный период времени. Вы «уверены» в том, когда это произойдет, и думаете о том, чтобы бросить курить реже. Вы ходите по магазинам и едите и возвращаетесь, когда это необходимо. Вы, вероятно, вернетесь, так как вы подали заявку на поездку заранее и почувствуете приверженность. Джоэл Спольски описывает аналогичную идею обязательства, используемую в очередях Starbucks .

Так что FastPass - это своего рода удобство как для парка, так и для посетителей. Посетители в восторге, и парк может продавать их больше, пока они ждут.

Просто пример хорошей социальной инженерии.

6 голосов
/ 13 марта 2009

Я думаю, вы могли бы сравнить это с моделью асинхронного программирования .

Вы просите систему выполнить действие, и вы вернетесь позже для получения результата.

Большая разница в том, что вы либо указываете, какое событие / обратный вызов вызывать, когда закончите, либо должны вводить ожидание в то время, когда вы готовы ждать. Я не видел механизма, который бы говорил вам, чтобы вы вернулись позже и гарантировали бы меньшее время ожидания.

5 голосов
/ 13 марта 2009

Для меня это выглядит как приоритетная очередь .

При первом приеме SpeedPass достигается более высокий приоритет. Тогда при выталкивании general line queue SpeedPass имеет больший приоритет в очереди.

И если мы согласны с тем, что это приоритетная очередь, то наиболее очевидной программной реализацией является Планирование ОС

Изменено в статье по расписанию:

Планировщик Disney Land в основном занимается:

  • Использование поездки - чтобы сделать поездку максимально загруженной.
  • Пропускная способность - количество людей, завершивших поездку за единицу времени.
  • Turnaround - количество времени для выполнения конкретной поездки.
  • Время ожидания - количество времени, которое человек ждал в очереди ожидания.
  • Время ответа - количество времени, которое требуется с момента, когда линия была поставлена ​​в очередь, до получения первого ответа.
  • Справедливость - равное время в пути для каждого человека.
2 голосов
/ 13 марта 2009

Идея FastPass для меня выглядит как решение для систем, в которых мне нужно выполнять задачи с 1 по N, и основываясь на моих знаниях о себе (в Disney я мог бы знать, что мои дети будут очень счастливы от вождения Тестовый трек в ожидании прибытия временного отрезка Soarin 'FastPass) Я мог бы запланировать себя, чтобы перейти в очередь' FastPass 'для задачи N, а также попасть в стандартную очередь для задачи M. Это будет работать там, где порядок задач не обязательно важно, и где время очереди было известно, и я мог бы оценить, сколько времени потребуется, чтобы выполнить задачу M или N. Хотя я не уверен, что у меня есть хороший пример программирования в реальном мире - большая часть нашего мышления носит линейный характер и поэтому наши рабочие процессы имеют тенденцию быть такими.

1 голос
/ 13 марта 2009

FastPass позволяет вам ждать в несколько строк одновременно. Это позволяет избежать ожидания, но увеличивает среднее время ожидания, потому что линии фактически становятся длиннее.

Но большинство людей не проводят все свое время в поездках. У некоторых событий, таких как парады, нет времени ожидания. Используя быстрый проход, вы можете перейти к большему количеству событий без линий или коротких линий, не жертвуя при этом как можно большим количеством поездок на длинной линии.

1 голос
/ 13 марта 2009

Есть два места, которые приходят мне на ум, схожее поведение при разработке программного обеспечения для меня. Тем не менее, ни одна из них не является точной аналогией, поскольку они оба требуют

Первое - это асинхронное программирование. Как упоминалось выше , между асинхронной моделью и моделью fastpass существуют некоторые различия в том, как вы ожидаете. Однако некоторые другие модели программирования (например, Интерфейс передачи сообщений ) предоставляют некоторые другие параметры, которые, вероятно, немного приближаются к модели FastPass.

В частности, я думал о методах MPI_Gather в MPI - они используют модель, которая, вероятно, немного ближе. Каждая функция передается по всему кластеру, и затем вы можете вызвать сборку из корня, чтобы получить обработанные в данный момент данные. Цель одна и та же (заставить всех ждать меньше [не мешать пользователю] и ходить, тратить [или обрабатывать данные]).

Другое место, где я вижу сходство, - это продвинутые модели многопоточного программирования, такие как новый планировщик в TPL . Одно из главных преимуществ TPL, появившегося в C # 4, заключается в том, что планировщик позволяет выполнять кражу работы, что мне кажется четкой реализацией в программном обеспечении попыток динамического перемещения по линиям - что связано с FastPass. Одна из приятных особенностей fastpass заключается в том, что вы меньше сидите в очереди, больше ездите и больше двигаетесь. С TPL (надеюсь) меньше блокируется и ожидает, так как поток, который закончил свою очередь, может украсть задачи из других очередей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...