1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

28 2 0
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 đề Xây Dựng Chương Trình Trí Tuệ Nhân Tạo Cho Trò Chơi Cờ Vua
Tác giả Nguyễn Đức Bảo, Lê Anh Tú, Dương Xuân Hợp
Người hướng dẫn GV. Nguyễn Duy Trường Giang
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
Năm xuất bản 2024-2025
Thành phố Hải Phòng
Định dạng
Số trang 28
Dung lượng 665,26 KB

Nội dung

Thông qua việc xây dựng một phần mềm trò chơi cờ vua dựa trên trí tuệ nhân tạo, nhóm chúng tôi không chỉ nâng cao kiến thức cá nhân về AI, mà còn đóng góp vào việc phát triển các ứng dụn

Trang 1

GVHD: Gv Nguyễn Duy Trường Giang

Sinh viên thực hiện: Nguyễn Đức Bảo – Mã SV: 95057

Lê Anh Tú – Mã SV: 95213

Dương Xuân Hợp – Mã SV: 96645

Trang 2

Hải Phòng, tháng 10 năm học 2024-2025

Trang 3

Danh mục các từ viết tắt, thuật ngữ:

1 AI: Artifical Intelligence

2 IBM: International Business Machines Corporation

3 PVS: Principle Variation Search

4 UCI: Universal Chess Interface

5 LMR: Late Move Reduction

Trang 4

LỜI MỞ ĐẦU

Trong thời đại công nghệ phát triển mạnh mẽ, các lĩnh vực liên quan đến trí tuệ nhân tạo (AI) đã và đang trở thành xu hướng hàng đầu trong nghiên cứu và ứng dụng Trong bối cảnh đó, tiểu luận này mang ý nghĩa vô cùng quan trọng, không chỉ giúp chúngtôi tìm hiểu sâu hơn về công nghệ AI, mà còn mở ra cơ hội áp dụng những lý thuyết tiên tiến vào thực tiễn Thông qua việc xây dựng một phần mềm trò chơi cờ vua dựa trên trí tuệ nhân tạo, nhóm chúng tôi không chỉ nâng cao kiến thức cá nhân về AI, mà còn đóng góp vào việc phát triển các ứng dụng thông minh phục

vụ nhu cầu giải trí và học tập của con người

Lý do chọn đề tài là vì trò chơi cờ vua từ lâu đã được coi là một biểu tượng của tư duy chiến lược và sự phát triển trí tuệ Cờ vua không chỉ là một môn thể thao trí tuệ mà còn là một thử thách đối với cả người chơi lẫn máy tính Khi kết hợp với trí tuệ nhân tạo, việc xây dựng một phần mềm cờ vua giúp tái hiện lại các chiến thuật và động thái phức tạp của trò chơi, đồng thời cho phép phát triển các chiến lược AI thông minh hơn Chính từ mongmuốn khám phá sự kết hợp giữa AI và cờ vua, tiểu luận này đã được lựa chọn với hy vọng mang lại một góc nhìn mới mẻ về lĩnh vực này

Để hoàn thành tiểu luận này, nhóm tôi xin gửi lời cảm ơn sâu sắc đến giáo viên hướng dẫn, người đã không ngừng hỗ trợ và định hướng trong suốt quá trình nghiên cứu Những ý kiến đóng góp quý báu và sự chỉ dẫn tận tình của thầy đã giúp tôi vượt qua

nhiều khó khăn, mở rộng tầm hiểu biết về chủ đề này Tôi cũng xin cảm ơn các bạn bè và những người thân đã luôn tạo điều kiện thuận lợi, khuyến khích và hỗ trợ tôi về tinh thần cũng như vật chất trong suốt thời gian hoàn thành tiểu luận

Trang 5

Bố cục của tiểu luận này gồm bốn phần chính Phần đầu tiên giới thiệu tổng quan về trí tuệ nhân tạo, từ các khái niệm cơ bản đến lịch sử phát triển và những ứng dụng quan trọng Phần thứ hai đi sâu vào việc phân tích cấu trúc, thiết kế và các thuật toán liên quan đến phần mềm cờ vua AI Phần ba là giới thiệu về ngôn ngữ

mà nhóm tôi dùng để thực hiện chủ đề này Cuối cùng, phần bốn

là những đánh giá về khả năng phát triển trong tương lai và

những thách thức khi áp dụng AI vào các trò chơi trí tuệ, đồng thời đề xuất những cải tiến cho dự án trong các nghiên cứu tiếp theo

