私は、数十人のボランティアが今後数週間にわたってドアノックプロモーションを実施する政治キャンペーンに取り組んでいます。名前、住所、および経度/緯度座標のリストが与えられた場合、最適化されたウォークリストを作成するために使用できるアルゴリズム。
私は、数十人のボランティアが今後数週間にわたってドアノックプロモーションを実施する政治キャンペーンに取り組んでいます。名前、住所、および経度/緯度座標のリストが与えられた場合、最適化されたウォークリストを作成するために使用できるアルゴリズム。
回答:
Steve Kallestadが言ったように、これはTSPの問題であり、近似解を見つけるための素晴らしい無料のソルバーがあります。
探しているものには手間がかかるかもしれませんが、これらのソルバーの1つをGoogle Maps APIと組み合わせて使用して、座標間の実際の歩行距離を見つけることができます:https ://developers.google.com/maps / documentation / directions /#DirectionsRequests
(私はこのAPIを使用したことがないので、どれほど簡単か効果的かわかりません)
人々は巡回セールスマン問題に密接に関連する何かを見る、それを解決できないと思います。
このトピックについてはかなりの作業が行われており、そのすべてがソリューションが利用できないことを示しているわけではありません。パラメータと目的のソリューションによっては、機能するものを見つけることができる場合があります。
OpenOpt pythonライブラリを調べてみてください。
注目すべきもう1つのリソースは、TSPソルバーとジェネレーターです。
Rを使用している場合は、TSPパッケージが利用可能です。
実際に問題の解決策を実装することはここではカバーしきれませんが、これは良い出発点になるはずです。これらのパッケージ内、および私が提供したリンク内のドキュメントでは、利用可能なアルゴリズム戦略がかなり多様であることがわかります。地理的領域が小さく、「営業担当者」のセットが少ないため、妥当な時間枠内で戦略を計算するために必要な計算能力をデスクトップで利用できるはずです。
実際には、絶対に最適な戦略を見つける必要はありません。とても良いものが必要です。最も圧倒的に見えないTSPパッケージを選び、試してください。
@SpacedManがコメントで述べたように、ストリートレイアウトはウォークリストの最適化に大きな影響を与えます。質問のタイトルに「緯度と経度」のみが含まれています。しかし、その問題を解決することは「ウォークリスト」につながるのではなく、「現状のまま」のリストにつながります。
道路のレイアウトをグラフとして、エッジの重みで距離を記述し、必要なすべての住所間の最短のトラバーサルを見つけようとすると、問題を「最短経路の問題」と考えるようになります。ダイクストラのアルゴリズムが最もよく知られているソリューションです(他にもあります)。その素朴な実装では、O(n 2)に収束します。これは、アドレスのリストのサイズが中程度である場合は許容可能です。それ以外の場合は、上記のリンクで最適化されたバージョンを探してください。
ライブラリやリソースについて問題に取り掛かるために、言語やプラットフォームを指定していないので、Open Street Maps wikiでのルーティングソルバーのコンパイルと、一般的にはそれらのフレームワークとライブラリページについて説明します。
これはクレイジーなアイデアです:近所のことを知っていて、ドアツードアの作業を以前に行ったボランティアに話しかけてください。彼らのアドバイスやアイデアを入手してください。彼らはおそらくアルゴリズムが生成しないという洞察を持っているでしょう、そしてそれらの修正はどんなコンピューター生成されたルートリストにとっても価値があります。1つの例:ライトが遅いかライトがない状態で、頻繁に移動する道路を横断しないようにします。別の例:同じ通りの反対側で作業するボランティアのペアは、その通りだけで作業するボランティアよりも安全だと感じます。