Pull to refresh

Comments 80

среднее время ожидания автобуса всегда одинаково: в нашем случае это 10 минут, независимо от того, сколько времени прошло с момента предыдущего автобуса!

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

(например, если вы подкинули монетку 9 раз и все раза получили «решка», то подкинув монетку в 10-й раз, у вас все равно будет шанс ~50/50%. Хоть люди и любят присваивать подобным событиям «особенность», событие «1 1 1 1 1 1 1 1 1» не является более особенным, чем событие «1 0 1 0 0 0 1 0 0 1»)

Если автобус X всегда прибывает с интервалом в 10 минут, то у любого отдельно взятого человека в отдельно взятый день при рандомизированном времени прибытия, шанс попадания на каждый подобный автобус в любую минуту этого интервала (1-10 минут) будет равен 10% на каждую минуту.

А расчеты в статье показывают, что даже если человек знает, что автобус прибывает в точно заданные интервалы (12:00; 12:10; 12:20...), и человек прийдет на остановку за 1, 2, 3… минуты до отбытия, он все равно по какому-то магическому закону всегда будет ждать еще 10 минут.
Если автобус X всегда прибывает с интервалом в 10 минут

Статью стоило прочитать перед написанием возражений. Явно же написано — автобус приходит в среднем каждые 10 минут, а не всегда. И по коду это тоже видно.

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

И, в целом, модель, описанная автором статьи — весьма далека от реального мира.

Например, когда он «для точности» генерирует выборку на 1 млн. событий — в этой выборке у него на любом интервале времени может собраться произвольное количество приехавших автобусов. Тогда как в отношении более-менее правдоподобной модели с фиксированным расписанием и некоторым отклонением от него можно говорить, что-нибудь в духе «на любом 10-ти минутном интервале придёт от 0 до 2 автобусов».

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


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

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

Где-то я такое видел. Ах, да, это же в Москве иногда автобусы/троллейбусы ездят стайкой, встречал вплоть до 5 особей, не надо мне тут про две)


На самом деле начало статьи очень желтушное — создается впечатление, что автор считает свою модель достоверной для реального мира, но если дочитать, становится понятно, что статья скорее посвящена тому, как себя развлечь и как не стоит относиться к моделированию

Пожалуйста, дочитывайте статьи до конца, перед тем как писать критику. Хотя бы заключение.
UFO landed and left these words here

Среднее время ожидания автобуса всегда одинаково?

UFO landed and left these words here
Тоже показались странными предположения и расчёты в статье.
Кроме того, неужели в Сиэтле до сих пор так всё печально с транспортом?
Вот, например, в двух городах Словакии (в которых я жил), распределение транспорта идёт не интервалами, а по конкретному графику.
Пример из таблички на остановке: 12:10, 12:20, 12:30 и так далее.
И если один из рейсов опоздал, то приход следующего никак не зависит от предыдущего, и будет вовремя. И заметно, что люди знают конкретное время, когда должен подойти автобус, и собираются на остановке как раз к этому времени. (хотя, может это так кажется)
И, кстати, из нескольких сотен поездок, опозданий было на моей памяти 3 штуки.
UFO landed and left these words here
Если вы про навигацию, то это далеко от идеала. Приложения, которыми я пользовался для этих целей показывают позицию автобуса с существенным запаздыванием, поэтому приходится приходить на остановку заранее и торчать там почем зря те же 5-10 минут. Кроме того, иногда приложение почему-то перестает получать данные, а это не всегда понятно, потому значок связи с сетью горит, а точки автобусов стоят в последней полученной позиции.

мне кажется мы живём в разных мирах… каждый день вечером на павелецкой набережной на яндекс картах выжидаю автобус в офисном центре в тепле и уюте в 3 минутах ходьбы от остановки. Все автобусы видны со 100% точностью в реальном времени. Никто никуда не пропадает, едут предсказуемо. Ну в крайнем случае всегда можно посмотреть уровень пробки на маршруте и "предсказать результат", наблюдая за его движением пару минут.
PS ну может во мне говорит то, что я по сути водитель, и за много лет привык "видеть" скорость движения по карте, поэтому с предсказанием времени прибытия автобусов диссонанса никогда не ощущаю, и на расчетные минуты никогда не смотрю, а смотрю именно на местоположение и топологию местности.

Реальность не всегда совпадает с вычисленными ожиданиями.
В статье достаточно плоские расчеты.

