Như @Thomas W đã nói, bạn có thể khá bất động khi bạn đang phát triển các phương pháp đột biến và chéo. Mỗi vấn đề có tính chất vi khuẩn riêng và do đó, đòi hỏi một chiến lược khác nhau.
NHƯNG, từ kinh nghiệm của tôi, tôi muốn nói rằng 90% sự giao thoa và đột biến trên kiểu gen số thực được giải quyết bằng thuật toán BLX-α.
Giao nhau
Thuật toán này thực sự đơn giản. Cho cha mẹ X và Y và một giá trị α (trong phạm vi [0,1], thường là khoảng 0,1 / 0,15, nhưng nó phụ thuộc vào vấn đề), đối với mỗi gen của kiểu gen của bạn:
- trích xuất gen xi và yi
- tìm giá trị tối thiểu và tối đa
- gen mới sẽ là một số ngẫu nhiên trong khoảng [min - phạm vi * α, max + phạm vi * α]
Một biến thể của thuật toán này là BLX-αβ, trong đó chúng tôi tính đến việc cha mẹ nào thực hiện tốt hơn và sử dụng hai hằng số (α>) để tăng xác suất rằng giá trị mới sẽ gần với một trong những phụ huynh tốt nhất
Đột biến:
Với đột biến, tình huống tương tự: chúng ta cần lấy một giá trị ngẫu nhiên có liên quan đến miền vấn đề của chúng ta (chúng ta không muốn các đột biến bị phá hủy! Chúng có chức năng khám phá không gian).
Trong những trường hợp này, rất hữu ích để xác định một phạm vi cho đột biến và sử dụng phạm vi đó để tìm giá trị mới của gen bằng BLX-α.
Một thuật toán đột biến tinh vi hơn có thể đạt được bằng cách sử dụng BLX-α trên các ranh giới phụ thuộc vào giá trị thực tế của gen và chức năng tập thể dục của từng cá nhân.
Hãy tưởng tượng rằng cá nhân chúng ta thực hiện theo cách rất xấu; trong trường hợp đó, toán tử đột biến sẽ được sử dụng để chuyển cá nhân đến một điểm xa trong không gian tìm kiếm, nơi nó có thể sẽ hoạt động tốt hơn.
Mặt khác, nếu cá nhân đã phù hợp, chúng tôi có thể không muốn giới thiệu một số thay đổi mạnh mẽ bằng cách sử dụng đột biến. Trong trường hợp đó, phạm vi đột biến sẽ được chứa nhiều hơn và sẽ có chức năng điều chỉnh kiểu gen thay vì khám phá để thay thế tốt hơn.