Перейти к содержанию

Прокладка маршрута в обход перекрытых дорог


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

Задачка для разработчиков НавителНавигатора. Рождена практикой.

 

СИТУАЦИЯ: Вы приехали на автомобиле в другую страну (не бывший СССР) в крупный город (200-300 тысяч населения), который Вы не знаете и по которому ездите только по навигатору. Приехали, поставили машину на стоянку и пошли по своим делам. А когда вернулись к машине, то обнаружили, что в городе начался большой местный праздник, ради которого закрыто движение по одной очень длинной улице и всем прилегающим к ней переулкам. Машина стоит на улице, движение по которой не перекрыто. Так что можно сесть в нее и спокойно уехать. И ехать нужно в такое место, которое далеко за пределами эпицентра праздника. Но при этом маршрут, который прокладывает навигатор, пересекает ту самую перекрытую улицу, причем где-то близко к ее середине.

 

ЗАДАЧА: добраться до места назначения за разумное время.

 

Дополнительные вводные:

1) Протяженность перекрытого участка улицы - не менее 2 километров. Точнее неизвестно.

2) Ожидаемое время окончания праздника и восстановления движения по перекрытой улице - часов через 5-6. При том, что на часах примерно 9 часов вечера.

3) Мобильный интернет возможен только по международному роумингу с соответствующей оплатой из собственного кармана. Возможность быстро купить местную сим-карту с местным мобильным интернетом отсутствует, т.к. из-за праздника и вечернего времени все магазины закрыты.

4) Сервисы вроде "Навител-пробки" для данной местности не поддерживаются.

 

ВОПРОС: что и как указать навигатору, чтобы он проложил маршрут в обход перекрытой улицы?

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

ВОПРОС: что и как указать навигатору, чтобы он проложил маршрут в обход перекрытой улицы?

Если маршрут проложен, то можно кликнуть на манёвр и выбрать объезд 1 км, ещё можно поставить несколько промежуточных точек, через которые нужно проехать, чтоб объехать перекрытые улицы.

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

Если маршрут проложен, то можно кликнуть на манёвр и выбрать объезд 1 км,

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

 

ещё можно поставить несколько промежуточных точек, через которые нужно проехать, чтоб объехать перекрытые улицы.

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

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

Если маршрут проложен, то можно кликнуть на манёвр и выбрать объезд 1 км,

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

Вы попробуйте эту кнопочку, попробуйте на любом маршруте, вот и увидите - как это работает. :)

 

P.S. Никаких точек в этом случае программа не ставит, она просто пытается перепроложить маршрут из текущей точки в объезд того сегмента маршрута, который сейчас перед вами. Название "1 км" - чисто условное, программа может объехать и 100 метров, и 5 км, это зависит от сети дорог, а не от расстояния.

А бывают случаи, что и не объезжает ничего, видимо подходящих дорог не находит. :)

 

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

Не усложняйте. :) Поставить промеж.точку на параллельной улице, например, вовсе не такое уж неподъёмное действо. Конечная точка ведь останется прежней, программа по любому приведёт Вас на финиш, хоть даже через Анадырь. :)

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

P.S. Никаких точек в этом случае программа не ставит, она просто пытается перепроложить маршрут из текущей точки в объезд того сегмента маршрута, который сейчас перед вами. Название "1 км" - чисто условное, программа может объехать и 100 метров, и 5 км, это зависит от сети дорог, а не от расстояния.

А бывают случаи, что и не объезжает ничего, видимо подходящих дорог не находит. :)

Вводная: перекрытая улица пересекается с переулками через каждые 50-100 метров. Что будет делать навигатор, если один из перекрестков этой улицы пометить командой "объезд"? И что следует сделать клиенту, если предложенный альтернативный маршрут также пересекает перекрытую улицу?

 

Не усложняйте. :) Поставить промеж.точку на параллельной улице, например, вовсе не такое уж неподъёмное действо.

