Bài tập lớn môn học Trí tuệ nhân Tạo Đề tài: Không gian trạng thái là bài toán chiếc ba lô loại 2. Hãy xây dựng chương trình giải quyết bài toán chiếc ba lô loại 2 theo giải thuật gene với phương pháp chọn là steady state. Giáo viên phụ trách: Ngô Hữu Phúc Trần Cao Trưởng Hà Nội, 3/2010 Thuật giải di truyền (Genetic Algorithm_GA) là kỹ thuật chung giỳp giải quyết vấn đề-bài toỏn bằng cỏch mụ phỏng sự tiến húa của con người hay của sinh vật núi chung (dựa trờn thuyết tiến húa muụn loài của Darwin) trong điều kiện qui định sẵn của mụi trường. GA là một thuật giải và mục tiờu của GA khụng nhằm đưa ra lời giải chớnh xỏc tối ưu mà là đưa ra lời giải tương đối tối ưu. Thuật toỏn di truyền gồm cú bốn quy luật cơ bản là lai ghộp, đột biến, sinh sản và chọn lọc tự nhiờn như sau: Quỏ trỡnh lai ghộp (phộp lai) Quỏ trỡnh này diễn ra bằng cỏch ghộp một hay nhiều đoạn gen từ hai nhiễm sắc thể cha-mẹ để hỡnh thành nhiễm sắc thể mới mang đặc tớnh của cả cha lẫn mẹ. Phộp lai này cú thể mụ tả như sau: Chọn ngẫu nhiờn hai hay nhiều cỏ thể trong quần thể. Giả sử chuỗi nhiễm sắc thể của cha và mẹ đều cú chiều dài là m. Tỡm điểm lai bằng cỏch tạo ngẫu nhiờn một con số từ 1 đến m-1. Như vậy, điểm lai này sẽ chia hai chuỗi nhiễm sắc thể cha-mẹ thành hai nhúm nhiễm sắc thể con là m1 và m2. Hai chuỗi nhiễm sắc thể con lỳc này sẽ là m11+m22 và m21+m12. éưa hai chuỗi nhiễm sắc thể con vào quần thể để tiếp tục tham gia quỏ trỡnh tiến húa Quỏ trỡnh đột biến (phộp đột biến) Quỏ trỡnh tiến húa được gọi là quỏ trỡnh đột biến khi một hoặc một số tớnh trạng của con khụng được thừa hưởng từ hai chuỗi nhiễm sắc thể cha-mẹ. Phộp đột biến xảy ra với xỏc suất thấp hơn rất nhiều lần so với xỏc suất xảy ra phộp lai. Phộp đột biến cú thể mụ tả như sau: Chọn ngẫu nhiờn một số k từ khoảng 1 ≥ k ≥ m Thay đổi giỏ trị của gen thứ k éưa nhiễm sắc thể con vào quần thể để tham gia quỏ trỡnh tiến húa tiếp theo Quỏ 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à quỏ trỡnh cỏc cỏ thể được sao chộp dựa trờn độ thớch nghi của nú. éộ thớch nghi là một hàm được gỏn cỏc giỏ trị thực cho cỏc cỏ thể trong quần thể của nú. Phộp tỏi sinh cú thể mụ phỏng như sau: Tớnh độ thớch nghi của từng cỏ thể trong quần thể, lập bảng cộng dồn cỏc giỏ trị thớch nghi đú (theo thứ tự gỏn cho từng cỏ thể) ta được tổng độ thớch nghi. Giả sử quần thể cú n cỏ thể. Gọi độ thớch nghi của cỏ thể thứ i là Fi, tổng dồn thứ i là Ft.Tổng độ thớch nghi là Fm Tạo số ngẫu nhiờn F cú giỏ trị trong đoạn từ 0 đến Fm Chọn cỏ thể k đầu tiờn thỏa món F ≥ Ft đưa vào quần thể của thế hệ mới. Phộp chọnSteady state: là quỏ trỡnh loại bỏ cỏc cỏ thể xấu và để lại những cỏ thể tốt. Phộp chọn Steady state được mụ tả như sau: Sắp xếp quần thể theo thứ tự độ thớch nghi giảm dần Loại bỏ cỏc cỏ thể cuối dóy, chỉ để lại n cỏ thể tốt nhất. Cấu trỳc thuật giải di truyền tổng quỏt: Bắt đầu t =0; Khởi tạo P(t) Tớnh độ thớch nghi cho cỏc cỏ thể thuộc P(t); Khi (điều kiện dừng chưa thỏa) lặp t = t + 1; Chọn lọc P(t) Lai P(t) éột biến P(t) Hết lặp Kết thỳc Ta đi vào từng bước cụ thể như sau: 1.Khởi tạo quần thể: class Gene { public int[] gen, khoiluongvat; int khoiluongtui; public Gene(int khoiluong_tui, int[] khoiluong_vat, int soluongvat) { khoiluongtui = khoiluong_tui; khoiluongvat = khoiluong_vat; gen = new int[soluongvat]; } } Ta tạo ra một lớp mới cú tờn là Gene mang cỏc thuộc tớnh như sau: Khoiluongtui: là trọng lượng lớn nhất cú thể mang được của balo Khoiluongvat[]: là một mảng để lưu giỏ trị khối lượng của vật theo thứ tự Soluongvat: là số lượng vật được xem xột trong bài toỏn, giỏ trị này sau này sẽ là độ dài của gen[] ta cần mó húa. Gen[]: là chuỗi cỏc số lần chọn tương ứng của cỏc vật được cho vào balo 2. Tớnh độ thớch nghi cho cỏc cỏ thể thuộc P(t)
Học Viện Kỹ thuật Quân sự Khoa cÔng nghệ thông tin Học viên: Nguyễn Đình Hùng Lớp: Tin5A Bài tập lớn môn học Trí tuệ nhân Tạo Đề tài: Không gian trạng thái là bài toán chiếc ba lô loại 2. Hãy xây dựng chương trình giải quyết bài toán theo giải thuật gene với phương pháp chọn là steady state. Giáo viên phụ trách: Ngô Hữu Phúc Trần Cao Trưởng Hà Nội, 3/2010 Thuật giải di truyền (Genetic Algorithm_GA) là kỹ thuật chung giỳp giải quyết vấn đề-bài toỏn bằng cỏch mụ phỏng sự tiến húa của con người hay của sinh vật núi chung (dựa trờn thuyết tiến húa muụn loài của Darwin) trong điều kiện qui định sẵn của mụi trường. GA là một thuật giải và mục tiờu của GA khụng nhằm đưa ra lời giải chớnh xỏc tối ưu mà là đưa ra lời giải tương đối tối ưu. Thuật toỏn di truyền gồm cú bốn quy luật cơ bản là lai ghộp, đột biến, sinh sản và chọn lọc tự nhiờn như sau: Quỏ trỡnh lai ghộp (phộp lai) Quỏ trỡnh này diễn ra bằng cỏch ghộp một hay nhiều đoạn gen từ hai nhiễm sắc thể cha-mẹ để hỡnh thành nhiễm sắc thể mới mang đặc tớnh của cả cha lẫn mẹ. Phộp lai này cú thể mụ tả như sau: Chọn ngẫu nhiờn hai hay nhiều cỏ thể trong quần thể. Giả sử chuỗi nhiễm sắc thể của cha và mẹ đều cú chiều dài là m. Tỡm điểm lai bằng cỏch tạo ngẫu nhiờn một con số từ 1 đến m-1. Như vậy, điểm lai này sẽ chia hai chuỗi nhiễm sắc thể cha-mẹ thành hai nhúm nhiễm sắc thể con là m1 và m2. Hai chuỗi nhiễm sắc thể con lỳc này sẽ là m11+m22 và m21+m12. éưa hai chuỗi nhiễm sắc thể con vào quần thể để tiếp tục tham gia quỏ trỡnh tiến húa Quỏ trỡnh đột biến (phộp đột biến) Quỏ trỡnh tiến húa được gọi là quỏ trỡnh đột biến khi một hoặc một số tớnh trạng của con khụng được thừa hưởng từ hai chuỗi nhiễm sắc thể cha-mẹ. Phộp đột biến xảy ra với xỏc suất thấp hơn rất nhiều lần so với xỏc suất xảy ra phộp lai. Phộp đột biến cú thể mụ tả như sau: Chọn ngẫu nhiờn một số k từ khoảng 1 ≥ k ≥ m Thay đổi giỏ trị của gen thứ k éưa nhiễm sắc thể con vào quần thể để tham gia quỏ trỡnh tiến húa tiếp theo Quỏ 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à quỏ trỡnh cỏc cỏ thể được sao chộp dựa trờn độ thớch nghi của nú. éộ thớch nghi là một hàm được gỏn cỏc giỏ trị thực cho cỏc cỏ thể trong quần thể của nú. Phộp tỏi sinh cú thể mụ phỏng như sau: Tớnh độ thớch nghi của từng cỏ thể trong quần thể, lập bảng cộng dồn cỏc giỏ trị thớch nghi đú (theo thứ tự gỏn cho từng cỏ thể) ta được tổng độ thớch nghi. Giả sử quần thể cú n cỏ thể. Gọi độ thớch nghi của cỏ thể thứ i là Fi, tổng dồn thứ i là Ft.Tổng độ thớch nghi là Fm Tạo số ngẫu nhiờn F cú giỏ trị trong đoạn từ 0 đến Fm Chọn cỏ thể k đầu tiờn thỏa món F ≥ Ft đưa vào quần thể của thế hệ mới. Phộp chọnSteady state: là quỏ trỡnh loại bỏ cỏc cỏ thể xấu và để lại những cỏ thể tốt. Phộp chọn Steady state được mụ tả như sau: Sắp xếp quần thể theo thứ tự độ thớch nghi giảm dần Loại bỏ cỏc cỏ thể cuối dóy, chỉ để lại n cỏ thể tốt nhất. Cấu trỳc thuật giải di truyền tổng quỏt: Bắt đầu t =0; Khởi tạo P(t) Tớnh độ thớch nghi cho cỏc cỏ thể thuộc P(t); Khi (điều kiện dừng chưa thỏa) lặp t = t + 1; Chọn lọc P(t) Lai P(t) éột biến P(t) Hết lặp Kết thỳc Ta đi vào từng bước cụ thể như sau: 1.Khởi tạo quần thể: class Gene { public int[] gen, khoiluongvat; int khoiluongtui; public Gene(int khoiluong_tui, int[] khoiluong_vat, int soluongvat) { khoiluongtui = khoiluong_tui; khoiluongvat = khoiluong_vat; gen = new int[soluongvat]; } } Ta tạo ra một lớp mới cú tờn là Gene mang cỏc thuộc tớnh như sau: Khoiluongtui: là trọng lượng lớn nhất cú thể mang được của balo Khoiluongvat[]: là một mảng để lưu giỏ trị khối lượng của vật theo thứ tự Soluongvat: là số lượng vật được xem xột trong bài toỏn, giỏ trị này sau này sẽ là độ dài của gen[] ta cần mó húa. Gen[]: là chuỗi cỏc số lần chọn tương ứng của cỏc vật được cho vào balo 2. Tớnh độ thớch nghi cho cỏc cỏ thể thuộc P(t) public int danhgia(Gene g) { int tonggiatri = 0; int i; for (i = 0; i < soluongvat; i++) { tonggiatri += giatrivat[i] * g.gen[i]; } return tonggiatri; } public bool hamthichnghi(Gene g) { int thichnghi = 0; for (int i = 0; i < soluongvat; i++) { thichnghi += khoiluongvat[i] * g.gen[i]; } if (thichnghi <= khoiluongtui) { return true; } else { return false; } Gene g thỏa món là một cỏ thể trong quần thể khụng gian bải toỏn cần xột khi mà chỳng cú tổng khối lượng cỏc vật được chọn nhỏ hơn hoặc bằng khối lượng của tỳi. Tổng khối lượng của cỏc vật đó chọn được tớnh theo cụng thức: thichnghi += khoiluongvat[i] * g.gen[i]; éỏnh giỏ cỏ thể là tớnh tổng giỏ trị của cỏc vật đó được chọn, tổng giỏ trị càng cao thỡ dóy gen được đỏnh giỏ là càng tốt và ngược lại. Tổng giỏ trị được tớnh bằng cụng thức: tonggiatri += giatrivat[i] * g.gen[i]; . Algorithm_GA) là kỹ thuật chung giỳp giải quyết vấn đề-bài toỏn bằng cỏch mụ phỏng sự tiến húa của con người hay của sinh vật núi chung (dựa trờn thuyết. thuật Quân sự Khoa cÔng nghệ thông tin Học viên: Nguyễn Đình Hùng Lớp: Tin5A Bài tập lớn môn học Trí tuệ nhân Tạo Đề tài: Không gian trạng