1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn học phần trí tuệ nhân tạo xây dựng trò chơi cờ caro

12 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Trí Tuệ Nhân Tạo Xây Dựng Trò Chơi Cờ Caro
Tác giả Phan Ha Mai Linh
Người hướng dẫn Nguyễn Duy Trưởng
Trường học Trường Đại Học Hàng Hải Việt Nam
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo Cáo Bài Tập Lớn
Định dạng
Số trang 12
Dung lượng 1,03 MB

Nội dung

Trong game có sử dụng thuật toán MiniMax với độ sâu là 4 và thuật toán cất cụt alpha-beta để giảm thời gian tính toán.. Tài liệu này giúp ta có một cái nhìn tổng quát v`êviệc áp dụng thu

Trang 1

BO GIAO THONG VAN TAI TRUONG DAI HOC HANG HAI VIET NAM

`

`

y

/

Qe)

KHOA CONG NGHE THONG TIN

BAO CAO BAI TAP LON HOC PHAN :TRI TUE NHAN TAO

XÂY DỰNG TRÒ CHƠI CỞ CARO

Giảng viên bộ môn:Nguyễn Duy Trưởng Giang

Sinh viên thực hiện:

Phan Ha Mai Linh — MSV: 83741

Trang 2

L

Il

II

IV

V

¬—— EEE EEE EEE CELE EE EEE EEE LE EEE CEE E EEE; GLEE EGE; E ERG EE OE tEE Ere ee nen eaeeen ens 3

Giới thiệu đ Êtài “Game CarO”” c0 0Q 0n HH HH TH TH TH ng nh nh nh ch cư 4 Thuật toán MiniMax và thuật toán cất cụt Alpha-Beta con 4

1 Thuật toán MiniMax c2 nn SH rxt 4

2 Thuật toán cất cụt FT) 0 al 0 ch Xe 5

3 Hàm đánh giá QQ TT SE» TH nh nh nh hen 7 Cài đặt chương trình - con HT HS nh nen ko nh ch He cà nà vự 7

SEN uN‹-‹d::diddaaaiaa4ä4 9

Giao diện chương trình -.- n2 HS SH ST TH HT BE nh HE nh ke hy 10 Kết luận

Trang 3

Loi me di

Hiện nay, việc ứng dụng trí tuệ nhân tạo vào việc phát triển game đã trở nên vô cùng phổ biến, đặc biệt

là những game mang tính trí tuệ cao Và cở Caro là một game như vậy Chính vì lý do đó mà em đã quyết định lựa chọn co Caro lam dé tai cho bai tap lớn môn trí tuệ nhân tạo Đây là tài liệu dùng để miêu

tả một cách cơ bản v`ềviệc xây dựng game cở Caro Trong game có sử dụng thuật toán MiniMax với độ sâu là 4 và thuật toán cất cụt alpha-beta để giảm thời gian tính toán Tài liệu này giúp ta có một cái nhìn

