2011-09-26 32 views
6

Tôi đang viết một thuật toán di truyền. Dân số của tôi nhanh chóng phát triển một loài độc canh. Tôi đang sử dụng một số lượng nhỏ (32 cá thể) với một số lượng nhỏ các gen rời rạc (24 gen cho mỗi cá thể) và một phương pháp giao phối chéo chéo điểm duy nhất. Kết hợp điều đó với một chiến lược lựa chọn bánh xe roulette và rất dễ dàng để xem tất cả sự đa dạng di truyền bị mất chỉ trong vài chục thế hệ.Ngăn chặn cận huyết và độc canh trong thuật toán di truyền (câu hỏi mới)

Điều tôi muốn biết là câu trả lời thích hợp là gì? Tôi không có kiến ​​thức cấp học thuật về GA và chỉ một vài giải pháp đến với tâm trí:

  1. Sử dụng dân số đông hơn. (chậm)
  2. Sử dụng kiểm tra thời gian chạy để tránh sinh sản. (chậm)
  3. Sử dụng nhiều điểm giao nhau hơn. (không hiệu quả)
  4. Tăng số lượng đột biến.

Một số câu trả lời thích hợp cho tình huống là gì?

Trả lời

3

Tôi sẽ xem xét một dân số lớn hơn, 32 induviduals là một dân số rất nhỏ. Tôi thường chạy GA với một dân số ít nhất là trong số lượng nhiễm sắc thể^2 phạm vi (theo kinh nghiệm) để có được sự phân bố bắt đầu tốt của các cá nhân.

Một cách có thể để tăng tốc mọi thứ với số lượng lớn hơn là tạo ra các luồng khác nhau (1 cho mỗi cá nhân, có thể theo lô) khi chạy chức năng thể dục của bạn (thường là phần đắt nhất của GA).

Giả sử dân số là 32 và hệ thống lõi tứ, tạo các luồng theo lô 8 (2 luồng trên mỗi CPU sẽ xen kẽ độc đáo) và bạn sẽ có thể chạy xấp xỉ 4 * nhanh hơn.

Do đó nếu bạn có giới hạn thời gian để chạy GA của mình, đây có thể là giải pháp.

+0

Tôi đang tiến hành di chuyển chức năng thể dục của mình sang GPU bằng CUDA. Tôi tăng dân số lên 4096 và có kết quả tốt hơn. Tôi thích quy tắc của bạn về population_size> num_genes^2. – ahoffer

+0

Cảm ơn nhưng hãy nhớ rằng nó chỉ là một quy tắc cá nhân của ngón tay cái, và tôi không có dữ liệu để sao lưu nó lên khác hơn là instut ruột và kinh nghiệm cá nhân. :) – NWS

3

Bạn có thể thêm vào rằng:

  • lựa chọn giải đấu thay vì bánh xe roulette
  • đảo tách ra chương trình đa dân số, di cư
  • khởi động lại
  • kết hợp ý tưởng từ ước tính của các thuật toán phân phối (EDA) (lấy lại tên miền gần các khu vực đầy triển vọng để giới thiệu cá nhân mới)
+0

+1 đặc biệt là để tách đảo –

Các vấn đề liên quan