2016-04-18 2 views
1

Предположим, я хочу построить навигационный маршрут из Сан-Франциско в Нью-Йорк. Есть около тысячи служб, которые могут сделать это бесплатно. Существует также множество сервисов, которые могут решить проблему коммивояжера и вычислить маршрут через 6 городов, выяснив оптимальный порядок. Все это решенные проблемы.Как я могу вычислить маршрут карты, который идет от начальной точки до пункта назначения через необязательные путевые точки?

Теперь предположим, что я хочу построить курс от SF до Нью-Йорка, останавливаясь на зарядных устройствах EV из базы данных по пути.

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

Как я могу это понять? Есть ли алгоритм, который я могу использовать для упрощения этого? Или, возможно, я мог бы использовать OSRM (https://github.com/Project-OSRM/osrm-backend), чтобы помочь мне как-то, вместо того, чтобы полагаться на публичные API. Мы могли бы переборщить с этим и просто продолжать расчитывать маршруты, пока не найдем самую короткую, которая работает, но я мог видеть, что это разваливается довольно быстро.

+0

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

+0

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

+0

Непонятно, сколько из этих «необязательных» путевых точек на самом деле необходимо: вы даете верхнюю границу («мне не нужно останавливаться на каждом»), но нет нижней границы. Так почему бы не пропустить их все? В конце концов, они не являются обязательными. –

ответ

3

Построить ориентированный граф. Путевые точки - это узлы, и вы помещаете ориентированный взвешенный край из путевой точки A в точку B, если расстояние может быть покрыто полностью заряженным автомобилем. Затем вам нужно найти короткий путь в взвешенном ориентированном графе.

+0

Это было очень полезно. Я думаю, что я могу использовать библиотеку Directed Graph, чтобы помочь в построении графика, вычислить весы, используя количество энергии, требуемое на маршруте, а затем найти путь, который использует наименьшее количество энергии. –

 Смежные вопросы

  • Нет связанных вопросов^_^