Với mục tiêu cung cấp một cái nhìn toàn diện về ứng dụng của trítuệ nhân tạo trong trò chơi cờ vua, tiểu luận hy vọng sẽ mang lại những giá trị hữu ích cho những ai quan tâm đến lĩnh vực này Qua đó, tôi mong rằng sẽ đóng góp được phần nào vào sự phát triển của công nghệ AI và các ứng dụng của nó trong cuộc sống

Trang 6

MỤC LỤC

Danh mục các từ viết tắt, thuật ngữ: 1

Chương 1: Cơ sở lý thuyết 7

1.1 Giới thiệu 7

1.1.1 Cờ vua (Chess) 7

1.1.2 Ảnh hưởng của trí tuệ nhân tạo với cờ vua 7

1.2 Cơ sở lý thuyết 8

1.2.1 Minimax và cây trò chơi 8

1.2.2 Cắt tỉa Alpha-Beta 9

1.2.3 Iterative Deepening (tìm kiếm sâu dần) 10

1.2.4 Bảng trạng thái 11

1.2.5 Phương án chính và tìm kiếm phương án chính 12

1.2.6 Mở rộng tìm kiếm 12

1.2.7 Nước đi huỷ diệt 12

1.2.8 Giao thức UCI 13

1.2.9 Giảm bớt nước đi cuối 13

Chương 2: PHÂN TÍCH BÀI TOÁN 14

2.1 Giao diện người dùng và luật chơi cờ vua 14

2.2 Bot cờ vua 15

2.2.1 Tổng điểm của quân cờ trên bàn cờ 15

2.2.2 Hàm đánh giá 16

Trang 7

Chương 3: Ngôn ngữ thực hiện 18

3.2 Thư viện chính hỗ trợ cờ vua 18

Chương 4: Các kết quả đạt được 20

4.1 Thực hiện chương trình Giao diện trạng thái ban đầu: Một bàn cờ vua có 2 bên trắng và đen Người dùng có thể chọn tự chơi với bot hay chọn để cho engine tự chơi với nhau thông qua các phím với các cấp độ khác nhau 20

4.2 Đánh giá chương trình 22

KẾT LUẬN 23

Tài liệu tham khảo 25

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Giới thiệu

1.1.1 Cờ vua (Chess)

Cờ vua, được biết đến với tên gọi tiếng Anh là "chess," là một trò chơi đối kháng trí tuệ chơi trên bảng dành cho hai người Xuất phát từ những trò chơi cổ có nguồn gốc từ Ấn Độ và Ba Tư, cờ vua đã trải qua một quá trình phát triển dài lâu để trở thành trò chơi như ngày nay Đặc biệt, vào nửa sau của thế kỷ 15, cờ vua lan rộng và được chơi nhiều phổ biến ở Nam Âu

Trang 8

Hình 1.1

Trò chơi diễn ra trên một bàn cờ vuông chia thành 64 ô, với mỗingười chơi điều khiển một quân đội bao gồm tốt, mã, tượng, xe, hậu

và vua Mục tiêu chính của người chơi là chiếu hết vua đối phương

1.1.2 Ảnh hưởng của trí tuệ nhân tạo với cờ vua

Trong thế kỷ 20 và đặc biệt là thế kỷ 21, sự phát triển của trí tuệnhân tạo đã đánh dấu một cột mốc quan trọng trong lịch sử cờ vua,biến những trò chơi đấu trí truyền thống giữa người và người thànhcuộc đấu giữa con người và máy tính Một số sự kiện đáng chú ý đãchứng kiến sức mạnh đáng kinh ngạc của máy tính trong trò chơinày

Đối mặt với một trong những đại kiện tướng cờ vua hàng đầu thếgiới, Deep Blue, máy tính của IBM, đã tạo nên lịch sử khi chiếnthắng ván đầu tiên trong một trận đấu 6 ván với Garry Kasparovvào năm 1996 Bất ngờ không chỉ dừng lại ở đó khi Deep Blue táiđấu với Kasparov vào năm 1997 và giành chiến thắng chung cuộc,điều này đã chứng kiến sức mạnh trí tuệ vượt trội của AI

AlphaZero của DeepMind, một cơ sở thuộc sở hữu của Google,tiếp tục làm chao đảo cộng đồng cờ vua khi nó tự học và đánh bại

Trang 9

một trong những chương trình cờ mạnh mẽ nhất thế giới, Stockfish,

mà không cần bất kỳ dữ liệu cờ vua trước đó

Năm 2021, Stockfish đã thể hiện sức mạnh của mình khi đánhbại một loạt các đại kiện tướng thế giới trong một sự kiện độc đáo