tổng quát v`êviệc áp dụng thuật toán MiniMax và cất cụt alpha-beta vào game cở Caro Do thởi gian có hạn nên em chưa thể tối ưu được các thuật toán sử dụng trong game, nhưng em sẽ cố gắng hoàn thiện

trong thởi gian sớm nhất Em thực hiện đềtài này với mục đích xây dựng game Caro có tính nhân tạo

cao Tuy nhiên trong quá trình thực hiện không thể tránh khỏi có những sai sót, chúng em rất mong nhận

được những góp ý và đánh giá của th ¥

Trang 4

I.Giới thiệu đềtài “Game Caro”

Game g ồn có 2 người chơi, một người cần quân X, một người cần quân O Hai người chơi sẽ LẦn lượt đưa đánh quân tương ứng của mình trên một ban co’ MXN 6 (thuong thi M = N)

Luật chơi:

Quân X là quân được đánh trước Hai người chơi có thể đánh vào bất kỳ ô nào trên bàn cở miễn là ô đó

chưa được đánh Trò chơi kết thúc khi một trong hai người chơi có 5 quân thẳng hàng liên tiếp nhau

(ngang dọc hoặc chéo) Dưới đây là bàn cở caro kích thước 15x15

IILThuât toán MiniMax và thuật toán cắt cụt Alpha-Beta

1.Thuật toán MiniMax

a Nguyên lý:

Có 2 người chơi là Min và Max

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 MỊN —và ngược lại

MAX c3 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

Trang 5

O MAX chon cac nuce đi tương ứng với giá trị MINIMAX cực dai ( MIN chọn các nước đi ứng với giá trị MINIMAX cực tiểu

Áp dụng vào game Caro:

Người chơi cân quân X đóng vai trò như Max, người chơi cần quân O đóng vai trò như Min

Để quyết định nước đi tiếp theo, ta xây dựng một thủ tục đệ quy gân 2 hàm max_ value() để tìm nước đi tiếp theo cho quân X, min_valueQ để tìm nước đi tiếp theo cho quân O Để giảm thoi gian của giải thuật đệ quy, ta giới hạn độ sâu của giải thuật bang 4

int max_value(state s, int dept){

if(terminal_testQ || dept >= 4) return eval(s);

v= -_œ;

for(duyệt tất cả các trạng thái con s” của s)4

Vv = max(v, min_value(s’, dept + 1));

return v;

t

int min_value(state s, int dept){

if(terminal_test() Il dept >= 4 ) return eval(s);

v= +0;

for(duyệt tất cả các trạng thái con s” của s)4

Vv = min(v, max_value(s’, dept + 1));

return v;

Hàm xác định trạng thái kết thúc terminal_ testQ:

Hàm có nhiệm vụ xác định xem trò chơi có kết thúc hay không khi một quân cở được đánh thêm vào Hàm hoạt động như sau:

[1 Từ vị trí thêm quân cở, kiểm tra theo các chỉ ti ngang, dọc, chéo(ví dụ kiểm tra theo

chỉ li ngang: giả sử quân co đánh vào là X, duyệt theo hướng bên trái cho đến khi gặp quân O hoặc tưởng thì đừng lại, tiếp tục duyệt theo hướng bên phải tương tự để xác định

số quân X liên tiếp nhau)

H1 Nếu số quân X (hoặc ©) liên tiếp là 5 thì trả lại giá trị true, ngược lại trả v`êgiá trị false

2 Thuật toán cắt cụt alpha-beta

Trong chiến lược Minimax với độ sâu hạn chế thì số đỉnh của cây trò chơi phải xét vẫn còn rất lớn với h>=3 Khi đánh giá đỉnh utới độ sâu h, thuật toán Minimax đồi hỏi phải đánh giá tất cả các đỉnh của cây gốc u với độ sâu h Tuy nhiên, phương pháp cắt cụt alpha-beta cho phép cất bỏ 5

Trang 6

những nhánh không cân thiết cho việc đánh giá đỉnh u Phương pháp này làm giảm bớt số đỉnh phải xét mà không ảnh hưởng đến kết quả đánh giá đỉnh u Ý tưởng: Giả sử tại thời điểm hiện tại đang ở đỉnh Trắng a, đỉnh a có anh em là v đã được đánh giá Giả sử cha của đỉnh a là b, b có

anh em là u đã được đánh giá, và cha của b là c như hình sau:

max

Q

