2.1.2.1 Tốn tử lai ghép
Lai ghép ánh xạ từng phần (PMX-Partial-Mapped Crossover)
Lai ghép ánh xạ từng phần cĩ thể được xem như một biến đổi của lai ghép hai điểm giao nhau bằng cách kết hợp với một thủ tục sửa chữa đặc biệt để giải quyết tính khơng chính đáng (illegitimacy) cĩ thể cĩ. Lai ghép ánh xạ từng phần gồm các bước chính sau:
1. Chọn hai điểm cắt nhau cùng với một chuỗi một cách ngẫu nhiên. Chuỗi con được định nghĩa bởi hai điểm cắt được gọi là ánh xạ từng phần.
2. Trao đổi hai chuỗi con giữa các cá thể cha mẹ để tạo ra cá thể con. 3. Xác định quan hệ ánh xạ giữa các phần ánh xạ.
4. Hợp thức cá thể con với các quan hệ ánh xạ.
Ví dụ 2.1:
Trong một bài tốn Người Du Lịch (TSP) tham quan 9 thành phố. Một nhiễm sắc thể biểu diễn tồn bộ đường đi.
Cá thể cha: 9 3 | 8 5 7 1 | 6 4 2 Cá thể mẹ: 3 5 | 2 6 1 4 | 8 7 9
Đầu tiên, hốn vị giữa cá thể cha (parent 1) và cá thể mẹ (parent 2). Proto-children 1: x x | 2 6 1 4 | x x x (Proto: tiền, trước)
Proto-children 2: x x | 8 5 7 1 | x x x Ký hiệu ‘x’ cĩ thể được xem như ẩn số (unknown). Hốn vị này cũng định nghĩa một chuỗi những ánh xạ.
2→8, 6→5, 1→7, và 4→1
• Chúng ta cĩ thể điền thêm các thành phố (từ cá thể cha mẹ ban đầu), mà khơng cĩ vấn đề gì mâu thuẫn.
Cá thể con 1: 9 3 | 2 6 1 4 | x x x Cá thể con 2: 3 x | 8 5 7 1 | x x 9
• x đầu tiên trong cá thể con 1 (offspring 1) (sẽ là 6, nhưng vẫn cĩ mâu thuẫn) được thay đổi bởi 5, tương tự với mọi ẩn x chưa biết (‘unknown x’).
Cá thể con 1: 9 3 | 2 6 1 4 | 5 7 8 Cá thể con 2: 3 6 | 8 5 7 1 | 2 4 9
Lai ghép cĩ trật tự (OX-Order Crossover)
Lai ghép cĩ trật tự cĩ thể được xem như một biến thể của lai ghép ánh xạ từng phần (PMX) sử dụng thủ tục sửa chữa khác. Lai ghép cĩ trật tự gồm các bước sau:
1. Chọn ngẫu nhiên một chuỗi con từ một cá thể cha mẹ (parent).
2. Đưa ra một proto-child bằng cách sao chép chuỗi con vào những vị trí tương ứng như trong cá thể cha mẹ.
3. Xĩa tất cả các ký hiệu từ cá thể cha mẹ thứ hai, lúc này đã cĩ trong chuỗi con. Chuỗi cịn lại chứa các ký hiệu mà proto-child cần.
4. Đặt các ký hiệu vào những vị trí khơng cố định của proto-child từ trái sang phải theo trật tự của chuỗi để tạo ra cá thể con.
Ví dụ 2.2:
Cá thể cha: 9 3 | 8 5 7 1 | 6 4 2 Cá thể con: 3 5 | 2 6 1 4 | 8 7 9
Đầu tiên, phân đoạn giữa để cắt các điểm được sao chép vào cá thể con. Proto-child 1: x x | 8 5 7 1 | x x x
Proto-child 2: x x | 2 6 1 4 | x x x
Chuỗi bắt đầu từ điểm cắt thứ hai của cá thể cha mẹ thứ hai là: 8-7-9-3-5-2-6-1-4
Chuỗi sau khi loại các thành phố 8, 5, 7, 1, cũng trong cá thể con đầu tiên là: 9-3-2-6-4
Cuối cùng, chuỗi này được đặt vào proto-child 1 đầu tiên để tạo ra cá thể con (bắt đầu từ điểm cắt thứ hai)
Cá thể con 1: 6 4 | 8 5 7 1 | 9 3 2 Tương tự, chúng ta được cá thể con khác:
Cá thể con 2: 5 7 | 2 6 1 4 | 9 3 8
Lai ghép dựa trên vị trí (Position-Based Crossover)
Lai ghép dựa trên vị trí thực chất là một loại ghép đồng nhất cho mã hĩa theo nghĩa đột biến kết hợp với thủ tục sửa chữa. Tốn tử lai ghép đồng nhất được đề nghị cho mã hĩa chuỗi bit (bit-string encoding) bởi Syswerda. Trước tiên, nĩ phát sinh ngẫu nhiên một mặt nạ, sau đĩ trao đổi các gen liên quan giữa các cá thể cha mẹ theo mặt nạ. Một mặt nạ lai ghép là một chuỗi nhị phân đơn giản cĩ kích thước nhiễm sắc thể như nhau. Sự tương đương của mỗi bit trong mặt nạ với mỗi bit tương ứng trong cá thể con, xác định cá thể cha mẹ nào cung cấp bit đĩ.
Bởi vì lai ghép đồng nhất sẽ tạo ra cá thể con bất hợp lệ cho mã hĩa đột biến, lai ghép đột biến sẽ sử dụng một thủ tục sửa chữa để giải quyết tính bất hợp lệ.
Lai ghép dựa trên vị trí gồm các bước sau:
1. Chọn ngẫu nhiên một tập hợp các vị trí từ một cá thể cha mẹ.
2. Tạo ra một proto-child bằng cách sao chép các ký hiệu từ cá thể cha mẹ tùy thuộc vào bit của mặt nạ tại vị trí đĩ vào proto-child.
3. Xĩa các ký hiệu, lúc này đã được chọn từ cá thể cha mẹ thứ hai. Chuỗi kết quả chỉ chứa các ký hiệu proto-child cần.
4. Đặt các ký hiệu vào những vị trí khơng cố định của proto-child từ trái sang phải tương ứng với trật tự của chuỗi để tạo ra một cá thể con.
Ví dụ 2.3:
Cá thể cha: 9 3 8 5 7 1 6 4 2 Cá thể mẹ: 3 5 2 6 1 4 8 7 9
Giả sử rằng chúng ta cĩ một mặt nạ như sau: Mặt nạ: 0 1 0 0 1 1 1 0 1
Bit thứ nhất của mặt nạ là 0. Như vậy, cá thể con thứ nhất nhận ký hiệu từ cá thể cha (trong chuỗi từ trái sang phải).
Cá thể con 1: 3 x x x x x x x x
Bit thứ hai của mặt nạ là 1. Như vậy, cá thể con thứ nhất nhận ký hiệu tiếp theo từ cá thể cha (cũng trong chuỗi từ trái sang phải). Đây là ký hiệu 9, khơng được trình bày trong cá thể con thứ nhất.
Cá thể con 1: 3 9 x x x x x x x
Tiếp tục các bit thứ ba và thứ tư là 0. Như vậy, cá thể con thứ nhất nhận hai ký hiệu từ cá thể mẹ là 5 và 2, khơng chứa trong cá thể con thứ hai.
Cá thể con 1: 3 9 5 2 x x x x x Tương tự và cuối cùng chúng ta được: Cá thể con 1: 3 9 5 2 8 7 1 6 4 Cá thể con 2: 9 3 8 5 2 6 1 7 4
Lai ghép dựa trên thứ tự (Order-Based Crossover)
Lai ghép dựa trên thứ tự là một thay đổi nhỏ của lai ghép dựa trên vị trí, trong đĩ, thứ tự của các ký hiệu vị trí được chọn trong cá thể cha tác động lên vị trí tương ứng trong cá thể cha mẹ.
Ví dụ 2.4:
Cá thể cha: 9 3 8 5 7 1 6 4 2 Cá thể mẹ: 3 5 2 6 1 4 8 7 9
Giả sử rằng những vị trí được chọn là 3, 4, 6, 9. Thứ tự của các thành phố trong các vị trí từ cá thể cha sẽ được tác động lên cá thể mẹ. Các thành phố tại những vị trí này (theo thứ tự cho trước) trong cá thể mẹ là 2, 6, 4, 9. Cá thể con thứ nhất là một bản sao của cá thể cha trên mọi vị trí ngoại trừ các thành phố 2, 6, 4, 9.
Cá thể con 1: x 3 8 5 7 1 x x x
Tất cả các thành phần phần tử khác được điền theo thứ tự của cá thể mẹ ngoại trừ những thành phố đã cĩ trong cá thể cha.
Tương tự chúng ta được:
Cá thể con 2: 3 8 5 6 1 4 2 7 9
Lai ghép cĩ chu trình (CX-Cycle Crossover)
Giống như lai ghép dựa trên vị trí, nĩ chọn một số ký hiệu từ một cá thể cha hoặc mẹ và các ký hiệu cịn lại từ cá thể cha hoặc mẹ khác. Điểm khác nhau là các ký hiệu lấy từ cá thể cha khơng được chọn một cách ngẫu nhiên và chỉ những ký hiệu được chọn mới xác định một chu trình tương ứng với những vị trí tương ứng giữa các cá thể cha mẹ. Lai ghép cĩ chu trình làm việc như sau:
1. Tìm một chu trình được xác định bởi những vị trí tương ứng của các ký hiệu giữa các cá thể cha mẹ.
2. Sao chép các ký hiệu trong chu trình vào một cá thể con bởi những vị trí tương ứng trong một cá thể cha hoặc mẹ.
3. Xác định các ký hiệu cịn lại cho cá thể con bằng cách xĩa những ký hiệu này, bây giờ đã là chu trình từ một cá thể cha mẹ khác.
4. Điền cá thể con với các ký hiệu cịn lại.
Ví dụ 2.5:
Cá thể cha: 9 3 8 5 7 1 6 4 2 Cá thể mẹ: 3 5 2 6 1 4 8 7 9
Cá thể con đầu tiên chọn thành phố đầu tiên từ cá thể cha. Cá thể con 1: 9 x x x x x x x x
Thành phố thứ hai được xem xét phải là thành phố 3 từ cá thể mẹ. Trong cá thể cha thành phố này ở vị trí ‘2’, như vậy:
Cá thể con 1: 9 3 x x x x x x x
Đến lượt điều này ngụ ý thành phố 5 từ cá thể mẹ. Cá thể con 1: 9 3 x 5 x x x x x
Tương tự, chúng ta cĩ một chu trình đầy đủ: Cá thể con 1: 9 3 8 5 x x 6 x 2
Các thành phố cịn lại được điền từ cá thể cha mẹ cịn lại: Cá thể con 1: 9 3 8 5 1 4 6 7 2
Tương tự,
Cá thể con 2: 3 5 2 6 7 1 8 4 9
Lai ghép thứ tự tuyến tính (LOX-Linear Order Crossover)
Lai ghép thứ tự tuyến tính được phát triển như một sửa đổi của lai ghép thứ tự. Lai ghép thứ tự cĩ khuynh hướng truyền những vị trí tương đối của các gen thay vì những vị trí tuyệt đối. Trong lai ghép thứ tự, nhiễm sắc thể được xem xét xoay vịng vì tốn tử được đặt ra cho TSP. Trong bài tốn sắp xếp cơng việc cửa hàng (job-shop), nhiễm sắc thể khơng thể được xem xét xoay vịng. Vì lý do này, người ta phát triển một biến thể của OX gọi là lai ghép tuyến tính (LOX), trong đĩ nhiễm sắc thể được xem xét tuyến tính thay vì xoay vịng. LOX làm việc như sau:
1. Chọn chuỗi con từ các cá thể cha mẹ một cách ngẫu nhiên.
2. Loại bỏ chuỗi con 2 (sub-string 2) từ cá thể cha, giữ lại một số lỗ (holes) (đánh dấu bằng h) và sau đĩ đẩy các lỗ từ các đầu đến tâm cho đến khi chúng gặp miền giao nhau. Tương tự, loại bỏ chuỗi con 1 từ cá thể mẹ và đẩy các lỗ đến miền giao (cross section).
3. Đưa chuỗi con 1 vào các lỗ của cá thể mẹ để tạo thành cá thể con thứ nhất và đưa chuỗi con 2 vào các lỗ của cá thể cha để tạo thành cá thể con thứ hai.
4. Tốn tử lai ghép cĩ thể giữ quan hệ giữa các vị trí tuyệt đối cũng như quan hệ đối với những điểm đầu của các cá thể cha mẹ càng nhiều càng tốt. Các điểm đầu ứng với các hoạt động cĩ độ ưu tiên thấp và cao.
Ví dụ 2.6:
Cá thể cha: 9 3 | 8 5 7 1 | 6 4 2 Cá thể mẹ: 3 5 | 2 6 1 4 | 8 7 9
Đầu tiên, phân đoạn giữa các điểm cắt được sao chép vào cá thể con. Proto-child 1: x x | 8 5 7 1 | x x x
Proto-child 2: x x | 2 6 1 4 | x x x
Sau đĩ, loại bỏ các ký hiệu trong phân đoạn giữa hai điểm cắt, cá thể cha mẹ giữ lại một số lỗ.
Cá thể mẹ: 3 h | 2 6 h 4 | h h 9 Đẩy các lỗ đến khi chúng gặp miền giao Cá thể mẹ: 3 2 | h h h h | 6 4 9
Cuối cùng, đưa proto-child 1 vào lỗ trong cá thể mẹ để tạo ra cá thể con thứ nhất.
Cá thể con 1: 3 2 | 8 5 7 1 | 6 4 9 Tương tự, chúng ta được:
Cá thể con 2: 9 3 | 2 6 1 4 | 8 5 7
2.1.2.2 Tốn tử đột biến
Đột biến đảo ngược (Inversion Mutation)
Chọn hai vị trí ngẫu nhiên trong một nhiễm sắc thể và sau đĩ, nghịch đảo chuỗi giữa hai vị trí này.
Ví dụ 2.7:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 1 7 5 8 6 4 2
Đột biến chèn (Insertion Mutation)
Chọn ngẫu nhiên một gen và sau đĩ chèn nĩ vào vị trí ngẫu nhiên.
Ví dụ 2.8:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 5 7 8 1 6 4 2
Đột biến thay thế (Displacement Mutation)
Chọn ngẫu nhiên một chuỗi con và chèn nĩ vào một vị trí ngẫu nhiên. Đột biến chèn cĩ thể được xem như trường hợp đặc biệt của đột biến thay thế, trong đĩ, chuỗi con chỉ chứa một gen.
Ví dụ 2.9:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 6 8 5 7 1 4 2
Đột biến tương hỗ (Reciprocal Exchange Mutation)
Ví dụ 2.10:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 1 5 7 8 6 4 2
Đột biến chuyển dịch (Shift Mutation)
Trước tiên, chọn ngẫu nhiên một gen, sau đĩ, dịch chuyển nĩ đến một vị trí ngẫu nhiên bên phải hoặc bên trái vị trí của gen.
Ví dụ 2.11:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến (trái): 9 8 3 5 7 1 6 4 2 Sau đột biến (phải): 9 3 5 8 7 1 6 4 2
2.1.2.3 Tốn tử chọn lọc
Theo thuyết tiến hĩa của Darwin, nhiễm sắc thể tốt nhất sẽ tồn tại và tạo ra cá thể con mới. Cĩ nhiều phương pháp để chọn các nhiễm sắc thể tốt nhất, như là chọn lọc roulette wheel, chọn lọc xếp hạng, chọn lọc cạnh tranh, v.v.
Chọn lọc Roulette (Roulette Wheel Selection)
Các cá thể cha mẹ được chọn theo độ thích nghi của chúng. Nhiễm sắc thể tốt hơn cĩ cơ hội cao hơn để tham dự vào thế hệ tiếp theo.
Thuật giải chọn lọc roulette như sau:
1. Tính tổng độ thích nghi của mọi thành viên của quần thể; gọi kết quả là độ thích nghi tổng cộng (total fitness)
2. Phát sinh n, một số ngẫu nhiên giữa 0 và độ thích nghi tổng cộng (total fitness).
3. Trở về thành viên đầu tiên của quần thể cĩ độ thích nghi lớn hơn hay bằng n, bổ sung vào độ thích nghi của các thành viên đứng trước trong quần thể.
Chọn lọc xếp hạng (Rank Selection)
Phương pháp này sẽ xếp hạng cá thể dựa trên độ thích nghi của chúng. Cá thể xấu nhất sẽ cĩ giá trị 1, kế tiếp là 2, v.v. và cá thể tốt nhất sẽ cĩ độ thích nghi N (N là số các nhiễm sắc thể trong quần thể)
Chọn lọc cạnh tranh (Tournament Selection)
• Chọn lọc cạnh tranh 2 (2-tournament selection)
Hai nhiễm sắc thể khác nhau được chọn ngẫu nhiên và được so sánh với nhiễm sắc thể tồn tại. Nếu nhiễm sắc thể IR1R khơng tốt hơn nhiễm sắc thể IR2R nghĩa là: f(IR1R) ≤ f(IR2R), thì nhiễm sắc thể IR1R chết đi và bị loại ra khỏi quần thể (liên kết được phá vỡ một cách tùy ý). Quá trình này lặp lại đến hết N nhiễm sắc thể cịn lại.
• Chọn lọc cạnh tranh 3 (3-tournament selection)
Giống như trên, ba nhiễm sắc thể khác nhau được chọn ngẫu nhiên và được so sánh. Nếu chúng ta cĩ f(IR1R) ≤ f(IR2R) và f(IR1R) ≤ f(IR3R), thì nhiễm sắc thể IR1R chết đi và bị gạt ra khỏi quần thể. Quá trình này lặp lại đến hết N nhiễm sắc thể cịn lại.