Figure 1: Hình ảnh minh họa game Tetris Cách chơi của game Tetris rất đơn giản, một khối với hình dạng ngẫu nhiên sẽ ất hiệ ở xu n trên cùng của cửa sổ và sẽ rơi xuống với tốc độ đều, nh
Trang 1N h ó m 1 8
ÐẠI HOC BÁCH KHOA HÀ NỘI TRƯỜNG CÔNG NGHỆ THÔNG TIN TRUYỀN VÀ THÔNG
-
BÁO CÁO BÀI TẬP LỚN
NHẬP MÔN TRÍ TUỆ
NHÂN TẠO
Đề tài: Áp dụng AI vào game Tetris
GVHD: Thân Quang Khoát
Nhóm sinh viên thực hiện: Phạm Quang Nghĩa – 20204554
Phạm Thị Hồng Hạnh – 202045 46 Trịnh Minh Hiếu – 20204554 Đào V Thi - ăn ều 2020 4610
Hà nội, tháng 2/2023
Trang 2N h ó m 1 8
Mục lục
1 Công việc của các thành viên nhóm .4
2 Giới thiệu và mô tả bài toán thực tế ợc giải quyết (Hiếđư u) 4
3 Phương pháp được dùng để ải quyết bài toángi .5
a Các đặc trưng được sử dụng 5
a.1 Tổng chiều cao của trạng thái (currentHeight) 5
a.2 Số hàng có thể xóa (lines) 6
a.3 Số hố (currentNumHoles) 6
a.4 Độ gập ghềnh (bumpiness) 6
a.5 Chiều cao của cột cao nhất (currentMaxHeight) 7
a.6 Số hố đư ợc giải phóng (holesFreed) 7
a.7 Số hố đư ợc tạo ra (holesCreated) 7
b Greedy best-first search 7
c Genetic algorithm 8
c.1 Năm đặc trưng đánh giá 8
c.2 Kết hợp các đặc trưng đánh giá 8
c.3 Tối ưu bộ tham số bằng Giải thuật di truyền 8
c.3.1 Hàm fitness 9
c.3.2 Tournament selection 9
c.3.3 Crossover 9
c.3.4 Mutation 9
c.3.5 Delete-n-last replacement 10
d Game Tetris 10
4 Chức năng chính của hệ thống 12
5 Các phương pháp, gói phần mềm, dữ ệu,… có sẵn được sử dụli ng 14
6 Các vấn đề gặp phải và cách giải quyết 14
7 Kết luận 14
a Đánh giá Greedy Best-first search (Hạnh) 14
b Đánh giá Genetic algorithm 16
c Một số kết luận chung khác: 18
8 Đề ất hướng phát triểxu n: 19
9 Tài liệu tham khảo: 19
Trang 3N h ó m 1 8
Figure 1: Hình ảnh minh họa game Tetris 4
Figure 2: Hình ảnh minh họa game AI Tetris do chúng em xây dựng 5
Figure 3: Tổng chiều cao trạng thái 6
Figure 4: Tổng số hố 6
Figure 5: Đô gập ghềnh 7
Figure 6: Mô tả cách áp dụng của thuật toán Greedy best-first search 7
Figure 7: Hàm heuristic ban đầu 8
Figure 8: Quá trình thực hiện genetic algorithm 10
Figure 9: Cấu hình 7 loại block và các rotation của chúng 11
Figure 10: Lớp block 11
Figure 11: điều khiển hướng di chuyển và xoay của block 12
Figure 12: Màn hình các chức năng game 12
Figure 13: kích cỡ ần thểqu 13
Figure 14: số ế hệth 13
Figure 15: Minh họa cây trò chơi 14
Figure 16: các hàm heuristic thử nghiệm 15
Figure 17: Điểm các lần chơi của từng hàm heuristic 16
Figure 18: Điểm trung bình của các hàm heuristic 16
Figure 19: Điểm trung bình 100 player ở 5 thế hệ 17
Figure 20: độ tăng giảm điểm trung bình giữ các thế hệ (x=1.0 có y tương ứng là độ tăng giảm điểa m từ ế hệ 1 lên thế hệ th 2) 18
Trang 4N h ó m 1 8
1 Công việc của các thành viên nhóm
Phạm Quang Nghĩa Code phần thuật toán Greedy best-first search và genetic
algorithm, sửa lỗi nội dung và tổng hợp báo cáo, làm slide Phạm Thị Hồng Hạnh Code game Tetris, đóng góp báo cáo phần đánh giá greedy
best-first search Trịnh Minh Hiếu Code phần thuật toán greedy best-first search, đóng góp
báo cáo phần thuật toán greedy best-first search
algorithm
Tetris – một tựa game xếp hình được ra đời năm 1984 tại Soviet, Nga bởi một lập trình viên yêu thích giải đố Từ một phần mềm nhỏ củ Soviet, Tetris dần tiến hoá thành tựa game máy a tính nổi tiếng nhất thế ới từ trước đến nay Nó được chơi tại hơn 200 quốc gia, trên 50 nềgi n tảng khác nhau bởi hàng triệu người vẫn miệt mài chơi hàng tỷ ván game mỗi năm
Figure 1: Hình ảnh minh họa game Tetris
Cách chơi của game Tetris rất đơn giản, một khối với hình dạng ngẫu nhiên sẽ ất hiệ ở xu n trên cùng của cửa sổ và sẽ rơi xuống với tốc độ đều, nhiệm vụ của người chơi là điều khiển khối đó sao cho phù hợp để hoàn thành 1 hàng để ăn điểm, cũng như xóa hàng đó trong màn hình
Trang 5N h ó m 1 8
Nhóm chúng em vận dụng các kiến thức, thuật toán đã học trong môn học Nhập môn Trí tuệ nhân tạo để nghiên cứu, xây dựng và phát triển một phiên bản Game Tetris tự động điề u khiển các khối sao cho có thể đạt được điểm số cao trong thời gian ngắn Có thể nói việc áp dụng AI vào 1 game như Tetris không có nhiề ứng dụng thực tiễn, ngoài việc thử nghiệu m rằng máy có thể “chơi game” tốt hơn con người không, có thể đánh bại những người giỏi nhất không Trên thực tế, có những Tetris bot có thể chơi mãi mà không thua trong một thời gian rất dài
Figure 2: Hình ảnh minh họa game AI Tetris do chúng em xây dựng
a Các đặc trưng ợc sử dụ đư ng
a.1
a.1 TTTTTổng chiều cao của trạng thái (curreổng chiều cao của trạng thái (curreổng chiều cao của trạng thái (currentHeight)ntHeight)ntHeight)
Đặc trưng này cho chúng ta biết về tổng thể thì “bàn cờ” cao như thế nào Để tính toán chiều cao tổng hợp, chúng em lấy tổng chiều cao của mỗi cột (khoảng cách từ ô cao nhất trong mỗi cột đến cuối bàn cờ)
Trang 6N h ó m 1 8
Tất nhiên chúng em muốn giảm thiểu giá trị này, vì chiều cao tổng hợp thấp hơn có nghĩa là chúng em có thể ả th nhiều Block hơn vào bàn cờ trước khi chạm vào đỉnh của nó
Figure 3: Tổng chiều cao trạng thái
a.2
a.2 Số hàng có thể xSố hàng có thể xSố hàng có thể xóa (lineóa (lineóa (lines)s)s)
Đây có lẽ là đặc trưng dễ ểu nhất trong năm đặc trưng Nó chỉ đơn giản là số hàng có thể hi xóa khi đặt mộ block vào bàn cờ Chúng em muốn tối đa đặc trưng này, do mục tiêu của AI t
là xóa càng nhiều hàng càng tốt và việc xóa các hàng này sẽ cho chúng ta nhiều khoảng trống hơn để có nhiều khối gạch hơn
a.3
a.3 Số hố (currentNumHoleSố hố (currentNumHoleSố hố (currentNumHoles)s)s)
Một hố ợc định nghĩa là một khoảng trống sao cho có ít nhất một ô trong cùng một cộđư t phía trên nó Hố thì khó xóa hơn, do chúng ta phải xóa tất cả các đường phía trên trước khi chúng em có thể ạm tới hố và lấp đầy nó Do đó, chúng em sẽ ải giảm thiểu số các hố ch ph này
Figure 4: Tổng số hố
a.4
a.4 Độ gập ghềnh (bumpiness)Độ gập ghềnh (bumpiness)Độ gập ghềnh (bumpiness)
Từ Hình 3, xét trường hợp sau, các Block xếp trên bàn cờ của chúng ta và chừa ra một cái giếng sâu (được đánh số 0) Điều này thật khó chịu, bởi vì: Những giếng này có thể ợc lấđư p đầy một cách dễ dàng, và thật khủng khiếp khi giếng bị ặn bởi những khối gạch Và sau đó, ch rất khó để có thể lấp đầy Để khái quát hóa ý tưởng về ếng, chúng em đị nghĩa một đặgi nh c trưng được đặt tên là độ gập ghềnh
Độ gập ghềnh cho chúng ta biết sự thay đổi chiều cao của từng cột trong bàn cờ Nó được tính bằng cách tính tổng các giá trị tuyệt đối của hiệu chiều cao hai cột liền kề
Trang 7N h ó m 1 8
Từ các chỉ số chiều cao của các cột trên bàn cờ, dưới đây là cách tính độ gập ghềnh:
Figure 5: Đô gập ghềnh
|4-5| + |5-2| + + |4-3|+ |3-3| =9
Mục tiêu của chúng em là giảm thiểu sự ất hiện và độ sâu của những cái giếng này Vì vậy, xu đây là giá trị cần được giảm thiểu
a.5
a.5 Chiều cao của cột cao nhChiều cao của cột cao nhChiều cao của cột cao nhất (currentMaất (currentMaất (currentMaxHeight)xHeight)xHeight)
Đặc trưng này cho biết chiều cao tối đa của các cột trên bàn cờ Chúng ta muốn giảm tối thiểu giá trị này để có thể đặt nhiề Block hơn vào bàn cờu
a.6
a.6 Số hố Số hố Số hố ợc giải phóng (holesFreed)được giải phóng (holesFreed)
Đặc trưng này cho biết số hố ợc giải phóng Chúng ta cần tối đa hóa giá trị này.đư
a.7
a.7 Số hố Số hố Số hố ợc tạo rđược tạo rợc tạo ra (holesCreata (holesCreata (holesCreated)ed)
Đặc trưng này cho biết số hố ợc tạ ra Chúng ta cần giảm thiểu giá trị này.đư o
b Greedy best-first search
Thuật toán greedy best first search là một chiến lược tìm kiếm với tri thức bổ sung từ ệc sử vi dụng các tri thức cụ ể của bài toán.th Tư tưởng của thuật toán này là việc tìm kiếm bắt đầu tại nút gốc và tiếp tục bằng cách duyệt các nút tiếp theo có giá trị của hàm đánh giá (heuristic) là thấp nhất so với các nút còn lại
Với mỗi block cần xét, ta cần tính điểm cho mỗi nước đi (bao gồm các tư thế xoay và những hoành độ mà chúng có thể rơi xuống) và chọn nước đi có điểm cao nhất
Figure 6: Mô tả cách áp dụng của thuật toán Greedy best-first search
Trang 8N h ó m 1 8
Sau đây là mô tả về hàm heuristic ban đầu mà chúng em chọn:
Figure 7: Hàm heuristic ban đầu
c Genetic algorithm
Với giải thuật di truyền, tác tử sẽ học một hàm heuristic để có thể xóa được nhiều hàng nhất
có thể ở mỗi nước đi Cách nó làm ợc điều này chính là dựa vào việc tạo ra 1 quần thể ban đư đầu, sử dụ các kỹ thuật tournament selection, crossover, mutation và delete-n-last ng replacement, cùng với một hàm fitness hợp lý
c.1 Năm đặc trưng đánh giá
Mục tiêu là xóa càng nhiều dòng càng tốt, nói cách khác là trì hoãn trạng thái kết thúc nhất
có thể
Để đạt được mục tiêu này, tác tử sẽ quyết định nước đi tốt nhất cho mộ block ất địt nh nh bằng cách suy tính tất cả các động tác có thể (xoay và vị trí) Nó tính score cho mỗi nước đi có thể và chọ một nước có điểm tốt nhất làm nước đi tiếp theo n
Giống như Greedy best-first search, score cho mỗi bước di chuyển được tính bằng cách đánh giá trạng thái bàn cờ mà bước di chuyển sẽ dẫn đến Score sử dụ năm đặc trưng: tổng ng chiều cao của trạng thái, số hàng có thể xóa, số hố, chiều cao cột cao nhất và độ gập ghềnh Mỗi đặc trưng này tác tử sẽ ợc giải thuật cân nhắc, hoặc là cố gắng giảm thiểu, hoặc là tối đư
đa hóa
c.2 Kết hợp các đặc trưng đánh giá
Score của một trạng thái bàn cờ đối với 1 nước đi là hàm t ến tính của năm đặc trưng đã đề uy cập ở trên Score có công thức như sau:
score = a*(tổng chiều cao của trạng thái) + b*(số hàng có thể xóa) + c*(số hố) + d*(độ gậ p ghềnh) + e*(chiều cao cột cao nhất)
Trong đó a, b, c, d, e là các tham số ràng buộc
Để có được hàm đánh giá score tối ưu, chúng em tạo ra năm tham số trên bằng cách sử dụng Giải thuật di truyền
c.3 Tối ưu bộ tham số bằng Giải thuật di truyền
Mỗi bộ tham số (a, b, c, d, e) có thể ợc biểu diễn dưới dạng vectơ trong không gian đư ℝ5
𝑝 = (𝑎, , , 𝑑, e) 𝑏 𝑐 Một Giải thuật di truyền chuẩn cho các gen có giá trị ực sẽ liên quan đến việc tìm kiếth m trong toàn bộ không gian để có một tập hợp các tham số tối ưu Ở đây chúng em sẽ ỉ ℝ5 ch xét các vectơ nằm trên “mặt cầu” bán kính 1 trong không gian Sau đây em sẽ trình bày lý ℝ5
do tại sao chỉ xét trên mặt cầu này
Về mặt toán học, hàm đánh giá trong ngữ cảnh của vectơ được biểu diễn như sau:
Trang 9N h ó m 1 8
𝑓 𝑥( ) = 𝑝 𝑥 Với 𝑝 là bộ tham số (a, b, c, d, e), là bộ đặc trưng (tổng chiều cao của trạng thái, số hàng đã 𝑥 xóa, số hố, chiều cao cột cao nhất, độ gập ghềnh), f là hàm đánh giá score cho mỗi nước đi Giả sử chúng ta có hai nước đi, chúng em sẽ so sánh - move1 và move2, và lựa chọn nước đi nào tốt hơn, nói cách khác là score cao hơn ả sử hai nước đi đó được biểu diễn dưới dạng Gi vectơ 𝑥1 và 𝑥2 Nếu move2 cho score tốt hơn move1, ta có 𝑓(𝑥2) > 𝑓(𝑥1) hay 𝑓(𝑥2 ) − 𝑓(𝑥1)
>0
Điều kiện kiểm tra có thể ết lại thành: vi
𝑓 𝑥2( )−𝑓(𝑥1)= 𝑝 𝑥2 ( − 𝑥1)
Do tất cả các vectơ tham số cùng hướng tạo ra kết quả tương đương Vì vậy, chỉ cần xem xét một vectơ duy nhất cho mỗi hướng là đủ
Tiếp theo, cầ định nghĩa hàm fitness, tournament selection, crossover, mutation và ta n delete-n-last replacement ợc sử dụng để tối ưu bộ tham số đư 𝑝
c.3.1 Hàm fitness
Hàm fitness của chúng em chính là điể của lượt chơi, cách tính giống như luật tính điểm m gốc của Tetris Ở mỗi thế hệ, từng vectơ 𝑝 sẽ chơi 1 ván Sau đó, chúng em sẽ ểm tra xem ki
𝑝 đó đạt được điểm số là bao nhiêu
𝑓𝑖𝑡𝑛𝑒𝑠𝑠 𝑝( ) = ổ𝑛𝑔 𝑡 điểm 𝑚à 𝑝 đạt được
c.3.2 Tournament selection
Các cá thể bố mẹ ợc chọn để tạo ra thế hệ tương lai bằng cách sử dụng Tournament đư selection Chúng em chọn khoảng 10% quần thể một cách ngẫu nhiên và từ đó lấy ra hai cá thể có điểm fitness cao nhất Từng cá thể trong quần thể con này tiến hành crossover để tạo
ra con cái mới Quá trình này được lặp lại cho đến khi số lượng cá thể con mới được tạo ra đạt 30% kích thước quần thể
c.3.3 Crossover
Đối với Crossvoer, cho hai vectơ cha mẹ là 𝑝1, 𝑝2 kết hợp với nhau bằng cách cộng hai vectơ
đã nhân với điểm fitness của chính nó Vectơ cá thể con 𝑝 được hình thành dưới dạng như sau:
𝑝 = 𝑓𝑖𝑡𝑛𝑒𝑠𝑠 𝑝1𝑝1 ( ) + 𝑝2 𝑓𝑖𝑡𝑛𝑒𝑠𝑠(𝑝2)
Cá thể bố/mẹ nào mang điểm fitness cao hơn sẽ mang tính trạng trội, ngược lại mang tính trạng lặn Hay nói cách khác, cá thể con sẽ gần với cá thể bố/mẹ nào có điểm fitness cao hơn Các vectơ con sau đó sẽ ợc chuẩn hóa nằm trên “mặt cầu” đã nói ở trênđư
c.3.4 Mutation
Toán tử đột biến chúng em chọn khá đơn giản Mỗi vectơ con được tạo ra có một cơ hội nhỏ (5%) để đột biến Khi 1 vectơ 𝑝 được chọn để gây đột biến, thì một thành phần ngẫu nhiên (một trong năm tham số a, b, c, d, e) của vectơ này sẽ ợc điều chỉnh bởi một lượng ngẫđư u nhiên lên đến 0.2 Sau đó vectơ được c ẩn hóa.hu
Trang 10N h ó m 1 8
c.3.5 Delete-n-last replacement
Khi số cá thể con tạo ra đạt ngưỡng 30% Những cá thể yếu nhất (có ít điểm fitness nhất trong quần thể) sẽ bị xóa và thay thế bởi các cá thể con này Kích thước quần thể vẫn giữ nguyên Toàn bộ quá trình lặp lại cho đến khi kết thúc thế hệ ối cùng (tổng số ế hệ có thể cu th được thay đổi bởi người chơi)
d Game Tetris
Tetris là game gồm các khối hình Mục tiêu của trò chơi là di chuyển các khối đang rơi từ từ xuống trong kích thước hình chữ ật 30 hàng x 15 cột (trên màn hình) Chỗ nào có khối rồi nh thì không di chuyển được tới vị trí đó Người chơi xếp những khối hình sao cho khối hình lấp đầy 1 hàng ngang để ghi điểm và hàng ngang ấy sẽ ến mất Game kết thúc khi tất cả các bi khối xếp chồng lên nhau và chạm đến đỉnh của khung trò chơi
Figure 8: Quá trình thực hiện genetic algorithm
Trang 11N h ó m 1 8
Game gồm một khung hình ữ ật với kích thước 30 hàng x 15 cột, chiều dài và chiều rộng ch nh của khung hình tương ứng với trục tung và hoành của trục tọa độ DescartesGame với gốc tọa
độ ở ểm trên cùng bên trái của khung game Tetris gồm các khối hình, I (đứng thẳng), L đi (ngược), L, O (vuông), Z (ngược), T, Z, và các khối khi xoay 90 độ, 180 độ và 270 độ Sử dụng một ma trận 4x4 với các phần tử là từ 1 đến 16 được xếp lần lượt Chọn các phần tử, tương ứng với các ô của mỗi khối, trong ma trận để xác định tọa độ của khối đó
Figure 9: Cấu hình 7 loại block và các rotation của chúng
Mỗi khối gồm các thuộc tính: hoành độ, tung độ, một biến kiểu nguyên dương n được sinh
tự động Biến n dùng để xác định ngẫu nhiên khối sẽ ợc xuất hiện và xác định màu củđư a khối đó
Các khối khi được tạo sẽ di chuyển dần từ đỉnh của khung game Để ều khiến khối có thể đi
sử dụng các phím ↑↓→←:
- ↑: xoay khối lần lượt theo 90 độ, 180 độ và 270 độ
- ↓: tăng tốc độ di chuyển của khối
Trang 12N h ó m 1 8
- →←: di chuyển sang phải và sang trái
4 Chức năng chính của hệ thống
1 Người dùng tự chơi game Tetris (click vào “Start”)
2 Máy chơi game Tetris bằng Greedy best-first search (click vào “GBFS”)
3 Máy chơi game Tetris bằng Genetic algorithm from scratch (tức là ạy lại từ đầu với ch weights random, click vào “GA (Scratch)”)