Câu hỏi của tôi được liên kết với câu hỏi này: Roulette-wheel selection in Genetic algorithm. Population needs to be sorted first? Nếu chúng tôi không phân loại dân số, cách tổ chức lựa chọn bánh xe roulette cho nó là gì? Chắc chắn, chúng ta phải tìm kiếm theo cách tuyến tính ngay bây giờ. Bạn có đoạn mã nào trong C++ hoặc Java cho trường hợp này không?Làm thế nào để lựa chọn bánh xe roulette nên được tổ chức cho dân số không được sắp xếp trong thuật toán di truyền?
Trả lời
Dân số không cần phải được sắp xếp chút nào - chìa khóa để chọn lựa roulette là xác suất của một cá thể được chọn để sinh sản tỷ lệ với thể lực của nó.
Giả sử bạn có một dân số không được phân loại, với fitnesses như sau:
[12, 45, 76, 32, 54, 21]
Thực hiện lựa chọn roulette, bạn chỉ cần chọn một số ngẫu nhiên trong khoảng từ 0 đến 240 (tổng thể dục của người dân). Sau đó, bắt đầu từ phần tử đầu tiên trong danh sách, trừ số lượng của từng cá nhân cho đến khi số ngẫu nhiên nhỏ hơn hoặc bằng 0. Vì vậy, trong trường hợp trên, nếu chúng tôi chọn ngẫu nhiên 112, chúng tôi thực hiện như sau:
Step 1: 112 - 12 = 100. This is > 0, so continue.
Step 2: 100 - 45 = 55. This is > 0, so continue.
Step 3: 55 - 76 = -21. This is <= 0, so stop.
Vì vậy, chúng tôi chọn cá nhân # 3 để sao chép. Lưu ý cách này không yêu cầu dân số phải được sắp xếp.
Vì vậy, trong giả, nó nắm xuống:
let s = sum of population fitness
let r = random number in range [0, s].
let i = 0.
while r > 0 do:
r = r - fitness of individual #i
increment i
select individual #i - 1 for reproduction.
Lưu ý rằng - 1
trong dòng cuối cùng là để chống lại increment i
đã xong trong vòng lặp cuối cùng của vòng lặp (vì mặc dù chúng tôi đã tìm thấy cá nhân chúng tôi muốn, nó tăng bất kể).
- 1. Thuật toán lựa chọn bánh xe Roulette
- 2. Lựa chọn bánh xe roulette để giảm thiểu chức năng
- 3. Lựa chọn Xếp hạng trong mã Thuật toán Di truyền
- 4. Thể hình cân đối lựa chọn (roulette bánh xe lựa chọn) trong Python
- 5. Thuật toán di truyền, dân số lớn so với số nhỏ
- 6. Thuật toán di truyền - lựa chọn trạng thái ổn định là gì?
- 7. Thuật toán di truyền trong trò chơi
- 8. 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)
- 9. Crossover hoạt động trong thuật toán di truyền cho TSP
- 10. Có thuật toán sắp xếp mảng chuỗi cho GPU không?
- 11. Thuật toán sắp xếp MapReduce hoạt động như thế nào?
- 12. Thuật toán để sắp xếp email thành chuỗi?
- 13. Thuật toán sắp xếp cho một vấn đề sắp xếp dựa trên không so sánh?
- 14. Làm thế nào để nghe máy ép bánh xe chuột?
- 15. Làm thế nào để thực hiện một thuật toán sắp xếp tự nhiên trong c + +?
- 16. Thuật toán "sắp xếp nhị phân" có tồn tại không?
- 17. Làm thế nào để biểu diễn một lịch trình cho vấn đề Timetabler trong thuật toán di truyền?
- 18. Làm thế nào để làm cho JScrollPane cuộn 1 dòng cho mỗi bước bánh xe chuột?
- 19. Nén số nguyên được sắp xếp
- 20. Bạn có thuật toán di truyền trong sản xuất?
- 21. Sắp xếp các số theo thuật toán tổng hợp
- 22. "Sắp xếp các dòng trong lựa chọn" cho Xcode 4
- 23. Hiểu thuật toán lựa chọn trung bình?
- 24. Thuật toán để sắp xếp danh sách các đối tượng
- 25. Chức năng tạo bánh xe màu
- 26. Sắp xếp theo tên tổ chức trong NSFetchRequest
- 27. PHP sử dụng thuật toán sắp xếp nào?
- 28. Hiệu quả nhận được các khoản được sắp xếp của một danh sách được sắp xếp
- 29. bánh xe chuột không cuộn trong tmux
- 30. Thuật toán sạch để sắp xếp một đối tượng theo các phụ thuộc được xác định?