Chúng ta xét lại ví dụ đã trình bày ở giải thuật 1A
Sau khi tìm được chu trình CT là lời giải của bài toán TSP, chúng ta sẽ thực hiện việc gom nhóm và align các sequence trên chu trình CT. Chúng ta có 5 cặp phần tử trên chu trình (1,0),(0,2),(2,4),(3,4),(1,3). Trong 5 cặp này cặp (1,0) có khoảng cách nhỏ nhất. Thực hiện align 2 sequence: 1 với 0. Gom chúng thành 1 đỉnh trên chu trình, xố bỏ cạnh nối giữa 2 đỉnh 1 và 0, kết quả align giữa sequence 1, 0 sẽ đại diện cho đỉnh này trên chu trình.
0 2 3 1 4 67 15 38 24 1 Tính tốn ma trận khoảng cách
Tìm lời giải CT của bài toán TSP
Thực hiện align dựa vào gom nhóm trên C ưu tiên khoảng cách nhỏ nhất
Kết thúc + -
Lúc này trên chu trình cịn 4 phần tử, tiếp tục thực hiện việc gom nhóm và align với 2 đỉnh (2,4)
Gom nhóm và align 2 phần tử (3,(0,1)) trên chu trình
Gom nhóm và align 2 phần tử (0,1,3) với (2,4) đồng thời kết thúc giải thuật.
Cây mơ tả q trình align của giải thuật:
2 3 0,1 4 67 15 38 24 3 0,1 2, 4 67 38 24 0,1,3 2, 4 67 38 0,1,3,2,4 0 1 3 2 4
Trong cả 2 giải thuật 1A và 1B quá trình align giữa các nhóm sequence đều sử dụng giải thuật Feng-Doolittle để thực hiện phép align. Giải thuật Feng-Doolittle trong chương trình được xây dựng dựa trên giải thuật tìm PSA được trình bày ở mục 4.1. Giải thuật 1B thể hiện sự tự nhiên hơn so với giải thuật 1A. Xét trên quan điểm ưu tiên align các nhóm sequence có khoảng cách nhỏ hơn, thì giải thuật 1B cho ta một giải pháp tốt hơn 1A, giải thuật này sẽ hạn chế việc sớm sinh ra các gap hơn so với giải thuật 1 A.
4.3. Giải thuật di truyền và bài toán TSP.
Luận văn sử dụng giải thuật di truyền(Genetic Algorithm-GA) để tìm lời giải cho bài toán TSP. Trong phần này xin được giới thiệu sơ lược lý thuyết về giải thuật di truyền, cũng như áp dụng giải thuật di truyền để giải quyết bài toán TSP.
4.3.1. Đặc điểm giải thuật di truyền
Trong thuật giải di truyền, các cá thể mới liên tục được sinh ra trong quá trình tiến hố nhờ sự lai ghép ở thế hệ cha-mẹ. Một cá thể mới có thể mang những tính trạng của cha-mẹ (di truyền), cũng có thể mang những tính trạng hồn tồn mới(đột biến). Di truyền và đột biến là hai cơ chế có vai trị quan trọng như nhau trong tiến trình tiến hố, dù rằng đột biến xảy ra với xác xuất nhỏ hơn rất nhiều so với hiện tượng di truyền. Các thuật toán tiến hố, tuy có những điểm khác biệt, nhưng đều mơ phỏng bốn q trình cơ bản: Lai ghép, đột biến, sinh sản và chọn lọc tự nhiên.
Như vậy, q trình tiến hố càng lâu thì càng có điều kiện cho các cá thể tốt được sinh ra.
Quá trình lai ghép (phép lai)
Phép lai là quá trình hình thành nhiễm sắc thể(NST) mới trên cơ sở các nhiễm sắc thể cha-mẹ, bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều) nhiễm sắc thể cha-mẹ với nhau. Một phép lai với xác suất Pc có thể mô phỏng như sau:
Chọn ngẫu nhiên hai (hay nhiều) cá thể bất kì trong quần thể. Giả sử các nhiễm sắc thể của cha-mẹ đều có k gen.
Tạo một số ngẫu nhiên trong khoảng từ 1 đến k - 1 (ta gọi là điểm lai hoặc điểm cắt). Điểm cắt chia mỗi chuỗi cha-mẹ gồm k gene thành hai chuỗi con có m1 và m2
phần tử, m1+m2=k. Gọi 2 chuỗi con của cha là m11, m12 và của mẹ là m21 m22. Hai chuỗi nhiễm sắc thể con mới sẽ là m11 + m22 và m21 + m12.
Đưa hai cá thể mới này vào quần thể để tham gia các q trình tiến hố tiếp theo.
Quá trình đột biến (phép đột biến )
Đột biến là hiện tượng cá thể con mang một (số) tính trạng khơng có trong mã di truyền của cha-mẹ. Phép đột biến xảy ra với xác suất Pm nhỏ hơn rất nhiều so với xác suất lai PC. Một phép đột biến có thể mơ phỏng như sau:
Chọn ngẫu nhiên một cá thể cha-mẹ bất kì trong quần thể. Tạo một số ngẫu nhiên r trong khoảng từ 1 đến k(1≤ ≤r k).
Thay đổi gen thứ r và trả cá thể này về quần thể để tham gia q trình tiến hố tiếp theo.
Q trình sinh sản và chọn lọc (phép tái sinh và phép chọn)
Phép tái sinh là q trình trong đó các cá thể được sao chép trên cơ sở độ thích nghi của nó. Cịn phép chọn là q trình loại bỏ các cá thể xấu trong quần thể chỉ giữ lại trong quần thể các cá thể tốt. Phép chọn có thể được mơ phỏng như sau:
Sắp xếp quần thể theo thứ tự độ tốt giảm dần.
Loại bỏ các cá thể cuối dãy để chỉ giữ lại p cá thể tốt nhất, ở đây ta giả sử quần thể có kích thước cố định p.
Một thuật giải di truyền gồm các thành phần sau:
Một cấu trúc dữ liệu I biểu diễn không gian lời giải của bài toán. Phương pháp khởi tạo quần thể ban đầu P(0).
Hàm định nghĩa độ thích nghi (fitness function) đóng vai trị mơi trường. Các phép tốn di truyền như đã mô phỏng ở trên.
Và các tham số thuật giải di truyền sử dụng (kích thước quần thể, xác suất lai, đột biến v.v...)
parent 1 : 1 1 0 | 0 0 1 parent 2 : 0 1 0 | 1 1 1 offspring 1 : 1 1 0 1 1 1 offspring 2 : 0 1 0 0 0 1
4.3.2. Cấu trúc thuật giải di truyền tổng quát Bắt đầu Bắt đầu
t=0;
Khởi tạo quần thể P(t);
Tính độ thích nghi cho các cá thể thuộc P(t); while (điều kiện dừng chưa thoả) {
t = t+1; Tái sinh P’(t) từ P(t-1); Lai Q(t) từ P’(t); Đột biến R(t) từ P’(t); Chọn lọc P(t) từ P t( − ∪1) Q t( )∪R t( )∪P' t( ); } Kết thúc.
Ý tưởng của việc sử dụng giải thuật GA cho bài toán TSP:
Chúng ta xây dựng một quần thể các lời giải của bài tốn TSP. Quần thể có m cá thể với m là tham số do người dùng điều chỉnh. Mỗi nhiễm sắc thể sẽ có k gene, mỗi gene đại diện cho 1 đỉnh. Hàm fitness chính là chiều dài của quãng đường ứng với nhiễm sắc thể. Quãng đường ứng với nhiễm sắc thể càng ngắn hàm thích nghi càng tốt. Chúng ta sẽ xây dựng các hàm lai ghép, đột biến, và chọn lọc cho giải thuật.
Ví dụ:
Phép lai ghép sử dụng phép lai ghép theo giải thuật PMX(Partially-Mapped Crossover). Nội dung phép lai ghép này như sau: Sử dụng 2 điểm cắt trên nhiễm sắc thể của cả cha-mẹ. Để tạo một nhiễm sắc thể mới(con), phần chuỗi nằm giữa 2 điểm cắt của nhiễm sắc thể thứ nhất cha(mẹ) sẽ được thay thế cho phần chuỗi nằm giữa 2 điểm cắt của nhiễm sắc thể còn lại. So sánh sự thay đổi gene trong phần giữa 2 điểm cắt của nhiễm sắc thể thứ hai với nhiễm sắc thể mới tạo, thực hiện sự thay đổi các phần tử bên ngoài vùng giữa 2 điểm cắt của nhiễm sắc thể con, dựa trên sự thay đổi này. Điều này đảm bảo cho khơng có sự lặp lại của các gene trong nhiễm sắc thể mới. Tương tự đổi vai trò của nhiễm sắc thể cha mẹ với nhau ta sẽ tạo được thêm 1 con mới.
Xét ví dụ 2 nhiễm sắc thể cha 1 2 5 6 4 3 8 7 và mẹ 1 4 2 3 6 5 7 8 . Xét 2 điểm cắt tại vị trí 3,6. Quá trình tạo ra 1 nhiễm sắc thể mới(con) như sau. Thay thế chuỗi nằm giữa 2 điểm cắt của mẹ là 2 3 6 bằng chuỗi nằm giữa 2 điểm cắt của cha 5 6 4 lúc
Nhiễm sắc thể cho bài toán TSP 9 đỉnh [9 3 4 0 1 2 5 7 6 8]
này nhiễm sắc thể con là 1 4 5 6 4 5 7 8. Như vậy 5, 4 xuất hiện 2 lần trong nhiễm sắc thể con. So sánh phần nằm giữa 2 điểm cắt của nhiễm sắc thể con và nhiễm sắc thể mẹ ta thấy gene 5 được thay bằng 2, gene 4 được thay bằng 6, nhưng vì 6 có trong phần
giữa 2 điểm cắt nên 4 được thay bằng 3. Thực hiện sự thay đổi này với phần nằm
ngoài 2 điểm cắt ta được nhiễm sắc thể con mới: 1 3 5 6 4 2 7 8 . Chúng ta có một ví dụ minh họa cho phép Crossover của giải thuật.
Phép đột biến: phép đột biến được thực hiện bằng cách đổi chỗ một cách ngẫu nhiên 2 gene bất kỳ trong 1 nhiễm sắc thể, sao cho nhiễm sắc thể mới thu được có chiều dài của con đường tương ứng ngắn hơn so với nhiễm sắc thể ban đầu.
Ví dụ minh họa cho phép đột biến của giải thuật:
Phép chọn lọc: Chọn lọc các cá thể có hàm thích nghi tốt nhất.
4.4. Phần hiện thực giải thuật và chương trình:
Chương trình tính MSA(MSAPR) được viết bằng VC++8(2005) trên nền IDE Visual Studio 2005. Chương trình chạy trên nền hệ điều hành Microsoft Windows XP, cung cấp giao diện đồ hoạ cho phép người dùng tương tác một cách dễ dàng.
Chương trình tính MSA hiện thực cả 2 giải thuật 1A, 1B. Người sử dụng có thể lựa chọn 1 trong 2 giải thuật này.
Dựa trên các ý tưởng đã được phân tích trong phần giải thuật. Cấu trúc chương trình chương trình hiện thực bài tốn MSA gồm có 3 phần:
Module giải quyết bài toán PSA Module giải quyết bài toán TSP
Trước [0 1 2 3 4 5 6] Sau phép đột biến [0 1 3 2 4 5 6] parent 1 : 1 2 | 5 6 4 | 3 8 7 parent 2 : 1 4 | 2 3 6 | 5 7 8 ________________________________ offspring (step 1) : 1 4 5 6 4 5 7 8 (step 2) : 1 3 5 6 4 2 7 8
Module hiện thực giải thuật 1B.