Pergunta

Suponha que você queira ir do ponto A ao ponto B. direções você usa o Google Transit, e diz-lhe:

Route 1:
1. Wait 5 minutes
2. Walk from point A to Bus stop 1 for 8 minutes
3. Take bus 69 till stop 2 (15 minues)
4. Wait 2 minutes
5. Take bus 6969 till stop 3(12 minutes)
6. Walk 7 minutes from stop 3 till point B for 3 minutes.

Total de tempo = 5 Aguarde + 40 minutos.

Route 2:
1. Wait 10 minutes
2. Walk from point A to Bus stop I for 13 minutes
3. Take bus 96 till stop II (10 minues)
4. Wait 17 minutes
5. Take bus 9696 till stop 3(12 minutes)
6. Walk 7 minutes from stop 3 till point B for 8 minutes.

Total de tempo = 10 espera + 50 minutos.

Todos em todos Route 1 parece muito melhor. No entanto, o que realmente acontece na prática é que bus 69 é de 3 minutos atrás devido ao tráfego, e eu acabar bus 6969. faltando o próximo ônibus 6969 vem pelo menos 30 minutos mais tarde, o que equivale a 5 Aguarde + 70 minutos (incluindo 30 m esperar no frio ou calor). Não seria bom se o Google realmente anunciado esta possibilidade? Minha pergunta agora é: o que é o melhor algoritmo para exibir o top 3 rotas, dada a incerteza na programação

Obrigado!

Foi útil?

Solução

Se você levar em conta a incerteza, em seguida, não há mais um "melhor caminho", mas em vez disso, pode haver uma "melhor estratégia" que minimiza o tempo total em trânsito; no entanto, não pode ser representado como uma sequência linear de instruções, mas é mais do que a forma de um plano geral, ou seja, "ir para a estação de ônibus X, esperar até às 10:00 para ônibus Y, se não chegar a pé da estação Z ..." Isso seria notoriamente difícil de presente para o usuário (além de ser computacionalmente caro para produzir).

Para uma seqüência fixa de instruções é possível calcular a probabilidade de que ele realmente funciona; mas o que seria o nível de usuários de certeza quer aceitar? Você se contentar com, digamos, a taxa de sucesso de 80%? Quando você, em seguida, perder uma das suas conexões o castelo de cartas cai no pior caso, por exemplo, se você perder um trem que sai a cada segunda hora.

Eu escrevi muitos anos a percorrer um programa semelhante para calcular viagens de ônibus de longa distância na Finlândia, e eu apenas relatou os tempos de transferência assumindo todos os ônibus foi no horário. Então, basicamente, todos os planos com menos de 15 minutos o tempo de transferência ou assim foi desconsiderada porque eram demasiado arriscado (havia, por vezes, apenas um ou dois ônibus de longa distância por dia em uma determinada rota).

Outras dicas

Como sobre a adição de ponderações que expressam um nível de incerteza para os diferentes tipos de elementos de viagem.

Os serviços de ônibus em Dublin City são notoriamente prematura, você pode adicionar uma margem de 40% de erro para qualquer coisa a ver com a programação Dublin Bus, dando um melhor e pior cenário. você poderia também factor de atrasos no tráfego crônicas em horas de ponta. Em seguida, um usuário poderia ver que eles podem ter um 20% ou 80% de chance de realmente fazer uma conexão.

Você poderia tipo "melhores" viagens pelo fator "muito provavelmente correta", e incluir esses dados nos resultados apresentados para o usuário.

Os meus dois centavos:)

Para o sistema ferroviário Reino Unido, cada nó intercâmbio tem um 'tempo mínimo de transferência para permitir que' associado. A interface para o planejador de rotas aqui então tem uma opção avançada que permite a usuário para aceitar o padrão, ou adicionar incrementos de meia hora.

No seu exemplo, estabelecendo um 'tempo de transferência mínima para permitir' de, digamos 10 minutos a etapa 2 impediria Route 1 como mostrado a ser sugerido. Claro, isso significa que o tempo mínimo possível viagem é aumentada, mas isso é o trade-off.

empiricamente. Grave os tempos reais chegada vs tempos de chegada, e calcular a média e desvio padrão para cada um. Ao considerar possíveis rotas, calcular a probabilidade de que um determinado perna vai chegar atrasado o suficiente para fazer com que você perca a próxima etapa, e fazer o P(on time)*T(first bus) + (1-P(on time))*T(second bus) média tempo de espera. Isto torna-se mais complicado se você tem que considerar várias pernas, cada uma das quais pode ser tarde de forma independente, e várias possíveis pernas próximos você pode perder, mas o princípio geral mantém-se.

falha catastrófica deve ser a primeira verificação.

Isto é especialmente importante quando você está tentando se conectar a esse último ônibus do dia, que é uma parte crítica da rota. O piloto necessidades para saber que é o que está acontecendo para que ele não fique muito distraído e sabe o risco.

Depois que ele poderia avaliar pior caso faltas individuais.

E então, se você realmente quer começar a fantasia, dê uma olhada nas estatísticas de criminalidade para a estação de bairro ou de trânsito onde o ponto de espera é.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top