Download - Chuong 5. Bai toan nguoi du lich va GA.pdf
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
1/19
Hà Nội, 2016
BÀI TOÁN NGƯỜI DU LỊCH VỚI GA
Ngưi son: TS Đ Văn Tu n
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
2/19
1. Bài toán ngưi du lịch -TSP
2/23
Một khác du lịch cần phải ghé thăm mỗi thành phố 1 lần (chính
xác 1 lần), rồi trở về thành phố xuất phát. Với chi phí du lịch của
từng cặp thành phố được xác định trước (ci,j), khác du lịch cần
xác định một lịch trình thăm quan các thành phố sao cho tổng chi
phí là nhỏ nhất.
Không gian tìm kiếm là số hoán vị của thành phố, !.
Mỗi một hoán vị của thành phố là một lời giải và lời giải tối
ưu là một hoán vị nào đó của tập {1, … , }.
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
3/19
Bài toán TSP dưới dng đồ thị
3/23
Có thể mô phỏng mạng lưới các thành phố dưới dạng đơn đồ thị
có trọng số:
- Mỗi thành phố là một đỉnh của đồ thị
- Chi phí đi du lịch của các cặp thành phố là trọng số của cạnh
nối hai đỉnh liền kề
Tìm một chu trình đi qua tất cả các đỉnh sao cho tổng chi phí
đạt cực tiểu.
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
4/19
2. Biểu diễn nhiễm sắc thể
4/23
có 3 cách biểu diễn NST cho bài toán TSP:
- Danh sách kề
- Có thứ tự- Lộ trình
Sử dụng biểu diễn nhị phân cho NST không phù hợp với bài toánTSP, bởi chỉ cần thay đổi một bít (đột biến, lai ghép) cũng có thể
biến NST con không còn là lời giải của bài toán.
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
5/19
2.1. Biểu diễn Kề
5/23
Biểu diễn kề một hành trình là danh sách n phố. Thành phố thứ j
được đặt vào vị trí thứ nếu và chỉ nếu tồn tại cạnh từ thành phố
đến thành phố (ký hiệu i-j).
Thí dụ hành trình: 1 − 2 − 4 − 3 − 8 − 5 − 9 − 6 − 7 − 1 được biểu thị bởi véc tơ :
( 2 4 8 3 9 7 1 5 6 )
Mỗi thành phố xuất hiện một lần trong danh sách;
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
6/19
Danh sách kề & Hành trình không hợp lệ
6/23
Không phải bất kỳ một danh sách kề nào cũng ứng với một hành
trình hợp lệ. Ví dụ:
(2 4 8 1 9 3 5 7 6)Hành trình tương ứng:
1-2-4-1
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
7/19
Phép toán lai ghép trên Danh sách kề
7/23
Biểu diễn kề không hỗ trợ các phép toán lai ghép cổ điển, cần có
một số sửa đổi. Có 3 dạng lai ghép đối với dạng Danh sách kề:
- Lai có cạnh thay đổi
- Lai các đoạnh hành trình con
- Lai Heuristics
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
8/19
Lai có cnh thay đổi
8/23
Tạo ra con mới bằng cách chọn (ngẫu nhiên) một cạnh từ cha-me
thứ nhất, rồi chọn cạnh thích hợp từ cha-me thứ hai,... Một cách
tổng quát là chọn các cạnh từ hai cha-me một cách luân phiên.
Nếu cạnh mới chọn tạo thành chu trình con thì toán tử chọn một
cạnh thay thế (ngẫu nhiên) từ các cạnh còn lại không tạo thành
chu trình.
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
9/19
Ví dụ lai ghép có cnh thay đổi
9/23
Giả sử p1= (2 3 8 7 9 1 4 5 6) và p2= (7 5 1 6 9 2 8 4 3)
Có thể một con sẽ là:c1 = (2 5 8 7 9 1 6 4 3)
Trong ví dụ này c1 xuất phát từ cạnh (1,2) của p1, và cạnh ngẫu
nhiên duy nhất được tạo trong tiến trình xen kẽ là (7,6) thay vì
(7,8) trên p2 sẽ tạo ra chu trình con.
Con thứ 2 có thể:
C2=(7 5 8 6 9 2 4 1 3)
Cặp cạnh ngẫu nhiên trong tiến trình đan xen là: (6,2) thay cho(6,1) trên p1 và (8,1) thay cho (8,4) trên p2.
Bài tập: Xây dựng hàm cho phép lai ghép có cạnh thay đổi.
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
10/19
Lai các đon hành trình con
10/23
Tạo ra con mới bằng cách chọn hành trình con (chiều dài ngẫu
nhiên) từ một trong các cha-me, rồi chọn hành trình con (chiều
dài ngẫu nhiên) từ một cha-mẹ khác. Quá trình này được thực
hiện đan xen.Trong quá trình tạo hành trình con, nếu việc them một cạnh nào
đó mà tạo thành chu trình thì toán tử chọn một cạnh thay thế
(chọn ngẫu nhiên) từ các cạnh còn lại không tạo thành chu trình.
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
11/19
Lai Heuristic
11/23
Chọn ngẫu nhiên một thành phố làm điểm khởi hành cho hànhtrình của con.
So sánh hai cạnh (từ cả hai cha – mẹ) rời thành thành phố đã
chọn và chọn cạnh có trọng số nhỏ hơn.Thành phố ở đầu bên kia của cạnh đã chọn được sử dụng làm
điểm khởi hành tiếp theo.
Trong quá trình chọn cạnh ngắn hơn, nếu tạo ra chu trình thì hành
trình được mở rộng bằng cách chọn ngẫu nhiên từ các cạnh còn
lại mà không tạo thành chu trình.
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
12/19
2.2 Biểu diễn có thứ tự
12/23
Biểu diễn có thứ tự hành trình là một danh sách n thành phố; phần tử
thứ của danh sách là một số trong khoảng [1, − + 1]
Ý nghĩa của biểu diễn thứ tự là sử dụng một danh sách thứ tự từ
1…n để tham chiếu.
Ví dụ = 9:
C=(1 2 3 4 5 6 7 8 9)
Một hành trình:1 – 2 – 4 – 3 – 8 – 5 – 9 – 6 – 7
Được biểu thị bằng danh sách = (1 1 2 1 4 1 3 1 1)
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
13/19
Quá trình thông dịch danh sách có thứ tự như sau
13/23
(1) = 1 nghĩa là lấy C(1) làm thành phố khởi hành và loại bỏ
C(1) khỏi C => C =(2 3 4 5 6 7 8 9) và Hành trình 1-
(2) = 1, tiếp tục lấy C(1) ta được hành trình là 1-2 và loại bỏ
C(1) => C =(3 4 5 6 7 8 9)
(3) = 2, lấy phần tử C(2) là thành phố tham tiếp theo và loại bỏ
C(2) => C =(3 5 6 7 8 9) ta được hành trình 1-2-4
……..
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
14/19
Hàm chuyển đổi NST sang hành trình
14/23
function [ R] = convert_C2R( C )
n = size(C,2);
O = 1:n;
R =[];
for i=1:nR =[R,O(C(i))];
O(C(i)) =[];
end
end
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
15/19
Hàm chuyển đổi hành trình thành NST
15/23
function [ C ] = convert_R2C(R )
C=[];
n = size(R,2);
O = 1:n;
for i=1:np = find(O==R(i),1);
C = [C,p];
O(p) =[];
endend
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
16/19
Ưu điểm của biểu diễn có thứ tự
16/23
Sử dụng được phương pháp lai ghép cổ điển (một điểm, nhiềuđiểm). Ví dụ:
= 1 1 2 1 4 1 3 1 1 , và = (5 1 5 5|5 3 3 2 1)
Ứng với các hành trình:
1-2 -4 -3 -8- 5- 9- 6 -7 và 5-1-7-8-9- 4-6 -3-2
Thì hai con được tạo ra:
= (1 1 2 15 3 3 2 1) và = (5 1 5 5 4 1 3 1 1 )
Hãy xác định hai hành trình ứng với hai con ???
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
17/19
2.3. Biểu diễn đưng dẫn
17/23
Đây là dạng biểu diễn tự nhiên nhất. Ví dụ hành trình:
5-1-7-8-9-4-6-2-3
Thì biểu diễn đường dẫn là véc tơ:
(5 1 7 8 9 4 6 2 3)Có 3 phép lai ghép trên biểu diễn đường dẫn:
Ánh xạ từng phần
Thứ tự
Chu trình
(Chi tiết các phép lai ghép xem trong tài liệu)
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
18/19
3. Xây dựng phép toán đột biến ứng với biểu diễn có thứ tự
18/23
- Hoán vị ngẫu nhiên hai GEN (có bậc phù hợp)
- Hoán vị các GEN phù hợp thông qua tâm
-
8/17/2019 Chuong 5. Bai toan nguoi du lich va GA.pdf
19/19
4. Xây dựng chương trình GA bằng Matlab cho bài toán TSP
19/23
- Xây dựng hàm chuyển một hành trình (hoán vị thành phố)về dạng biểu diễn có thứ tự
- Xây dựng hàm chuyển đổi danh sách dạng có thứ tự về hành
trình
- Xây dựng hàm main thực hiện giải thuật di truyền cho TSP