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

Nhập Môn Trí Tuệ Nhân Tạo Đề Tài Áp Dụng Ai Vào Game Tetris.pdf

19 5 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 đề Áp Dụng Ai Vào Game Tetris
Tác giả Phạm Quang Nghĩa, Phạm Thị Hồng Hạnh, Trịnh Minh Hiếu, Đào Văn Thiều
Người hướng dẫn GVHD: Thân Quang Khoát
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Thông Tin Và Truyền Thông
Thể loại Báo Cáo Bài Tập Lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 19
Dung lượng 2,87 MB

Nội dung

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 1

N 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 2

N 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 3

N 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 4

N 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 5

N 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 6

N 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 7

N 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 8

N 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 9

N 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 10

N 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 11

N 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 12

N 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)”)

Ngày đăng: 25/05/2024, 10:08

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w