Google Maps API を使用して、一連のウェイポイントを指定して「最適化された」ルートを取得する方法はありますか (つまり、巡回セールスマンの問題に対する「十分な」解決策)、または常にルートを返す方法はありますか?指定された順序でポイントしますか?
5 に答える
Google Maps API の DirectionsRequest には、optimizeWaypoints と呼ばれるオプションがあり、必要な処理を行う必要があります。ただし、これは最大 8 つのウェイポイントしか処理できません。
または、オープン ソース (MIT ライセンス) ライブラリを Google Maps API で使用して、最適なルート (最大 15 か所) または最適に近いルート (最大 100 か所) を取得できます。
http://code.google.com/p/google-maps-tsp-solver/を参照
www.optimap.netでライブラリの動作を確認できます。
それは常にそれらを順番に与えます。
したがって、ポイントの各ペア間の距離(または時間)を一度に1つずつ見つけて、巡回セールスマン問題を自分で解決する必要があると思います。たぶん、あなたはグーグルマップにその機能を追加するように説得することができます。「十分に良い」ソリューションを構成するものは、何をしているのか、そしてそれがどれだけ速く必要なのかによって決まると思います。
典型的なTSP問題では、任意の2点間を直接移動できると想定されています。地上道路の場合、これは決して当てはまりません。Googleが2点間のルートを計算するとき、ヒューリスティックなスパニングツリーの最適化を行い、通常、最適なパスにかなり近いものを考え出します。
TSPルートを計算するには、最初にグラフ内のすべてのノード間のペアワイズ距離を計算するようにGoogleに依頼する必要があります。これにはn*(n-1)/2計算が必要だと思います。次に、それらの距離を取り、それらに対してTSP最適化を実行できます。
OpenStreetMaps.orgには、必要な処理を実行できるJavaWebStartアプリケーションがあります。もちろん、計算はクライアント側で実行されています。このプロジェクトはオープンソースであり、一見の価値があるかもしれません。
場所間の最適な直線経路、または最適な運転ルートを見つけようとしていますか?ポイントを注文したいだけで、GPS座標が取れれば、とても簡単な問題になります。
http://gebweb.net/optimap/を見つけまし た。見栄えがよく、簡単です。グーグルマップを使ったオンライン版。