Báo cáo AI

April 26, 2017 | Author: Duong le Bac | Category: N/A
Share Embed Donate


Short Description

Download Báo cáo AI...

Description

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: 1. 2. 3. 4.

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 1

Bài tập lớn

NHẬP MÔN TRÍ TUỆ NHÂN TẠO

LỜI NÓI ĐẦU

Đây là tài liệu dùng để biểu diễn cơ bản thiết kế và xây dựng “Trò chơi Dodgem” sử dụng thuật toán MiniMax và Alpha beta pruning do nhóm em thiết kế và lập trình. Tài liệu này giúp ta có cái nhìn toàn vẹn về các chức năng của phần mềm cũng như ứng dụng thuật toán MiniMax và Alpha beta prunning để giải quyết bài toán này. Do thời gian có hạn nên đồ án không thể tối ưu được toàn bộ các trạng thái bài toán. Tuy nhiên, nhóm sẽ nghiên cứu hoàn thiện trong thời gian sớm nhất. Nhóm thực hiện đề tài nhằm mục đích xây dựng một trò chơi ứng dụng giải trí và có tính “ nhân tạo “ khá cao. Trong quá trình thực hiện đề tài không tránh khỏi những sai sót, nhóm em mong sẽ nhận được sự góp ý và đánh giá của thầy.

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

Trò chơi Dodgem

Page 2

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...................................................................................... 4 Phần 2 : Thuật toán MiniMax và Alpha beta pruning ..........................................................5 2.1 Thuật toán MiniMax ..................................................................................................... 5 2.2 Thuật toán Alpha beta pruning...................................................................................... 7 3.1 Hàm đánh giá 1........................................................................................................... 11 3.2 Hàm đánh giá 2........................................................................................................... 12 Phần 4 : 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 3

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 là một chess game, giống như cờ Caro hay cờ tướng… Mỗi game đều có 2 người chơi. Một người là Min, người còn lại sẽ là Max. Hai người chơi sẽ thay phiên nhau đưa ra các nước đi của mình theo một quy luật nào đó. Trò chơi Dodgem game được tạo ra gồm có hai quân Đen và hai quân Đỏ được xếp vào bàn cờ 3*3 (hình vẽ).

Luật chơi:  Quân Đen: được phép đi lên trên, sang phải hoặc xuống dưới.Quân Đen có thể được đưa ra ngoài khi ở cột ngoài cùng bên phải.

 Quân đỏ: được phép đi lên trên, sang trái hoặc sang phải.Quân Đỏ có thể đưa được ra ngoài khi ở hàng trên cùng của bàn cờ. Trò chơi kết thúc khi 1 trong 2 người chơi đưa được hết các quân cờ của mình ra ngoài hoặc chặn không cho quân đối phương di chuyển (thì được coi là chiến thắng).

Trò chơi Dodgem

Page 4

Bài tập lớn

NHẬP MÔN TRÍ TUỆ NHÂN TẠO

Phần 2 : Thuật toán MiniMax và Alpha beta pruning 2.1 Thuật toán MiniMax Nguyên lý:  Một chiến lược tối ưu là một chuỗi các nước đi giúp đưa đến trạng thái đích mong muốn.  Chiến lược của MAX bị ảnh hưởng ( phụ thuộc ) vào các nước đi của MIN – và ngược lại  MAX cần chọn một chiến lược giúp cực đại hóa giá trị của hàm mục tiêu – với giả sử là MIN đi các nước đi tối ưu  Chiến lược này được xác định bằng việc xét các giá trị MINIMAX đối với mỗi nút trong cây biểu diễn trò chơi  MAX chọn các nước đi tương ứng với giá trị MINIMAX cực đại ( MIN chọn cá nước đi ứ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 các thủ tục đệ quy, gồm 2 hàm, MaxVal() đại diện cho Quân Đen, nhằm tìm nước đi tối ưu cho mình ( Max(children) ), ngược lại, MinVal() đại diện cho Quân Đỏ, tìm Min(Children) cho mình.

Trò chơi Dodgem

Page 5

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 min = vô cung lon for moi vi tri cua quan den { 1. Di chuyen sang o lan can 2. IF (dept = maxdept ) p=getpoint() ; 3. Else p=MaxVal ( dept +1, beta) 4. If ( beta >= p ) beta =p; 5. 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 do { 1. Di chuyen sang o lan can 2. IF (dept = maxdept ) p=getpoint() ; 3. Else p=MinVal ( dept +1, beta) 4. If ( alpha = 3. Chẳng hạn, trong cờ vua, nhân tố nhánh trong cây trò chơi trung bình khoảng 35, thời gian đòi hỏi phải đưa ra nước đi là 150 giây, với thời gian này trên máy tính thông thường chương trình của bạn chỉ có thể xem xét các đỉnh trong độ sâu 3 hoặc 4. Một người chơi cờ tr.nh độ trung bình cũng có thể tính trước được 5, 6 nước hoặc hơn nữa, và do đó chương trình của bạn mới đạt trình độ người mới tập chơi! Khi đánh giá đỉnh u tới độ sâu h, một thuật toán Minimax đòi hỏi ta phải đánh giá tất cả các đỉnh của cây gốc u tới độ sâu h. Song ta có thể giảm bớt số đỉnh cần phải dánh giá mà vẫn không ảnh hưởng gì đến sự đánh giá đỉnh u. Phương pháp cắt cụt alpha-beta cho phép ta cắt bỏ các nhánh không cần thiết cho sự đánh giá đỉnh u.

Tư tưởng của kỹ thuật cắt cụt alpha-beta là như sau: Nhớ lại rằng, chiến lược tìm kiếm Minimax là chiến lược tìm kiếm theo độ sâu. Giả sử trong quá trính tìm kiếm ta đi xuống đỉnh a là đỉnh Trắng, đỉnh a có người anh em v đã được đánh giá.

Trò chơi Dodgem

Page 7

Bài tập lớn

NHẬP MÔN TRÍ TUỆ NHÂN TẠO

Giả sử cha của đỉnh a là b và b có người anh em u d. được đánh giá, và giả sử cha của b là c(Xem hình trên). Khi đó ta có giá trị đỉnh c (đỉnh Trắng) ít nhất là giá trị của u, giá trị của đỉnh b (đỉnh Đen) nhiều nhất là giá trị v. Do đó, nếu eval(u) > eval(v), ta không cần đi xuống để đánh giá đỉnh a nữa mà vẫn không ảnh hưởng gì dến đánh giá đỉnh c. Hay nói cách khác ta có thể cắt bỏ cây con gốc a. Lập luận tương tự cho trường hợp a là đỉnh Đen, trong trường hợp này nếu eval(u) < eval(v) ta cũng có thể cắt bỏ cây con gốc a. Cụ thể hơn, ta có hình bên dưới

Trong khi, ta đang cố tìm giá trị cho A, Chúng ta đi xuống B, và tìm được giá trị là 6 là Min(6,9). Sau đó, ta đi qua C. Từ đó, chúng ta tính được E là 4 là Max(4,-2). Do đó, C là nhỏ hơn,Ngay tại lúc này ta biết được giá trị của C là 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 9

Bài tập lớn

NHẬP MÔN TRÍ TUỆ NHÂN TẠO

int min = 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
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF