Оптимальная маршрутизация карт с помощью Google Maps
есть ли способ с помощью Google Maps API вернуть "оптимизированный" маршрут с заданным набором путевых точек (другими словами, "достаточно хорошее" решение проблемы коммивояжера), или он всегда возвращает маршрут с точками в указанном порядке?
4 ответов
Это всегда дает им порядок.
поэтому я думаю, что вам нужно будет найти расстояние (или время) между каждой парой точек, по одному за раз, а затем решить проблему коммивояжера самостоятельно. Возможно,вы могли бы убедить Google Maps добавить эту функцию. Я предполагаю, что представляет собой "достаточно хорошее" решение, зависит от того, что вы делаете и как быстро это должно быть.
в Google Maps API DirectionsRequest есть опция под названием optimizeWaypoints, которая должна делать то, что вы хотите. Однако это может обрабатывать только до 8 путевых точек.
кроме того, есть библиотека с открытым исходным кодом (лицензия MIT), которую вы можете использовать с API Google Maps, чтобы получить оптимальный (до 15 мест) или довольно близкий к оптимальному (до 100 мест) маршрут.
см.http://code.google.com/p/google-maps-tsp-solver/
вы можете см. библиотеку в действии по адресуwww.optimap.net
в типичной задаче TSP предполагается, что можно путешествовать непосредственно между любыми двумя точками. Для наземных дорог это никогда не так. Когда Google вычисляет маршрут между двумя точками, он выполняет эвристическую оптимизацию связующего дерева и обычно приходит к довольно близкому к оптимальному пути.
чтобы вычислить маршрут TSP, сначала нужно было бы попросить Google вычислить парное расстояние между каждым узлом на графике. Я думаю, что для этого требуется N*(n-1) / 2 calcs. Один затем можно взять эти расстояния и выполнить оптимизацию TSP на них.
OpenStreetMaps.org имеет Java WebStart приложение, которое может делать то, что вы хотите. Конечно расчеты выполняются на стороне клиента. Проект с открытым исходным кодом, и может быть стоит посмотреть.
вы пытаетесь найти оптимальный прямой путь между местоположениями или оптимальный маршрут движения? Если вы просто хотите заказать точки, если вы можете получить координаты GPS, это становится очень легкой проблемой.
только что нашел http://gebweb.net/optimap/ это выглядит красиво и легко. Онлайн-версия с использованием Google maps.