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