Jump to content
GPS навигатор СитиГИД
yasakov

Размышления о скоростной статистике

Recommended Posts

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

Берем для простоты за основу следующие положения:

1. В течение суток средняя скорость изменяется с интервалом в полчаса. Этого достаточно, чтобы учесть "часы пик".

2. Скорость на одном и том же ребре в одно и то же время непостоянна по дням недели.

3. Каждое ребро имеет 2 значения скорости (т.е. принимаем, что ВСЕ дороги имеют двустороннее движение).

4. Разделения по полосам нет, т.к. в любом случае точного GPS-позиционирования не будет, пренебрегаем.

Размышляем:

Для каждого дня для каждого ребра нужно хранить 48*2=96 байт. 48 - потому что раз в полчаса, 2 - потому что двусторонее движение. Количество дней в неделе - 7. Следовательно, для каждого ребра храним 7*96=672 байта.

Первоначальные значения для заполнения таблицы - средние скорости, указанные на карте, ну или например 50 кмч. Проезжая по ребру, пользователь отправляет свою среднюю скорость, которая заменяет значение, которое к тому времени есть в таблице. Для данного дня и данного времени. Статистика собирается постоянно, значения в таблице обновляются и сохраняются. Независимо от того, светофор это, пробка или проезд по рельсам. Итак, в течение получаса в пятницу, 13 числа с 18.00 (!!!-это важно):

1. Было 50 кмч c 18.00 и 50 кмч - с 18.30

2. Проехал user1 средняя скорость которого 20 кмч - стало 20 кмч, и это показывается всем.

3. Проехал user2 средняя скорость которого 10 кмч - стало 10 кмч, и это показывается всем.

4. Проехал user3 средняя скорость которого 40 кмч - стало 40 кмч, и это показывается всем.

По истечении этого получаса средняя скорость на данном ребре модифицируется на (50+20+10+40)4 = 30 кмч Средняя скорость на этом же ребре в следующие полчаса модифицируется считается как (V1+V2)2, где V1 - с 18.00, а V2 - с 18.30.

Через неделю в пятницу, 20 числа с 18.00 будет загружено 30 кмч. С 18.30 будет загружено 40 кмч.

Вот такое предложение по статистике.

Единственное, что серьезно смущает - объем данных.

Share this post


Link to post
Share on other sites

Размышляю дальше: что грузить при старте программы?

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

Строим маршрут. При постройке учитываем и РАСЧЕТНОЕ время прохождения каждого ребра, с тем, чтобы последующие попадали в нужный временной промежуток (читай, чтобы подставлялась правильная скорость).

Share this post


Link to post
Share on other sites

за три часа пробки поменяются не то что кардинально... они поменяются молниеносно и лавинно. как любят выражаться в фонтанке - апокалиптически :)

Share this post


Link to post
Share on other sites

за три часа пробки поменяются не то что кардинально... они поменяются молниеносно и лавинно. как любят выражаться в фонтанке - апокалиптически :)

На три часа надо грузить в ПЕРВЫЙ раз. Потом - обычным обновлением. Да и речь не о пробках, а о средней скорости по ребрам.

Share this post


Link to post
Share on other sites

Мысль хорошая и в той или иной форме предлагалось тут, насколько я помню, неоднократно...

Share this post


Link to post
Share on other sites

Единственное' date=' что серьезно смущает - объем данных.[/quote'] На мой взгляд эта проблема может быть решена двумя способами:

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

2. Выделение статистических пробок в отдельный сервис как сделано с пробками и дорожной обстановкой - отдельный чекбокс в настройках пользователя на сервере. Кто хочет - подпишется (куча народа ж качает яндекс.пробки и не пугается огромным счетом за трафик), кому объём покажется большим - подписываться не будет.ashu2008-11-13 17:34:36

Share this post


Link to post
Share on other sites

По п.1 - несогласен, это категорически убивает идею сообщества датчиков.

По п.2 - согласен на 100%

Share this post


Link to post
Share on other sites

+1

Данные о средних скоростях за сутки можно будет скачивать в обновлениях... Раз в неделю (две) обновление...

Share this post


Link to post
Share on other sites

Продолжим.

Таким образом основная идея - уходить от понятия "пробка" к понятию "средняя скорость для данного момента". Под "данным моментом" понимаем связку день недели + время суток.

Отвечаю на вопрос "почему?". Потому что в большинстве случаев пробки возникают в одном и том же месте. Но программа узнает о них только тогда, когда кто-то там проедет. Пробки спонтанные (т.е. там, где их никогда не бывает, например, из-за ДТП) - это намного меньшая часть, и учесть это, imho, очень и очень сложно. А вот те затыки, которые случаются постоянно в одном и том же месте в одно и то же время - обычная статистика, которой, насколько я понял, пока нет у СитиГида...

Share this post


Link to post
Share on other sites

Немного не согласен про разделение по полосам. Информация уходит, если следуешь по маршруту. т.е. СГ знает, на какой ты полосе, вернее, что ты собираешься делать или уже сделал. Попробую по-понятнее. Лиговка едет нормально, а на поворот налево на Рязанский или Кузнечный пробки. Если у меня маршрут на Рязанский, и я по нему поехал, информация о моей скорости в левой полосе уйдет.

Share this post


Link to post
Share on other sites

yasakov Не, дело даже не в этом. Пробки возникающие в одном и том же месте, более менее покрываются "пробками по расписанию". А проблема в том, что СГ строит маршрут с учетом реальных скоростей (полученных от пользователей) и скоростей, зашитых в карту (если по этому участку никто не проехал). А эти скорсти для разного времени суток - разные. Поэтому маршруты получаются опитимальные далеко не всегда. Рассмотрим две ситуации:

1. 8 утра воскресенье, пробок нет ваще, но вот впереди ДТП, и скопилась небольшая пробка (плотное движение), перед вами кто-то ехал, и поставил скорость 20 км/ч и СГ уводит вас на параллельную улицу, где на карте зашито 50 км/ч. Вы объезжаете эту пробку и едете дальше, довлольный работой СГ.

2. 8 вечера, среда. Весь город в пробках, вы едете по той же дороге, и как ни странно, на ней особых пробок нет, только плотное движение, ехать можно. Кто-то едущий перед вами поставил скорость 20 км/ч. И что тут делает СГ? как и в прошлой ситуации, уводит вас на параллельную улицу - там никто еще не проехал и, согласно карте, там должно быть 50 км/ч! Вы поворачиваете туда и влипаете в колоссальную пробищу... Тошните 30 мин в пробке и клянете на чем свет стоит работу СГ :)crazydoctor2008-11-14 12:00:23

Share this post


Link to post
Share on other sites

Зато едущий следом за crazydoctor пользователь yasakov уже не попадет в эту пробку и поедет дальше, довлольный работой СГ.

Share this post


Link to post
Share on other sites

...и, скорее всего, не только он :)

Кстати, вчера в в центре действительно была "ж...", но СГ отлично провёл меня с Мужества на Лиговский! Правда, один поворот пришлось проигнорировать, т.к. там была необозначенная пробка. Но в таких случаях я звоню и сообщаю о пробке, т.е. и сам не попадаю, и другие тоже.
balts2008-11-14 12:47:26

Share this post


Link to post
Share on other sites

Зато едущий следом за crazydoctor пользователь yasakov уже не попадет в эту пробку и поедет дальше, довлольный работой СГ.

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

"Мы не ищем легких путей, создаем себе трудности и с гордостью их преодолеваем!"

Share this post


Link to post
Share on other sites

qwestik

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

Спасибо.

Share this post


Link to post
Share on other sites

Безусловно. Но, во1, если бы СГ знал, что в это время суток на параллельной улице не может быть 50 км/ч, то и пользователь crazydoctor был бы доволен работой СГ smiley2.gif