Вспомнил, как я решил сэкономить время и силы, проехавшись на автобусе от Павелецкой. Местность мне особо не знакома, маршрут нашел на карте, все отлично показало. Но в итоге я, лишь минут 10 отъезжал от остановки.
Карта

Автобусу необходимо на коротком участке 5-полосной полосы (с долгим светофором) перестроиться из крайнего правого в крайней левый ряд.

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

Я перестал полагаться на Яндекс.транспорт, когда на карте приложения к моей остановке подъехал автобус. А потом уехал. Только вот в реальности никакого автобуса не было, на дороге были только машины. Я так и не понял что это было, то ли Яндекс брал данные из расписания, то ли ещё что. Но если приложение не может гарантировать правильность отображения информации — то пользоваться им смысла сильно меньше.

Я наблюдал такое же, и в интернетах видел подобные отзывы. Яндекс где-то берет данные от службы автобусов/трамваев/..., а где-то, где данных никто не предоставляет, рисует трансопрт по расписанию.

У нас приложение и «новые» табло на остановках выделяют данные особым образом, если они получены не от реального положения транспорта, а взяты из расписания.
Скажу с другой стороны, не особо пользуюсь наземным общественным, но буквально месяц назад три из трех для Минска за один день (вот прямо в пределах видимости совпадение), и как тут не уверуешь? И вы правы, если расчетные данные, то в этом нет особого смысла.
Ваш коммент дал пинка и возможно яндексу стоит уточнять, получает ли он данные для конкретного города или строит на основании расписаний, возможно мои 3:3 — это просто хорошая работа водителей автобусов?
Яндекс рисует транспорт исходя из маршрутов, а не фактического следования транспорта. В итоге если где-то закрыто и все едут в объезд — на картах автобусы будут бодренько ездить мимо вас, а по факту — где-то по другой улице.

Тогда не понятно, откуда берутся автобусы-фантомы. Например, по карте он едет, но фактически его нет, но следующий за ним по карте тот же номер приезжает как нарисовано. Пояснить это "объездом" не получится.
А ещё автобусы-фантомы могут пропасть с карты, а потом появиться в том же месте и бодро поехать дальше.
А ещё есть автобусы-призраки. Это которые по факты приезжают на остановку, но на карте его нет. Садишь в него, едешь и через какое-то время бац и он появляется на карте и движется ровно там, где едешь ты

tcapb1 Призраки появляются не просто так. Весь общественный транспорт (напр.Москвы) сливает данные в ДИТ Москвы, а они уже дали API для Яндекса. Координаты автобусы выдают каждые N секунд(в зависимости от наличия связи). Яндекс забирает эти данные тоже через какое-то время, какое позволяет API. Не забывайте, что в первую очередь эти данные нужны самому ДИТ. И уже во вторую очередь они их отдают, а значит отдают с задержкой (сначала сохраняют у себя, затем выдают данные).
На это накладывается то, что чистые координаты всегда передаются с некоей погрешностью.
Вот и получаем: данные поступают относительно редко (допустим каждые 20 секунд), данные могут вообще не поступать (4G отвалился, деньги на симке кончились, нет связи, тоннель, помехи итд...) и получается, что Яндексу нужно дальше самому додумывать, достраивать данные.
Например — заехал автобус в тоннель. Тоннель может быть длинным. А еще там может быть пробка. Надо примерно пытаться предсказывать где сейчас едет автобус. Предсказания и позволяют двигать автобус до тех пор, пока не придут данные.
Таким образом очевидно, что призраки — это когда автобус выехал на линию, включил свой передатчик, ехал какое-то время, и от него перестали поступать данные. Автобус не посылал сигнал «съехал с линии», либо API не послала его. Яндекс всё-еще думает что автобус где-то едет, и делает предположение где он сейчас может быть, делая прогноз.
Его я ставил первым, и он показывал… не знаю что. Наверное, погоду на Марсе.
Возможно, это были детские болячки, попробую еще раз.
Ага. Пункт раз: Купить телефон с большим экраном.

Достаточно удобного соотношения сторон и более менее современной ОС.
Да, никто не запретит вам использовать вашу любимую старую Нокию н95, но серьезно, вы ведь не будете винить всех вокруг, что гужевые повозки в 2018 обязаны двигаться как можно правее и желательно не по асфальту, а в центре города уже и овса не купишь

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

