Transcript Ly.GAandTSP

ỨNG DỤNG THUẬT TOÁN
DI TRUYỀN GIẢI BÀI TOÁN
NGƯỜI DU LỊCH
I. Phát biểu bài toán
 Một người du lịch muốn đi tham quan n thành phố khác
nhau. Xuất phát từ một thành phố nào đó, người du lịch
sẽ đi đến các thành phố còn lại, mỗi thành phố đến đúng
1 lần, rồi quay trở lại thành phố xuất phát. Hãy tìm hành
trình sao cho tổng chi phí là nhỏ nhất.
II. Phân tích bài toán:
 Input:
 n thành phố tham gia vào hành trình
 Ma trận C với cịj là chi phí đi từ thành phố i đến j.
 Output:
 Hành trình có chi phí nhỏ nhất.
III. Áp dụng thuật toán di truyền:
* Bước 1: Mã hóa
 Mỗi thành phố được mã hóa thành một số nguyên.
 Mã hóa như vậy là cách mã hóa hoán vị.
 Ví dụ:
 Giả sử, có 6 thành phố tên là A, B, C, D, E, F thì ta mã hóa
như sau:
 Một chu trình sẽ là một dãy các số bao gồm các số từ 1 đến
6.
TP
Mã hóa
 Ví dụ: [1 2 3 4 5 6] thể hiện đường đi:
AB CD EFA
A
1
B
2
C
3
D
4
E
5
F
6
III. Áp dụng thuật toán di truyền:
* Bước 1: Mã hóa
TP
1
2
3
4
5
6
1
0
500
3000
2500
1000
2000
2
500
0
2500
1000
1500
2000
3
3000
2500
0
1500
2500
2000
4
2500
1000
1500
0
2750
3000
5
1000
1500
2500
2750
0
500
6
2000
2000
2000
3000
500
0
III. Áp dụng thuật toán di truyền:
* Bước 2: Xây dựng hàm thích nghi
 Hàm thích nghi là tổng chi phí của hành trình được thể hiện bởi mỗi
một nhiễm sắc thể.
 Ví dụ:
 Với hành trình: [1 2 3 4 5 6] tổng chi phí sẽ là tổng khoảng cách đi từ A
đến B đến C đến D đến E đến F rồi quay trở về A.
 Độ thích nghi = d(1,2) + d(2,3) + d(3,4) + d(4,5) + d(5,6) + d(6,1)
= 500 + 2500 + 1500 + 2750 + 500 + 2000
= 9750
 tổng càng thấp thì hành trình thể hiện bởi nhiễm sắc thể đó càng
phù hợp (càng thích nghi)
III. Áp dụng thuật toán di truyền:
* Bước 3: Chọn lọc
 Với bài toán này, ta sử dụng phương pháp: “Chọn lọc
theo thể thức giao đấu”
 Ở đây, hai giải pháp sẽ được cho “giao đấu” với nhau và
giải pháp nào tốt hơn sẽ được lựa chọn và được để trong
nhóm “giao phối”.
 Việc chọn lọc trong các thế hệ tiếp theo sẽ thực hiện
trong nhóm “giao phối” này.
 Chú ý rằng, các trận “giao đấu” sẽ được thực hiện bởi
hai giải pháp có thể có.
 Ví dụ: có 4 giải pháp S1, S2, S3, S4 thì các trận “giao đấu”
sẽ là: S1 - S2, S1 – S3, S1 - S4, S2 - S3, S2 - S4, S3 - S4
III. Áp dụng thuật toán di truyền:
* Bước 2: Chọn lọc
Nhóm “giao phối”
1
2
3
4
5
6
D = 9750
5
1
2
4
3
5
1
2
4
3
6
1
3
6
2
4
5
6
D = 8000
1
3
6
2
4
5
D = 11750
2
4
6
1
5
3
D = 12000
III. Áp dụng thuật toán di truyền:
* Bước 2: Lai ghép
 Ở đây, sử dụng phương pháp: “tổ hợp lại cạnh tăng”.
lập “bảng cạnh”
 “Bảng cạnh” là một bảng kề liệt kê các đường vào và
đường ra của một thành phố trong các chuỗi bố mẹ.
 Nếu một đỉnh đã có trong “bảng cạnh” rồi mà ta vẫn cố
gắng chèn nó vào, thì nó là “cạnh phổ biến” và được
biểu diễn bằng cách đảo ngược dấu của nó.
III. Áp dụng thuật toán di truyền:
* Bước 4: Lai ghép
Parent 1:
Parent 2:
1
2
3
4
5
6
1
3
4
2
5
6
1
2
-6
3
2
1
3
4
3
2
-4
1
4
-3
5
2
5
4
-6
2
6
-5
-1
5
III. Áp dụng thuật toán di truyền:
* Bước 2: Lai ghép
 Thuật toán: “tổ hợp lại cạnh tăng”
1.
2.
3.
4.
5.
Chọn 1 thành phố ban đầu trong hai cá thể bố mẹ. Đây là thành phó
hiện thời.
Loại bỏ tất cả sự xuất hiện của thành phố hiện thời ra khỏi bảng kề.
Nếu thành phố hiện thời có cạnh đi vào nó thì đến bước 4, còn không
thì đến bước 5.
Xác định xem thành phố nào trong danh sách kề của thành phố hiện
thời có ít cạnh vào nhất thì chọn nó làm thành phố hiện thời
Nếu không còn thành phố nào chưa đến thăm thì dừng. Còn thì, chọn
ngẫu nhiên 1 thành phố chưa đến thăm và quay lại bước 2.
III. Áp dụng thuật toán di truyền:
* Bước 2: Lai ghép
Bước 1
Bước 2
1
2
-6
3
2
1
3
4
3
2
-4
1
3
2
-4
4
-3
5
2
4
-3
5
2
5
4
-6
2
5
4
-6
2
6
-5
-1
6
-5
1
1
5
2
2
1
6
-6
3
3
4
5
III. Áp dụng thuật toán di truyền:
* Bước 2: Lai ghép
Bước 3
1
2
3
2
3
3
2
-4
4
-3
5
5
4
6
-5
1
6
Bước 4
4
1
5
2
3
2
3
4
3
2
-4
2
4
-3
2
2
5
4
2
6
5
1
6
5
4
Bước 5
1
2
Bước 6
3
2
1
3
3
2
4
-3
2
3
5
2
2
4
2
2
5
2
6
1
2
6
6
5
4
3
1
6
5
4
3
2
III. Áp dụng thuật toán di truyền:
* Bước 5: Đột biến
 Đột biến gây ra sự thay đổi trong một giải pháp để duy
trì tính đa dạng của quần thể và ngăn cản sự hội tụ sớm.