А во2, говоря так, вы урощаете ситуацию, считая дорожную сеть чем-то вроде равномерной сетки дорог, где первоначально выбранное направление движения не влияет на конечный результат, т.к. всегда можно повернуть в любую сторону. Но, в рельной жизни это не так. Зачастую приходится выбирать между двумя, а то и тремя маршрутами из А в Б. И поехав по одному из них, перескочить на другой уже нельзя, можно только маневрировать в рамках выбранного маршрута. А если маршрут был выбран с ошибкой, то все, хана. И в описанном выше случае yasakov тоже не будет доволен СГ, т.к. crazydoctor обозначил пробку уже ПОСЛЕ того, как yasakov выбрал маршрут.

Share this post


Link to post
Share on other sites

Зато едущий следом за crazydoctor пользователь yasakov уже не попадет в эту пробку и поедет дальше, довлольный работой СГ.

 

Боюсь, что следущего (третьего) СГ поведёт на 3 паралельную улицу, где ещё никто не бывал. То есть все три будут разведчиками. А вот если будет учитываться статистика по времени и дню недели, то самым реальным окажется маршрут первого, а все остальные увидят реальное время прибытия с учётом реальной скорости первого.

Сам в часы пик часто не поддаюсь на злостные попытки СГ увести на улицу по которой никто не ехал.