Работает плохо. Мало того, что часто вижу как приезжает автобус, которого не видно в системе, так и те, что видно не позволяют планировать.
Автобус приезжает, высаживать пассажиров и уезжает.
Или пишет, что будет через 5 минут, прихожу с сыном на остановку вовремя, а автобус ещё стоит на светофоре через Ленинский в пятницу 10 минут и мы стоим на ветру мёрзнем.

Беда всех этих штук — нелинейности в графике. Легко угадывать прогноз когда автобус едет свои 0,5 км/мин и стоит на светофорах не более 30 секунд. А у меня в 3 остановках ж/д переезд. И если автобус проскочил, то я только его спину увижу. А если нет — могу минут 10 куковать лишних…
Ещё частенько бывает весело наблюдать в приложении «автобусы-призраки», которые «в параллельной реальности» подъезжают к остановке и уезжают дальше, а ты остаёшься на ней стоять, размышляя, будет ли следующий таким же виртуальным или всё же материализуется.
Особенно классно, когда он последний.

Ещё веселее увидеть в приложении два подъезжающих автобуса, оценить давку при посадке в первый и решить подождать второго. Второй оказывается "невидимкой" и ты кукуешь на остановке дальше.

А ещё для всех автобусов Мосгоргранса имеется расписание для всех остановок. Особенно выручает, когда остановка близка к началу автобусного маршрута (отслеживалка в этом случае бесполезна).
Особенно выручает, когда по графику автобус должен быть, гугл, яндекс и МГТ радостно рапортуют об «отправлении в 20:25», а автобус приехал на конечную, встал, выключился, и водитель ушел по своим делам. Жди еще полчаса.
В цитадели демократии общественный транспорт не очень то развит. Все больше на такси или своём авто.
Очень развит. Современный. Удобный. Отлично приспособлен для людей с ограниченными возможностями. Пользовался им (да и сейчас пользуюсь) в самых разных городах США и Канады.
Почему же тогда на нём так мало людей ездит?

image
В Сиэтле автобусы приходят (иногда) по расписанию (не через интервалы). Расписание есть на остановке. Есть приложение для телефона/сайт, которое показывает движение и прибытие автобусов в реальном времени. Вот пример для остановки 3rd and Pike, упомянутой в статье: pugetsound.onebusaway.org/where/standard/stop.action?id=1_578

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

Старое фото табло на остановке


если средний интервал между автобусами составляет N минут, то среднее время ожидания для пассажиров составляет 2N минут
Тут же двойка лишняя. Иначе бы получалось, что при среднем интервале движения в 10 минут среднее время ожидания — 20 минут. Явно не сходится.
Средний интервал движения — это сумма всех интервалов движения, деленная на их количество.
Среднее время ожидания — это всех пассажиров спросили, сколько они ждали и разделили на количество пассажиров.
Логично, что в наиболее длинные интервалы на остановки успевает подходить больше народа.
Хотя N*2 для меня тоже контринтуитивно.
Ну… наверняка можно подобрать подходщие параметры, но в общем случае не верно.

Допустим, у нас интервалы равномерно распределены в отрезке от 1 до 10 минут (5.5 в среднем). Допустим, поток пассажиров на остановку постоянен и равен 1 в минуту. Тогда число пассажиров на каждую посадку равно интервалу между текущей и предыдущей. То есть, 1 пассажир ждал 1 минуту, 2 — 2 минуты и тд. Тогда если ихспросить, то среднее время будет 385/55==7.
Если среднее 10 минут, то они должны быть распределены в отрезке от 1 до 20 минут. В таком случае получается среднее ~13+ минут.
По-моему, с ростом интервала соотношение средних асимптотически стремится к 1.3(3).
Пусть у нас 12 автобусов в сутки. Средний интервал между ними N=24часа/12автобусов = 2 часа. Расписатие у нас такое: с 8 до 20 каждый час. Если пассажиры подходят равномерно и днём и ночью для половины из них среднее время ожидания 0.5 часов, а для второй — барабанная дробь — 6 часов. Всреднем > 2N получается время ожидания. Всё зависит от параметров.
Еще раз, статья противоречит сама себе.

В одном месте написано:
При ожидании автобуса, который приходит в среднем каждые 10 минут, ваше среднее время ожидания будет 10 минут.

А в другом месте:
если средний интервал между автобусами составляет N минут, то среднее время ожидания для пассажиров составляет 2N минут
Это разные гипотезы, разные утверждения. Одно автор называет «парадоксом времени ожидания», второе «Парадокс инспекции». И в заключении утверждает:
лежащее в основе парадокса времени ожидания, — что прибытие автобусов следует статистике пуассоновского процесса — не является обоснованным.

