Tôi đang lập trình một thuật toán di truyền bằng cách sử dụng tiến hóa ngữ pháp. Vấn đề của tôi là tôi đạt được các giá trị tối ưu cục bộ (hội tụ sớm) và khi điều đó xảy ra, tôi không biết phải làm gì. Tôi đang suy nghĩ về việc tăng tỷ lệ đột biến (5% là giá trị mặc định), nhưng tôi không biết cách quyết định khi nào cần thiết.
Dữ liệu tôi có trên mỗi thế hệ là một mảng hai chiều có cột đầu tiên là sự phù hợp của nó
adn[i][0] ← fitness
row → is the values of the Grammar
column ↓ Each indiviual result
Nếu bạn cần làm rõ, xin vui lòng hỏi và tôi sẽ hài lòng về việc sửa đổi. Lưu ý rằng đây không phải là ngôn ngữ mẹ tôi và xin lỗi vì những sai lầm và sự bất tiện.
Trả lời một yêu cầu, các hoạt động của tôi là như sau và chính xác theo thứ tự này:
- Tôi tạo một Dân số ngẫu nhiên (Một ma trận có số ngẫu nhiên)
- Tôi tạo ra một ma trận chứa kết quả mong muốn. Để thực hiện điều này, tôi đã triển khai một vài hàm có tỷ lệ biến thể + -5%, ví dụ: fun (x) = (2 * cos (x) + sen (x) - 2X) * (0,95+ (một số dao động trong khoảng từ 0 đến 0,1) , x chứa mọi f (x) với tuần tự từ 0 đến N (Là N kích thước của hàng), y chứa chính xác (nhiều kết quả hơn)
- Bắt đầu thuật toán (các thế hệ bắt đầu thay đổi
Những hành động tạo nên mọi thế hệ là:
- Đột biến: Một số ngẫu nhiên của mỗi cromosome có thể đột biến trên bất kỳ gen nào → adn [i] [ngẫu nhiên] = số ngẫu nhiên (với 5% khả năng xảy ra điều này)
- Crossover: Tôi lai mọi adn với adn khác (80% là cơ hội đột biến cho mỗi cặp), để ghép đôi tôi chọn một số ngẫu nhiên và đối mặt với adn [i] và adn [(i + j) mod NumADNs]
Phiên dịch. Tôi nhận được một ma trận chứa các giá trị f (0 đến N) tạo ra trong một bước phiên mã và dịch lời xin lỗi ngữ pháp trên hình ảnh
-fitness: Tôi so sánh các giá trị thu được với những giá trị dự kiến và cập nhật thể lực.
-Elitism: Sau đó, tôi chọn 4 quảng cáo tốt nhất và đưa nó lên đầu, họ sẽ được chọn
-Selection: Bất kỳ adn không tinh hoa nào cũng sẽ phải đối mặt với một adn hoàn toàn ngẫu nhiên, và nếu thể lực của nó thấp hơn (Thấp hơn là tốt hơn) sẽ thắng thế, là một khả năng của một kẻ xấu còn sống sót