Sự kiện này đặt ra những thách thức mới và khám phá sự cân bằnggiữa con người và trí tuệ nhân tạo trong thế giới đầy chiến thuật vàsáng tạo của cờ vua

Ngày nay, cờ vua không chỉ là một trò chơi giải trí tại nhà mà còn

là một bộ môn thể thao trí tuệ tại các câu lạc bộ và giải đấu trêntoàn thế giới Cờ vua thu hút hàng triệu người chơi, không chỉ trongcác buổi chơi gia đình mà còn thông qua các nền tảng trực tuyến vàcác giải đấu lớn tổ chức khắp nơi trên thế giới Sự kết hợp giữachiến thuật tinh tế và sự tính toán chiến lược làm cho cờ vua trởthành một trong những trò chơi giáo dục và giải trí hàng đầu thếgiới

1.2 Cơ sở lý thuyết

Mục tiêu của nhóm là xây dựng một chương trình AI cờ vua đồhọa đơn giản có thể chơi với người chơi ở mức khá thông qua việc

sử dụng phương pháp đã được học trong môn học Trí tuệ nhân tạo

và tìm hiểu trên các nền tảng khác nhau : Minimax, cắt tỉa Beta, Iterative Deepening (tìm kiếm sâu dần), sắp xếp nước đi(move ordering), tìm kiếm phương án chính (principle variationsearch - PVS), nước đi huỷ diệt (killer moves), bảng trạng thái(transposition table)

1.2.1 Minimax và cây trò chơi

Minimax là một thuật toán quyết định giúp máy tính đưa

ra quyết định

trong môi trường chơi có tính cạnh tranh Nó dựa trên ý tưởng của hai đối thủ, một

Trang 10

tìm kiếm để tối đa hóa giá trị, và một để tối thiểu hóa.

Cây trò chơi đại diện cho toàn bộ không gian trạng thái và các lựachọn có thể có được thực hiện tại mỗi trạng thái Mỗi nút của câybiểu diễn một trạng thái trong trò chơi và mỗi cạnh biểu diễn mộtlựa chọn khả dụng

Hình 1.2 Sơ đồ thuật toán Minimax

Trang 11

số các nước đi không được xét đến, chương trình sẽ đảo nước đi có vẻ tốt lên đầu Kĩthuật này được gọi là sắp xếp nước đi (move ordering) Khác với thuật toán tốt nhất đầutiên (best-first) hay thuật toán leo đồi (hill climbing), chúng ta sẽ sắp xếp các toán tử(nước đi) thay vì các trạng thái (thế cờ).

Hình 1.3 Ví dụ thuật toán minimax cắt tỉa Alpha-Beta

Trang 12

1.2.3 Iterative Deepening (tìm kiếm sâu dần)

Thay vì tìm kiếm cố định ở độ sâu 3, ta sẽ tìm kiếm ở độ sâu 1, rồi độ sâu 2, cho đến khiđạt giới hạn (về độ sâu, về thời gian hay do yêu cầu bên ngoài) Tổng thời gian của cáclần lặp trước thực ra chỉ bẳng một phần so với lần lặp sâu nhất, cho nên thời gian phátsinh thêm là không quá nhiều Thuật toán cũng cho phép ta lưu trữ 1 số thông tin từ lầnlặp trước để áp dụng vào việc sắp xếp nước đi ở lần lặp sau Nó giống như một bộ phim

về vòng lặp thời gian vậy:

Nhân vật chính vì thua một ván cờ vua nên bị giết chết Tuy nhiên, anh ta đã không chết mà lại quay trở về đúng lúc chuẩn bị đi ở nước đi thứ 69 Vì nhớ được mình

đã thua như thế nào, anh ta quyết định đi nước cờ khác Tuy nhiên, đối thủ vẫn đi nước

cờ giống hệt như lần trước và anh ta vẫn thua Tưởng như đã chết, anh ta lại quay trở về lúc mình sắp đi nước thứ 69 Rút kinh nghiệm, lần này anh ta quyết định suy nghĩ xem đối phương sẽ đi như thế nào nếu mình đi nước này, nước kia; và rồi chọn ra 1 nước đi khác Đối thủ thấy chiến thuật của mình bị phát hiện, liền thay đổi sang chiến thuật khác Nhân vật chính do không lường trước điều này nên vẫn thua cuộc Anh ta lại bị đưa về trước khi đi nước thứ 69 Điều này cứ lặp đi lặp lại cho đến khi anh ta hoà cờ hoặc thắng trện thì mới kết thúc

