3.1.2.1. Biểu diễn các cá thể
Áp dụng phƣơng pháp mã hoá truyền thống theo GA kinh điển, các lời giải x
của bài toán đƣợc mã hoá bằng các chuỗi nhị phân có độ dài bằng nhau. Ta sử dụng vectơ nhị phân v để biểu diễn các giá trị nguyên của biến x. Chiều dài của vectơ chính là số bít trong dãy bít nhị phân biểu diễn đƣợc số nguyên lớn nhất trong miền giá trị của x, tức là chiều dài vectơ nhị phân r = log2N. Nhƣ vậy vectơ nhị phân có chiều dài r sẽ biểu diễn đƣợc số nguyên là 2r. Ví dụ văn bản có chiều dài tối đa (số ký tự) là N = 8000 thì cần có 13 bit cho véc tơ nhị phân:
4096 = 212 < 8000 < 213 = 8192
Ánh xạ biến chuỗi nhị phân (b13b12…b0) thành số nguyên x trong khoảng [0..8000] đƣợc thực hiện nhƣ sau: (b13 b12…..b0)2 = b x i i i 10 12 0 2
Ví dụ: Ta tiến hành so sánh một số cá thể ngẫu nhiên nhƣ sau (với việc sử dụng
hàm mục tiêu đã xây dựng):
Bảng 3.1. Ví dụ về biểu diễn cá thể
Stt Cá thể Vị trí x F(x) Độ chính xác
2 1010001011110 5214 0.0418 5
3 0010111010011 1491 0.5012 4
4 1000101010101 4437 0.8909 1
5 1111011010010 7890 0.6095 3
Ta có thể nhận thấy cá thể 4 có độ chính xác cao nhất với x ở vị trí 4437.
3.1.2.2. Khởi tạo quần thể
Quần thể ban đầu đƣợc khởi tạo ngẫu nhiên. Gọi size là số cá thể đƣợc khởi tạo trong quần thể, mỗi cá thể trong quần thể là một dãy bít nhị phân độ dài sobit
bít. Số lƣợng cá thể khởi tạo trong quần thể ban đầu có ý nghĩa quyết định tới quá trình tiến hóa của thuật toán. Nếu số cá thể khởi tạo quá ít sẽ dẫn đến khả năng đƣợc lai ghép, đột biến của các cá thể giảm đi, điều này sẽ ảnh hƣởng không tốt tới kết quả bài toán, ngƣợc lại nếu số lƣợng cá thể khởi tạo nhiều sẽ làm cho chƣơng trình chạy chậm đi. Nhƣ vậy, tùy thuộc vào yêu cầu bài toán, và qua quá trình thử nghiệm mà quyết định lƣợng cá thể trong quần thể khởi tạo cho hợp lý.
3.1.2.3. Quá trình tiến hóa quần thể
Trong quá trình tiến hóa để giải bài toán ta sử dụng các toán tử của giải thuật di truyền gồm: chọn lọc, lai ghép và đột biến.
a) Toán tử chọn lọc
Qua quá trình chọn lọc, các cá thể kém thích nghi hơn sẽ bị loại bỏ, những cá thể tốt hơn, có độ thích nghi cao hơn sẽ đƣợc đƣa vào các quá trình tiếp theo.
Có nhiều toán tử chọn lọc, trong chƣơng trình của đề tài sử dụng toán tử chọn lọc tỉ lệ (quay bánh xe Roulet), đây là phƣơng pháp thƣờng xuyên đƣợc sử dụng nhất trong quá trình chọn lọc của giải thuật di truyền.
Xác suất lựa chọn của mỗi cá thể tỷ lệ thuận với giá trị độ thích hợp của nó, đƣợc tính theo công thức:
Pi = f (vi) /F (i = 1..pop-size – kích cỡ của quần thể) gọi là xác suất chọn cho mỗi nhiễm sắc thể vi.
Trong đó:
- f (vi) là hàm thích nghi của mỗi cá thể vi.
- F là tổng của các giá trị thích nghi của quần thể.
- Việc chọn lọc cá thể nào phụ thuộc vào vị trí xác suất qi của mỗi nhiễm sắc thể vi đƣợc tính nhƣ sau: i
j j
i p
q
1 .
Tiến trình chọn lọc đƣợc thực hiện bằng cách quay bánh xe Roulet pop-size lần; mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào quần thể mới theo cách sau:
- Phát sinh ngẫu nhiên một số thực r trong khoảng [0..1]
- Nếu r < qi thì chọn nhiễm sắc thể đầu tiên (v1); ngƣợc lại thì chọn nhiễm sắc thể thứ i, vi (2 i pop size) sao cho qi 1 r qi.
Sau quá trình này có thể sẽ có một số nhiễm sắc thể đƣợc chọn nhiều lần. Điều này phù hợp với lý thuyết đã đƣợc đề cập: Các nhiễm sắc thể tốt nhất có nhiều bản sao hơn, các nhiễm sắc thể trung bình không thay đổi, các nhiễm sắc thể kém nhất thì chết đi.
b) Toán tử lai ghép
Chƣơng trình sử dụng toán tử lai ghép một điểm (One-point Crossover). Với cặp cha mẹ X, Y là các vectơ m chiều, toán tử lai ghép 1 điểm chọn ngẫu nhiên một vị trí k (1 k m) rồi sinh ra 2 cá thể con theo công thức:
X = (x1,..., xk, xk+1,..., xm) Y = (y1,..., yk, yk+1,..., ym)
Cá thể con sau khi lai ghép tại vị trí k: X‟ = (x1,..., xk, yk+1,..., ym)
Cặp cha mẹ đƣợc chọn để lai ghép khi nó đạt đƣợc ngƣỡng của xác suất lai ghép, giả sử xác suất lai ghép pc = 0.3 thì mỗi cặp cha mẹ X, Y trong quần thể có 30% cơ hội đƣợc lai ghép.
Nếu cá thể con X‟ thích nghi tốt hơn cá thể cha mẹ X thì ta thay thế cá thể mẹ X bởi cá thể con X‟, tƣơng tự Y‟ cũng đƣợc thay thế Y nếu Y‟ thích nghi tốt hơn.
c) Toán tử đột biến
Với một xác suất đột biến pdb cho trƣớc, sử dụng toán tử đột biến nhƣ sau: - Chọn ngẫu nhiên một nhiễm sắc thể trong quần thể.
- Tạo một số ngẫu nhiên k trong khoảng từ 1 tới m, 1 ≤ vt ≤ m.
- Thay đổi bít thứ vt. Nếu nhiễm sắc thể này không xấu hơn nhiễm sắc thể ban đầu thì đƣa nhiễm sắc thể này vào quần thể để tham gia quá trình tiến hóa ở thế hệ tiếp theo.
Giả sử với xác suất đột biến pdb = 0.05 tức là mỗi cá thể trong quần thể sẽ có 5% khả năng bị đột biến.
3.1.2.4. Các tham số và chi phí thời gian thực hiện chƣơng trình
a) Các tham số
Đối với bài toán này, sử dụng các tham số sau đây: - Quần thể có kích thƣớc size = 26. - Xác suất lai ghép là: Pc = 0,3. - Xác suất đột biến là : Pdb = 0,05.
Các tham số trên đã đƣợc xác định sau một quá trình thử nghiệm chƣơng trình và thấy là nó đã cho kết quả phù hợp với bài toán.
b) Chi phí thời gian
Thời gian tính toán của thuật giải di truyền với bài toán đối sánh mẫu là O(i*Size*log2N*M2). Trong đó i là số thế hệ tiến hoá, độ lớn của i tuỳ thuộc vào từng bài toán cụ thể, thƣờng là i có thể lớn đến hàng nghìn; Size là kích thƣớc quần thể - số cá thể trong quần thể (thông thƣờng chỉ đến vài chục cá thể); M là chiều dài
nhiễm sắc thể (số bit của véc tơ lời giải, N là độ dài văn bản), con số này cũng chỉ lên đến vài chục bit. Sobit và Size thƣờng rất nhỏ (coi nhƣ hằng số), do đó độ phức tạp của thuật giải chỉ là O(i*log2N*M2) cho một lần tìm kiếm, chỉ tƣơng đƣơng hoặc nhỏ hơn độ phức tạp O(N*M) của các thuật toán tìm kiếm tuyến tính trên các văn bản dài - số N là rất lớn. Trong nghiên cứu này ta dùng giải thuật di truyền để giải bài toán đối sánh sẽ đáp ứng đƣợc tốt yêu cầu về thời gian.