Перейти к содержанию
GPS навигатор СитиГИД

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


Рекомендуемые сообщения

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

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

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 кмч.

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

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

Ссылка на сообщение
Поделиться на другие сайты
  • Ответов 82
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

Продолжим.

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

 

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

 

 

 

 
YoGun2008-11-14 12:59:45
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

 
Ссылка на сообщение
Поделиться на другие сайты

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

Больше ничего комментировать не собираетесь?
qwestik2008-11-14 13:50:33
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

...

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

 

 
Ссылка на сообщение
Поделиться на другие сайты

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

Что касается "плавного" переключения с 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

Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

×
×
  • Создать...