Chƣơng 2 GIẢI THUẬT DI TRUYỀN
2.5. Những cải tiến của giải thuật di truyền
2.5.1. Các toán tử cao cấp
Toán tử cao cấp đƣợc chia thành hai loại: Toán tử vi mô và toán tử vĩ mô. Toán tử vi mô chỉ tác động đến từng gen của các cá thể, còn các toán tử vĩ mô thì tác động đến toàn quần thể.
2.5.1.1. Toán tử vi mô:
Toán tử lai ghép nhiều điểm:
Mở rộng của lai ghép một điểm là lai ghép nhiều điểm, trong đó nhiều vị trí lai ghép Nc đƣợc chọn ngẫu nhiên với xác suất đều dọc theo chiều dài của chuỗi gen (số vị trí lai ghép Nc lớn hơn một). Hai chuỗi lai ghép với nhau không chỉ trao đổi một đoạn mã mà trao đổi Nc đoạn mã cho nhau.
Ví dụ: Giả sử có hai bố mẹ là: A1 = 1 0 | 0 1 | 1 1 | 0 1 0 | 1
với vị trí lai ghép là 2, 4, 6 và 9 thì hai cá thể con: A‟1 = 1 0 0 0 1 1 1 1 1 1
A‟2 = 0 1 0 1 1 1 0 1 0 1
Lƣu ý, do lai nhiều điểm phải xem kẽ các đoạn (có đƣợc sau khi cắt một nhiễm sắc thể thành Nc đoạn) giữa hai bố mẹ nên số đoạn phải chẵn. Nói cách khác, lai nhiều điểm không phải là mở rộng tự nhiên của lai một điểm.
Một bƣớc tổng quát hoá xa hơn của lai một điểm và nhiều điểm là lai đồng nhất: đối với mỗi bit trong con đầu tiên, nó quyết định (với một xác suất p nào đó) bố mẹ nào sẽ đóng góp giá trị của nó vào vị trí đó. Con thứ hai sẽ nhận bit từ bố mẹ khác. Do lai đồng nhất trao đổi các bit chứ không phải các đoạn, nó có thể kết hợp các tính năng với nhau bất chấp vị trí tƣơng đối của chúng. Đối với nhiều bài toán, khả năng này quan trọng hơn những bất lợi của việc phá huỷ các khối kiến trúc gây ra.
Toán tử lai ghép tuyến tính:
Lai ghép tuyến tính chỉ áp dụng cho sơ đồ mã hóa số thực. Lai ghép tuyến tính đƣợc định nghĩa là tổ hợp tuyến tính của hai vectơ X1 và X2 sinh ra con sẽ là:
X = a*X1 + (1 - a)*X2 và
Trong đó a là giá trị ngẫu nhiên đƣợc chọn với phân bố xác suất đều trong đoạn [0..1] (a Є [0..1]).
Ví dụ: Giả sử hai cá thể chọn để lai ghép có gen là hai chuỗi số thực:
A: 8 24 50 B: 124 16 32
Trị số a đƣợc phát sinh ngẫu nhiên là 0.4 Thành phần gen đầu tiên của cá thể con là:
C2 = 0.4*8 + (1 - 0.4) * 16 = 19.2 C3 = 0.4*8 + (1 - 0.4) * 32 = 39.2
Vậy kiểu gen của cá thể con là C là: C: 77.6 19.2 39.2
Lai ghép tuyến tính tạo ra các cá thể thế hệ con cháu nằm trên đoạn thẳng nối giữa cha và mẹ của chúng.
Toán tử lai ghép Heuristic:
Giả sử cá thể bố mẹ thứ hai X2 có độ phù hợp không nhỏ hơn độ phù hợp của cá thể bố mẹ thứ nhất X1. Cá thể con đƣợc xác định là:
X = a*( X2 - X1) + X2
Trong đó a là giá trị thực ngẫu nhiên đƣợc chọn với phân bố xác suất đều trong khoảng (0,1) (a Є (0..1)).
Lai ghép Heuristic còn đƣợc gọi là lai ghép tham lam vì nó sản sinh ra các cá thể con trên phần mở rộng về hƣớng cá thể bố mẹ có độ phù hợp tốt hơn. Lai ghép Heuristic phát sinh một vectơ con không thoả mãn ràng buộc. Trƣờng hợp này, một giá trị ngẫu nhiên a khác đƣợc phát sinh và một con khác đƣợc tạo. Nếu sau w lần thử mà không tìm đƣợc lời giải mới nào thoả mãn các ràng buộc, toán tử này sẽ bỏ cuộc và sẽ không tạo ra con nào.
Toán tử lai ghép tuyến tính mở rộng:
Xuất phát từ thực tế lai ghép tuyến tính hoạt động khá tốt với sơ đồ mã hoá số thực. Tuy nhiên, việc bó hẹp vùng sản sinh các cá thể con nằm trong khoảng giữa hai cá thể bố mẹ hay chỉ mở rộng về một phía nhƣ lai ghép heuristic là không đủ. Ngoài ra, trong trƣờng hợp không gian tìm kiếm có thể phân tách đƣợc, nếu thực hiện lai ghép tuyến tính trên các không gian phân tách sẽ tốt hơn. Trong [3] cũng đề xuất thêm một phép lai ghép mới hoạt động trên sơ đồ mã hóa số thực đó là lai ghép tuyến tính mở rộng.
Lai ghép tuyến tính mở rộng là sự kết hợp của lai ghép một điểm với lai ghép tuyến tính đƣợc mở rộng về hai phía của hai cá thể bố mẹ. Tổng độ lớn mở rộng về hai phía của hai cá thể bố mẹ bằng khoảng cách giữa hai cá thể bố mẹ. Tuy nhiên, khoảng mở rộng này không chia đều về hai phía của hai cá thể bố mẹ mà đƣợc chia tỷ lệ với độ phù hợp của từng cá thể bố mẹ. Lai ghép tuyến tính mở rộng đƣợc thực hiện qua hai giai đoạn:
1. Chọn một điểm cắt ngẫu nhiên dọc theo chiều dài của chuỗi .
2. Thực hiện hai toán tử lai ghép tuyến tính trên các không gian con trƣớc và sau vị trí điểm cắt:
f1 là giá trị độ phù hợp của cá thể bố mẹ thứ nhất.
f2 là giá trị độ phù hợp của cá thể bố mẹ thứ hai.
X1 là vectơ trong không gian con của của cá thể bố mẹ thứ nhất.
X2 là vectơ trong không gian con của của cá thể bố mẹ thứ hai.
Vectơ trong không gian con của cá thể con đƣợc xác định là: a*X1 + (1 - a)*X2 , trong đó giá trị a đƣợc chọn ngẫu nhiên với phân bố xác suất đều trong khoảng 2 1 1 2 1 1 ;1 f f f f f f . Toán tử sắp xếp lại:
Trong thực tế, giá trị mức thích nghi của một chuỗi không những phụ thuộc vào giá trị của một gen mà còn phụ thuộc vào vị trí của gen đó trong chuỗi, hoặc tổ hợp của đó với một số khác. Toán tử sắp xếp lại sẽ tìm kiếm và sắp xếp lại các gen trong chuỗi, hoặc tổ hợp của gen đó với một số gen khác.
Một toán tử sắp xếp lại thƣờng đƣợc sử dụng trong giải thuật di truyền là toán tử đảo ngƣợc. Dƣới tác động của toán tử này, hai điểm đƣợc chọn dọc theo chiều dài của chuỗi, rồi cắt chuỗi tại hai điểm đó. Tiếp theo, hai chuỗi gen con ở hai đầu sẽ đƣợc đổi chỗ cho nhau.
Ví dụ: Có một chuỗi có độ dài 8 nhƣ sau: A = 1 0 | 0 1 0 0 | 0 1
Chuỗi trên đƣợc cắt tại vị trí số 2 và vị trí số 6, sau đó tráo đổi hai chuỗi ở hai đầu cho nhau, chúng ta có chuỗi kết quả:
A' = 0 1 0 1 0 0 1 0
Toán tử đột biến đồng dạng:
Với một cá thể X = {x1, x2,…,xk,…,xn}, chọn ngẫu nhiên xk (với k [1..n] và xk (Li, Ri)) để thực hiện đột biến. Phép đột biến với xác suất pm sẽ sinh ra X‟ = {x1, x2,…,xk‟,…,xn} trong đó xk‟ là giá trị nhẫu nhiên(Li, Ri).
Một biến thể của đột biến đồng dạng là đột biến biên, toán tử này tạo ra một con duy nhất X‟ = {x1, x2,…,xk‟,…,xn} từ cá thể cha X = {x1, x2,…,xk,…,xn} trong đó xk‟ là Li hoặc Ri với cũng xác suất. toán tử đột biến biên đƣợc xây dựng cho các bài toán tối ƣu mà lời giải tối ƣu nằm trên hoặc gần biên của không gian tìm kiếm khả thi.
Toán tử đột biến không đồng dạng:
Với một cá thể X = {x1, x2,…,xk,…,xn}, chọn ngẫu nhiên xk (với k [1..n] và xk[Li, Ri]). Phép đột biến với xác suất pm sẽ sinh ra X‟ = {x1, x2,…,xk‟,…,xn} trong đó: xk‟ = )) ( , ( ) ) ( , ( k L x t x x k R t x k k k k
Hàm (t,y) trả về giá trị trong khoảng [0, y] sao cho xác suất của )
, (t y
gần bằng 0 tăng khi t tăng (t là số thế hệ). Thuộc tính này khiến toán tử ban đầu sẽ tìm trong không gian đồng dạng (khi t nhỏ) và rất cục bộ ở những giai đoạn sau. Ta sử dụng hàm sau đây:
Nếu chữ số nhị phân ngẫu nhiên là 0 Nếu chữ số nhị phân ngẫu nhiên là 1
) , (t y = b T t r y* *(1 )
Trong đó: r là số ngẫu nhiên trong khoảng [0..1]. T là số thế hệ tối đa.
b là tham số hệ thống xác định mức độ không đồng dạng.
2.5.1.2. Toán tử vĩ mô:
Toán tử vĩ mô là toán tử hoạt động ở mức quần thể, ý tƣởng để thực hiện toán tử vĩ mô là sử dụng hàm chia sẻ. Ý tƣởng này nhằm mô phỏng quá trình hình thành của các loài khác nhau trong tự nhiên, hạn chế sự phát triển không kiểm soát đƣợc của một số nhóm cá thể trong quần thể. Thực hiện hàm chia sẻ nhằm làm cho các cá thể trong quần thể san sẻ mức thích nghi cho nhau, giảm sự sai khác đáng kể giữa chúng.
Một trong các hƣớng tiếp cận cho vấn đề này là đƣa vào một cơ chế định tỷ lệ. Theo Goldberg [5], có ba cách sau:
- Định tỷ lệ tuyến tính: độ thích nghi của các nhiễm sắc thể hiện có đƣợc xác định theo công thức :
fi‟ = a*fi + b (2.11)
Các tham số a, b đƣợc chọn sao cho độ thích nghi trung bình đƣợc ánh xạ vào chính nó và tăng độ thích nghi tốt nhất bằng cách nhân với độ thích nghi trung bình. Cơ chế này có thể tạo ra các giá trị âm cần xử lý riêng, ngoài ra các giá trị a, b thƣờng gắn với đời sống quần thể và không phụ thuộc vào bài toán.
- Phép cắt Sigma: là một cải tiến về định tỷ lệ tuyến tính, vừa xử lý các giá trị âm vừa kết hợp thông tin phụ thuộc của bài toán vào ánh xạ. Ở đây độ thích nghi mới đƣợc tính theo công thức:
Trong đó c là số nguyên nhỏ (trong khoảng 1 đến 5), là độ lệch chuẩn của quần thể.
- Định tỷ lệ lũy thừa: trong phƣơng pháp này, giá trị thích nghi lúc khởi tạo đƣợc coi là năng lực đặc biệt:
fi‟ = fi k
với k 1 (2.13) Tham số k định tỷ lệ hàm f và đƣợc chọn độc lập với bài toán.