मैं एक राजनीतिक अभियान पर काम कर रहा हूं, जहां अगले कुछ हफ्तों में दर्जनों स्वयंसेवक द्वार-दस्तक प्रचार करेंगे। एक नाम, पते और लंबे समय तक / निर्देशांक वाली सूची को देखते हुए, अनुकूलित वॉक सूची बनाने के लिए क्या एल्गोरिदम का उपयोग किया जा सकता है।
मैं एक राजनीतिक अभियान पर काम कर रहा हूं, जहां अगले कुछ हफ्तों में दर्जनों स्वयंसेवक द्वार-दस्तक प्रचार करेंगे। एक नाम, पते और लंबे समय तक / निर्देशांक वाली सूची को देखते हुए, अनुकूलित वॉक सूची बनाने के लिए क्या एल्गोरिदम का उपयोग किया जा सकता है।
जवाबों:
जैसा कि स्टीव कालस्टैड ने कहा है, यह एक टीएसपी समस्या है, और अनुमानित समाधान खोजने के लिए अद्भुत मुफ्त सॉल्वर हैं।
आप जो खोज रहे हैं, उसके लिए यह बहुत अधिक काम हो सकता है, लेकिन आप Google मानचित्र API के साथ संयोजन में उन सॉल्वरों में से एक का उपयोग करने का प्रयास कर सकते हैं, ताकि आपके निर्देशांक को देखने के लिए वास्तविक पैदल दूरी मिल जाए: https://developers.google.com/maps / प्रलेखन / दिशाओं / # DirectionsRequests
(मैंने कभी इस एपीआई का उपयोग नहीं किया है, इसलिए मुझे नहीं पता कि यह कितना आसान या प्रभावी होगा)
लोग ट्रैवलिंग सेल्समैन प्रॉब्लम से संबंधित कुछ चीजें देखते हैं और सोचते हैं कि इसे हल नहीं किया जा सकता है।
इस विषय पर एक अच्छा काम किया गया है और यह सब इंगित नहीं करता है कि एक समाधान उपलब्ध नहीं है। मापदंडों और वांछित समाधान के आधार पर, आप कुछ ऐसा पा सकते हैं जो काम करेगा।
आप ओपनऑप्ट पायथन लाइब्रेरी पर एक नज़र डालना चाह सकते हैं ।
एक और संसाधन TSP सॉल्वर और जेनरेटर होगा ।
यदि आप R का उपयोग कर रहे हैं, तो TSP पैकेज उपलब्ध है ।
वास्तव में आपकी समस्या के समाधान को लागू करना यहां कवर करने के लिए थोड़ा बहुत है, लेकिन यह एक अच्छा प्रारंभिक बिंदु प्रदान करना चाहिए। इन पैकेजों के भीतर और आपके द्वारा प्रदान किए गए लिंक के भीतर प्रलेखन में, आप पाएंगे कि एल्गोरिदमिक रणनीतियों की काफी विस्तृत विविधताएं उपलब्ध हैं। आपके पास एक छोटा सा भौगोलिक क्षेत्र और "सैलस्पाइस" का एक छोटा सेट है, इसलिए एक उचित समय सीमा के भीतर एक रणनीति की गणना करने के लिए आवश्यक कम्प्यूटेशनल शक्ति आपके डेस्कटॉप पर उपलब्ध होनी चाहिए।
व्यावहारिक रूप से, आपको सबसे अधिक सटीक रणनीति खोजने की आवश्यकता नहीं है। आपको बस एक बहुत अच्छे की जरूरत है। टीएसपी पैकेज चुनें जो कम से कम भारी दिखता है और इसे दे।
जैसा कि @SpacedMan ने एक टिप्पणी में कहा है , स्ट्रीट लेआउट का वॉक सूची के अनुकूलन पर व्यापक प्रभाव पड़ेगा। आपने अपने प्रश्न के शीर्षक में केवल "अक्षांश और देशांतर" को शामिल किया है; लेकिन उस समस्या को हल करने से "वॉक लिस्ट" नहीं बनती, बल्कि "एज़-द-कौवे-मक्खियों की लिस्ट" बन जाती है।
अपने सड़क के लेआउट को एक ग्राफ के रूप में देखते हुए, बढ़त भार का वर्णन करते हुए दूरी के साथ, और सभी आवश्यक पतों के बीच सबसे कम ट्रैवर्सल को खोजने की कोशिश करते हुए, आपको अपनी समस्या को " सबसे छोटी पथ समस्या " के रूप में ले जाएगा। दिज्क्स्ट्रा का एल्गोरिथ्म सबसे अच्छा ज्ञात समाधान है (अन्य हैं); अपने भोले क्रियान्वयन में यह O (n 2 ) में परिवर्तित हो जाता है , जो स्वीकार्य हो सकता है यदि आपके पते की सूचियाँ आकार में मध्यम हैं। अन्यथा, उपरोक्त लिंक में अनुकूलित संस्करणों की तलाश करें।
पुस्तकालयों और संसाधनों के लिए समस्या से निपटने के लिए, चूंकि आप भाषाओं या प्लेटफार्मों को निर्दिष्ट नहीं करते हैं, इसलिए मुझे ओपन स्ट्रीट मैप्स विकी में और उनके फ्रेमवर्क और लाइब्रेरी पेज में सामान्य रूप से राउटर सोलर्स के संकलन की ओर संकेत करें ।
यहां एक पागल विचार है: उन स्वयंसेवकों से बात करें, जो पड़ोस को जानते हैं और जिन्होंने पहले भी डोर-टू-डोर काम किया है। उनकी सलाह और विचार प्राप्त करें। उनके पास संभवतः अंतर्दृष्टि होगी कि कोई एल्गोरिथ्म का उत्पादन नहीं करेगा, और वे संशोधन किसी भी कंप्यूटर-जनित रूट सूची के लिए मूल्यवान होंगे। एक उदाहरण: धीमी रोशनी या बिना रोशनी वाली भारी यात्रा वाली सड़कों को पार करने से बचना। एक और उदाहरण: एक ही गली के विपरीत किनारों पर काम करने वाले स्वयंसेवकों के जोड़े उस सड़क पर काम करने वाले स्वयंसेवक की तुलना में अधिक सुरक्षित महसूस करेंगे।