Комментарии 19
Вот ещё бы как-то решили бы проблему спуфинга жпс...
Тема конечно интересная. А вы не думали добавить в навигатор возможность личной настройки правил дискриминации? А то ваш навигатор упорно не желает вести по грунтовым дорогам, даже если это намного быстрее (и комфортнее для некоторых водителей), зато часто предлагает неприятные маневры типа U-образного разворота на многополосном шоссе, хотя в принципе можно проехать немного дольше, но без таких маневров.
Мы действительно рассматривали возможность ручной настройки, но скорее склоняемся к тому, чтобы алгоритм сам предлагал более «человечные» маршруты — без необходимости лезть в параметры. На практике ими пользуется довольно небольшая часть пользователей, а настройки такого рода скорее запутают, чем помогут.
В любом случае на текущих правилах не останавливаемся — будем постепенно добавлять новые, чтобы лучше учитывать реальные предпочтения. Спасибо за предложения, обязательно подумаем. Если поделитесь конкретными примерами — будем очень признательны. Всегда интересно увидеть, где у нас есть потенциал для улучшений.
Для разных водителях разные маршруты оказываются более человечными. Кто-то не хочет лезть на грунт, кто-то не любит напрягающие маневры типа разворота на 180 на трассе. Кто-то согласен ехать немного дольше но зато поменьше перекрестков и светофоров. А то приходится дополнительные точки ставить чтобы навигатор повел тебя так как хочешь, а не так как ездит абстрактный усредненный водитель.
Всё так — у водителей действительно очень разные предпочтения. Но решить это через ручные настройки вряд ли получится: например, отключить грунтовки уже можно, но пользуются этим единицы. Мы хотим двигаться в сторону того, чтобы алгоритм запоминал и учитывал индивидуальные предпочтения пользователя и предлагал маршруты, которые подходят именно ему — без необходимости что-то настраивать вручную.
В случае ручных настроек путь такой: составить список настроек - связать их с коэффициентами в алгоритме - вывести их в UI - использовать.
В случае автоматических настроек все то-же самое только настройки надо брать не из UI а из проеханных маршрутов. Конечно выводить коэффициенты удобнее для тех кому клацать лень, но я бы не отказался от нескольких ползунков вида "насколько для вас приемлимо/нейтрально/неприемлимо"
Грунтовые дороги.
Разворот без разгонной полосы.
Путь немного длиннее зато меньше светофоров и перекрестков.
Поворот налево без стрелки. ..ну и так далее. А еще настройка лучше вывода потому что один человек может ездить на разных машинах а еще может ездить штурманом с другими людьми у кого другие предпочтения.
История из жизни: еду за город. Ваш навигатор показывает: 2ч45мин, чуть больше 100км, половина по шоссе с пробками и тянучкой. И + прелесть в виде разворота без разгонной полосы. Я знаю, что есть дорога по грунту и гравийке короче и приятнее. Ставлю на ней точку. Навигатор дорисовывает заезд туда с шоссе и возврат. Ставлю вторую точку. Нарисовало путь чуть короче, и прогноз времени 2 часа ровно. Доехали в итоге за 1ч40мин по почти пустой дороге.
А что у вас за алгоритм который вот так вот просто перебирает ребра по приоритету? Или это просто упрощение для картинки в статье и у вас там какой-нибудь A* на самом деле?
На гифках для простоты обычный алгоритм Дейкстры, у нас A*, да, частным случаем которого Дейкстра и является.
Ну нет, в обычной дейкстре выбирается не ребро минимальной стоимости, а вершина с минимальной оценкой. Вы же там в тексте именно про ребро пишите. Хотя по гифке непонятно, может там и оценка минимальная береться.
Почему навигаторы, до сих по не имеют такой настройки:
1) избегать выезда на перекрёсток с поворотом налево без светофора?
2) строить маршрут без разворота.
3) строить маршрут без поворотов налево.
?
На самом деле такие настройки уже встроены в алгоритм — он старается избегать разворотов, неудобных поворотов налево и других не самых комфортных манёвров.
Полностью исключить такие манёвры не всегда возможно, потому что алгоритм старается найти баланс между комфортом и оптимальностью маршрута по времени и расстоянию.
Если где-то получилось иначе — интересно разобраться, почему так вышло. Будем благодарны, если поделитесь примерами.
Еще один момент бесит в навигаторах при перестроении маршрута - он "забывает" выбор пользователя.
Например при первоначальном выборе маршрута большинство навигаторов предлагает пару-тройку вариантов ( побыстрее но подлинее, коротко но через центр, повихлять но вроде без пробок), пользователь выбирает нужный ему вариант и все. Дальше его уже никто не спрашивает, и если вдруг сложились звезды что навигатор решил перестроить маршрут - он его перестраивает по своему разумению. Никакой памяти чего там этот кожаный мешок хотел у навигатора нет. А может он на заправку хотел заскочить, или друга подкинуть? И не просто так выбрал маршрут...
Если пользователь знает лучше, как ему ехать, зачем ему тогда навигатор?
Пользователь знает, что не надо ехать через центр. Лучше выбрать альтернативный , чуть более длинный маршрут. Но если мы пропустили съезд, или на маршруте возникла пробка, то пользователь хочет, чтобы маршрут был переложен не снова через центр, а примерно как он выбрал изначально.
Это как раз часть логики нового алгоритма. Если пользователь выбрал альтернативный маршрут — считаем, что он важен, и стараемся сохранить его даже при перестроении. А если выбран оптимальный маршрут, то при изменениях на дороге можем его перестраивать более свободно, ориентируясь на актуальные условия.
Я навигатор использую когда по городу передвигаюсь который не очень хорошо знаю, например к сестре приезжаю и беру у нее машину. Я в целом и общем знаю город, но чуть поподробнее - нет. Там то улицу перекопают, то односторонку сделают. То развязку построят. Но некоторых улиц я стараюсь избегать, поскольку там можно попасть в пробку за 20 секунд.
В общем тут вопрос в тактике и стратегии.
А что насчет пешеходных маршрутов?
Штрафуем рёбра: новая логика перестроения маршрутов в 2ГИС