Tuy nhiên thuật toán này sẽ khiến việc tìm kiếm trở nên mất thời gian hơn bởi có nhiềunút sẽ được duyệt nhiều lần, gây lãng phí thời gian khả năng tính toán

để làm việc này:

Trang 13

 Cách 1: Chuyển thế cờ thành xâu FEN rồi dùng xâu này làm khoá, vì xâu trong Python hỗ trợ băm FEN là Forsyth–Edwards Notation (kí hiệu Forsyth–

Edwards), là một cách để biểu diễn thế cờ bằng kí hiệu (VD:

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1)

 Cách 2: Dùng hàm băm Zobrist (Zobrist hashing) để chuyển thế cờ thành 1 sốnguyên, rồi dùng nó để làm khoá Hàm băm Zobrist được dùng ở phần lớn bot cờvua

Trong mã nguồn đã có cài đặt bảng trạng thái, dùng hàm băm Zobrist Tuy nhiên, hàmbăm Zobrist lại chạy khá chậm, giảm được số nút phải xét đến nhưng lại tăng thời giantìm kiếm lên từ 1,3 đến 2 lần Vì vậy, bảng trạng thái mặc định sẽ bị tắt đi

Cập nhật ngày 06/10/2024: Đối tượng Board của thư viện python-chess có sẵn phươngthức _transposition_table() Hàm này trả về một tuple (bộ) chứa các bảng bit, và bămbằng tuple này nhanh hơn nhiều so với hàm băm Zobrist Sau khi điều chỉnh thì bảngtrạng thái mặc định sẽ được bật lên

1.2.5 Phương án chính và tìm kiếm phương án chính

Phương án chính (principle variation - PV) là chuỗi nước đi tốt nhất mà bot tìm được.Giả sử cả 2 bên đều chọn nước đi tốt nhất thì các nước đi này sẽ trùng với phương ánchính Nước đi nằm trong phương án chính gọi là nước đi phương án chính (nước đi PV)Nước đi được chọn ở mỗi lần lặp chính là nước đi đầu tiên của phương án chính Ta sẽdùng phương án chính của lần lặp gần nhất để dẫn hướng cho lần lặp tiếp theo Cần phảichắc rằng phương án chính của lần lặp trước không khác lần lặp này quá nhiều Bằngcách đảo phương án chính lên đầu, ta sẽ cắt tỉa sớm hơn so với trước

Tìm kiếm phương án chính (principle variation search - PVS) là việctận dụng phương án chính của lần lặp trước để cắt tỉa nhiều các nước

đi nhất có thể Thay vì chỉ đơn thuần ưu tiên tìm trong nước đi PV đầutiên, đặt nước đi PV là nước đi tiên quyết, các nước đi còn lại sẽ là nước

đi với độ ưu tiên thấp hơn Ta sẽ thử chứng minh rằng PV là nước đi tốtnhất bằng cách gọi thuật toán tương ứng nhưng với alpha-beta cựchẹp là alpha- alpha+1 (ở nút MAX) Trong alpha-beta, khoảng cách

Trang 14

giữa alpha và beta được gọi là cửa sổ (window); cửa sổ càng hẹp thìcắt tỉa được càng nhiều, nhưng độ chính xác sẽ giảm Thông thường,

ta để cửa sổ ban đầu là vô cực để alpha và beta dần dần thu hẹp lại.Gọi hàm với cửa sổ cực hẹp sẽ nhanh hơn nhiều so với thông thường.Sau bước này nếu phát hiện có nước đi tốt hơn, ta lại gọi hàm với alpha

và beta như thường; nếu không thì dừng tìm kiếm

1.2.7 Nước đi huỷ diệt

Trong cờ vua, có những nước đi tuy không bắt quân nhưng lại doạbắt quân hoặc gây khó dễ cho đối thủ (chẳng hạn như Mã chiếu Hậu

và Tượng cùng lúc) Những nước đi như thế này thường giảm bớt sốnước đi mà đối thủ sẽ lựa chọn (vì đối thủ sẽ ưu tiên chạy Hậu mà bịchậm nhịp phát triển) nên cũng là nước đi khá tốt Nước đi như vậyđược gọi là nước đi huỷ diệt (killer move) Trong thuật toán alpha-beta, nước đi huỷ diệt sẽ gây ra sự cắt tỉa, bỏ qua những nước đi cònlại Vì vậy, mỗi khi có nước đi huỷ diệt ở một thế cờ, ta sẽ lưu nó lại rồinhóm theo số thứ tự của nước đi (ply) Khi sắp xếp các nước đi ở cùngply, ta sẽ xếp nước đi huỷ diệt trước, chỉ sau nước đi PV và nước đi bắtquân

