Thuật giải di truyền - Genetic Algorithm là một trong những thuật giải tìm kiếm lời giải tối ưu đã đáp ứng được yêu cầu của nhiều bài toán và ứng dụng.. Hiện nay, thuật toán di truyền đư
Trang 1HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN MÔN HỌC
TRÍ TUỆ NHÂN TẠO
Đề Tài
Nghiên Cứu Giải Thuật GA
Giải Bài Toán Chiếc Balô Loại 2
GIẢNG VIÊN BỘ MÔN:
HỌC VIÊN THỰC HIỆN:
TP HCM, THÁNG 08 NĂM 2012
Trang 2NHẬN XÉT
CỦA GIẢNG VIÊN BỘ MÔN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Trang 3LỜI CẢM ƠN
Trước hết, cho em gửi lời cảm ơn chân thành nhất đến
TS NGÔ HỮU PHÚC - Giảng viên Bộ môn Khoa Học Máy Tính Người đã giảng dạy và truyền đạt chúng em kiến thức về môn học đồng thời là người hướng dẫn và định hướng cho em trong quá trình hoàn thiện Bài tập này
Em đã cố gắng thật nhiều để hoàn thành Bài tập Tuy nhiên, kết quả tìm hiểu chưa hoàn thiện còn nhiều thiếu sót Rất mong Thầy xem xét và đóng góp ý kiến để kết quả tìm hiểu được hoàn thiện hơn./
Học Viên Thực Hiện Giảng Thanh Trọn
Trang 4NỘI DUNG TÌM HIỂU
Nội dung nghiên cứu của Bài Tập bao gồm những thành phần sau:
1 Giới Thiệu Bài Toán Chiếc Ba Lô Loại 2
2 Tìm Hiểu Giải Thuật GA
3 Ứng Dụng Giải Thuật GA Vào Giải Bài Toán Chiếc BaLô Loại 2
4 Cài Đặt Ứng Dụng
Trang 51 Mô Tả Bài Toán Chiếc Ba Lô Loại 2
Bài toán xếp ba lô hay cũng được gọi là bài toán cái túi, là một bài toán tối ưu hóa tổ hợp Bài toán được đặt tên từ vấn đề chọn những gì quan trọng
có thể nhét vừa trong một cái túi với giới hạn khối lượng để mang theo trong một chuyến đi
Giả sử Nội dung bài toán được phát biểu dựa theo hành động của một kẻ
trộm: Một kẻ trộm đột nhập vào một cửa hiệu tìm thấy có n mặt hàng có trọng
lượng và giá trị khác nhau, nhưng hắn chỉ mang theo một cái túi có sức chứa về
trọng lượng tối đa là M Vậy kẻ trộm nên bỏ vào ba lô những món nào và số
lượng bao nhiêu để đạt giá trị cao nhất trong khả năng giới hạn của cái túi mà hắn có thể mang đi được
Dạng bài toán quyết định của bài toán xếp ba lô là câu hỏi "có thể đạt được một giá trị nhiều nhất là bao nhiêu theo phát biểu của bài toán"
Ta có n loại đồ vật, x1 tới xn Mỗi đồ vật xj có một giá trị pj và một khối lượng wj Khối lượng tối đa mà ta có thể mang trong ba lô là C Mỗi vật có thể
được chọn hoặc không được chọn
(Ảnh minh họa)
Trang 6Thực tiễn có rất nhiều bài toán tối ưu với không gian tìm kiếm rất lớn cần phải giải quyết Vì vậy, việc đòi hỏi tìm ra một thuật giải tốt và vận dụng trí tuệ nhân tạo vào giải quyết bài toán là rất cần thiết đặc biệt với những bài toán có không gian tìm kiếm lớn Thuật giải di truyền - Genetic Algorithm là một trong những thuật giải tìm kiếm lời giải tối ưu đã đáp ứng được yêu cầu của nhiều bài toán và ứng dụng Hiện nay, thuật toán di truyền được ứng dụng rất rộng rãi trong các lĩnh vực phức tạp, nó chứng tỏ được hiệu quả trong các vấn đề khó có thể giải quyết bằng các phương pháp thông thường hay các phương pháp cổ điển, nhất là trong các bài toán cần có sự lượng giá, đánh giá sự tối ưu của kết quả thu được Chính vì vậy, thuật giải di truyền đã trở thành đề tài nghiên cứu thú vị và đem đến nhiều ứng dụng trong thực tế
Trong khuôn khổ của đề tài này, em xin trình bày nội dung của giải thuật di truyền - Genetic Algorithm và ứng dụng của nó trong việc giải quyết bài toán Chiếc ba lô loại 2 với phương pháp lựa chọn
2 Tìm Hiểu Giải thuật Di Truyền Genetic Algorithm - GA
2.1 Khái quát về giải thuật Di Truyền
Lịch sử ra đời của giải thuật di truyền
Trước tiên, ý niệm về giải thuật di truyền đã được một số nhà sinh vật học đưa ra từ những năm 50-60, thế kỉ XX A.S Fraser là người tiên phong nêu lên sự tương đồng giữa sự tiến hóa của sinh vật và chương trình tin học giả tưởng về Genetic Algorithms – viết tắc là GA
Tuy nhiên, chính John Henry Holland mới là người triển khai ý tưởng
và phương pháp giải quyết vấn đề dựa theo sự tiến hóa Từ những bài giảng, bài báo của mình, ông đã đúc kết các ý tưởng vào trong cuốn sách đầu tay Adaptation in Natural and Artificial Systems, xuất bản năm 1975 Dựa trên lý thuyết cơ bản về GA của Holand, Keneth De Jong
đã triển khai và chứng minh những thành quả do ông thực hiện đã góp phần quan trọng trong việc tạo ra nền tảng toán học cho lý thuyết GA
Trang 7Lần đầu tiên Holand nghiên cứu các giải thuật này, chúng hoàn toàn không có tên Do nguồn gốc của phương pháp này là từ các gen di truyền, Holand đã đặt tên cho nó là thuật giải di truyền
Các đặc điểm, đặc trưng của giải thuật di truyền
Giải thuật di truyền đã mô phỏng sự chọn lọc tự nhiên và di truyền Trong tự nhiên, các cá thể khỏe, có khả năng thích nghi với môi trường tốt
sẽ được tồn tại và phát triển ở các thế hệ sau Mỗi cá thể có cấu trúc gen đặc trưng cho tính chất của cá thể đó
Trong quá trình sinh sản, các cá thể con có thể thừa hưởng các phẩm chất của cha mẹ, cấu trúc gen của nó mang một phần cấu trúc gen của cha mẹ Ngoài ra, trong quá trình tiến hóa, có thể xảy ra hiện tượng đột biến, cấu trúc gen của cá thể con có thể chứa các gen mà cả cha mẹ đều không có
Trong giải thuật di truyền, mỗi cá thể được mã hóa bởi một cấu trúc
dữ liệu mô tả cấu trúc gen của cá thể đó, ta gọi nó là nhiễm sắc thể Mỗi nhiễm sắc thể được tạo thành từ các đơn vị được gọi là gen
Giải thuật di truyền sẽ làm việc trên các quần thể gồm nhiều cá thể Một quần thể ứng với một giai đoạn phát triển gọi là một thế hệ
Từ một thế hệ được tạo ra, giải thuật di truyền bắt chước sự chọn lọc
tự nhiên và di truyền để biến đổi các thế hệ
Các thành phần của giải thuật di truyền
1 Khởi tạo quần thể - Initializetion
Là quá trình tạo quần thể đầu tiên trong giải thuật, là nơi xuất phát quá trình tiến hóa, bao gồm tất cả các giá trị thô ban đầu Tùy theo vấn đề của bài toán mà có cách khởi tạo khác nhau
Quá trình được thực hiện bằng cách tạo ngẫu nhiên một số cá thể chấp nhận được để được một quần thể phù hợp với kích thước quần thể được quy định sẵn
Trang 82 Hàm thích nghi - Fitness Function
Gán giá trị thích nghi cho mỗi cá thể Giá trị thích nghi càng sát với thực tế thì độ chính xác sẽ càng cao
3 Lựa chọn để kết hợp lại - Selection For Recombine
Có nhiều phương pháp để chọn các nhiễm sắc thể tốt nhất, như: chọn lọc roulette wheel, chọn lọc xếp hàng, chọn lọc cạnh tranh:
Roulette wheel selection
Các cá thể cha mẹ được chọn theo độ thích nghi của chúng Nhiễm sắc thể tốt hơn có cơ hội cao hơn để tham dự vào thế hệ tiếp theo
Thuật giải chọn lọc roulette của Davis, như sau:
Tính tổng giá trị thích nghi của tất cả thành viên quần thể và gọi nó là tổng thích nghi - total fitness
Phát sinh một số n là số ngẫu nhiên trong khoảng từ 0 đến tổng thích nghi
Trả lại thành viên quần thể đầu tiên mà độ thích nghi của nó cộng với độ thích nghi của các thành viên quần thể trước đó lớn hơn hay bằng n…
Tournament selection
Chọn lọc cạnh tranh 2 – 2 - tournament selection
Hai nhiễm sắc thể khác nhau được chọn ngẫu nhiên và được
so sánh với nhiễm sắc thể tồn tại Nếu nhiễm sắc thể I1 không tốt hơn nhiễm sắc thể I2 nghĩa là: f(I1) ≤ f(I2), thì nhiễm sắc thể I1 chết đi và bị loại ra khỏi quần thể Quá trình này lặp lại đến hết N nhiễm sắc thể còn lại
Chọn lọc cạnh tranh 3 - 3-tournament selection
Trang 9Giống như trên, ba nhiễm sắc thể khác nhau được chọn ngẫu nhiên và được so sánh Nếu chúng ta có f(I1) ≤ f(I2) và f(I1) ≤ f(I3), thì nhiễm sắc thể I1 chết đi và bị loại ra khỏi quần thể Quá trình này lặp lại đến hết N nhiễm sắc thể còn lại
Rank selection
Phương pháp này sẽ sắp hạng cá thể dựa trên độ thích nghi của chúng Cá thể xấu nhất sẽ có giá trị 1, kế tiếp là 2, v.v…và
cá thể tốt nhất sẽ có độ thích nghi N - N là số nhiễm sắc thể trong quần thể
Ngoài ra còn có những phương pháp lựa chọn khác như: Boltzman selection, Steady state selection, Elitism
4 Mã hóa
Mã hóa chuỗi Gene của mỗi cá thể thành dạng thích hợp có thể
sử dụng mã hóa nhị phân, mã hóa giá trị, mã hóa hoán vị
5 Lai ghép
Sau khi chọn được các cặp Nhiễm sắc thể dùng để lai, ta tiến hành cắt ghép để tạo được các nhiễm sắc thể mới - con mới
Có nhiều hình thức lai ghép: Lai 1 điểm, lai nhiều điểm, lai bằng các phép toán nhị phân, …
6 Đột biến
Sau khi lai ghép, để tạo sự đa dạng quần thể, ta làm phép đột biến đối với một vài cá thể Trên chuỗi Gene, tại 1 vài vị trí, làm thay đổi giá trị của 1 đoạn gene nào đó
7 Đánh giá cá thể
Khi đã có quần thể mới, ta tiến hành kiểm tra đánh giá xem
cá thể nào tốt nhất, cá thể nào tồi Loại bỏ bớt những cá thể tồi để lặp lại các bước trên đó Chắc chắn rằng việc chọn cá thể sẽ thông qua kết quả, hay mục đích của vấn đề Các cá thể tốt được chọn lọc để
Trang 10đưa vào thế hệ sau Sự lựa chọn này được thực hiện dựa vào độ thích nghi với môi trường của mỗi cá thể
8 Tiêu chuẩn kết thúc
Không có quá trình nào là không thể kết thúc Quá trình tiến hóa
có thể dừng lại sau một khoảng tgian được quy định - một số thế hệ hoặc sau khi đã hội tụ - không thể tìm thêm được cá thể tốt hơn
Thoát khỏi quá trình tiến hóa quần thể, dựa vào bài toán
mà có các cách kết thúc vấn đề khác nhau một khi đạt đến mức yêu cầu Một vài trường hợp thông thường như sau:
Kết thúc theo kết quả: một khi đạt đến mức giá trị yêu cầu thì chấm dứt ngay quá trình thực hiện
Kết thúc dựa vào số thế hệ: chọn số thế hệ, quá trình sẽ dừng đúng ngay số thế hệ đã qui định trước, không cần biết kết quả như thế nào
Tính theo thời gian: không cần biết đã bao nhiêu thế hệ hay kết quả nào, chỉ dựa vào số giờ qui định mà kết thúc
Tổ hợp: dùng nhiều phương án khác nhau cho vấn đề, chẳng hạn như: chạy theo số thế hệ xong sau đó đánh giá cho chạy theo kết quả, hoặc ngược lại
9 Các Toán Tử Trong giải thuật di truyền
Toán tử lai ghép:
Toán tử lai ghép có trật tự bao gồm các bước sau:
1 Chọn ngẫu nhiên một chuỗi con từ một cá thể cha mẹ - parent
2 Đưa ra một proto_child bằng cách sao chép chuỗi con vào những vị trí tương ứng như trong cá thể cha mẹ
3 Xoá tất cả các ký hiệu từ cá thể cha mẹ thứ hai, lúc này đã có trong chuỗi con Chuỗi còn lại chứa các ký hiệu mà proto_child cần
Trang 114 Đặt các ký hiệu vào những vị trí không cố định của proto-child
từ trái sang phải theo trật tự của chuỗi để tạo ra cá thể con
Ví dụ:
Cá thể cha: 9 3 | 8 5 7 1 | 6 4 2
Cá thể con: 3 5 | 2 6 1 4 | 8 7 9 Phân đoạn giữa để cắt các điểm được sao chép vào cá thể con Proto-child 1: x x | 8 5 7 1| x x x
Proto-child 1: x x | 2 6 1 4| x x x Chuỗi bắt đầu từ điểm cắt thứ hai của cá thể cha mẹ thứ hai:
8-7-9-3-5-2-6-1-4 Chuỗi sau khi loại bỏ các phần tử 8, 5, 7 và 1, cũng ở trong
cá thể con đầu tiên là: 9-3-2-6-4 Cuối cùng, chuỗi này được đặt vào proto-child 1 đầu tiên để tạo ra cá thể con - bắt đầu từ điểm cắt thứ hai
Cá thể con thứ nhất: 6 4 | 8 5 7 1 | 9 3 2
Cá thể con thứ hai: 5 7 | 2 6 1 4 |9 3 8
Toán tử đột biến:
Đột biến đảo ngược - Inversion Mutation
Chọn hai vị trí ngẫu nhiên trong một nhiễm sắc thể và sau
đó, nghịch đảo chuỗi giữa hai vị trí này
Ví dụ:
Nhiễm sắc thể : 9 3 8 5 7 1 6 4 2 Sau khi đột biến : 9 3 1 7 5 8 6 4 2
Đột biến chèn - Insertion Mutation
Trang 12Chọn ngẫu nhiên một gen và sau đó chèn nó vào vị trí ngẫu nhiên
Ví dụ:
Nhiễm sắc thể : 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 5 7 8 1 6 4 2
Đột biến thay thế - Displacement Mutation
Chọn ngẫu nhiên một chuỗi con và chèn nó vào một vị trí ngẫu nhiên Đột biến chèn có thể được xem như trường hợp đặc biệt của đột biến thay, trong đó, chuỗi con chỉ chứa một gen
Ví dụ:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 6 8 5 7 1 4 2
Đột biến tương hỗ - Reciprocal Exchange Mutation
Chọn ngẫu nhiên hai vị trí và sau đó hoán vị gen trên những
vị trí này
Ví dụ:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến: 9 3 1 5 7 8 6 4 2
Đột biến chuyển dịch - Shift Mutation
Trước tiên, chọn ngẫu nhiên một gen, sau đó, dịch chuyển
nó đến một vị trí ngẫu nhiên bên phải hoặc bên trái vị trí của gen
Ví dụ:
Nhiễm sắc thể: 9 3 8 5 7 1 6 4 2 Sau đột biến (trái): 9 8 3 5 7 1 6 4 2 Sau đột biến (phải): 9 3 5 8 7 1 6 4 2
Trang 132.2 Biểu Diễn Giải Thuật của Giải Thuật Di Truyền
Giải thuật của Giải thuật Di truyền được biểu diễn qua các bước sau:
Bước 1: Khởi tạo quần thể P(0), chỉ số i chỉ thế hệ thứ i
Bước 2: Lặp đến khi quần thể hội tụ hoặc đạt đến tiêu chuẩn kết thúc
Đánh giá độ thích nghi của mỗi cá thể trong P(i)
Chọn các cha từ P(i) dựa trên độ thích nghi của chúng trong P(i)
Áp dụng các toán tử Gen - Crossover, Mutation từ các cha đã chọn để sinh ra các con
Đạt được thế hệ tiếp theo P(i + 1) gồm các cá thể con và cha P(i)
Cài đặt Thuật Toán
Procedure GA
begin
t := 0 ;
initialize P(t) ;
evaluate P(t) ;
while (not termination-condition) do
select P(t) from P(t-1) ;
end;
Step 1 : Initialization
Step 2 : Selection
Step 3-1 : Crossover
Step 3-2 : Mutation
Step 5 : Termination Test
Step 6 : End Step 4 : Evaluation
3 Ứng dụng giải thuật Di Truyền vào Bài toán chiếc Ba lô 2
Ta có thể hình dung mô hình bài toán được giải quyết trong giải thuật di truyền như sau: Gồm một quần thể chứa tất cả các kết quả có thể có được của bài toán, rồi từ đó chọn ra kết quả tốt nhất
Trang 14Các bước thực hiện:
Khởi tạo đồ vật và trọng lượng tối đa ba lô:
Tạo ra x đồ vật với khối lượng và giá trị khác nhau (ngẫu nhiên)
Ấn định khối lượng tối đa của ba lô
Khởi tạo quần thể:
Tạo ra n chiếc ba lô, mỗi ba lô chứa số lượng các vật là khác nhau, không ba lô nào vượt quá khối lượng tối đa của ba lô
Số lượng mỗi vật trong balô là một số ngẫu nhiên trong khoảng
từ 0 đến thương số khối lượng của balô với khối lượng của vật
Tìm balô tốt nhất
Lựa chọn:
Xếp các balô từ thế hệ trước theo thứ tự và được xếp rank
Thứ tự
Giá trị tăng dần Giá trị tăng dần
Tính tổng các Rank
Xác định số cá thể con định tạo ra
Lặp đến khi đủ số cá thể con
Lấy ngẫu nhiên 1 số thuộc khoảng (1; tổng Rank)
Cộng các Rank đến khi được giá trị > giá trị ngẫu nhiên
Xác định Gene được chọn và đưa vào mảng để lai
Mã hóa:
Với các Gene được chọn để đem lai, mã hóa chúng thành dạng chuỗi bằng phương pháp mã hóa giá trị
Lai:
Phương pháp lai được chọn là lai 2 điểm
Chuỗi gen được chia thành 3 phần, phần 1 có độ dài = ¼ chuỗi gene, phần 2 có độ dài = ½ chuỗi gene, phần 3 là phần còn lại
Cách lai:
Trang 15Bố a b c Con 1 a b’ c
Đột biến:
Dựa vào tỉ lệ đột biến → số lần đột biến → số cá thể đột biến
Chọn 3 vị trí để đột biến Giá trị đột boiến = vị trí
Đánh giá
Giải mã gene: Từ chuỗi mã hóa đưa về dạng bài toán
Sau quá trình lai ghép, quần thể gồm cả các cá thể cha và con
Vì quần thể có kích thước cố định nên phải đánh giá để chọn ra
n cá thể tốt cho thế hệ kế tiếp
Lặp lại các bước trên đến khi quần thể hội tụ hoặc sau k thế hệ
Kết Luận:
Tuy giải thuật Genetic Algorithm - GA có thể chậm hơn một số thuật toán khác, song GA lại có các ưu điểm nổi trội như: Dễ thể hiện, không bị rơi vào trạng thái cực trị địa phương, dễ thay đổi hàm thích nghi, … Vì vậy, thuật toán Genetic Algorithm là một lựa chọn thích hợp cho dạng bài toán quyết định Ví dụ như bài toán tìm đường, bài toán chiếc balô
4 Cài Đặt Ứng Dụng