Никакого усложнения. Я рассматриваю реальную ситуацию, в которую сам попал. Только рассматриваю в обобщенном виде.

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

Конечная точка ведь останется прежней, программа по любому приведёт Вас на финиш, хоть даже через Анадырь. :)

Задача ставилась не "добраться до места назначения", а "добраться до места назначения за разумное время". Так что вариант "через Анадырь" меня не устраивает. Я навигатором пользуюсь, чтобы проложить маршрут оптимальный (по времени или по расстоянию), а не абы какой. И если навигатор проложит такой маршрут, что я по нему буду ехать 10 часов, то будет выгоднее все-таки постоять на месте и подождать, пока праздник кончится. Но тонкость в том, что в обсуждаемой ситуации заведомо известно, что задача поиска маршрута имеет решение, ограниченное сверху величиной "2 часа в дороге".

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

Не очень понятна цель Ваших постов... Ставите задачи, даёте какие-то вводные, лимитируете время в пути двумя часами... Зачем? Кому? Решаете какую-то абстрактную задачу? Или курсовую работу пишете? :)

Вам пытались подсказать решение из практики, но что-то пробовать Вы, видимо, не стали - практические действия Вас не заинтересовали. Но и теоретизирование подобное навителовских программистов вряд ли заинтересует, они явно чем-то другим заняты, очередные бантики кодируют. Ваши же пожелания (да при указанных Вами ограничениях на связь!) реализовать, КМК, очень уж сложно ;)

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

  • 2 недели спустя...

Не очень понятна цель Ваших постов... Ставите задачи, даёте какие-то вводные, лимитируете время в пути двумя часами... Зачем? Кому? Решаете какую-то абстрактную задачу? Или курсовую работу пишете? :)

Я описываю в абстрактных терминах конкретную ситуацию, в которую сам попал, - перекрытие одной из центральных улиц в городе Лас-Пальмас-де-Гран-Канария (остров Гран-Канария, Канарские острова, Испания) и всех прилегающих к ней переулков из-за карнавального парада сроком с 5 вечера и далеко за полночь. Часов до 9-10 вечера я смотрел этот парад, потом устал от производимого им шума и решил уехать в гостиницу. Но гостиница была в другом городе. Чтобы выехать на трассу, ведущую в этот городок, кратчайшим маршрутом, надо было пересечь ту самую перекрытую улицу. В результате пришлось очень долго плутать по улицам с односторонним движением в поисках объезда. Соответственно вопрос: а что надо было сделать, чтобы получить результат получше?

 

Вам пытались подсказать решение из практики, но что-то пробовать Вы, видимо, не стали - практические действия Вас не заинтересовали.

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

 

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

Ну вот пусть займутся чем-то более актуальным для пользователей.

 

Ваши же пожелания (да при указанных Вами ограничениях на связь!) реализовать, КМК, очень уж сложно ;)

 

Что касается ограничений на связь - то они тут вообще не при делах. Навигатор нормально работает даже когда связи вообще нет. (Конкретно в моем случае в нем так и оставалась московская симка, которую я через программные настройки запретил использовать). Симка навигатору нужна исключительно для того, чтобы оперативно получать информацию о пробках. В остальном это полностью автономное устройство. Но даже если бы я успел к тому моменту купить местную симку с мобильным инетом - вряд ли бы в навителовском информационном центре была бы информация о перекрытии именно этой дороги. Так что ситуация от этого не изменилась бы никак.

 

А что касается возможностей реализации - то я сам программист с 25-летним стажем и примерно представляю, что можно реализовать, а что нельзя. В частности, задачу "поиск оптимального пути по графу" я изучал на 3-м курсе института. И даже реализовывал ее в виде программы. Так что смею заявить, что для реализации моих пожеланий в алгоритме поиска маршрута менять не нужно вообще ничего - нужно только как-то изъять из рассмотрения алгоритма какое-то количество возможных точек маршрута, т.е. реализовать соответствующий интерфейс с пользователем. И только.

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

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

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