Làm thế nào để bạn tạo một danh sách đi bộ được tối ưu hóa cho các tọa độ kinh độ và vĩ độ?


10

Tôi đang thực hiện một chiến dịch chính trị nơi hàng chục tình nguyện viên sẽ thực hiện các chương trình khuyến mãi gõ cửa trong vài tuần tới. Đưa ra một danh sách với tên, địa chỉ và tọa độ dài / lat, thuật toán nào có thể được sử dụng để tạo danh sách đi bộ được tối ưu hóa.


3
Đăng chéo dường như ở dạng kém. Tại sao SQL được gắn thẻ này?
Không khí

Giải quyết vấn đề nhân viên bán hàng du lịch (gần đúng) (TSP) ...
Gỡ lỗi

Ngoài lat-long, địa lý như thế nào? Một thành phố có lưới? Một vùng ngoại ô gần như hình cây với những con đường nhỏ hơn thành cống? Có ảnh hưởng MASSIVE.
Spainedman

Câu trả lời:


6

Như Steve Kallestad đã nói, đây là một vấn đề TSP và có những người giải quyết miễn phí tuyệt vời để tìm giải pháp gần đúng.

Nó có thể là quá nhiều công việc cho những gì bạn đang tìm kiếm, nhưng bạn có thể thử sử dụng một trong những người giải quyết đó kết hợp với API Google Maps, để tìm khoảng cách đi bộ thực sự đi theo tọa độ của bạn: https://developers.google.com/maps / tài liệu / chỉ đường / # DirectionRequests

(Tôi chưa bao giờ sử dụng API này, vì vậy tôi không biết nó sẽ dễ dàng và hiệu quả như thế nào)


4

Mọi người nhìn thấy một cái gì đó liên quan chặt chẽ đến vấn đề nhân viên bán hàng du lịch và nghĩ rằng nó không thể được giải quyết.

Một số lượng lớn công việc đã được thực hiện về chủ đề này và không phải tất cả trong số đó chỉ ra rằng một giải pháp là không có sẵn. Tùy thuộc vào các tham số và giải pháp mong muốn, bạn có thể tìm thấy một cái gì đó sẽ hoạt động.

Bạn có thể muốn xem qua thư viện python OpenOpt .

Một tài nguyên khác để xem xét sẽ là TSP Solver and Generator .

Nếu bạn đang sử dụng R, có sẵn gói TSP .

Trên thực tế, việc thực hiện một giải pháp cho vấn đề của bạn là quá nhiều để giải quyết ở đây, nhưng điều này sẽ cung cấp một điểm khởi đầu tốt. Trong các gói này và tại tài liệu trong các liên kết mà tôi cung cấp cho bạn, bạn sẽ thấy rằng có rất nhiều chiến lược thuật toán có sẵn. Bạn có một khu vực địa lý nhỏ và một nhóm "nhân viên bán hàng" nhỏ, do đó, sức mạnh tính toán cần thiết để tính toán một chiến lược trong khung thời gian hợp lý nên có sẵn trên máy tính để bàn của bạn.

Trong điều kiện thực tế, bạn không cần phải tìm chiến lược hoàn toàn tối ưu nhất. Bạn chỉ cần một cái rất tốt. Chọn một gói TSP trông có vẻ ít áp đảo nhất và thử đi.


Tôi đồng ý với Steve K rằng chìa khóa để giải quyết vấn đề này là nhắm đến các chiến lược lộ trình tối ưu hoặc chỉ là tối ưu. Nhiều lần sự khác biệt giữa "tốt nhất" và "đủ tốt" là không nhiều.
MrMeritology

Tất nhiên tối ưu có thể được tìm thấy, nó có thể chỉ mất nhiều thời gian hơn tuổi của vũ trụ để lặp lại tất cả các khả năng. Câu trả lời của bạn không đề cập đến điều này.
Spainedman

2

Như @SpacesMan đã lưu ý trong một nhận xét , bố cục đường phố sẽ có ảnh hưởng lớn đến việc tối ưu hóa danh sách đi bộ. Bạn chỉ bao gồm "vĩ độ và kinh độ" trong tiêu đề câu hỏi của bạn; nhưng giải quyết vấn đề đó không dẫn đến một "danh sách đi bộ", mà là một "danh sách những con ruồi".

Nhìn vào bố cục đường phố của bạn dưới dạng biểu đồ, với trọng số cạnh mô tả khoảng cách và cố gắng tìm đường đi ngắn nhất giữa tất cả các địa chỉ được yêu cầu, sẽ khiến bạn nghĩ vấn đề của mình là " Vấn đề đường đi ngắn nhất ". Thuật toán của Dijkstra là giải pháp được biết đến nhiều nhất (có những giải pháp khác); trong triển khai ngây thơ của nó, nó hội tụ trong O (n 2 ) , có thể được chấp nhận nếu danh sách địa chỉ của bạn có kích thước vừa phải. Nếu không, hãy tìm các phiên bản tối ưu hóa trong các liên kết ở trên.

Đối với các thư viện và tài nguyên để bắt đầu giải quyết vấn đề, vì bạn không chỉ định ngôn ngữ hoặc nền tảng, hãy để tôi chỉ ra phần tổng hợp các bộ giải định tuyến trong wiki Open Street Maps và nói chung trang khung và thư viện của chúng .


1

Đây là một ý tưởng điên rồ: nói chuyện với các tình nguyện viên, những người biết khu phố và những người đã làm công việc cửa trước đó. Nhận lời khuyên và ý tưởng của họ. Họ có thể sẽ có những hiểu biết rằng sẽ không có thuật toán nào tạo ra và những sửa đổi đó sẽ có giá trị đối với bất kỳ danh sách tuyến đường nào do máy tính tạo ra. Một ví dụ: Tránh băng qua những con đường di chuyển nhiều với đèn chậm hoặc không có đèn. Một ví dụ khác: các cặp tình nguyện viên làm việc ở hai phía đối diện của cùng một con phố sẽ cảm thấy an toàn hơn so với một tình nguyện viên làm việc trên con phố đó một mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.