Bài tập lớn trí tuệ nhân tạo xây dựng chương trình giải quyết bài toán n- queens theo giải thuật gene với phương pháp chọn Elitism

11 2.7K 18
Bài tập lớn trí tuệ nhân tạo xây dựng chương trình giải quyết bài toán n- queens theo giải thuật gene với phương pháp chọn Elitism

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mở Đầu Bài báo cáo gồm các phần: 1. Giải thuật Gene với phương pháp chọn Elitism. 2. Ý tưởng của bài toán N-queens. 3. Mô tả thuật toán. 4. Chương trình DEMO 5. Chương trình được viết bằng: +Ngôn ngữ:C-sharp. +Trình biên dịch: Microsoft Visual Studio 2005. +Nền tảng.net frame work 3.5

Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo BỘ QUỐC PHÒNG HỌC VIỆN KỸ THUẬT QUÂN SỰ ****************** Báo Cáo Đề Tài Nhập Môn Trí Tuệ Nhân Tạo Đề Tài: Không gian trạng thái được mô tả là bài toán n- queens. 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à Elitism. Giảng viên hướng dẫn : Ngô Hữu Phúc Người thực hiện : Nguyễn Như Nam Lơ ́ p : Tin ho ̣ c 5A Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo Hà Nội- 2010 Mở Đầu Bài báo cáo gồm các phần: 1. Giải thuật Gene với phương pháp chọn Elitism. 2. Ý tưởng của bài toán N-queens. 3. Mô tả thuật toán. 4. Chương trình DEMO 5. Chương trình được viết bằng: +Ngôn ngữ:C-sharp. +Trình biên dịch: Microsoft Visual Studio 2005. +Nền tảng.net frame work 3.5 Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo 1.Giải thuật Gene với phương pháp chọn Elitism: a) Giải thuật Gene: Trong khoa học máy tính, Thuật toán Gene (GAs) là 1trong các phương pháp tìm kiếm có sử dụng thông tin. Thuật toán này mô phỏng tiến hóa tự nhiên (Dawinian Evolution) ở mức gene sử dụng tư tưởng của survival of the fittest(chọn lọc có tự nhiên), tức là một cá thể trong tự nhiên, các cá thể khỏe, có khả năng thích nghi tốt với môi trường sẽ được tái sinh và nhân bản ở các thế hệ sau. Mỗi cá thể có cấu trúc gene đặc trưng cho phẩm 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 cả cha và mẹ, cấu trúc gene của nó mang một phần cấu trúc gene của cha và 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 gene của cá thể con có thể chứa các gene mà cả cha và mẹ đều không có. Trong giải thuật Gene, 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 gene của cá thể đó, ta sẽ gọi nó là nhiễm sắc thể (chroniosome). Mỗi nhiễm sắc thể được tạo thành từ các đơn vị được gọi là gene. Chẳng hạn, trong các thuật toán gene cổ điển, các nhiễm sắc thể là các chuỗi nhị phân, tức là mỗi cá thể được biểu diễn bởi một chuỗi nhị phân. Thuật toán gene 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 sẽ được gọi là một thế hệ. b) Phương pháp chọn Elitism: ý tưởng: Phương pháp Elitism cho phép copy những cá thể tốt (hoặc một vài cá thể tốt) sang quần thể mới. Thành phần còn lại của quần thể được tạo từ cách khác. Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạoPhương pháp Elitism có thể tăng tốc cho GA, Nó khác với một số phương pháp khác vì nó ngăn không làm mất cá thể tốt. 2. Ý tưởng của bài toán n-queens bằng giải thuật Gene: • Yêu cầu bài toán N-queens: Hãy xếp N quân hậu vào một bàn cờ n*n, sao cho số lượng các quân hậu ăn nhau là ít nhất (hay tức là không có quân hậu nào ăn nhau cả). Hãy giải quyết bài toán bằng thủ thuật gene với phương pháp chọn là Elitism. • Ý tưởng : Ta tiến hành xếp N hậu lên các vị trí bất kì ứng với mỗi trạng thái của bàn cờ ta mã hóa chúng thành các gen (gọi là các mảng 1 chiều) cho các gen đó lai ghép vói nhau để tạo ra các gen mới kiểm tra trong số các gen của chúng ta xem có gen nào là trạng thái kết thúc chưa(trạng thái chứa lời giải) nếu có thì dừng vòng lặp, nếu chưa thì cho lai ghép tiếp. Trong quá trình kiểm tra trong số các gen của chúng ta sử dụng phương pháp chọn Elitism để cop các cá thể tốt phù hợp với yêu cầu đó là số lượng các quân hậu ăn nhau là ít nhất. 3. Mô tả thuật toán: Từ thế hệ ban đầu được tạo ra bằng phương pháp mã hóa nhị phân, thuật toán gene bắt chước chọn lọc tự nhiên và di truyền để biến đổi các thế hệ. Cấu trúc cơ bản của thuật toán là như sau: procedure Genetic_Algorithm; begin t ← 0; Khởi tạo thế hệ ban đầu P(t); Đánh giá P(t) (theo hàm thích nghi); repeat t ← t + 1; Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo Sinh ra thế hệ mới P(t) từ P(t-1) bởi -Chọn lọc -Lai ghép Đánh giá P(t); until điều kiện kết thúc được thỏa mãn; end; • Để giải quyết một vấn đề này bằng thuật toán Gene, chúng ta cần thực hiện các bước sau đây: Trước hết ta cần mã hóa (Encoding)các đối tượng cần tìm bởi một cấu trúc dữ liệu nào đó. Ở trong bài này thì ta tiến hành phương pháp mã hóa phi nhị phân, ở đây với bàn cờ n*n sẽ có N quân hậu được đặt vào N vị trí khác nhau trên bàn cờ, khi đó ta sẽ mã hóa N quân hậu này bằng phương pháp mã hóa phi nhị phân. Ví dụ: với bàn cờ 8*8 thì khi đó ta sẽ đặt 8 quân hậu vào 8 vị trí trên bàn cờ như hình khi đó ta sẽ được: Vị trí cột: 1 2 3 4 5 6 7 8 Cá thể thứ nhất(Chromosome): 1 3 5 2 6 4 7 8, sau khi mã hóa ta được:ở đây sẽ tương ứng với vị trí của quân hậu trên bàn cờ Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo Tiến hành khởi tạo quần thể (innitial population generation) với một cá thể (Chromosome) sẽ tương ứng với một cách sắp xếp N quân hậu trên bàn cờ. b) Thiết kế hàm thích nghi (fitness Function). Trong các bài toán tối ưu, hàm thích nghi được xác định dựa vào hàm mục tiêu: Ở đây ta cần xây dựng một hàm thích nghi, hàm này sẽ loại bỏ các cá thể vi phạm luật, tức là sau khi sắp xếp quân hậu nên bàn cờ sẽ tương ứng với một cá thể trong một quần thể. Nếu một cá thể nào không thỏa mãn hàm thích nghi thì cá thể đó không được chọn và sẽ bị loại(Tức là có quân hậu ăn nhau). c) Lựa chọn cho sự kết hợp lại (Selection for recombination): - Các nhiễm sắc thể được chọn từ quần thể là các cha cho lai ghép (crossover). Vấn đề là lựa chọn các nhiễm sắc thể như thế nào? - Theo thuyết tiến hóa Darwin những cá thể tốt nhất sẽ được chọn để tạo ra các con (offspring). - Có nhiều phương pháp để chọn nhiễm sắc thể tốt nhất. Ở đây ta sẽ lấy phương pháp chọn Elitism. Sau khi so sánh các cá thể với hàm thích nghi ta sẽ có được các cá thể tốt nhất trong một quần thể, sau đó ta sẽ xây dựng hàm Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo Elitism để copy các cá thể tốt để từ đó tạo các quần thể tạo thành một quần thể mới (có phương pháp sắp xếp các quân hậu một cách tốt nhất trên bàn cờ). d) Trên cơ sở cấu trúc của nhiễm sắc thể, thiết kế các toán tử di truyền (lai ghép, đột biến) cho phù hợp với các vấn đề cần giải quyết. e) Xác định cỡ của quần thể và khởi tạo quần thể ban đầu. f) Xác định xác suất lai ghép pc và xác suất đột biến. Xác suất đột biến cần là xác suất thấp. Người ta (Goldberg, 1989) khuyên rằng nên chọn xác suất lai ghép là 0,6 và xác suất đột biến là 0,03. Tuy nhiên cần qua thử nghiệm để tìm ra các xác suất thích hợp cho vấn đề cần giải quyết. g) Thuật toán dừng khi quần thể hội tụ, i.e. cá thể tốt nhất trong quần thể giống với kết quả mong muốn. Kết thúc khi số thế hệ sinh ra đạt đến số sinh ra trước. Kết thúc khi các cả thể trở lên giống nhau. Kết thúc khi cá thể tốt nhất trong quần thể không thay đổi theo thời gian. => Trong thủ tục trên, điều kiện kết thúc vòng lặp có thể là một số thế hệ đủ lớn nào đó, hoặc độ thích nghi của các cá thể tốt nhất trong các thế hệ kế tiếp nhau khác nhau không đáng kể. Khi thuật toán dừng, cá thể tốt nhất trong thế hệ cuối cùng được chọn làm nghiệm cần tìm. 4. Chương trình DEMO: a)Giao diện: Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo Giao diện chương trình gồm 3 phần:  Khu vực bàn cờ và khu vực thể hiện kết quả lai ghép.  Kết quả lai ghép: kết quả mã hóa, Số quân hậu ăn nhau,quần thể mới  Các nút chức năng: Giới thiệu, khởi tạo quần thể (innitial population generation),Value(số quân hậu ăn nhau), Elitism Gene(quần thể mới, kết quả vị trí các quân hậu).  Các Button chính: -Nút “giới thiệu”: khi ấn nút này sẽ xuất hiện Form2 chứa các thông tin về người thực hiện, tên đề tài, giảng viên hướng dẫn… -Nút “create initial population”: khi ấn nút này thì chương trình sẽ tiến hành mã hóa phi nhị phân bàn cờ và hiển hị thông tin trên lisview1. -Nút “Value”: cho ta các thông tin về số quân hậu ăn nhau, nếu tìm được cá thể nào có số quân hậu ăn nhau =0 thì đó là cá thể tốt. -Nút “Elitism Gene”: khi ấn vào nút này thì chương trình sẽ tiến hành cop các cá thể tốt nhất (tương ứng với số quân hậu ăn nhau ít nhất hay =0) và hiển thị các cá thể đó trên Listview4 và các vị trí sẽ được đặt tương ứng trên bàn cờ (trên Picturebox1). Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo b) các class chính: - Taomang(Tự xây dựng)//các process bài toán n-queens. - Gene(xây dựng các thuật toán) - Form1(dẫn xuất từ Form) // Giao diện chính của chương trình. - from2(dẫn xuất từ Form) // hiển thị thông tin về đề tài. - ● Các namespace đã sử dụng(18 namespace) ▪ System; ▪ System.Collections.Generic; ▪ System.ComponentModel; ▪ System.Data; ▪ System.Drawing; ▪ System.Drawing.Drawing2D; ▪ System.Drawing.Printing; ▪ System.Drawing.Imaging; ▪ System.IO; ▪ System.Linq; ▪ System.Text; ▪ System.Windows.Forms; ▪ System.Collections; ▪ Microsoft.VisualBasic; ▪ System.Threading; Nguyễn Như Nam. Lớp :Tin 5A Báo cáo : Nhập môn trí tuệ nhân tạo b) Các hàm xử lý: * Class Taomang: class taomang { public int[] arrqueens; public taomang(int N) { arrqueens = new int[N]; for (int i = 0; i < N; i++) { arrqueens[i] = i; } } public taomang(int[] arr) { arrqueens = new int[arr.Length]; arr.CopyTo(arrqueens, 0); } } Hàm tạo giao diện bàn cờ: Graphics g; Bitmap bm; Pen p; float W, H; Random r; //cac bien dung cho thuat toan int N; public gene(int n) { N = n; p = new Pen(Color.Black); } //cac ham tao giao dien public void Drawqueensandboath(System.Windows.Forms.PictureBox ptbView, int[] ketthucmang) { W = (float)Math.Round((decimal)ptbView.Width /N,5); H = (float)Math.Round((decimal)ptbView.Width /N,5); bm = new Bitmap(ptbView.Width, ptbView.Height); g = Graphics.FromImage(bm); for (int i = 0; i < N; i++) { g.DrawLine(p, i * H, 0, i * H, H * N); g.DrawLine(p, 0, i * W, W * N, i * W); g.DrawEllipse(p, i * W + W /4, ketthucmang [i] * H + H /4, H/2, W/2); } . truyền (lai ghép, đột biến) cho phù hợp với các vấn đề cần giải quyết. e) Xác định cỡ của quần thể và khởi tạo quần thể ban đầu. f) Xác định xác suất lai ghép. chương trình gồm 3 phần:  Khu vực bàn cờ và khu vực thể hiện kết quả lai ghép.  Kết quả lai ghép: kết quả mã hóa, Số quân hậu ăn nhau,quần thể mới  Các nút

Ngày đăng: 05/12/2013, 13:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan