Giải thuật di truyền đơn giản sử dụng ba toán tử là tái tạo, tạp lai và đột biến. Chúng ta sẽ xem xét hai loại toán tử mới được đưa thêm vào giải thuật di truyền nhằm cải thiện tính mạnh và hiệu quả của giải thuật di truyền đơn giản. Chúng là các toán tử vi mô (micro operator) tác động tới gene của từng chuỗi (cá thể) và các toán tử vĩ mô tác động đến toàn quần thể.
Các toán tử vi mô gồm có tạp lai nhiều điểm và toán tử sắp xếp lại.
Tạp lai nhiều điểm: Toán tử tạp lai hiện đang dùng trong giải thuật di truyền là toán tử tạp lai một điểm vì chỉ có một vị trí tạp lai được chọn. Toán tử tạp lai đó có thể được tổng quát hóa thành toán tử tạp lai nhiều điểm, trong đó số vị trí tạp lai là Nc được chọn từ trước. Với Nc=1 toán tử này trở thành toán tử toán tử tạp lai đơn giản. Với số Nc là chẵn, chuỗi được xét coi như một vòng tròn không có đầu cuối. Khi đó, Nc vị trí tạp lai được chọn một cách ngẫu nhiên xung quanh vòng tròn. Hình 1.4a là ví dụ của toán tử tạp lai với 4 điểm cắt. Với số Nc là lẻ, một vị trí cắt mặc định luôn đặt ở vị trí 0 (bắt đầu của chuỗi). Hình 1.4b là hình ảnh của toán tử với 3 điểm cắt. Toán tử tạp lai nhiều điểm có thể giải quyết nhiều bài toán phức tạp mà toán tử tạp lai một điểm không thể giải quyết được.
(a) (b)
Chọn 4 điểm cắt ngẫu nhiên
Tạp lai với 4 điểm cắt sản sinh 2 chuỗi mới
Chọn3 điểm cắt ngẫu nhiên
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn Hình 1.4. Toán tử tạp lai nhiều điểm
Một cách khác để thực hiện toán tử tạp lai nhiều điểm cắt là toán tử tạp lai đều (uniform crossover) do tác giả Syswerda đề nghị: Trong giản đồ này với mỗi vị trí bít của hai con, chúng ta quyết định một cách ngẫu nhiên là sẽ lấy từ bố hay mẹ theo một mẫu ngẫu nhiên. Để minh họa cho toán tử này chúng ta xét ví dụ sau: Chuỗi bố: 0 1 1 0 0 1 1 1 Chuỗi mẹ: 1 1 0 1 0 0 0 1 Mẫu: 0 1 1 0 1 0 0 1 Con 1: 1 1 1 1 0 0 0 1 Con 2: 0 1 0 0 0 1 1 1
Mặc dù toán tử tạp lai nhiều điểm cắt có nhiều lợi ích song khi dùng chúng thì chúng ta phải rất thận trọng. Theo các nghiên cứu bán thực nghiệm chỉ ra rằng khi tăng số điểm cắt tính hiệu quả của giải thuật giảm đi. Nguyên nhân là khi tăng số điểm cắt toán tử gây ra sự xáo trộn không mang tính cấu trúc. Do đó giải thuật mang tính tìm kiếm ngẫu nhiên và các giản đồ có ích dễ bị phá vỡ.
Toán tử sắp xếp lại (Reordering operator): Không giống như những toán tử đã xem xét trước đây dùng để tìm kiếm tập tốt hơn của các giá trị gene, toán tử sắp xếp lại tìm kiếm các mã tốt hơn và đồng thời tìm kiếm tập tốt hơn của các gene. Các toán tử loại này thích hợp cho những bài toán ở đấy các giá trị sức khỏe phụ thuộc vào sự sắp xếp của các gene trong chuỗi, như trong trường hợp giá trị sức khỏe f phụ thuộc vào một số tổ hợp của giá trị gene v và trật tự o,
), , (v o f
f .
Một trong những 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 sự 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, sau đó chuỗi bị cắt tại hai điểm đó. Sau đó
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
hai chuỗi gene con ở hai đầu được tráo đổi cho nhau như ví dụ dưới đây hai vị trí cắt được chọn một cách ngẫu nhiên:
1 2 3 4 5 6 7 8 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1
Sau khi tráo đổi chuỗi gene trên trở thành là: 1 2 3 4 5 6 7 8
0 1 0 1 0 0 1 0
Chúng ta sẽ giới thiệu một toán tử vĩ mô hoạt động ở mức quần thể trong giải thuật di truyền. Toán tử này tính đến sự phân biệt giữa các loài – sự chuyên hóa trong tự nhiên. Sự chuyên hóa được tiến hành trong tự nhiên thông qua việc hình thành các loài và sự khai thác thích hợp. Sơ đồ mô phỏng sự hình thành các loài trong giải thuật di truyền là hàm chia sẻ do Goldberg và Richardson giới thiệu năm 1987. Một hàm chia sẻ xác định tính gần cạnh và độ chia sẻ cho mỗi chuỗi trong quần thể.
Hình 1.5 là hình ảnh của một hàm chia sẻ s(d(xi,yj)). Trong đó d(xi,yj)là khoảng cách hamming giữa hai chuỗi xi
và xj.
Đối với một cá thể nào đó, độ chia sẻ được xác định bằng tổng các giá trị hàm chia sẻ đóng góp bởi tất cả các chuỗi khác trong quần thể. Những chuỗi gần cá thể đó đòi hỏi độ chia sẻ cao hơn (gần 1) và những cá thể xa đòi hỏi độ chia sẻ rất nhỏ (gần 0). 1.0 0 0.0 0 S(d) ) 0 dij=||xi-xj|| share
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Sau khi tích lũy tổng lượng chia sẻ, sức khỏe của cá thể bị giảm đi bằng cách lấy sức khỏe thực của cá thể chia cho tổng lượng chia sẻ của cá thể theo phương trình sau: n j j i i i x x x d s x f x f 1 )) , ( ( ) ( ) (
Do đó khi rất nhiều cá thể ở gần nhau tại một vùng, chúng làm giảm sức khỏe của nhau. Kết quả cơ chế này hạn chế sự phát triển không kiểm soát được của một nhóm cá thể trong quần thể.