ฉันกำลังทำงานในการรณรงค์ทางการเมืองที่มีอาสาสมัครหลายสิบคนที่จะทำการส่งเสริมการขายในช่วงไม่กี่สัปดาห์ถัดไป เมื่อกำหนดรายการที่มีชื่อที่อยู่และพิกัดแบบยาว / ละติจูดสามารถใช้อัลกอริทึมใดในการสร้างรายการเดินที่ปรับให้เหมาะสม
ฉันกำลังทำงานในการรณรงค์ทางการเมืองที่มีอาสาสมัครหลายสิบคนที่จะทำการส่งเสริมการขายในช่วงไม่กี่สัปดาห์ถัดไป เมื่อกำหนดรายการที่มีชื่อที่อยู่และพิกัดแบบยาว / ละติจูดสามารถใช้อัลกอริทึมใดในการสร้างรายการเดินที่ปรับให้เหมาะสม
คำตอบ:
อย่างที่ Steve Kallestad ได้กล่าวมานี่เป็นปัญหา TSP และมีนักแก้ปัญหาฟรีที่ยอดเยี่ยมในการค้นหาวิธีแก้ไขปัญหาโดยประมาณ
อาจใช้งานได้กับสิ่งที่คุณกำลังมองหามากเกินไป แต่คุณอาจลองใช้หนึ่งในตัวแก้ไขเหล่านี้ร่วมกับ Google Maps API เพื่อค้นหาระยะทางเดินที่แท้จริงได้รับพิกัดของคุณ: https://developers.google.com/maps / เอกสาร / ทิศทาง / # DirectionsRequests
(ฉันไม่เคยใช้ API นี้ดังนั้นฉันไม่รู้ว่ามันจะง่ายหรือมีประสิทธิภาพแค่ไหน)
ผู้คนเห็นบางสิ่งที่เกี่ยวข้องกับปัญหาพนักงานขายนักท่องเที่ยวและคิดว่ามันไม่สามารถแก้ไขได้
มีการทำข้อตกลงในเรื่องนี้มากมายและไม่ใช่ทั้งหมดที่ระบุว่าไม่มีวิธีแก้ปัญหา คุณอาจสามารถค้นหาบางสิ่งที่ใช้งานได้ทั้งนี้ขึ้นอยู่กับพารามิเตอร์และวิธีแก้ปัญหาที่ต้องการ
คุณอาจต้องการที่จะดูที่ห้องสมุดOpenOptหลาม
ทรัพยากรอื่นที่จะดูที่จะเป็นTSP Solver และเครื่องกำเนิดไฟฟ้า
หากคุณกำลังใช้ R มีแพคเกจ TSP ใช้ได้
การใช้แนวทางแก้ไขปัญหาของคุณจริง ๆ แล้วเป็นเรื่องเล็กเกินกว่าที่จะครอบคลุมที่นี่ แต่สิ่งนี้ควรเป็นจุดเริ่มต้นที่ดี ภายในแพ็คเกจเหล่านี้และที่เอกสารประกอบภายในลิงก์ที่ฉันให้ไว้กับคุณคุณจะพบว่ามีกลยุทธ์อัลกอริทึมที่ค่อนข้างหลากหลาย คุณมีพื้นที่ทางภูมิศาสตร์ขนาดเล็กและ "พนักงานขาย" ชุดเล็กดังนั้นพลังการคำนวณที่จำเป็นสำหรับการคำนวณกลยุทธ์ภายในกรอบเวลาที่เหมาะสมควรจะมีอยู่บนเดสก์ท็อปของคุณ
ในแง่การปฏิบัติคุณไม่จำเป็นต้องค้นหากลยุทธ์ที่เหมาะสมที่สุดอย่างแน่นอน คุณแค่ต้องการสิ่งที่ดีมาก เลือกแพคเกจ TSP ที่ดูล้นหลามและปล่อยวาง
เนื่องจาก @SpacedMan ได้ระบุไว้ในความคิดเห็นเลย์เอาต์ของถนนจะมีอิทธิพลอย่างมากต่อการเพิ่มประสิทธิภาพของรายการเดินเท้า คุณได้รวมเฉพาะ "ละติจูดและลองจิจูด" ในชื่อคำถามของคุณ แต่การแก้ปัญหานั้นไม่ได้นำไปสู่ "รายการเดิน" แต่ไปที่ "รายการ -a-the-the-crow-flies"
การดูเลย์เอาต์ถนนของคุณเป็นกราฟด้วยน้ำหนักขอบอธิบายระยะทางและการพยายามค้นหาเส้นทางลัดที่สั้นที่สุดระหว่างที่อยู่ที่จำเป็นทั้งหมดจะทำให้คุณคิดว่าปัญหาของคุณเป็น " ปัญหาเส้นทางที่สั้นที่สุด " อัลกอริทึมของ Dijkstra เป็นวิธีแก้ปัญหาที่รู้จักกันดีที่สุด ในการใช้งานแบบไร้เดียงสามันมาบรรจบกันในO (n 2 )ซึ่งอาจยอมรับได้หากรายการที่อยู่ของคุณมีขนาดปานกลาง มิฉะนั้นให้มองหาเวอร์ชั่นที่ดีที่สุดในลิงค์ด้านบน
ในฐานะที่เป็นสำหรับห้องสมุดและทรัพยากรที่จะเริ่มต้นการแก้ปัญหาที่เกิดขึ้นเนื่องจากคุณไม่ได้ระบุภาษาหรือแพลตฟอร์มให้ฉันชี้ไปที่การสะสมของเส้นทางแก้ในวิกิพีเดียเปิดถนนหน้าและโดยทั่วไปกรอบและห้องสมุดของหน้า
นี่เป็นความคิดที่บ้าคลั่ง: พูดคุยกับอาสาสมัครที่รู้จักย่านและผู้ที่เคยทำงานแบบ door-to-door มาก่อน รับคำแนะนำและแนวคิดของพวกเขา พวกเขาอาจมีข้อมูลเชิงลึกที่ไม่มีอัลกอริทึมและการปรับเปลี่ยนเหล่านั้นจะเป็นประโยชน์ต่อรายการเส้นทางที่คอมพิวเตอร์สร้าง ตัวอย่างหนึ่ง: หลีกเลี่ยงการข้ามถนนที่เดินทางบ่อยครั้งด้วยแสงน้อยหรือไม่มีไฟ อีกตัวอย่าง: อาสาสมัครที่ทำงานในฝั่งตรงข้ามของถนนเดียวกันจะรู้สึกปลอดภัยกว่าอาสาสมัครที่ทำงานบนถนนคนเดียว