TRÒ CHƠI DODGEM ỨNG DỤNG THUẬT TOÁN MINIMAX và ALPHA BETA PRUNNING

19 2.7K 8
TRÒ CHƠI DODGEM ỨNG DỤNG THUẬT TOÁN MINIMAX và ALPHA BETA PRUNNING

Đ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

Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BÀI TẬP LỚN NHẬP MÔN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI : TRÒ CHƠI DODGEM ỨNG DỤNG THUẬT TOÁN MINIMAX VÀ ALPHA BETA PRUNNING GV hướng dẫn: TS NGUYỄN NHẬT QUANG Sinh viên thực hiện: Nguyễn Văn Hòa Lê Bá Huy Thân Văn Quang Nguyễn Hoàng Việt MSSV: 20081020 MSSV: 20081131 MSSV: 20082082 MSSV: 20083139 Lớp: TTM- K53 Hà Nội, 11-2011 Trò chơi Dodgem Page Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO LỜI NÓI ĐẦU Đây tài liệu dùng để biểu diễn thiết kế xây dựng “Trò chơi Dodgem” sử dụng thuật toán MiniMax Alpha beta pruning nhóm em thiết kế lập trình Tài liệu giúp ta có nhìn toàn vẹn chức phần mềm ứng dụng thuật toán MiniMax Alpha beta prunning để giải toán Do thời gian có hạn nên đồ án tối ưu toàn trạng thái toán Tuy nhiên, nhóm nghiên cứu hoàn thiện thời gian sớm Nhóm thực đề tài nhằm mục đích xây dựng trò chơi ứng dụng giải trí có tính “ nhân tạo “ cao Trong trình thực đề tài không tránh khỏi sai sót, nhóm em mong nhận góp ý đánh giá thầy Sinh viên thực Nguyễn Văn Hòa Lê Bá Huy Thân Văn Quang Nguyễn Hoàng Việt Trò chơi Dodgem Page Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Mục lục Phần 1: Giới thiệu trò chơi Dodgem Phần : Thuật toán MiniMax Alpha beta pruning 2.1 Thuật toán MiniMax 2.2 Thuật toán Alpha beta pruning 3.1 Hàm đánh giá 11 3.2 Hàm đánh giá 12 Phần : Cài đặt chương trình 13 4.1 Cell 13 4.2 Grid 13 4.3 Computer 15 4.4 GameManager 16 Phần 5: Giao diện chương trình 17 Phần 6: Kết luận 18 Phần 7: Tài liệu tham khảo 19 Trò chơi Dodgem Page Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Phần 1: Giới thiệu trò chơi Dodgem Dodgem game chess game, giống cờ Caro hay cờ tướng… Mỗi game có người chơi Một người Min, người lại Max Hai người chơi thay phiên đưa nước theo quy luật Trò chơi Dodgem game tạo gồm có hai quân Đen hai quân Đỏ xếp vào bàn cờ 3*3 (hình vẽ) Luật chơi:  Quân Đen: phép lên trên, sang phải xuống dưới.Quân Đen đưa cột bên phải  Quân đỏ: phép lên trên, sang trái sang phải.Quân Đỏ đưa hàng bàn cờ Trò chơi kết thúc người chơi đưa hết quân cờ chặn không cho quân đối phương di chuyển (thì coi chiến thắng) Trò chơi Dodgem Page Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Phần : Thuật toán MiniMax Alpha beta pruning 2.1 Thuật toán MiniMax Nguyên lý:  Một chiến lược tối ưu chuỗi nước giúp đưa đến trạng thái đích mong muốn  Chiến lược MAX bị ảnh hưởng ( phụ thuộc ) vào nước MIN – ngược lại  MAX cần chọn chiến lược giúp cực đại hóa giá trị hàm mục tiêu – với giả sử MIN nước tối ưu  Chiến lược xác định việc xét giá trị MINIMAX nút biểu diễn trò chơi  MAX chọn nước tương ứng với giá trị MINIMAX cực đại ( MIN chọn cá nước ứng với giá trị MINIMAX cực tiểu Áp dụng vào trò chơi DODGEM Với Quân Đen, ta chọn Max(các children), Quân Đỏ, ta tìm Min(các children) Từ hình vẽ trên, ta xây dựng thủ tục đệ quy, gồm hàm, MaxVal() đại diện cho Quân Đen, nhằm tìm nước tối ưu cho ( Max(children) ), ngược lại, MinVal() đại diện cho Quân Đỏ, tìm Min(Children) cho Trò chơi Dodgem Page Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO int MinVal( dept, beta) { int p; if( GameOver() or dept > maxdept) return; int = vô cung lon for moi vi tri cua quan den { Di chuyen sang o lan can IF (dept = maxdept ) p=getpoint() ; Else p=MaxVal ( dept +1, beta) If ( beta >= p ) beta =p; Cho quan den ve vi tri cu } return beta; } int MaxVal( dept, alpha) { int p; if( GameOver() or dept > maxdept) return; int max = vô cung bé for moi vi tri cua quan { Di chuyen sang o lan can IF (dept = maxdept ) p=getpoint() ; Else p=MinVal ( dept +1, beta) If ( alpha = Chẳng hạn, cờ vua, nhân tố nhánh trò chơi trung bình khoảng 35, thời gian đòi hỏi phải đưa nước 150 giây, với thời gian máy tính thông thường chương trình bạn xem xét đỉnh độ sâu Một người chơi cờ tr.nh độ trung bình tính trước 5, nước nữa, chương trình bạn đạt trình độ người tập chơi! Khi đánh giá đỉnh u tới độ sâu h, thuật toán Minimax đòi hỏi ta phải đánh giá tất đỉnh gốc u tới độ sâu h Song ta giảm bớt số đỉnh cần phải dánh không ảnh hưởng đến đánh giá đỉnh u Phương pháp cắt cụt alpha-beta cho phép ta cắt bỏ nhánh không cần thiết cho đánh giá đỉnh u Tư tưởng kỹ thuật cắt cụt alpha-beta sau: Nhớ lại rằng, chiến lược tìm kiếm Minimax chiến lược tìm kiếm theo độ sâu Giả sử trính tìm kiếm ta xuống đỉnh a đỉnh Trắng, đỉnh a có người anh em v đánh giá Trò chơi Dodgem Page Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Giả sử cha đỉnh a b b có người anh em u d đánh giá, giả sử cha b c(Xem hình trên) Khi ta có giá trị đỉnh c (đỉnh Trắng) giá trị u, giá trị đỉnh b (đỉnh Đen) nhiều giá trị v Do đó, eval(u) > eval(v), ta không cần xuống để đánh giá đỉnh a mà không ảnh hưởng dến đánh giá đỉnh c Hay nói cách khác ta cắt bỏ gốc a Lập luận tương tự cho trường hợp a đỉnh Đen, trường hợp eval(u) < eval(v) ta cắt bỏ gốc a Cụ thể hơn, ta có hình bên Trong khi, ta cố tìm giá trị cho A, Chúng ta xuống B, tìm giá trị là Min(6,9) Sau đó, ta qua C Từ đó, tính E là Max(4,-2) Do đó, C nhỏ hơn,Ngay lúc ta biết giá trị C MaxDepth) return Analysis(b) int max = -infinity for each legal move m in board b { copy b to c make move m in board c int x = RedValue(c, depth+1, alpha, beta) if (x>max) max = x if (x>alpha) alpha = x if (alpha>=beta) return alpha } return max } ////////////////////////////////////////////////////////////////////////////////////////////////////////// int RedValue(Board b, int depth, int alpha, int beta) { if ((GameOver(b) or depth>MaxDepth) return Analysis(b) Trò chơi Dodgem Page Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO int = infinity for each legal move m in board b { copy b to c make move m in board c int x = BlueValue(c, depth+1, alpha, beta) if (x[...]... diện chính của trò chơi sẽ hiện lên: Trò chơi Dodgem Page 17 Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Phần 6: Kết luận Qua môn học và trong quá trình tìm hiểu để thực hiện đề tài này, nhóm em đã có cái nhìn toàn diện hơn trong việc ứng dụng trí tuệ nhân tạo vào giải quyết vấn đề trong thực tế Dodgem là một trò chơi ứng dụng tốt 2 thuật toán MINIMAX và Alpha beta Prunning Tuy nhiên trong quá trình thực hiện... vào Game - chọn New Game  Để xem hướng dẫn Cách chơi bạn vào Help  chọn Cách chơi Sau khi vào New Game, 1 Form mới sẽ hiện ra Ở Form này bạn có thể chọn các chức năng của trò chơi như: kích thước của bàn cờ (tối đa là 15*15) , lượt chơi và Cấp độ khó dễ (Level) Sau khi chọn xong tất cả các Tùy chọn, để bắt đầu vào chơi bạn Click vào Button Xác nhận Giao diện chính của trò chơi sẽ hiện lên: Trò chơi. .. alpha, int beta) // Hàm tính điểm cho MIN theo thuật toán Alpha beta pruning Int MaxVal (int dept, itn alpha , int beta )// Hàm tính điểm cho MAX theo thuật toán Alpha beta pruning Trò chơi Dodgem Page 15 Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Void Getstate () // Lấy trạng thái của bàn cờ Void Setstate () // Thiết lập trạng thái của bàn cờ Byte [] Solve ( byte[] state) // hàm máy tính dùng để tính toán. .. // Trò chơi kết thúc hay chưa Bool Player // Biến xác định lượt chơi là người hay máy Hàm: Void newGame() // Chọn trò chơi mới Void SwitchPlayer() // Đổi lượt chơi Void Check() // Kiểm tra xem trò chơi đã kết thúc chưa, xem ai là // người thắng Trò chơi Dodgem Page 16 Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Phần 5: Giao diện chương trình Đây là giao diện đầu tiên mà bạn thấy khi vào Game  Để bắt đầu chơi. .. không thể tránh khỏi những sai sót và chưa thực sự tối ưu Chúng em mong được sự góp ý của thầy để có thể tiếp tục hoàn thiện hơn trong tương lai Em xin chân thành cảm ơn 1 Những gì đã đạt được:  Biết cách cài đặt được 2 thuật toán MiniMax và Alpha beta pruning  Lập trình Window form với C# 2 Những gì chưa đạt được:  Chưa thực sự tối ưu được hàm lượng giá Trò chơi Dodgem Page 18 Bài tập lớn NHẬP MÔN... giảng trí tuệ nhân tạo – Nguyễn Nhật Quang http://msdn.microsoft.com/en-us/library/52f3sw5c.aspx MSDN library http://en.wikipedia.org/wiki /Alpha- beta_ pruning http://en.wikipedia.org/wiki /Minimax http://www.ocf.berkeley.edu/~yosenl/extras/alphabeta/alphabeta.html Trò chơi Dodgem Page 19 ... đỏ: 5 + 10 = 15, xét các trạng thái khác, ta thấy quân đen Trò chơi Dodgem Page 11 Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO vừa bị cản trực tiếp, vừa bị cản gián tiếp, Quân đỏ được thêm 70 điểm, Vậy KQ cuối cùng là: -10 + 15+70 = 75, tương tự, cho hình số 2 3.2 Hàm đánh giá 2 Hàm đánh giá 2 được cải thiện từ hàm đánh giá 1: Do tiêu chí của bài toán là đưa được hết quân cờ ra ngoài bàn cờ vì vậy mà mỗi... để đưa 1 quân cờ ra ngoài Void CellClick( int x, int y) // Xử lý sự kiện khi click vào 1 ô trên bàn cờ Void DisableOthers() // Chuyển trạng thái của 1 ô sau 1 nước đi Void UpdateCell() // Cập nhật bàn cờ Public Grid(int N) // phương thưc khởi tạo dung để khởi tạo bàn cờ, cho điểm các ô Void DrawCell() // Vẽ ô Trò chơi Dodgem Page 14 Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Public GetState() // Lấy trạng... Trạng thái của 1 ô Bool selected; // Xem 1 ô đã được chọn hay chưa Hàm: Public Cell ( char type, int x, int y ) // Phương thức khởi dựng Void state (char type ) // Xác định trạng thái của 1 ô 4.2 Grid Trò chơi Dodgem Page 13 Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Biến : Int x, y // Tọa độ của 1 ô Int n // Kích thước của bàn cờ Char[,] State // Trạng thái của 1 ô tính theo tọa độ x,y Int [,] redpoint // Điểm... một giá trị nhất định Ngoài phần cho điểm như hàm đánh giá 1 thì với mỗi quân Đen (quân Đỏ ) được đưa ra ngoài ta sẽ công thêm -85 điểm ( 85 điểm ), vì vậy ta sẽ cho điểm các ô bên ngoài như sau: Trò chơi Dodgem Page 12 Bài tập lớn NHẬP MÔN TRÍ TUỆ NHÂN TẠO Phần 4 : Cài đặt chương trình Chương trình được cài đặt bằng ngôn ngữ C# gồm các Class như sau: 4.1 Cell Là 1 là 1 dẫn xuất của lớp PictureBox

Ngày đăng: 10/06/2016, 06:54

Từ khóa liên quan

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

Tài liệu liên quan