Thuật toán Ant


13

Tôi là một sinh viên làm việc trên một mô phỏng kiến ​​cho một dự án khóa học. Thuật toán cho nó (rõ ràng) là một thuật toán đàn kiến. Tôi biết có nhiều dạng thuật toán khác nhau nhưng tất cả chúng đều quá chi tiết về mặt toán học đối với chúng tôi nên chúng tôi đã thực hiện một cách tiếp cận mà chúng tôi có:

  • Một con kiến ​​được sinh ra tại một thuộc địa và phải thu thập thức ăn từ một nguồn để duy trì thuộc địa.
  • Tất cả các loài kiến ​​đều tương tự nhau.
  • Vùng mà kiến ​​di chuyển là lưới 1000x1000, vì vậy mọi điểm lưới đóng vai trò là điểm hợp lệ để kiến ​​chiếm. Bây giờ, tất cả các thuật toán mà tôi đã gặp đều liên quan đến việc xử lý các đỉnh và cạnh riêng biệt nhưng vì chúng tôi đang hạn chế chuyển động của kiến ​​chỉ bốn hướng (lên, xuống, trái, phải) Tôi đoán rằng chúng tôi không đặt pheromone ở đâu.
  • Các điểm lưới được đề cập ở trên lưu trữ pheromone.
  • Một con kiến ​​chỉ giảm pheromone nếu nó đang mang thức ăn.
  • Đối với một con kiến ​​ở một vị trí (i, j), nó quyết định nơi sẽ di chuyển trong bước tiếp theo bằng cách lấy số lượng pheromone trên bốn nút liền kề của nó trong một công thức xác suất đơn giản, nghĩa là xác suất di chuyển đến một nút được đưa ra bởi (lượng pheromone tại nút liền kề cụ thể) / (tổng số lượng pheromone trong 4 nút liền kề).
  • Một con kiến ​​không thể quay trở lại vị trí nó vừa xuất phát. Nó chỉ có thể làm như vậy nếu nó ở một địa điểm có thức ăn hoặc nó ở thuộc địa của nó.

Bây giờ mối quan tâm của tôi là (và những gì thực sự xảy ra trong chương trình của chúng tôi) rằng khi một con kiến ​​FIRST đạt đến một vị trí có thức ăn và nhặt nó lên, thì bằng cách thuật toán của chúng tôi hoạt động, nó có thể di chuyển đến bất cứ đâu! Điều này là do nó sẽ chỉ để lại dấu vết pheromone, một khi nó có thức ăn chứ không phải trước đó và vì nó là con kiến ​​đầu tiên, không có dấu vết hiện có.

Nếu con kiến ​​có thể di chuyển đến bất cứ nơi nào, thì con kiến ​​tiếp cận nguồn thức ăn sau nó cũng sẽ có xu hướng đi theo nó .. NGAY CẢ NẾU nó không di chuyển trở lại thuộc địa. Điều này đánh bại mục đích của toàn bộ thuật toán.

Vì vậy, câu hỏi của tôi là

  • Là mối quan tâm trên có giá trị? Nếu không thì tại sao? Nếu có thì làm thế nào để đối phó với nó?
  • Chúng ta có cần thực hiện một số thay đổi trong hiểu biết cơ bản về thuật toán để thực sự làm cho nó hoạt động không?
  • Một số điều tinh tế nhưng quan trọng khác mà những người mới như tôi có thể bỏ lỡ trong trường hợp này là gì?

1
Nếu tôi đang xây dựng một đàn kiến, tôi sẽ có hai loại dấu pheromone: "thường xuyên", luôn để lại nơi một con kiến ​​di chuyển và "thức ăn", chỉ còn lại bởi một con kiến ​​mang thức ăn. Một con kiến ​​di chuyển về phía nồng độ cao hơn của pheromone "thông thường" nếu nó mang theo thức ăn, nếu không thì hướng đến nhãn hiệu "thức ăn". Ngoài ra, tôi sẽ làm cho kiến ​​"đói" và "bị sàm sỡ"; một con kiến ​​đói di chuyển đến các nhãn hiệu "thực phẩm" nhưng tránh xa các nhãn hiệu "thông thường", để tìm kiếm các nguồn thực phẩm mới. (Tôi cũng sẽ tạo ra hình lục giác lưới, nhưng đó không phải là điểm chính.)
9000

