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

Nội dung

Trang 1

N h ó m 1 8

ÐẠI HOC BÁCH KHOA HÀ NỘI

TRƯỜNG CÔNG NGHỆ THÔNG TIN TRUYỀNVÀ 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 – 20204546Trịnh Minh Hiếu – 20204554 Đào V Thi - ănều 20204610

Hà nội, tháng 2/2023

Trang 2

N h ó m 1 8Mụ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

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

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

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ể hixó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 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 phnày

Figure 4: Tổng số hố

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 đó, chrấ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 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 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 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ử vidụ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 ngreplacement, 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 ngchiề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

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 chxé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 Givectơ 𝑥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

𝑓𝑖𝑡𝑛𝑒𝑠𝑠 𝑝( ) = ổ𝑛𝑔 𝑡 đ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 nhthì 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 bikhố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 nhcủ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 đó

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 chweights random, click vào “GA (Scratch)”)

Trang 14

N h ó m 1 8

Phương pháp triển khai genetic algorithm được sử dụng là của trang codemyroad, đường link trong tài liệu tham khảo

Ngôn ngữ sử dụng: Python

Gói phần mềm được sử dụng: Pygame

6 Các vấn đề gặp phải và cách giải quyết Chưa nghĩ ra cách để thuật toán ực hiện các nước đi khó.thVí dụ wall kick (xoay block khi thực tế không có chỗ để xoay):

Ví dụ: khi block chạm đáy và bên cạnh có 1 lỗ ống có thể nhét vào => block chưa bị cố định tr(chuyển thành màu đen) mà dừng một lúc cho phép người chơi có thể dịch chuyển block lấp đầy lỗ này

Vì vậy nên chúng em chưa triển khai chức năng thực hiện các nước đi này

7 Kết luận

a Đánh giá Greedy Best-first search (Hạnh) m: tổng số block cho đến khi dừng (cũng là depth của cây) b: trung bình số vị trí có thể đặt 1 block bất kỳ trong 1 lượt đặt

Trang 15

N h ó m 1 8

Tính hoàn chỉnh: Hoàn chỉnh, thuật toán sẽ dừng khi có block chạm đỉnh

Độ phức tạp thời gian: O(bm), do có m block, và ở mỗi lượt đặt block chỉ ải xét score đối phvới các vị trí có thể đặt của block đó

Độ phức tạp bộ nhớ: b), do thuật toán chỉ ải ghi nhớ score đối với các vị trí có thể đặO( ph t block ện tại.hi

Tính tối ưu: Không tối ưu, vì thuật toán chỉ ọn được vị trí tốt nhất của block hiện tại chứ chkhông tính đến tổ hợp các block về sau này

Thử nghiệm thuật toán với các công thức heuristic khác nhau:

Trang 16

N h ó m 1 8

Thuật toán cho kết quả tốt nhất với hàm heuristic số 5, và cho kết quả ấp nhất với hàm thheuristic số 4 Đối với hàm heuristic số 1, hàm ban đầu chúng em chọn, dựa vào sự ước lượng tầm quan trọng của các đặc trưng, không cho kết quả ả quan như các hàm khác khDựa vào kết quả này, em có thể ỉ ra 1 đặc trưng không quá quan trọng cho việc có số ch điểm cao là lines, điều này khá bất ngờ vì lines là chỉ số ực tiếp đóng góp vào số ểm của ngườtr đi i chơi

b Đánh giá Genetic algorithm n: số ế hệth

p: số player trong 1 thế hệ

m: tổng số block cho đến khi dừng (cũng là depth của cây)

Trang 17

N h ó m 1 8

b: trung bình số vị trí có thể đặt 1 block bất kỳ trong 1 lượt đặt

Tính hoàn chỉnh: giống như thực hiện np (hữu hạn) số lượt chơi sử dụng GBFS, nên thuật

toán kết thúc được

Độ phức tạp thời gian: O(npbm) Độ phức tạp bộ nhớ: O(b)

Lý do có các độ ức tạp này giống như đối với greedy best-first search.ph

Tính tối ưu: Các tham số có thể tiến đến xấp xỉ với với tham số tối ưu trong tập hàm được sử

dụng ập hàm tuyến tính) khi số ế hệ lớn, nhưng không tối ưu trong tập tất cả các hàm có (t thbiến là 5 đặc trưng đã chọn

Đánh giá performance của genetic algorithm:

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

TỪ KHÓA LIÊN QUAN

w