ขั้นตอนวิธีฝูงมด
ฉันเป็นนักเรียนที่ทำงานเกี่ยวกับการจำลองฝูงมดสำหรับโครงการหลักสูตร อัลกอริทึมสำหรับมันคือ (เห็นได้ชัด) อัลกอริทึมมดอาณานิคม ฉันรู้ว่ามีอัลกอริทึมหลากหลายรูปแบบ แต่ทั้งหมดนั้นมีรายละเอียดทางคณิตศาสตร์มากเกินไปสำหรับเราดังนั้นเราจึงใช้วิธีการที่เรามี: มดเกิดที่อาณานิคมและต้องรวบรวมอาหารจากแหล่งต่าง ๆ เพื่อรักษาอาณานิคม มดทุกตัวมีความคล้ายคลึงกัน พื้นที่ที่มดเคลื่อนที่นั้นเป็นกริด 1,000x1000 ดังนั้นจุดกริดทุกจุดจะทำหน้าที่เป็นจุดที่ถูกต้องสำหรับมดที่จะเข้าครอบครอง ตอนนี้อัลกอริทึมทั้งหมดที่ฉันเจอเกี่ยวข้องกับการรักษาจุดยอดและขอบแยกต่างหาก แต่เนื่องจากเรา จำกัด การเคลื่อนไหวของมดเพียงสี่ทิศทาง (ขึ้น, ลง, ซ้าย, ขวา) ฉันคิดว่ามันไม่สำคัญว่าเราจะวางฟีโรโมนไว้ที่ไหน จุดกริดดังกล่าวข้างต้นเก็บฟีโรโมน มดจะปล่อยฟีโรโมนเฉพาะในกรณีที่ถืออาหาร สำหรับมดที่ตำแหน่ง (i, j) มันจะตัดสินใจว่าจะเคลื่อนที่ไปในขั้นตอนต่อไปโดยการรับฟีโรโมนในสี่โหนดที่อยู่ติดกันในบัญชีสูตรง่าย ๆ นั่นคือความน่าจะเป็นของการเดินทางไปยังโหนดโดย (จำนวนฟีโรโมนที่โหนดติดกันโดยเฉพาะ) / (จำนวนฟีโรโมนในจำนวน 4 โหนดติดกัน) มดไม่สามารถเดินทางกลับไปยังตำแหน่งที่เพิ่งมา มันสามารถทำได้ถ้ามันอยู่ในสถานที่ที่มีอาหารหรืออยู่ในอาณานิคม ตอนนี้ความกังวลของฉันคือ (และสิ่งที่เกิดขึ้นจริงในโปรแกรมของเรา) ว่าเมื่อมดคนแรกมาถึงตำแหน่งที่มีอาหารและหยิบขึ้นมาจากนั้นวิธีการทำงานของอัลกอริทึมของเรามันสามารถเคลื่อนย้ายได้ทุกที่! นี่เป็นเพราะมันจะทิ้งร่องรอยของฟีโรโมนไว้เท่านั้นเมื่อมันมีอาหารไม่ใช่ก่อนหน้านี้และมันเป็นมดตัวแรกไม่มีทางที่มีอยู่ ถ้ามดสามารถเคลื่อนที่ได้ทุกที่มดที่ไปถึงแหล่งอาหารหลังจากนั้นก็จะมีแนวโน้มที่จะติดตามมันเช่นกันแม้ว่ามันจะไม่เคลื่อนที่กลับไปยังอาณานิคม นี่เป็นการเอาชนะวัตถุประสงค์ของอัลกอริธึมทั้งหมด ดังนั้นคำถามของฉันคือ ข้อกังวลข้างต้นถูกต้องหรือไม่ ถ้าไม่เช่นนั้นทำไม ถ้าใช่แล้วจะจัดการกับมันอย่างไร? เราจำเป็นต้องทำการเปลี่ยนแปลงบางอย่างในความเข้าใจพื้นฐานของอัลกอริทึมเพื่อทำให้มันใช้งานได้จริงหรือไม่? อะไรคือสิ่งที่บอบบาง แต่สำคัญอื่น …