Mặc dù có nhiều biến thể, tôi nghĩ rằng hầu hết các thuật toán đàn kiến ​​đều cho rằng con kiến ​​có thể nhớ đường về nhà. IOW, nó biết các nút nó đã truy cập. Các pheromone ra đời cho những con kiến ​​di chuyển ngẫu nhiên.
Dunk

Bao giờ chơi simant ?

"Tôi biết có nhiều dạng thuật toán khác nhau nhưng tất cả chúng đều quá chi tiết về mặt toán học đối với chúng tôi nên chúng tôi đã thực hiện một cách tiếp cận mà chúng tôi có ..." Bạn có chắc là bạn thực sự đang thực hiện bài tập mà bạn được giao nếu bạn không thể t hiểu các thuật toán?
Doval

@ Doval: Chúng tôi chỉ phải thực hiện một dự án theo lựa chọn của chúng tôi. Chúng tôi không bị ràng buộc trong một lĩnh vực theo bất kỳ cách nào. Khóa học là một giới thiệu trong C ++. Giáo viên hướng dẫn của chúng tôi chỉ muốn chúng tôi có kinh nghiệm trong phần mềm dev.
bóng bán dẫn

Câu trả lời:


6

Đây không phải là cách ACO hoạt động. ACO chỉ giảm pheromone sau khi kiến ​​đã di chuyển qua tất cả các điểm trong lưới. Sau đó, bạn đánh giá một cái gì đó (có lẽ là tổng thời gian di chuyển) và sau đó thả pheromone cho kiến ​​tốt và lặp lại.

Nhìn chung, chúng không di chuyển đến cùng một đỉnh hai lần, mặc dù bạn có thể tùy chỉnh điều này để cụ thể thực hiện.

Pheromone không bị rơi mỗi lần di chuyển, chúng rơi sau khi chúng di chuyển khắp nơi và một cái gì đó được đánh giá để xác định loài kiến ​​nào tốt hơn. Những con kiến ​​tốt hơn sau đó thả phereomone (có lẽ là loài kiến ​​hoạt động tốt nhất 25%).


Tôi không đồng ý - ACO có thể hoạt động bằng cách bỏ pheremone mỗi bước, đặc biệt khi mục tiêu là mô phỏng một đàn kiến ​​(thuật toán ACO để giải quyết các vấn đề khác ngoài "đây là điều mà một đàn kiến ​​làm" thực hiện các bước để làm cho thuật toán hiệu quả hơn, nhưng không nhất thiết phải như kiến ​​thật).
Pickup Logan

1

Những triển khai mà tôi đã thấy từ những người khác, và những người tôi đã viết cho chính mình, luôn có những con kiến ​​giải phóng pheromone dọc theo con đường du hành để lấy thức ăn, khi chúng đã đến được thức ăn. Đó là, những con kiến ​​diễu hành từ thuộc địa của chúng đến thức ăn sau khi đi bộ ngẫu nhiên; các con đường theo sau là kiến từ thuộc địa đến thức ăn sau đó được đánh dấu bằng pheromone chỉ sau khi kiến đã thành công trong việc tiếp cận thức ăn. Chuyến trở về không được mô phỏng rõ ràng. Nói chung, nhiều con kiến ​​chạy khóa học của chúng trước khi bất kỳ pheromone nào được gửi cho lần lặp hiện tại. Các pheromone sau đó được triển khai cho các đường dẫn thành công và một vòng mới bắt đầu.

Thông thường, tỷ lệ cược của con kiến ​​bước vào một nút nhất định được tính bằng số lượng pheromone nhân với một số biện pháp "lòng tốt". Ví dụ, thước đo độ tốt có thể giống như khoảng cách giữa khoảng cách giữa kiến ​​và thức ăn - điều này sẽ khiến kiến ​​cố gắng di chuyển về phía thức ăn, bất kể tiền gửi pheromone trước đó. Lòng tốt có thể được cân nhắc thêm để tính đến các yếu tố khác, ví dụ một số nút có thể dễ dàng đi qua hơn các nút khác. Và như enderland chỉ ra, thông thường có một số dạng "lựa chọn" con đường một khi tất cả các con kiến ​​đã chạy thành công các khóa học của chúng, trong đó chỉ một số phần của các con đường "tốt nhất" được chọn để ký gửi pheromone. Tuy nhiên, bạn vẫn nên có đường dẫn hợp lý ngay cả khi không có lựa chọn,

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.