Логично, но под эту логику написан код. Если в среднем 10 минут, то и среднее ожидание 10 минут выходит по этому коду и по модели из статье. N*2 явная опечатка в статье, так как с остальной статьёй никак не сходится.

Этот симулятор работает не так. Твой автобус всегда уходит на твоих глазах, пока ты стоишь на красный на переходе. Независимо от того, когда ты пошел на остановку. Он успевает проскочить в эти 24 секунды.
Вот это правильно, а то какие-то парадоксы придумывают)
24?! Карл, я вынужден ходить через переход в обход перехода нарушая ПДД где интервал 180 с и тот становится активен только после нажатия кнопки.

P.S. адаптивная («интеллектуальная») система управления трафиком, Москва, Зеленоград делает город максимально не для людей.
В порядке субботней шутки, разве вы не знаете способа вызова автобусов? Достаточно отойти от остановки и закурить.
Матрица уже перестроилась и этот чит не работает.
UFO landed and left these words here
Ну на опаздывающие трамваи вы обращаете внимание, а на те что вовремя — нет. Просто некачественный сбор статистики. Обычно так подобные случаи решаются. :)
Но если вы выходите не совсем случайно, то возможны перекосы в распределении изза совпадений с пересменками в депо там и тп.
UFO landed and left these words here

Это очень просто объясняется. Водитель трамвая — тролль.

5 минут раньше раньше или 5 минут позже, я каждый раз опаздывал на уходящий трамвай на 20 секунд. Я всегда видел, как он уезжает.
Та же фигня с «моими» автобусами, всё хотел собрать статистику и разобраться, почему так происходит. Еще бесит, что когда ждешь относительно редкий автобус (который приходит, скажем, раз в 12-15 минут), он очень часто сперва появляется на той же остановке напротив (идущий в противоположном направлении).
А ещё, если остановка для нескольких маршрутов, то кажется, что нужный маршрут приезжает реже остальных. Это потому что все автобусы чужих маршрутов пропускаются, а свой — всегда единственный: приехал и прекратил тем самым последующие наблюдения.
При ожидании автобуса, который приходит в среднем каждые 10 минут, ваше среднее время ожидания будет 10 минут.
Видимо это из-за того что иногда интервал был более 70 мин, а иногда ~0 мин (что можно считать за один автобус), что в среднем дает 10 мин. С таким же успехом, можно взять «экспотенциально-случайный» интервал и получить 15 мин ожидания, при среднем 10 мин интервале автобусов.

Но если взять интервал за 10 мин +-2мин (как я предполагал до прочтения), то среднее время ожидения будет ~5 мин.
Смотрите. Тут не нужны никакие крайности вроде 70 минут, чтобы наблюдать это явление. Я приведу в пример очень сферическую ситуацию, чтобы на пальцах объяснить как оно работает.

Вот допустим, 50% автобусов ходит с интервалом в 16 минут, а 50% автобусов с интервалом в 4 минуты. В среднем это дает 10 минут. Ну вот представим, что есть автобус, а следующий — через 4 минуты, следующий — через 16, следующий — через 4, следующий — через 16 и так далее. В течении 20 минут гарантированно два автобуса.

Теперь представим, что на остановку приходит 1 человек ровно через минуту.
То есть в автобус, который пришел спустя 4 минуты после предыдущего село 4 человека, а в автобус, который пришел через 16 минут после предыдущего село 16 человек.
Автобус, который пришел через 4 минуты после предыдущего ждали в среднем 2 минуты.
Автобус, который пришел через 16 минут после предыдущего ждали в среднем 8 минуты.

Дальше. 4 человек ждали в среднем 2 минуты, а 16 человек ждали в среднем 8 минут.
(4 * 2 + 16 * 8)/20 = 6.8. То есть хотя каждые 20 минут приходило 2 автобуса, с равными интервалами и средним интервалом между автобусами в 10 минут. Среднее время ожидания оказалось не 5 минут, а почти 7.

Я понимаю, что в реальной жизни такой сферической ситуации не будет, но, как по мне, эффект очень интересный.
Ну, эффект становится менее интересным, когда понимаешь, что так можно и 1440 автобусов в полночь провести мимо остановки и сказать, что «в среднем раз в минуту сегодня автобус ходил, а среднее время ожидания — 12 часов».

А так, тут больше заслуга/вина автора, который выделил жирным кликбейтовое утверждение до хабраката, а затем потратил кучу букв, чтобы как-то оправдаться, что вообще-то не совсем Пугачёва, и не совсем умерла, а кто так считал — не прав.
Сначала автор написал кучу программ, загрузил нас интегралами и пуассоновскими процессами, а потом сделал вывод, что всё написанное неправильно, так как оно соответствует действительности. Зачем было тогда писать всё это, почему бы сразу не написать правильно?

По-хорошему, надо было сначала взять файл реальных данных и посмотреть, что там гауссово распределение. А потом уже писать программу.
Интересная, но очень запутанная статья, как по мне, больше на философский метод смахивает, а вообще, любопытно.
Просто в час пик автобусы стоят в пробке, а потом сразу 3 приезжают за 30 мин ожидания.
особенно достается трамваям/троллейбусам



А вне часа пик — все как по маслу, но и недовольных людей меньше.
Выделенные полосы для ОТ надо делать в городах, обязательно.
С чего бы вдруг? Не знаю на счет других городов, но в мск на всех выделенках всегда висит «остановка запрещена» и «эвакуация» и за все время я не видел ни одной припаркованной там машины.

Для начала нужно ввести неотвратимость наказания и огромные штрафы. Во Вроцлаве, например, ОТ ходит четко по расписанию, причем, в основном, по обычным полосам движения. Но держаться надо крепко — ибо гоняют нещадно

UFO landed and left these words here
Выделенные полосы для ОТ надо делать в городах, обязательно.

И не чистить их зимой от снега, прям как на фотографии выше. На дороге постоянный поток машин хоть как-то прокатывает в снегу колеи, на выделенках такого нет. Как же "весело" было ездить после снегопадов в автобусах в Москве — автобус сначала не может прижаться к остановке (там каша из снега), потом не мог от неё отъехать — задние колёса буксуют в снегу, иногда корму вообще на встречку выносит.

Но ведь это не проблема выделенной полосы, а проблемы коммунальных служб. Я бы ещё добавил, что в США и Канаде зачастую, кроме выделенной полосы (или отдельной дороги) для ОТ есть выделенная полоса (или дорога) для велосипедистов.

Если говорить про Seattle то там снега почти не бывает (т.е. далеко не каждую зиму может выпасть хоть какой-то снег).
При ожидании автобуса, который приходит в среднем каждые 10 минут, ваше среднее время ожидания будет 10 минут.

Это никак не относится к маршруткам бегающим на просторах России. У них какие свои уникальные законы движения.


Это то, что иногда называют парадоксом времени ожидания.

Я бы назвал это российским парадоксом ожидания.

Позанудствую: генерация событий вот в таком виде bus_arrival_times = N * tau * np.sort(rand.rand(N)). Если посмотреть на случайные числа из rand.rand(N) то видно что они могут быть очень малыми хe-07, и поэтому автор умножает каждое измерение на 1000000, чтобы начальное время для первых событий достоверно было выше 1 мин. Так вот лучше тогда сделать обозначение этого коэффициента отдельным от кол-ва событий, т.е. M=1e6
Тогда формула будет выглядеть так: bus_arrival_times = M * tau * np.sort(rand.rand(N))
Чтобы убедить себя в разумности этого, сначала смоделируем поток автобусов, которые прибывают в среднем за 10 минут.

N = 1000000  # number of buses
tau = 10  # average minutes between arrivals

rand = np.random.RandomState(42)  # universal random seed
bus_arrival_times = N * tau * np.sort(rand.rand(N))

Не все тут знают numpy, что значит N * tau * np.sort(rand.rand(N))? Почему N участвует тут дважды? Какое распределение задержки с заданным средним мы эмулируем? В любом случае более формальная постановка задачи была бы очень кстати.


Кроме того на чем основан выбор именно такого распределения? Мне кажется мы можем получить любой результат выбирая распределение как нам нравится.

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

Ситуация с парадоксом ожидания очень напоминает ситуацию с СУБД - пользовательский процесс ожидает освобождения ресурса.

Теперь вопрос - как использовать парадокс в анализе производительности СУБД.

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

Парадокс в грубом приближении можно использовать так, на каждом уровне время ожидания выполнения уровня нужно оценивать не ниже х2 к предыдущему уровню

Sign up to leave a comment.

Articles