Năm 1975, John Holland đưa ra thuật toán di truyền GA là phương pháp tìm kiếm có sử dụng thông tin heuristic mà nó mô phỏng tiến hóa chọn lọc tự nhiên, sử dụng các khái niệm sinh học như
Trang 1HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN
Bài tập lớn :
NGHIÊN CỨU GIẢI THUẬT GA
CHO BÀI TOÁN TSP
Giảng viên : TS Ngô Hữu Phúc Sinh viên : Đỗ Anh Phi
Lớp : KHMT-K23
Trang 2MỤC LỤC
II Thuật toán di truyền trang 3
1 Nguyên lý tiến hóa trang 3
5 Các thành phần cơ bản trang 4
6 Một số gợi ý trang 5
7 Ưu và khuyết điểm trang 6 III Bài toán người đưa thư trang 6
IV Áp dụng GA giải bài toán TSP trang 6
V Tài liệu tham khảo trang 7
Trang 3I Giới thiệu
Trong thập niên 60, Ingo Rechenberg và Hans-Paul Schwefel đã giới thiệu ý tưởng về chiến lược tiến hóa dựa trên thuyết tiến hóa của Darwin Năm 1975, John Holland đưa ra thuật toán di truyền (GA) là phương pháp tìm kiếm có sử dụng thông tin (heuristic) mà nó
mô phỏng tiến hóa chọn lọc tự nhiên, sử dụng các khái niệm sinh học như gen, nhiễm sắc thể, cá thể, quần thể, và các kỹ thuật như di truyền, chọn lựa, lai ghép và đột biến Chính heuristic này được sử dụng để đưa ra các giải pháp tối ưu hóa và tìm kiếm (1)
Để tìm hiểu về thuật toán di truyền một dễ dàng là tìm hiểu thông qua các ví dụ kinh điển như bài toán Knapsack, bài toán người đưa thư (TSP) Bài viết này giới thiệu cách giải quyết bài toán TSP sử dụng giải thuật GA để minh họa
II Thuật toán di truyền
1 Nguyên lý tiến hóa của Darwin: (2)
a Mỗi cá thể đều di truyền đặc điểm của nó cho con cái
b Những cá thể con đôi khi cũng có những đặc điểm khác cha mẹ do đột biến gen
c Những cá thể có đặc điểm thích nghi nhất với môi trường nhất sẽ tồn tại, những
cá thể kém thích nghi sẽ bị đào thải
2 Thuật toán di truyền có các đặc tính sau : (2)
a Thích hợp với các bài toán tối ưu
b Phương pháp tìm kiếm ngẫu nhiên có định hướng
c Không quan tâm đến nội dung bài toán chỉ quan tâm đến vấn đề cần giải quyết cùa bài toán
d Kết quả tìm kiếm không hẳn là tối ưu nhất
3 Mô tả của thuật toán : (3)
a Ban đầu, sinh ra thế hệ khởi tạo với quần thể P(0), chỉ số i chỉ ra thế hệ thứ i
b Lặp cho tới khi quần thể hội tụ hoặc đạt được tiêu chuẩn kết thúc
i Đánh giá độ thích nghi của mỗi cá thể trong P(i)
ii Lựa chọn các cha từ P(i) dựa trên độ thích nghi của chúng trong P(i)
iii Áp dụng các toán tử di truyền như lai ghép, đột biến từ các cha đã chọn
để sinh ra các con
iv Đạt được thế hệ tiếp theo P(i+1) từ các con và các cá thể ở thế hệ P(i)
4 Cài đặt thuật toán: (3)
a Bước 1 : Mã hóa vấn đề của bài toán
i Xác định và biểu diễn cá thể
ii Khởi tạo quần thể ban đầu
b Bước 2 : Xác định hàm thích nghi
c Bước 3 : Tạo cá thể con từ các phép toán di truyền
i Chọn lọc
ii Lai ghép
iii Đột biến
iv Chép các cá thể mới vào quần thể mới
d Bước 4 : Tạo lại quần thể ban đầu mới
e Bước 5 : Kiểm tra điều kiện dừng của thuật toán
Trang 4f Bước 6 : Lặp lại Bước 2 cho đến khi thỏa điều kiện dừng
5 Các thành phần cơ bản của GA: (3)
a Mã hóa :
i Mã hóa nhị phân : (là kiểu mã hóa thông dụng nhất và rất đơn giản)
- Nhiễm sắc thể là chuỗi bít 0 hoặc1
- Khi thực hiện lai ghép và biến dị có thể có sai
- Vd : Cá thể A : 1000000111110
ii Mã hóa hoán vị : sử dụng cho các bài toán có thứ tự
- Nhiễm sắc thể là chuỗi số biểu diễn vị trí trong một dãy
- Trong vài trường hợp phải hiệu chỉnh lai ghép và đột biến để tạo
ra nhiễm sắc thể mới
- Vd: Cá thể A : 1 5 7 9 3 2 6 8
iii Mã hóa giá trị :
- Nhiễm sắc thể là chuỗi giá trị có thể nhận dạng bất kỳ tùy thuộc vào bài toán cụ thể, có thể là chuỗi số thực, ký tự hoặc đối tượng nào đó
- Thường phải xây dựng một số phép lai ghép và biến dị cho từng trường hợp cụ thể
- Vd : Cá thể A : HGYUEAS
iv Mã hóa dạng cây : thường sử dụng trong các bài toán hoặc các biểu thức suy luận
- Nhiễm sắc thể là một cây gồm có các đối tượng như các hàm, câu lệnh của ngôn ngữ lập trình
b Hàm thích nghi : là hàm đánh giá độ thích nghi của các cá thể Dùng để so sánh giữa 2 cá thể xem cá thể nào tốt hơn Do đó việc chọn hàm thích nghi phụ thuộc vào bài toán và ngữ cảnh của bài toán đưa ra Nếu chọn hàm thích nghi tốt sẽ dẫn đến quần thể hội tụ sớm và ngược lại
c Chọn lựa : các nhiễm sắc thể được chọn lựa là các cha cho lai ghép, để các con tốt thì chọn các cha tốt nhất có thể Có nhiều cách chọn lựa như sau :
i Roulette wheel : nhiễm sắc thể được chọn thông qua độ thích nghi Giống như trò chơi vòng quay roulette, khi viên bi lăn dừng lại tại nhiễm sắc thể nào, nhiễm sắc thể đó được chọn, nên nhiễm sắc thể nào
có độ thích nghi cao thì xác suất được chọn cao hơn Mô tả thuật toán như sau :
- Tính tổng S của giá trị thích nghi của các cá thể trong quần thể
- Lựa chọn giá trị ngẫu nhiên r trong đoạn (0,S)
- Lặp : với giá trị ngẫu nhiên r đã chọn, tương ứng với các cá thể nào đó khi hình thành S thì cá thể đó được chọn cho thế hệ tiếp theo
ii Rank : tính hạng quần thể đầu tiên và sau đó mọi nhiễm sắc thể nhận lại giá trị thích nghi được định nghĩa bởi hạng của chúng
iii Steady-state : Trong tất cả các thế hệ sẽ có vài nhiễm sắc thể tốt được chọn để tạo nhiễm sắc thể con mới Một vài nhiễm sắc thể tồi sẽ bị xóa
bỏ và các nhiễm sắc thể con sẽ thay thế chỗ của chúng Phần còn lại của quần thể tạo ra thế hệ mới
Trang 5iv Elitism : Cho phép chép các cá thể tốt qua quần thể mới, tránh việc mất
đi cá thể tốt xãy ra trong quá trình lai ghép và đột biến
d Lai ghép : việc lai ghép sẽ tạo ra cá thể con thừa hưởng một phần từ cha, một phần từ mẹ và phụ thuộc vào kiểu mã hóa cá thể
i Mã hóa nhị phân :
- Một điểm cắt : chuỗi nhị phân từ đầu của nhiễm sắc thể đến điểm cắt được sao chép từ cha 1, và phần còn lại được sao chép từ cha
2 Vd : 100|111 + 101|010 = 100 010
- Hai điểm cắt : chuỗi nhị phân nằm giữa 2 điểm cắt được sao chép
từ cha 2, phần đầu và cuối sẽ được chép từ cha 1 Vd : 11|0101|00 + 10|1010|10 = 11 1010 00
- Đồng nhất : các bit được sao chép ngẫu nhiên từ cha 1 và cha 2
Vd : 11001011 + 11011101 = 11011111
- Số học : sử dụng các phép toán số học trên bit để tạo ra cá thể mới Vd : 11001011 + 11011111 = 11001001 (AND)
ii Mã hóa hoán vị :
- Một điểm cắt : chuỗi nhiễm sắc thể được chép từ đầu đến điểm cắt từ cha 1, phần còn lại kiểm tra phần tử nào trong cha 2 theo thứ tự chưa có trong con thì chép vào con
- Hai điểm cắt : chép phần giữa 2 điểm cắt vào các con, sau đó từ điểm cắt thứ 2 trong cha mẹ chép vào con, đến cuối cha mẹ thì quay lại đầu chuỗi cha mẹ chép vào tiếp
iii Mã hóa giá trị : có thể sử dụng giống như mã hóa nhị phân
iv Mã hóa dạng cây : xác định điểm cắt trên cây của 2 cha và sau đó ghép lại thành con
e Đột biến :
i Mã hóa nhị phân : đổi giá trị từ 0 sang 1 và ngược lại tại vài vị trí
ii Mã hóa hoán vị : đổi vị trí của các số trong chuỗi
iii Mã hóa giá trị : có thể sử dụng giống như mã hóa nhị phân
iv Mã hóa dạng cây :đổi vị trí các toán tử và số
f Tiêu chuẩn kết thúc thuật toán:
i Thuật toán dừng khi quần thể hội tụ
ii Khi số vòng lặp thế hệ sinh ra bằng với số quy định trước
iii Khi các cá thể trở nên giống nhau
iv Khi tồn tại một cá thể tốt nhất trong quần thể không thay đổi theo thời gian
6 Một số gợi ý khi sử dụng GA :(3)
a Chọn lựa thường sử dụng roulette wheel Elitism thường được chọn nếu không
sử dụng cách nào khác để lưu thông tin của cá thể tốt nhất
b Mã hóa phụ thuộc vào bài toán
c Lai ghép và đột biến phụ thuộc vào cách mã hóa
d Tỷ lệ lai ghép thường nên cao khoảng 80%-95%
e Tỷ lệ đột biến thường khoảng 0,5% -1%
f Kích thước quần thể thường là 20-30, có thể chọn theo cách phụ thuộc vào cách mã hóa của bài toán thì tốt hơn trong vài trường hợp
Trang 67 Ưu khuyết điểm của GA (3)
a Ưu điểm :
i Khả năng song song của thuật toán
ii Ít mắc cực trị địa phương như các thuật toán khác
iii Dễ thể hiện
iv Khi có thuật toán gen cơ bản chỉ cần mô tả nhiễm sắc thể mới để xử lý bài toán khác
v Cùng với cách mã hóa có thể thay đổi hàm thích nghi
b Khuyết điểm :
i Thời gian tính toán
ii Chậm hơn các thuật toán khác
iii Kết thúc tính toán bất cứ lúc nào
III Bài toán người đưa thư (TSP):
Bài toán TSP được mô tả như sau : Có một số N các thành phố và các khoảng cách giữa các thành phố Người đưa thư phải đi qua tất cả các thành phố, hãy tìm một lộ trình nào
đó giúp cho người đưa thư đi qua tất cả các thành phố với lộ trình là ngắn nhất Để kiểm tra mọi khả năng có thể chọn một đường đi ngắn nhất qua N thành phố ta có N! trường hợp, điều này làm cho bài toán được cho là một trong những NP-hard
Giả sử ta có 5 thành phố được đánh số từ 1 đến 5, các khoảng cách giữa các thành phố được mô tả như sau :
STT Điểm bắt đầu Điểm kết thúc Khoảng cách
Vậy ta có các đường đi như sau :
1-2-3-4-5-1 , 1-3-2-4-5-1, 1-2-4-3-5-1, …
Lưu ý là đường đi 1-2-3-4-5-1 và đường đi 1-5-4-3-2-1 là như nhau
IV Ứng dụng GA để giải bài toán TSP :
Mục đích để minh họa giải thuật di truyền nên ta chọn bài toàn TSP đơn giản, người đưa thư phải đi qua tất cả các thành phố, và giữa các thành phố luôn có đường đi với một khoảng cách cho trước để tránh trường hợp không tính được hàm thích nghi khi khoảng cách giữa 2 thành phố nào đó không được xác định.Theo thuật toán ta thực hiện các bước sau :
Bước 1 :
- Xác định cá thể và mã hóa : biểu diễn đường phải đi của người đưa thư dưới dạng một chuổi số vị trí các thành phố phải đi qua và ít nhất phải có một lần vị trí của một thành phố xuất hiện trong chuổi theo thứ tự có vị trí ở đầu và cuối chuổi là như nhau theo như cách mã hóa hoán vị
Vd : ta có 5 thành phố và 2 là vị trí của thành phố xuất phát ta có một chuỗi nhiễm sắc thể được mã hóa như sau: 2 1 3 4 5 4 2
Trang 7- Số quần thể khởi tạo : tùy theo số lượng thành phố ta có thể chọn số lượng quần thể ban đầu, giả sử như số lượng thành phố đủ lớn ta chọn số lượng khởi tạo là 20 Chọn
số thế hệ muốn di truyền
Bước 2 : Xác định hàm thích nghi
Để xác định hàm thích nghi ta có thể chọn hàm f(x) = 1/S (S: là tổng các khoảng cách theo lộ trình được mô tả của cá thể) Khi f(x) càng lớn thì độ thích nghi của cá thể đó càng cao
Bước 3 : Tiến hành tạo cá thể con
- Chọn lựa : dùng phương pháp chọn lựa roulette wheel với độ thích nghi của các
cá thể trong quần thể được tính bằng hàm f(x)
- Lai ghép : ta chọn tỷ lệ lai ghép 80% và sử dụng lai ghép với dạng mã hóa là hoán vị và một điểm cắt
- Đột biến : ta chọn tỷ lệ đột biến 0,5% và sử dụng đột biến với dạng mã hóa hoán vị
- Cho cá thể con vào quần thể mới
Bước 4 : Kiểm tra lại quần thể mới nếu có cá thể nào có độ thích nghi thấp thì loại bỏ để
đảm bảo kích cở quần thể ban đầu Sau đó xác định lại quần thể ban đầu mới
Bước 5 : Kiểm tra điều kiện dừng xem quần thể có hội tụ hay chưa, số vòng lặp thế hệ đã hết
chưa, có tồn tại cá thể tốt nhất không thay đổi sau nhiều thế hệ không, các cá thể trong quần thể có giống nhau không
Bước 6 : Nếu thuật toán chưa dừng thì quay lại bước 2.
V Tài liệu tham khảo :
(1) Wikipedia.org : Giải thuật di truyền
(2) diendantinhoc.org : Câu lạc bộ thuật toán
(3) TS Ngô Hữu Phúc - Nhập môn trí tuệ nhân tạo – Chương 3-2 Các phương pháp tìm kiếm có sử dụng thông tin