Toán tử lai ghép

Một phần của tài liệu thuật toán bầy đàn pso, giải thuật di truyền và ứng dụng giải các bài toán tối ưu đa mục tiêu (Trang 31)

a/ Lai ghép một điểm

Giả sử với hai cá thể cha và mẹ đã được chọn P1, P2:

P1= (1110001010), P2= (0101100111), độ dài L 10.

Toán tử này cần sinh ngẫu nhiên một vị trí k (1 k L), sau đó hai cá thể con được tạo thành bằng cách tráo đổi các gen của cặp cha mẹ tính từ điểm cắt.

Giả sử điểm cắt đã chọn k 8, hai con được sinh ra như sau: C1= (1110001011), C2= (0101100110) Thủ tục lai ghép một điểm

Procedure lai1diem(k, P1, P2: var C1,C2); Begin For i:=1 to k do Begin C1[i]:=P1[i]; C2[i]:=P2[i]; End; For i:=k+1 to L do Begin C1[i]:=P1[i]; C2[i]:=P2[i]; End; End;

b/ Lai ghép nhiều điểm

Lai ghép nhiều điểm thực hiện tương tự lai ghép một điểm. Với hai cá thể cha kmẹ đã chọn P1, P2, toán tử này cần sinh ngẫu nhiên k vị trí i1,i2,...,ik (giả thiết i1 i2 ... ik). Các điểm cắt chia các cá thể đã chọn thành các đoạn được

đánh số chẵn và lẻ. Hai cá thể con được tạo thành bằng cách tráo đổi các gen cha mẹ tùy theo đoạn chẵn hay đoạn lẻ.

Giả sử các điểm cắt đã chọn là: 2,4,6,9.

P1= 1001110101, P2= 0100111110 C1= 1000111111, C2= 0101110101

c/ Lai ghép mặt nạ

Với hai cá thể cha mẹ đã chọn P1, P2 và phát sinh một chuỗi nhị phân ngẫu nhiên cũng có độ dài L gọi là chuỗi mặt nạ.

P1= (1110001010), P2= (0101100111), U= (0110011001), độ dài L 10. Các con được tạo ra dựa trên chuỗi mặt nạ này để quyết định lấy thành phần của cá thể cha hay cá thể mẹ dựa trên nguyên tắc:

Gen thứ i của cá thể con C1 được lấy gen thứ i của P1 nếu bit mặt nạ tương ứng là 1 và lấy gen thứ i của P2 nếu bit mặt nạ là 0. C2 thì ngược lại.

C1= (0111101110), C2= (1100000011) Thủ tục lai ghép mặt nạ:

Procedure laimatna(u, P1, P2; var C1, C2); Begin

For i:=1 to L do Begin

If U[i]=1 then Begin

C1[i]:=P1[i]; C2[i]:=P2[i]; End

Else

Begin

C1[i]:=P2[i]; C2[i]:=P1[i]; End;

End; End;

Một phần của tài liệu thuật toán bầy đàn pso, giải thuật di truyền và ứng dụng giải các bài toán tối ưu đa mục tiêu (Trang 31)