Na Disney World, eles usam um sistema chamado Fastpass para criar uma segunda linha mais curta para passeios populares. A idéia é que você possa esperar na linha padrão, geralmente com uma espera superior a uma hora, ou obter um FastPass que permita retornar durante um período de tempo especificado (geralmente algumas horas depois) e esperar apenas 10 minutos ou menos. Você só pode "esperar" uma viagem de cada vez com um FastPass.
Eu tenho tentado descobrir a teoria das filas por trás desse conceito, mas a única explicação que encontrei é que ele foi projetado para deixar as pessoas fora das linhas e fazer coisas que trarão receita adicional (compras, alimentação, etc.).
É por isso que o FastPass foi implementado ou há um problema real de eficiência do visitante que ele está solucionando? Existem aplicativos de software que aplicaram lógica semelhante? Existem aplicativos de software que devem aplicar lógica semelhante?
Parte do problema que vejo ao implementar algo semelhante em software é que ele se baseia em usuários que escolhem sua fila. Para os ciclos de espera mais rápidos do software, acho que uma boa aplicação dessa teoria exigiria que o aplicativo fosse inteligente o suficiente para saber em quais filas colocar as pessoas com base em suas necessidades, sem exigir a escolha do usuário final.
fonte
Respostas:
Obviamente, a linha de passe rápido não aumentará a taxa de transferência total em uma determinada fila de passeio, mas ajuda no agendamento de recursos e na atribuição de recursos, onde pessoas e passeios são os recursos.
Como eu disse, você não criará mais taxa de transferência total para esse passeio, mas pode haver passeios sendo subutilizados em outros lugares. Se agora você pode montar esses passeios, bem como os passeios que precisa esperar, pode aumentar a eficiência geral do parque. O que quero dizer com isso é minimizar a quantidade de viagens que estão rodando abaixo da capacidade dos passageiros.
Se você tiver recursos de computador ociosos, aguardando a execução de uma tarefa que pode levar muito tempo, faz sentido utilizar esse recurso para outra coisa enquanto isso, certo? É simples dessa perspectiva.
fonte
Trata-se de acumulação, não de eficiência na fila.
O Fastpass funciona porque torna os itens individuais na fila mais eficientes em "consumir" algo. Não é tanto uma fila como um processador aguardando instruções para executar, como são pessoas esperando na fila por comida.
No caso das pessoas na Disneylândia, elas permitem maximizar a diversão .
Pense em um processador que aceita instruções. Cada instrução está aguardando para ser executada na fila, para executar sua tarefa. Agora mude - imagine que cada instrução está esperando na fila para não executá-la, mas para obter algo do processador - cada vez que atinge um processador, é recompensada com uma estrela dourada, e seu trabalho é acumular o maior número possível de instruções. que possível.
O Fastpass é como permitir que a instrução vá para outro lugar, para um processador diferente, para obter uma estrela dourada lá, antes de retornar ao processador principal para obter a estrela dourada dele.
No caso dos usuários da Disneylândia, eles estão interessados em se divertir - acumulando experiências de passeio. O Fastpass permite uma maximização, permitindo que o usuário encontre um percurso diferente com uma linha mais curta, para que eles possam acumular mais em menos tempo.
fonte
Eu tentei o FastPass, e é assim que eu vejo:
Digamos que você faça um passeio com o tempo de espera esperado de 1 hora; se você for ao FastPass, receberá um período de tempo designado, onde terá entrada imediata garantida. Geralmente é depois de mais de uma hora.
Obtivemos o FastPasses para os passeios populares e, durante esse tempo, enfileiramos em filas de 10 a 15m, permitindo que enfileirássemos e passássemos a 3 passeios enquanto estávamos na fila virtual do FastPass. Eles também nos deram FastPasses extras incontáveis para alguns passeios muito impopulares, se os usássemos, teríamos alguma carga nos passeios mais populares e encheríamos os mais impopulares.
Aqui está um gráfico comparando o tempo que passamos versus a opção não-fastpass:
Parece-me uma teoria de filas válida, que permite que recursos com tempos de espera menos esperados sejam executados enquanto atrasa um com um tempo de espera esperado mais alto ainda mais.
fonte
O FastPass basicamente implementa visitantes sem bloqueio com algum tipo de fila de prioridade. Eles não bloqueiam, não dormem, gastam dinheiro. Funciona porque john usa às 11:00, joe usa às 11:15 (ou 11:01). Agora, se todos tivessem um passe rápido, a linha regular seria muito mais rápida, enquanto a maioria dos visitantes gastava mais dinheiro em comida e presentes. Para a Disney, esse é o efeito desejado, até certo ponto.
O passe faz algumas suposições e tem algumas limitações. Ele pressupõe que os detentores de fastpass são a minoria. Se isso mudasse, eles teriam que fazer o passe funcionar em vários passeios, ou os detentores de fastpass gastariam dinheiro ao ver muito poucas pessoas na linha regular ... contraproducentes. Como apenas um passeio é suportado, dois portadores de passe rápido pedem o mesmo passeio de uma só vez.
Agora, considerando que Joe pode deixar o parque antes de tomar sua vez, você teria que criar algum tipo de 'futex' de visitante para tornar o sistema eficiente. Se Joe partisse e João chegasse cedo, ele poderia cavalgar. Além disso, John se perguntava por que seu passe rápido não o notificou de que ele poderia andar nn minutos antes. É aí que as coisas ficam realmente divertidas. E se Joe saísse apenas para pegar protetor solar no carro e voltasse? Afinal, sua vez é de duas horas, a menos que mais 200 pessoas antes dele saiam do parque enquanto ele estava bloqueando (enquanto usava protetor solar), uma tarefa que não pode ser interrompida. Portanto, nesse caso, colocamos Joe em algum tipo de suspensão do disco, ou suspensão que não pode ser interrompida ou interrompida. Ele não recebe sinais, não está pesquisando nada, está fora do parque.
Esse é o tipo de teoria que impulsiona a programação prática sem bloqueios. É tão interessante quanto o problema dos filósofos do jantar , de fato mais.
No que diz respeito à Disney, isso não é um bug, é uma característica, as pessoas são menos inclinadas a deixar o parque e mais inclinadas a gastar dinheiro.
fonte
Em uma fila comum, você não pode realmente estimar a rapidez com que dirige. Você está nervoso e às vezes pensa em abandonar a ideia.
Com o FastPass, você "sabe" que o passeio ocorrerá em um período de tempo definido com precisão. Você tem "certeza" de quando isso acontece e pensa em sair com menos frequência. Você vai às compras e come e retorna quando necessário. É provável que você volte desde que se inscreveu no passeio com antecedência e se sente comprometido. Joel Spolsky descreve uma ideia de compromisso semelhante usada nas filas da Starbucks .
O FastPass é um tipo de conveniência para o parque e para os visitantes. Os visitantes ficam mais satisfeitos e o parque pode vendê-los mais enquanto esperam.
Apenas um exemplo de boa engenharia social.
fonte
Eu acho que de uma maneira que você poderia comparar isso com o modelo de programação assíncrona .
Você pede ao sistema para executar uma ação e retornará mais tarde para o resultado.
A grande diferença é que você especifica qual evento / retorno de chamada chamar quando terminar ou é necessário inserir a espera no momento em que estiver pronto para aguardar. Não vi um mecanismo que lhe dissesse para voltar mais tarde e garantir tempos de espera mais baixos.
fonte
Para mim, isso parece uma fila prioritária .
Ao tomar um SpeedPass pela primeira vez, é atingida uma prioridade mais alta. Então, quando o estalo fora do
general line queue
o SpeedPass tem maior prioridade na fila.E se concordarmos que essa é uma fila prioritária, a implementação de software mais óbvia é a programação do SO
Modificado a partir do artigo wiki de agendamento:
fonte
A ideia do FastPass para mim parece uma solução para sistemas em que preciso executar as tarefas de 1 a N e com base em algum conhecimento que tenho sobre mim (na Disney, talvez eu saiba que meus filhos ficarão felizes em andar na pista de teste enquanto aguardam o Soarin 'FastPass para chegar) Eu poderia me programar para entrar na fila' FastPass 'da tarefa N e também entrar na fila padrão da tarefa M. Isso funcionaria onde a ordem da tarefa não é necessariamente importante e onde o tempo da fila era conhecido e eu poderia estimar quanto tempo levaria para executar a tarefa M ou N. Embora não tenha um bom exemplo de programação do mundo real - muito do nosso pensamento é de natureza linear e, portanto, nossos fluxos de trabalho tendem a ser assim .
fonte
O FastPass permite que você espere em várias linhas ao mesmo tempo. Permite evitar a espera, mas aumenta o tempo médio de espera porque as linhas efetivamente ficam mais longas.
Mas a maioria das pessoas não passa o tempo todo passeando. Alguns eventos, como os desfiles, não têm realmente tempo de espera. Usando um passe rápido, você pode ir a mais desses eventos sem linha ou com linha curta sem sacrificar o número de viagens com linha longa.
fonte
Há dois lugares que me vêm à mente que têm um comportamento semelhante no desenvolvimento de software para mim. No entanto, nenhuma é uma analogia exata, pois ambas exigem
O primeiro é a programação assíncrona. Como mencionado anteriormente , existem algumas diferenças entre o modelo assíncrono e o modelo fastpass, em termos de como você espera. No entanto, alguns outros modelos de programação (como o Message Passing Interface ) oferecem outras opções, que provavelmente se aproximam um pouco do modelo FastPass.
Em particular, eu estava pensando nos métodos MPI_Gather no MPI - eles usam um modelo que provavelmente está um pouco mais próximo. Todas as funções são distribuídas ao redor do cluster e, em seguida, é possível chamar a coleta da raiz para obter os dados processados no momento. O objetivo é o mesmo (manter todos esperando menos [sem obstruir o usuário] e passear, gastar [ou processar dados]).
O outro lugar em que vejo uma semelhança é nos modelos avançados de programação encadeada, como o novo planejador no TPL . Uma das principais vantagens do TPL que vem no C # 4 é que o agendador permitirá o roubo de trabalho, o que para mim parece uma implementação clara no software de tentar mudar dinamicamente as linhas - o que está relacionado ao FastPass. Uma das coisas boas do fastpass é que você se senta menos na fila, monta mais e se move mais. Com o TPL, espera-se que haja menos bloqueio e espera, pois um encadeamento que terminou sua fila pode roubar tarefas de outras filas.
fonte
Um aspecto interessante do FastPass é que ele introduz um canal de feedback para a Disney. Por ter uma única linha que quase sempre espera que a atração se torne disponível, não há muito que você possa fazer, exceto de alguma forma medir quanto tempo a linha está em intervalos de tempo fixos durante o dia. Usando o FastPass, a Disney coleta dados de demanda e tráfego por atração em tempo real e já digitalizados - eles devem ir ao seu data warehouse para mineração imediatamente.
Costumo concordar que aqueles que qualificam o FastPass como um sistema de alocação de recursos mais do que um sistema de enfileiramento de recursos. Outra analogia seria tratar todos os clientes da Disney como um processo do sistema operacional que é um thread único até que um cliente compre um FastPass. Isso faz do cliente um processo de 2 threads que continua pedalando pelo parque como antes e está executando outro thread que aguarda sua vez pelo recurso designado (atração do FastPass). Permitir vários FastPasses aos usuários (processos) tornará esses processos mais multithread. A sincronização de threads ocorre quando o cliente finalmente chega à atração FastPass para se divertir.
fonte
A única analogia de software que posso ver é que esse método evita o transbordamento do buffer da fila - se muitos clientes tentarem adicionar a uma fila aproximadamente ao mesmo tempo em que poderiam rapidamente preencher essa fila. Se for solicitado que os clientes esperem um determinado período, eles deverão armazenar em buffer seus (relativamente) menos itens localmente antes de adicioná-los à fila.
Na maioria dos outros casos, no entanto, isso leva a uma taxa de transferência menos eficiente, pois pode levar à fila de espera se os tempos de espera forem mal escolhidos.
Tente escrever um aplicativo de teste que use enfileiramento com e sem 'FastPass' sob várias métricas e compare os resultados - e informe-nos se você encontrar algo interessante! :)
fonte
Não sei como isso seria aplicado em software. Mas o sistema definitivamente tem suas vantagens para os visitantes: você pode ter um Fastpass para um passeio e, enquanto isso, vai para outro passeio cuja linha não é tão longa (ou, como você diz, faz compras, come, etc.). Foi o salvador de vidas quando eu e minha família estávamos lá (apesar de admitir que era o período de entressafra).
fonte
Dado que está sendo explorado , você teria que confiar nos usuários da fila ;-)
fonte
Na minha classe da cadeia de suprimentos, o aspecto das filas que veio a mim imediatamente é que reduz o tempo de espera percebido, para que as pessoas não se importem em esperar. Eu não acho que reduz as linhas principais, mas diminui a ansiedade de alguém em esperar na fila regular, pois eles sabem que, assim que saem do caminho, podem voltar na segunda vez (se o seu passe rápido o tempo acabou, pelo menos).
Sei que percebo que posso andar muito mais com o fastpass, embora não saiba se é realmente esse o caso ou se é apenas uma reestruturação inteligente do meu tempo de espera.
fonte
Acho que você chegou ao ponto principal, mas faz parecer mais mal corporativo do que talvez mereça. Eu certamente preferiria “enfileirar-se virtualmente” enquanto fazia compras e comer do que enfileirar-se fisicamente em uma fila.
Teoricamente, o FastPass poderia tentar agendar mais pessoas nos momentos em que a demanda natural era menor; é isso que você faria para obter mais rendimento de uma fila agendada real. Mas, na prática, eu suspeito que os brinquedos estejam operando praticamente em capacidade durante a maior parte do dia, portanto, há pouca produtividade a ser obtida com isso.
fonte
Trata-se da programação de recursos para passeios populares, bem como uma maneira de gerar receita adicional com a venda de mercadorias. Se você está esperando na fila, significa que você não tem a oportunidade de gastar mais dinheiro.
fonte
É do melhor interesse da Disney satisfazer seus clientes. Embora o merchandising seja certamente uma receita significativa, conseguir clientes fiéis é muitas vezes mais valioso.
Se eu pagar US $ 150,00 por um ingresso de um dia para o parque e conseguir apenas 10 passeios, porque as filas são muito longas, eu questionaria se esses passeios realmente valem US $ 15 dólares por peça. Se, no entanto, houver uma maneira de eu fazer 30 passeios, terei uma experiência melhor, menos probabilidade de questionar o valor dessa experiência e maior probabilidade de retornar e dar à Disneylândia mais US $ 150 + comida + mercadoria.
Antes do FastPass, o único diferencial entre meus 10 passeios e 30 passeios era o quão lotado o parque estava. Esse é um problema comum que outras atrações desejáveis tentaram abordar de outras maneiras. Por exemplo, a estação de esqui Northstar em Tahoe limitará o número de bilhetes de teleférico que eles vendem em um determinado dia (ou pelo menos antes). Isso também resolve o problema, mas de uma maneira que afeta mais negativamente a receita.
No software, um paradigma semelhante seria carregar uma página da web. Nos tempos antigos, esse processo era único: obter todo o conteúdo, renderizar todo o conteúdo e exibir a página. À medida que o tráfego e os dados aumentavam (especificamente a incorporação de imagens), esse modelo enfrentava o mesmo problema da Disneylândia. Se houvesse muitas imagens na página e demorasse muito tempo para carregar, eu não esperaria pelo conteúdo e não me incomodaria em voltar a esse site.
Agora, as páginas da Web dos dias são carregadas de maneira diferente. O conteúdo é carregado, renderizado e exibido primeiro, enquanto outro thread carrega, renderiza e exibe as imagens. Isso melhora bastante a experiência do usuário e, desde que haja conteúdo desejável, continuarei a voltar ao site e ele poderá transformar minhas visualizações de página repetidas em $$$.
fonte
Isso se assemelha a um sistema operacional em tempo real, de alguma forma.
Alguns processos têm um passe rápido e são marcados em tempo real.
Eles têm uma garantia de que obterão o recurso dentro de um determinado período de tempo. Eles não conseguem pular a fila, mas podem entrar! Enquanto eles não estiverem usando o passeio, outros convidados não em tempo real podem usá-lo.
-Alex
fonte
Isso é ótimo. A Disney está basicamente fazendo duas filas, com taxas de serviço linearmente mais baixas, dependendo do número de FASTpass's distribuídos.
A curta fila FASTpass pode ser modelada como uma fila que está sempre em equilíbrio por uma breve espera. Manter a fila curta minimiza o feedback entre as duas filas - o que é bom para modelagem estocástica. A outra fila é uma fila típica, com uma taxa de serviço mais lenta.
É claro que, se a cota do FASTpass for muito grande, ocorrerá um retorno entre as duas filas, tornando o sistema caótico e minimizando o efeito dos modelos de filas para descrever os resultados.
Outra estratégia é minimizar as esperas do usuário, estritamente para agendar passeios com hora marcada, caso em que é uma fila de lotes pura e fácil de otimizar. Eu não acho que isso funcionaria nos EUA. :-)
fonte
Você não dá mais passeios. As filas para filas impopulares agora são mais longas, porque mais pessoas estão gastando tempo com elas enquanto esperam o amadurecimento de seus passes populares. Capacidade é capacidade.
"No momento, o Twitter está realmente ocupado. Volte entre 15:00 e 15:15 e garantimos que você receberá seus tweets em 5 segundos ou menos."
fonte