Khi đó, ta có giá trị đỉnh Trắng c ít nhất là giá trị của u, giá trị của đỉnh Đen b nhi `âi nhất là giá trị của v Do đó, nếu eval(u) > eval(v) ta không c3n đi xuống để đánh giá đỉnh a nữa mà vẫn không ảnh hưởng đế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, trường hợp này nếu eval(u)<eval(v) ta cũng cất bỏ cây con gốc a Để cài đặt kỹ thuật này, đối với các đỉnh nằm trên đường đi từ gốc tới đỉnh hiện thời, ta sử dụng tham số œ để ghi lại giá trị lớn nhất trong các giá trị của các đỉnh con đã đánh giá của một đỉnh Trắng, tham số ÿ để ghi lại giá trịnhỏ nhất trong các giá trị của các đỉnh con đã đánh giá của một đỉnh Đen

int max_value(state s, int dept, int alpha, int beta){

if(terminal_test() || dept >= 4) return eval(s);

v=-®;

for(duyệt tất cả các trạng thái con s” của s)4

Vv = max(v, min_value(s’ , dept + 1, alpha, beta));

if(v > beta) return v;

alpha = max(alpha, v);

return v;

}

int min_value(state s, int dept, int alpha, int beta) {

if(terminal_test() || dept >= 4 ) return eval(s);

v=+®;

for(duyệt tất cả các trạng thái con s” của s)4

Vv = min(v, max_value(s’ , dept + 1, alpha, beta));

Trang 7

if(v < alpha) return v;

beta= min(beta, v);

return v;

3 Hàm đánh giá

Hàm đánh giá là một hàm quan trọng trong việc xây dựng trò chơi cở caro Hàm này giúp cho điểm trạng thái của bàn cở để từ đó xây dựng cây trò chơi Việc xây dựng hàm lượng giá hợp lý, chính xác sẽ giúp cho hệ thống có đánh giá chính xác v êtrang thái bàn cở để đưa ra nước đi thông minh hơn

Trong game caro, để tính điểm cho trạng thái bàn cờ ta đưa ra các tiêu chí sau:

-In32.MAX_VALUE đối với O

[1 Trong trưởng hợp có nước 3, điểm cộng sẽ là +300 đối với X và -300 đối với O [1 Trong trưởng hợp có nước 4, điểm cộng sẽ là +600 đối với X và -600 đối với O

IH Cài đặt chương trình

Chương trình g ồn các lớp như sau:

1.Lớp Board

COLUMN: int {readOnly}

ROW: int {readOnly}

PieceState{ Null, X, O , Invalid}: enum

boardState: PieceState[]

GetPieceAt(int, int) : PeceState

IsOccupied(int, int) : boolean

saddPiece(int, int, PieceStste) : boolean

IsWinner(PieceState) : boolean

Là lớp để lưu lại trạng thái của bàn co

Biến:

lệ)

[1 boardState: là một mảng lưu lại các trạng thái của các quân cở byte[] boardState;

Hàm:

7

Trang 8

[1 IsOccupiedQ: Xác định xem tại một vị trí xác định đã có quân co nào được đánh chưa

[1 IsWinnerQ: Kiểm tra trạng thái hiện tại của bàn cở đã kết thúc chưa

2.Lớp CaroAI

CaroAl

+ MINMAX_DEPTH: int {readOnly}

numMoves: int

numComparsons: ínt

computerPiece: PieceStste

pisyerPiece: PieceStste

MiniMax(Node, int, int, int, boo!) : Result

GetMove(Board) : Move

Bién

O MINMAX_DEPTH: dé sau cta giai thuat MiniMax numMoves,

thuật MiniMax (dùng để đánh giá thuật toán)

hay O)

Ham:

MinimaxHelper(Q: xác định nếu thêm một quân cở vào trạng thái hiện tại của bàn cở có

làm trạng thái hiện tại trở thành trạng thái kết thúc hay không, nếu không thì sử dụng giải

thuật MiniMax

MiniMaxQ: cài đặt giải thuật MiniMax

private Result MiniMax(Node node, int depth, int alpha, int beta, bool needMax) {

if (depth <= 0 || node.IsTerminalNode()) {

var result = new Result();

var score = node.GetObjective Value(computerPiece);

result.setScore(score);

return result;

var best = new Result();

foreach (var child in node getChildrenQ) {

Trang 9

var score = result2.getScore();

numComparisons++;

if (needMax) {

if (score > alpha) {

alpha = score;

best = new Result();

best.add(child);

best.addAll(result2.gameNodes);

if (beta <= alpha) {

break;

} else {

if (score < beta) {

best = new Result);

best.add(child);

best.addAll(result2.gameNodes); beta = score;

if (beta <= alpha) {

break;

var retval = needMax ? alpha : beta;

best.setScore(retval);

return best;

3.Lớp Result

gameNodes: Node[]

GetMove() : Move

getScore() : int

setScore() : int

sdd(Node) : void

sddAlWArrayList) : void

Trang 10

10

Bién:

Hàm:

IV Giao diện chương trình

1 Giao diện khi vào game

RE

“oo

2 Giao dién khi choi

Trang 11

11

3 Giao diện khi chiến thắng

jiic»- coong,

De

| Player

V Kết luận

Trang 12

12

hơn v`Êviệc ứng dụng trí tuệ nhân tạo trong việc giải quyết các vấn đ'ềtrong thực tế Game cở caro là một game ứng dụng rất tốt thuật toán Minimax và cắt cụt alpha-beta

Tuy nhiên do hạn chế v`ềmặt thời gian nên em chưa thể tối ưu được thuật toán, hàm tính

điểm cũng chưa thật sự được tốt như mong đợi, cũng như trong quá trình thực hiện không thể tránh khỏi sai sót Em rất mong nhận được sự góp ý của th%% để game được thật sự

hoàn thiện

Em xin chân thành cảm ơn:

1 Những đi`âi thu được trong quá trình thực hiên:

O Cài đặt được hai thuật toán trên

2 Những đi âi còn thiếu sót:

Ngày đăng: 06/02/2025, 16:13

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN