A、B、C、Dなどのポイントをドライブするための最適な方法を見つけようとしています
いくつかの追加の制約があります - 特定のポイントは他のポイントより先に到達する必要があります。Bの前にDに到達する必要があるとします。つまり、いくつかのポイントの順序付けです。
追加の制約がない場合、Google マップ API はこの問題の解決に役立ちます。この問題を解決するのに役立つ別のサービスはありますか? 私が逃したGoogleマップAPIでこれを行う方法はありますか?
A、B、C、Dなどのポイントをドライブするための最適な方法を見つけようとしています
いくつかの追加の制約があります - 特定のポイントは他のポイントより先に到達する必要があります。Bの前にDに到達する必要があるとします。つまり、いくつかのポイントの順序付けです。
追加の制約がない場合、Google マップ API はこの問題の解決に役立ちます。この問題を解決するのに役立つ別のサービスはありますか? 私が逃したGoogleマップAPIでこれを行う方法はありますか?
あなたは、GoogleにはAPI関数があると言い、名前を付けましょうbestWay(point a, point b)
:
ポイントが{A,B,C,D}
あり、次の順序でアクセスする必要があります。
A,C,D,B
(A,C) の bestWay を見つけ、(C,D) と (D,B) から、自分のやり方を構築します。
すべての順列をチェックする必要があるC
前に、そのような制約しかない場合:D
A->C->B->D
A->B->C->D
...
B->A->C->D
巡回セールスマン問題は、整数計画問題(このリンクは定式化を提供します) または制約計画問題として定式化できるため、 CBCやGecodeなどの MIP または CP ソルバーを使用して、必要な追加の制約を使用して TSP 問題を解くことができます。たす。ただし、結果を Google マップにプロットする必要がある場合は、Google Maps API を使用して手動で行う必要があります。
Web ベースのソリューションを好む場合は、XML-RPC APIを介してさまざまなソルバーへのアクセスを提供する最適化のために NEOS サーバーを使用できます。追加の利点として、この方法では、低レベルのソルバー API を直接処理するのではなく、AMPLなどの高レベルのモデリング言語で問題を送信できます。
Javascriptの正確なソルバーは次のとおりです:http ://www.iaindunning.com/?page_id=39 。ここhttp://www.tsp.gatech.edu/methods/dfj/index.htmlのような線形計画法と切断面法を使用します。
巡回セールスマン問題のオープンソース実装がhttp://www.openopt.org/TSPで入手できますが、Python で書かれています。
上記の OpenOpt TSP と Google ルート案内を組み合わせて、必要なことを実行する Web サイト (順序の制約を除く) を提供します。http://www.speedyroute.co.uk/で入手できます。
これをチェックしてくださいhttp://xsolve.info/TSP.html これはJAVAのプログラムです.これを変更して独自の制約を追加できます