Клуб API Карт

Построение маршрута "Кратчайший путь объехать несколько точек"

Пост в архиве.

Очень часто встает задача построить оптимальный маршрут для объезда нескольких точек в любом порядке.

Например машина выезжает со склада и должна привезти товар в 5 разных точек в любом порядке.

В Яндекс.Картах можно построить маршрут по порядку, но он будет не оптимальным, т.к. не будет учитываться что некоторые точки находятся в разных концах города, а другие рядом.

Существует ли какой-то способ вывести в Яндекс.Картах машрут объезда всех этих точек в оптимальном порядке, чтобы был наиболее кратчайший путь всего маршрута?

18 комментариев
Андрей Грэй
28 января 2016, 02:38

Присоединяюсь к вопросу. Для 5ти точек - это уже 120 вариантов маршрута. А если точек становится больше, то кол-во маршрутов становится запредельным, а следовательнг и кол-во запросов к яндесу.

Готового решения для этого нет. Может быть идеей подклитесь, чтобы перебором не заниматься.

Эта задача известна как "задача коммивояжера" и относится к классу NP-полных. при кол-ве городов > 18 кол-во вариантов будет порядка нескольких миллиардов. Так что если у вас есть парочка суперкомпьютеров, можно попробовать перебор

Алексей Корепов
28 января 2016, 02:38

В идеальном случае конечно да, нужно много мощностей чтобы всё это перебирать и считать, особенно если прокладывать маршут и высчитывать всё до километра.

 

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

 

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

Алексей Корепов
28 января 2016, 02:38

Кстати, ведь при просчете кратчайшего машрута от 1 точки к другой Яндекс также перебирает кучу возможных вариантов проезда среди тысячи возможных чтобы найти кратчайший, это же он сделать успевает довольно быстро ;)

Алексей Корепов
28 января 2016, 02:38

Посмотрел тут как дела у навигаторов, и выяснил что Garmin эту задачу как-то уже умеет решать:

http://www.gps-piter.ru/description/nuvi700.htm

- решение "задачи коммивояжера" (до 200 пунктов назначения в одном маршруте)

и это всё на довольно дохленьком процессоре 2007 года.

Андрей Грэй
28 января 2016, 02:38

Спасибо. Есть над чем подумать.

Хотим поделится с вами нашими методами оптимизации маршрута с помощью навигатора  http://courieru.ru/optimizatsiya-marshruta/optimizatsiya-marshruta-v-yandeks-navigatore.html
Обновлено 20 января 2017, 01:30
Елена Загребская
8 декабря 2017, 22:31
Это называется: дерево принятия решений. Большой ручной пересчёт и наверняка должна быть программа автоматизации хоть 100 точек!
Елена Загребская,
для этой цели у нас есть Яндекс.Маршрутизация, он доступен на коммерческой основе.
ООО "Комплект"
20 ноября 2018, 10:53
Елена Загребская,
Привет! С этим вопросом легко справляется обычный Навител навигатор. 15-20 точек. Выстраивает оптимальный маршрут ( очерёдность и маршрутизация). 
Уважаемые яндекс! Верните пожалуйста бесплатную версию логист. понси. ру
андрей афанасьев
26 декабря 2018, 22:15
Ivan Rybalka,
Был нормальный сайт , помогал многим людям ! Для чего вы заблокировали этот сайт?  Да нафиг я из принципа не буду покупать вашу яндекс версию . Спасибо тем кто придумал этот сайт! 
андрей афанасьев,
Просто Яндекс версия стоит от 300.000 в год)
Удалённый пользователь
23 декабря 2018, 23:05
ауцйкейк
mz5963334@gmail
Бесплатно можно строить здесь https://mini.aurama.ru оптимальный маршрут по нескольким точкам
Очень быстро строит Маршрут для 70 точек строит за 5 секунд.
Обновлено 14 июля 2020, 12:45