Google транзит слишком идеалистичен. Как бы вы изменили это? - PullRequest
4 голосов
/ 11 февраля 2010

Предположим, вы хотите добраться из пункта А в пункт Б. Вы используете указания Google Transit, и он говорит вам:

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.

Общее время = 5 ожидания + 40 минут.

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.

Общее время = 10 ожидания + 50 минут.

В целом, маршрут 1 выглядит намного лучше. Однако на практике действительно происходит то, что автобус 69 отстает на 3 минуты из-за пробок, и в итоге я пропускаю автобус 6969. Следующий автобус 6969 прибывает как минимум через 30 минут, что составляет 5 ожиданий + 70 минут (включая 30 м. ждать в холод или жару). Не было бы неплохо, если бы Google на самом деле рекламировал эту возможность? Теперь у меня вопрос: каков лучший алгоритм для отображения трех лучших маршрутов с учетом неопределенности в расписании?

Спасибо!

Ответы [ 5 ]

3 голосов
/ 11 февраля 2010

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

Автобусные перевозки в Дублине печально известны своей несвоевременностью, вы можете добавить 40% погрешности ко всему, что связано с расписанием Дублинского автобуса, давая лучший и худший сценарий развития событий. Вы также можете учитывать хронические задержки в часы пик. Затем пользователь может увидеть, что у него может быть 20% или 80% шанс на фактическое установление соединения.

Вы можете отсортировать «лучшие» поездки по «наиболее вероятному правильному» коэффициенту и включить эти данные в результаты, показанные пользователю.

Мои два цента:)

2 голосов
/ 11 февраля 2010

Для железнодорожной системы Великобритании каждый узел обмена имеет ассоциированное «минимальное разрешенное время передачи». Интерфейс для планировщика маршрута здесь имеет расширенную опцию, позволяющую пользователю либо принять значение по умолчанию, либо добавить полчаса.

В вашем примере установка «минимального разрешенного времени передачи», скажем, 10 минут на шаге 2, предотвратит использование маршрута 1, как показано. Конечно, это означает, что минимально возможное время в пути увеличено, но это компромисс.

1 голос
/ 11 февраля 2010

Катастрофический сбой должен быть первой проверкой.

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

После этого он может оценивать единичные промахи в худшем случае.

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

1 голос
/ 11 февраля 2010

Эмпирически. Запишите фактическое время прибытия по сравнению с запланированным временем прибытия и вычислите среднее значение и стандартное отклонение для каждого. При рассмотрении возможных маршрутов рассчитайте вероятность того, что данный этап прибудет достаточно поздно, чтобы вы пропустили следующий этап, и рассчитайте среднее время ожидания P(on time)*T(first bus) + (1-P(on time))*T(second bus). Это становится более сложным, если вам нужно рассмотреть несколько этапов, каждый из которых может опоздать независимо, и несколько возможных следующих этапов, которые вы можете пропустить, но общий принцип сохраняется.

1 голос
/ 11 февраля 2010

Если вы принимаете во внимание неопределенность, то больше не существует «лучшего маршрута», но вместо этого может существовать «лучшая стратегия», которая минимизирует общее время в пути; тем не менее, он не может быть представлен в виде линейной последовательности инструкций, но является скорее формой общего плана, т.е. «отправляйтесь на автобусную станцию ​​X, подождите до 10:00 для автобуса Y, если он не прибудет, дойдите до станции Z ... "Это было бы общеизвестно трудно представить пользователю (кроме того, что вычислительно дорого производить).

Для фиксированной последовательности инструкций можно рассчитать вероятность того, что она действительно сработает; но какой уровень уверенности хотят принять пользователи? Будете ли вы довольны, скажем, 80% успеха? Когда вы пропускаете одно из ваших соединений, карточный домик падает в худшем случае, например. если вы опоздаете на поезд, который отправляется каждый второй час.

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

...