Giải thuật di truyền (GA) là giải thuật tìm kiếm, chọn lựa các giải pháp tối ƣu để giải quyết các bài toán thực tế khác nhau, dựa trên cơ chế chọn lọc của di truyền học: từ tập lời giải ban đầu, thông qua nhiều bƣớc tiến hóa , hình thành tập lời giải mới phù hợp hơn, và cuối cùng tìm lời giải tối ƣu nhất. Giải thuật di truyền dựa trên quan điểm cho rằng quá trình tiến hóa của tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và tự nó đã mang tính tối ƣu.
Ý tƣởng chính của giải thuật di truyền là thay vì chỉ phát sinh một lời giải ban đầu chúng ta sẽ phát sinh nhiều lời giải cùng lúc. Sau đó, trong số lời giải đã đƣợc tạo ra, chọn ra những lời giải tốt nhất để làm cơ sở phát sinh ra nhóm các lời giải tiếp theo với nguyên tắc càng về sau càng tốt hơn. Quá trình cứ thế tiếp diễn cho đến khi tìm đƣợc lời giải tối ƣu hoặc xấp xỉ tối ƣu [2, tr.4-7]
Dưới đây là một thuật toán GA đơn giản:
- Bắt đầu GA
- Khởi tạo bộ đếm số lần sinh dữ liệu g: = 0 - Khởi tạo quần thể P(g)
- Tính độ thích nghi của các cá thể trong quần thể P(g) - While (chƣa đạt tiêu chuẩn) do
+ g: = 0 + 1 + Lựa chọn cá thể tốt P(g) từ P(g-1) + Lai ghép P(g) + Đột biến P(g) + Đánh giá P(g) + Cập nhật lại
Hình 2.9. Sơ đồ tổng quát của giải thuật di truyền
Các bước cơ bản của giải thuật di truyền
Bƣớc 1: Khởi tạo một quần thể ban đầu là một tập lời giải tƣợng trƣng cho toàn bộ các lời giải. Mỗi lời giải là một cá thể.
Bƣớc 2: Xác định hàm số thích nghi và tính độ thích nghi cho từng cá thể Bƣớc 3: Tạo các cá thể mới dựa trên các toán tử di truyền
- Lựa chọn (Selection): Việc lựa chọn ra các cá thể đƣợc thực hiện khi cần một số
cá thể để thực hiện sinh sản ra thế hệ sau. Mỗi cá thể có một giá trị thích nghi (fitness). Quá trình này đƣợc mô tả nhƣ sau:
+ Sắp xếp các cá thể theo thứ tự độ thích nghi giảm dần. + Loại bỏ các cá thể ở cuối dãy, giữ lại n cá thể tốt nhất.
- Lai ghép (Crossover): Toán tử lai ghép đƣợc áp dụng nhằm sinh ra các nhiễm sắc
thể con mới từ các cặp nhiễm sắc thể cha mẹ, thừa hƣởng các đặc tính tốt từ cha mẹ. Quá trình này diễn ra bằng cách ghép một hay nhiều đoạn gen từ hai nhiễm sắc thể cha-mẹ với nhau. Quá trình đƣợc mô tả nhƣ sau:
Chọn ngẫu nhiên một cặp nhiễm sắc thể cha-mẹ trong quần thể. Giả sử, nhiễm sắc thể cha-mẹ có cùng độ dài m
Tạo một số ngẫu nhiên trong khoảng từ 1 tới m-1 (gọi là điểm ghép chéo)
Tại điểm ghép chéo chia nhiễm sắc thể thành hai chuỗi con có độ dài m1, m2 (m1+m2 = m)
Thực hiện ghép chéo hai chuỗi con của cha mẹ để tạo thành nhiễm sắc thể mới m11+m22 và m21+m12
- Đột biến (Mutation): Quá trình tiến hóa đƣợc gọi là đột biến khi một hoặc một số
tính trạng của con không đƣợc thừa hƣởng từ hai chuỗi nhiễm sắc thể cha-mẹ. Kết quả đột biến thƣờng sinh ra các cá thể mới khác biệt so với các cá thể cha mẹ. Trong ngữ cảnh tìm kiếm, toán tử đột biến nhằm đƣa quá trình tìm kiếm ra khỏi khu vực cục bộ địa phƣơng. Phép đột biến có thể mô tả nhƣ sau:
- Chọn ngẫu nhiên một số k từ khoảng 1 ≥ k ≥ m - Thay đổi giá trị của gen thứ k
- Đƣa cá thể con vào quần thể để tham gia quá trình tiến hóa tiếp theo. Bƣớc 4: Đánh giá các các thể mới bằng cách:
- Tính độ thích nghi cho các cá thể mới.
- Loại bớt các cá thể có độ thích nghi thấp, thay thế bằng các cá thể có độ thích nghi cao
Bƣớc 5: Kiểm tra nếu chƣa tìm đƣợc lời giải tối ƣu hay tƣơng đối tốt nhất, quay lại bƣớc 3 để tìm lời giải mới
Bƣớc 6: Kết thúc giải thuật và báo cáo kết quả tìm đƣợc
Hiện nay giải thuật di truyền đã đƣợc áp dụng một cách hiệu quả để giải quyết các bài toán tối ƣu nhƣ bài toán toán ngƣời đi du lịch, bài toán ba lô, bài toán cắt vật tƣ một chiều, giải một số bài toán thống kê, lập thời khoá biểu, lập lịch công tác… Và trong lĩnh vực kiểm thử, giải thuật di truyền cũng đƣợc áp dụng một cách hiệu quả để sinh bộ dữ liệu kiểm thử một cách tự động.