Trang 15

1.2.9 Giảm bớt nước đi cuối

Giảm bớt nước đi cuối (late move reduction - LMR) là việc giảm độ sâutìm kiếm ở các nước đi về sau Giả sử các nước đi được sắp xếp từ tốtnhất đến tệ nhất, nhiều khả năng các nước đi ở nửa sau sẽ khôngmang lại lợi thế lớn cho bên ta Vì vậy từ nước đi thứ n, ta sẽ tìm kiếmvới cửa sổ cực hẹp và độ sâu giảm bớt để giảm số nút cần tìm kiếm.Nếu sau khi tìm với độ sâu giảm bớt mà có nước đi tốt hơn thì ta tiếptục tìm kiếm như thường

CHƯƠNG 2: PHÂN TÍCH BÀI TOÁN 2.1 Giao diện người dùng và luật chơi cờ vua

Nhóm đã lựa chọn thư viện Python python-chess để hỗ trợ việc triển

khai trò chơi Thư viện này cung cấp giao diện đầy đủ để tạo và quản

lý bàn cờ, đồng thời cài đặt tất cả các quy tắc chơi cờ vua một cáchtrực quan và dễ sử dụng Thư viện bao gồm các chức năng như:

 Vẽ bàn cờ, quân cờ

 Hiện quân bị ăn

Trang 16

 Báo vị trí quân chiếu tướng

 Hiện nước đi vừa đi

 Cho phép bot khác đi thay cho người chơi

 Báo thắng, thua, hoà

 Hiệu ứng âm thanh, nhạc nền

 Tốt sẽ luôn phong Hậu

Sơ đồ phím:

 Enter: chơi lại sau khi trò chơi kết thúc

 R: đánh hộ người chơi bằng nước cờ ngẫu nhiên

 F: đánh hộ người chơi bằng thuật toán đơn giản

 M: đánh hộ người chơi bằng thuật toán minimax

 A: đánh hộ người chơi bằng thuật toán alpha-beta

 I: đánh hộ người chơi bằng thuật toán lặp sâu

 P: đánh hộ người chơi bằng thuật toán PVS

 Z: hoàn tác nước đi cuối của người chơi và bot

Sự hỗ trợ mạnh mẽ từ python-chess đã giúp nhóm đơn giản hóa quá

trình phát triển trò chơi, giúp chúng tôi chỉ cần tập trung vào việctriển khai các thuật toán để tìm kiếm nước đi tối ưu Đây là bước tiếnquan trọng để áp dụng các thuật toán đã học vào thực tế

2.2 Bot cờ vua

Để thuật toán hoạt động hiệu quả, chương trình cần phải có các bảng điểm đánh giá bàn

cờ một cách hiệu quả Sau một thời gian, nhóm đã tìm được một số cách khá hay màkhông khiến tăng quá nhiều chi phí tính toán có thể áp dụng cho trò chơi cờ vua và tạo rahàm để đánh giá các thế cờ đó

2.2.1 Tổng điểm của quân cờ trên bàn cờ

Để đánh giá giá trị của từng quân cờ trong trò chơi cờ vua, nhóm đã

sử dụng một hệ thống tính điểm dựa trên cả giá trị cơ sở của quân cờ

và vị trí của nó trên bàn cờ Giá trị cơ sở của mỗi quân cờ được xácđịnh như sau:

Trang 17

Tuy nhiên, không chỉ giá trị cơ sở mà cả vị trí của quân cờ trên bàn

cờ cũng đóng vai trò quan trọng Nhóm đã tạo ra các bảng điểm vị trí(piece square tables) cho từng quân cờ, với các giá trị khác nhau tạimỗi ô vuông trên bàn cờ Điều này giúp đánh giá xem vị trí của quân

cờ có tốt hay không và ảnh hưởng đến chiến lược tổng thể

Ví dụ, đối với quân Tốt, giá trị vị trí sẽ khác nhau tùy theo nó đang ởđâu trên bàn cờ Nếu Tốt tiến lên hàng thứ hai hoặc thứ ba, nó có thể

có giá trị cao hơn so với khi ở hàng cuối cùng:

Hình 2.1 Ma trận thể hiện giá trị của quân Tốt tùy vị trí

Gọi A là ma trận điểm của quân Tốt thì nếu nó ở điểm x, y thì sẽ cóđiểm là 𝐴[𝑥][𝑦]

Các quân khác như Mã, Tượng, Xe, Hậu và Vua cũng có bảng vị trítương tự để xác định giá trị

Ngày đăng: 20/12/2024, 22:37

w