Если датчиков будет много, то можно "пожертвовать" 5-10 человеками и послать их в разведку на соседние улицы выяснить реальное положение дел. Вот только спасибо они за это не скажут :(.

 

Статистка по времени и дню неделю должна не заменять скорости датчиков, а дополнять их на тех улицах, куда датчики не сунулись. Понятно что на некоторых улицах эта статистика будет собираться очень долго, так как там может проезжать 1 человек раз в два дня в разное время. Для таких улиц можно оставить вшитые скорости. А вот если эту улицу пытаються использовать для объезда пробок, то именно в пробочное время статистика-то и наберётся. И тогда будет понятно стоит ли дёргаться пытаясь объехать или просто смириться и стоять вместе со всеми.

 

 

 

 
YoGun2008-11-14 12:59:45

Share this post


Link to post
Share on other sites

<...>  Зачастую приходится выбирать между двумя' date=' а то и тремя маршрутами из А в Б. И поехав по одному из них, перескочить на другой уже нельзя, можно только маневрировать в рамках выбранного маршрута. А если маршрут был выбран с ошибкой, то все, хана. <...>[/quote']

 

Полностью согласен!!!!!!!!!!!!!!!!

 

 

Share this post


Link to post
Share on other sites

Еще раз извиняюсь постараюсь дальше писать литературным языком.

Больше ничего комментировать не собираетесь?
qwestik2008-11-14 13:50:33

Share this post


Link to post
Share on other sites

Ребят, а не проще ли иметь готовую статистику, которая к тому же постоянно обновляется, и никем не жертвовать?

Пробка - явление РЕГУЛЯРНОЕ в подавляющем большинстве случаев. Утром - в одну сторону, вечером - в другую. На одном и том же перекрестке, потому что светофор говенный стоит и трамваи пассажиров грузят медленно и печально и т.п.

Меня как пользователя интересует СТАТИСТИКА. И здесь полная аналогия с моими собственными размышлениями типа "а вот туда я не поеду, потому что ж..а там должна быть, вчера была, позавчера тоже, не поеду". Вот это - основа программы.

А пробки которые возникают на пустом месте (ДТП например) - звоните, жмите какую-нибудь спецкнопку...

Share this post


Link to post
Share on other sites

...

Статистка по времени и дню неделю должна не заменять скорости датчиков, а дополнять их на тех улицах, куда датчики не сунулись. Понятно что на некоторых улицах эта статистика будет собираться очень долго, так как там может проезжать 1 человек раз в два дня в разное время. Для таких улиц можно оставить вшитые скорости. А вот если эту улицу пытаються использовать для объезда пробок, то именно в пробочное время статистика-то и наберётся. И тогда будет понятно стоит ли дёргаться пытаясь объехать или просто смириться и стоять вместе со всеми.

Абсолютно согласна. Потому что очень надоедает быть тем самым первопроходцем.

Share this post


Link to post
Share on other sites

Ещё немного внесу ясность: разумеется, первопроходцем быть не хочется никому - это факт. И поэтому ещё более ценной является статистика, т.е. накопленная за достаточно длительное время информация о скорости по ребру.

Вывод: информацию нужно не удалять через полчаса (типа время жизни пробки истекло), а аккуратненько складывать, пересчитывать средние значения, вести учет по дням недели, по времени суток, по времени года, если угодно. Спрашивать пользователей: "А как вам вот это ребро?" "Задница, говорите? Потому что автовокзал новый построили рядом? Исправляем!"

И тогда через полгода-год этой базе данных цены не будет!!! А всякие яндексы будут нервно курить в сторонке.

Share this post


Link to post
Share on other sites

Ещё немного внесу ясность: разумеется' date=' первопроходцем быть не хочется никому - это факт. И поэтому ещё более ценной является статистика, т.е. накопленная за достаточно длительное время информация о скорости по ребру.

Вывод: информацию нужно не удалять через полчаса (типа время жизни пробки истекло), а аккуратненько складывать, пересчитывать средние значения, вести учет по дням недели, по времени суток, по времени года, если угодно. Спрашивать пользователей: "А как вам вот это ребро?" "Задница, говорите? Потому что автовокзал новый построили рядом? Исправляем!"

И тогда через полгода-год этой базе данных цены не будет!!! А всякие яндексы будут нервно курить в сторонке.[/quote']

Да уж и если говорить о времени жизни, то после его истечения не надо сразу с 5км/ч на 60км/ч переключаться, а медленно, но верно стремится от 5 до 60 - все же лучше будет (по-моему).

Share this post


Link to post
Share on other sites

Пробка - явление РЕГУЛЯРНОЕ в подавляющем большинстве случаев. Утром - в одну сторону' date=' вечером - в другую. На одном и том же перекрестке, потому что светофор говенный стоит и трамваи пассажиров грузят медленно и печально и т.п.
[/quote']

 

Вот за что я люблю и пользуюсь СитиГидом, так это за его опровержения моей личной статистики. Иногда там, где я уже готов смириться и стоять со всеми, он меня выводит. Но в такие моменты я не ищу улицу без индекса, я ищу улицу, где кто-то из СитиГидовцев РЕАЛЬНО проехал.

Но общая статистика ой как нужна!

 

 

Share this post


Link to post
Share on other sites

Вот что ещё интересно: разработчики программы изначально питерские, а задумывались ли они, что организация дорожного движения в Москве - принципиально иная? Скоростные характеристики - иные. Радиально-кольцевая структура, при всей её отвратности, существует и налагает массу ограничений и особенностей. Это тоже нужно учитывать.

Что касается "плавного" переключения с 5 до 60 - оно и не потребуется, если будет статистика. Скажем, с 17.00 движение нормальное, 40, с 17.30 - начинается задница, 25, с 18.00 - все домой поехали, стало 5, в 18.30 - по прежнему стоим, поэтому 5, а вот в 19.00 потихоньку рассасывается, средняя 20. Соответственно, выезжая в 18.00 программа будет понимать, что вариант прокладки маршрута через эту улицу возможен только в том случае, если суммарная скорость по ВСЕМ ребрам этого варианта маршрута будет ВЫШЕ, чем другого.

И это НЕЗАВИСИМО от того, едет кто-то впереди вас или нет. Ну а если вы поехали в 18.00 и поехали по ребру со статистикой 5, а на деле со скоростью 25 там проехали, то средняя скорость в базе поправится, и уже не будет там 5 - это статистика, а те кто едут за вами, увидят уже вашу скорость, т.е. 25.

И кстати это всё позволяет здорово учитывать дурацкие светофоры - если машин много, а светофор в вашу сторону горит всего 30 секунд (а красный вам горит 5 минут), то очевидно, что средняя скорость уже не будет 60.yasakov2008-11-14 15:17:42

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...