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

Áp dụng thuật toán giải di truyền vào game xếp hình tetris

18 0 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 Thuật Toán Giải Di Truyền Vào Game Xếp Hình Tetris
Tác giả Hoàng Hải Nam, Hoàng Nghĩa Quân
Người hướng dẫn Vũ Văn Định
Trường học Trường Đại Học Điện Lực
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo
Thành phố Hà Nội
Định dạng
Số trang 18
Dung lượng 1,82 MB

Nội dung

Sau đó, chúng ta lại sinh ra một quần thể mới bằng phép chọn lọc rồi tiếp tục sử dụng các phép toán di truyền và đánh giá độ thích nghi của các cá thể điển hình bởi nhiễm sắc thể - NST t

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC TRÍ TUỆ NHÂN TẠO

Đ TI:

Áp dụng thuật toán giải di truyền vào game xếp hình Tetris

Sinh viên thực hiện : HONG HẢI NAM

HONG NGHĨA QUÂN Giảng viên hướng dẫn : Vũ Văn Định

Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CNPM

Hà Nội, tháng năm

Trang 2

PHIẾU CHẤM ĐIỂM STT Họ và tên sinh viên Nội dung thực hiện Điểm Chữ

1 Hoàng Hải Nam

2 Hoàng Nghĩa Quân

Họ và tên giảng viên Chữ ký Ghi chú

Giảng viên chấm 1:

Giảng viên chấm 2:

Trang 3

MỞ ĐẦU

Tetris đã được sử dụng hơn hai mươi năm như một lĩnh vực để nghiên cứu việc ra quyết định tuần tự trong điều kiện không chắc chắn Do độ lớn của không gian quyết định khiến nó trở thành một vấn đề phức tạp nhưng có thể giải quyết được Ngoài ra, Tetris cũng thể hiện tính thú vị là giới hạn thời gian đưa

ra quyết định trước khi một mảnh Tetro-mino rơi xuống bề mặt của bàn cờ Nó thường được coi là một lĩnh vực khá khó khăn Cho đến nay, các thuật toán khác nhau đã mang lại các chiến lược chơi tốt Nhưng chúng chưa đạt đến mức hiệu suất đạt được của những người chơi chuyên nghiệp chơi mà không bị áp lực về thời gian Các nghiên cứu sâu hơn về trò chơi có khả năng đóng góp vào các chủ đề quan trọng trong trí tuệ nhân tạo và máy học Bao gồm khám phá tính năng, học tự động các cấu trúc phân cấp hành động và học tăng cường Trong bài viết này, trước tiên, chúng tôi mô tả sơ lược về Tetris, các công trình liên quan về những thuật toán đã ứng dụng trong trò chơi cổ điển này Ngoài ra, những nỗ lực của chúng tôi là làm cho sản phẩm trở nên đa dạng bằng cách mở rộng nhiều tính năng thử nghiệm nổi bật hơn Cốt lõi của trò chơi Teris mới của chúng tôi là khả năng sáng tạo hiệu ứng và hàm heuristic cải tiến của thuật toán A.I

Chúng tôi đã thảo luận về những hướng đi và thách thức hiện tại Qua đó

đã học được rất nhiều từ các nghiên cứu/báo cáo tiền nhiệm có liên quan, hầu hết chúng đều được coi là hoàn hảo Chúng tôi lấy cảm hứng từ rất nhiều thứ, đặc biệt là Genetic algorithm (giải thuật di truyền) Vấn đề lớn nhất của chúng tôi là xây dựng một tác tử thú vị mới và mở rộng công việc hiện có về các vấn

đề của Tetris Nhằm tiếp cận với các trò chơi khác hoặc thậm chí là thế giới thực

Trang 4

CHƯƠNG 1: THUẬT GIẢI DI TRUYỀN VÀ BÀI TOÁN

TETRIS

Giải thuật di truyền cũng như tiến hóa dựa trên khái niệm cho rằng quá trình tiến hóa tự nhiên là hoàn hảo nhất, hợp lý nhất và tự nó đã mang tính tối ưu Sự tối ưu đó được thể hiện ở chỗ thế hệ sau bao giờ cũng phát triển tốt hơn thế hệ trước Tiến hóa tự nhiên được duy trì nhờ hai quá trình cơ bản: sinh sản và chọn lọc tự nhiên, xuyên suốt quá trình tiến hóa tự nhiên, các thế hệ mới luôn được sinh ra để bổ sung thay thế thế

hệ cũ, cá thể nào thích ứng với môi trường sẽ tồn tại, ngược lại

sẽ bị đào thải

Giải thuật di truyền bao gồm 4 bước chính: Mã hóa lời giải, khởi tạo quần thể, sử dụng các phép toán di truyền và đánh giá

độ thích nghi Sau đó, chúng ta lại sinh ra một quần thể mới bằng phép chọn lọc rồi tiếp tục sử dụng các phép toán di truyền

và đánh giá độ thích nghi của các cá thể (điển hình bởi nhiễm sắc thể - NST) trong quần thể Thuật giải được thực hiện qua càng nhiều thế hệ thì lời giải đưa ra càng tối ưu

Thuật giải di truyền cung cấp một phương pháp học được thúc đẩy bởi sự tương tự với sự tiến hóa sinh học Thay vì tìm kiếm các giả thuyết từ tổng quát đến cụ thể hoặc từ đơn giản đến phức tạp, GAs tạo ra các giả thuyết kế tiếp bằng cách lặp việc đột biến và việc tái hợp các phần của giả thuyết được biết hiện tại là tốt nhất Ở mỗi bước, một tập các giả thuyết được gọi là quần thể hiện tại được cập nhật bằng cách thay thế vài phần nhỏ quần thể bởi cá thể con của các giả thuyết tốt nhất ở thời điểm hiện tại Sự phổ biến của GAs được thúc đẩy bởi các yếu tố sau:

• Tiến hóa là một phương pháp mạnh, thành công cho sự thích nghi bên trong các hệ thống sinh học

• GA có thể tìm kiếm trên các không gian giả thuyết có các phần tương tác phức tạp, ở đó ảnh hưởng của mỗi phần lên toàn thể độ thích nghi giả thuyết khó có thể mô hình

• Thuật giải GA có thể được thực hiện song song và có thể tận dụng thành tựu của phần cứng máy tính mạnh

Trang 5

1.1 Giới thiệu về nhu cầu của bài toán:

Bài toán này xuất phát từ một game xếp hình Tetris Trong game Tetris, bạn được cho một loạt các khối hình có dạng các viên gạch khác nhau, và mục tiêu của bạn là xếp chúng lại một cách gọn gàng để loại bỏ các hàng đầy và không để bất kỳ khối nào vượt quá màn hình Vấn đề ở đây là làm thế nào để tìm ra một cách tối ưu để xếp các khối này

1.2 Phân tích chi tiết bài toán:

a Môi trường game Tetris: Game Tetris có một môi trường động với một bảng chơi (thường có kích thước cố định) và các khối gạch xuất hiện từ trên xuống Khối gạch có hình dạng và màu sắc khác nhau và có thể xoay Mục tiêu là xếp chúng lại để tạo ra các hàng đầy để chúng biến mất

b Chế độ chơi: Trong game Tetris, người chơi phải đưa ra quyết định nhanh chóng về cách xoay và di chuyển các khối để xếp chúng một cách hiệu quả Thời gian giới hạn đòi hỏi việc đưa ra quyết định nhanh và chính xác

c Mục tiêu tối ưu: Mục tiêu của bài toán là xếp các khối sao cho số hàng đầy là lớn nhất và số lỗ trống trên màn hình là

ít nhất Từ đó, mục tiêu tối ưu hóa có thể là tối đa hóa điểm số hoặc số hàng đầy, hoặc tối thiểu hóa số lỗ trống

Trang 6

CHƯƠNG 2: CHIẾN LƯỢC ĐỂ GIẢI QUYẾT BÀI TOÁN 2.1 Thuật giải di truyền

Bài toán dành cho GAs là tìm kiếm trên không gian các giả thuyết ứng cử để xác định giả thuyết tốt nhất Trong GAs “giả thuyết tốt nhất” được định nghĩa như là một giả thuyết tối ưu hóa một đại lượng số được định nghĩa trước cho bài toán sắp tới, được gọi là độ thích nghi của giả thuyết Ví dụ, nếu tác vụ học hỏi là bài toán xấp xỉ một hàm chưa biết cho tập mẫu huấn luyện gồm dữ liệu đầu vào và dữ liệu đầu ra, thì độ thích nghi

có thể được định nghĩa như là độ chính xác của giả thuyết trên

dữ liệu huấn luyện này Nếu tác vụ là học chiến lược chơi cờ, độ thích nghi có thể là số ván thắng của chiến lược này khi đấu với các chiến lược khác trong quần thể hiện tại

Mặc dù các thuật giải di truyền được thực hiện thay đổi theo bài toán cụ thể, nhưng chúng chia sẻ chung cấu trúc tiêu biểu sau: Thuật giải hoạt động bằng cách cập nhật liên tục tập giả thuyết – được gọi là quần thể Ở mỗi lần lặp, tất cả các cá thể trong quần thể được ước lượng tương ứng với hàm thích nghi Rồi quần thể mới được tạo ra bằng cách lựa chọn có xác suất các cá thể thích nghi tốt nhất từ quần thể hiện tại Một số trong những cá thể được chọn được đưa nguyên vẹn vào quần thể kế tiếp Những cá thể khác được dùng làm cơ sở để tạo ra các cá thể con bằng cách áp dụng các tác động di truyền: lai ghép và đột biến

GA(Fitness, Fitness_threshold, p, r, m)

{

// Fitness: hàm gán thang điểm ước lượng cho một giả thuyết

// Fitness_threshold: Ngưỡng xác định tiêu chuẩn dùng giải thuật tìm kiếm

// Số cá thể trong quần thể giả thuyết p:

// Phân số cá thể trong quần thể được áp dụng toán tử lair:

ghép ở mỗi

// m: Tỉ lệ cá thể bị đột biến

Trang 7

 Khởi tạo quần thể: P ( Tạo ngẫu nhiên p cá thể giả thuyết

 Ước lượng: Ứng với mỗi h trong P, tính Fitness(h)

 while [max Fitness(h)] < Fitness_threshold do

Tạo thế hệ mới, Ps

1 Chọn cá thể: chọn theo xác suất (1 – r)p cá thể trong quần thể thêm vào Xác suất P P s Pr(h i ) của giả thuyết thuộc được tính bởi công thức: h i P

ghép: chọn lọc theo xác cặp giả thuyết từ quần thể , theo P Pr(h i ) đã tính ở bước trên Ứng với mỗi cặp <h1, h2>, tạo ra hai con bằng cách áp dụng toán tử lai ghép Thêm tất các các con vào P s

3 Đột biến: Chọn m% cá thể của P s với xác suất cho mỗi cá thể là như nhau Ứng với mỗi cá thể biến đổi một bit được chọn ngẫu nhiên trong cách thể hiện của nó

4 Cấp nhật P: Ps

5 Ước lượng: Ứng với mỗi h trong P, tính Fitness(h)

 Trả về giả thuyết P có độ thích nghi cao nhất

Trang 8

Lưu đồ giải thuật cơ bản

Trang 9

2.2 Các toán tử di truyền

2.2.1 Lai ghép:

Phép lai là quá trình hình thành NST mới trên cơ sở NST cha mẹ, bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều) NST cha mẹ khác nhau

Các cặp cha mẹ được lựa chọn ngẫu nhiên và xác suất xảy

ra lai ghép với mỗi cặp được quy định từ trước

Có nhiều cách lại ghép khác nhau:

 Lai ghép một điểm cắt, nhiều điểm cắt

 Lai ghép nhiều đoạn

2.2.2 Đột biến:

Đột biến là tình trạng NST con không có một (hoặc một số) tính trạng có trong mã di truyền của cha mẹ

Các cặp cha mẹ được lựa chọn ngẫu nhiên và xác suất xảy

ra đột biến với mỗi cặp được quy định từ trước, thường là rất nhỏ

Các phép đột biến thường được sử dụng:

• Đảo bit

• Hoán vị: Đổi vị trí của các gen với nhau Đổi giá trị: Thay đổi giá trị tại một điểm gen

• Đảo đoạn: Đảo thứ tự của một đoạn NST bất kì

2.2.3 u tranh sinh t n Đấ ồ

Chọn nh ng NST t qu n th k t qu theo m t quy t c n o ữ ừ ầ ể ế ả ộ ắ à đó thay th cho cha mế ẹ để sinh ra th h m i M t s ph ng th cế ệ ớ ộ ố ươ ứ

đấu tranh sinh t n cơ b n: ồ ả

• Trá đổo i ho n to n cha m b ng con à à ẹ ằ

Trang 10

• Trá đổo i ng u nhi n: Ch n ng u nhi n k cha m v thay thếẫ ê ọ ẫ ê ẹ à bằng k con mới

Chọn những cá thể ưu tú nhất trong quần thể

Trang 11

2.3 Mô tả bài toán thực tế:

 Môi trường: Bài toán xảy ra trong môi trường trò chơi Tetris, trong đó một bảng chơi có kích thước cố định (thường là 10x20 hoặc tương tự) được hiển thị trước người chơi Một loạt các khối gạch (gọi là tetrominoes) có hình dạng và màu sắc khác nhau xuất hiện từ trên xuống màn hình

 Khối gạch: Mỗi khối gạch có một hình dạng cụ thể và có thể được xoay theo các góc khác nhau Người chơi có thể

di chuyển và xoay khối gạch trước khi họ đặt nó xuống

 Mục tiêu: Mục tiêu chính của bài toán là xếp các khối gạch vào bảng chơi sao cho:

 Loại bỏ càng nhiều hàng đầy càng tốt để kiếm điểm

 Tránh để lại lỗ trống không cần thiết trên bảng chơi,

vì lỗ trống này có thể gây khó khăn trong việc xếp các khối gạch sau này

 Thuật toán di truyền: Để giải quyết bài toán này, một thuật toán di truyền có thể được áp dụng Cá thể trong thuật toán di truyền biểu diễn cách xếp các khối gạch trên màn hình, và qua các thế hệ, thuật toán tối ưu hóa cách xếp để đạt được điểm số cao nhất hoặc giảm thiểu số lỗ trống

 Đánh giá: Đánh giá hiệu suất của mỗi cá thể dựa trên số hàng đầy và số lỗ trống sau khi xếp các khối Mục tiêu là tối ưu hóa giá trị của hàm mục tiêu

 Tinh chỉnh: Tham số của thuật toán di truyền, chẳng hạn như tỷ lệ lai ghép, tỷ lệ đột biến, và kích thước thế hệ, có thể được tinh chỉnh để cải thiện hiệu suất

 Kết quả: Khi thuật toán hoàn thành, nó sẽ cung cấp một cách xếp các khối gạch trên màn hình Tetris mà đáp ứng được mục tiêu tối ưu hóa, cho thấy cách xếp hình để đạt được điểm số cao hoặc giảm thiểu lỗ trống

Bài toán này là một ví dụ về cách áp dụng trí tuệ nhân tạo vào việc tối ưu hóa trong trò chơi thực tế, trong đó có áp lực thời gian và sự lựa chọn nhanh chóng để đưa ra quyết định đúng đắn đối với mục tiêu tối ưu hóa đã cho

Trang 12

CHƯƠNG 3: PHƯƠNG PHÁP DÙNG ĐỂ GIẢI QUYẾT BI

TOÁN TETRIS 3.1 Phương pháp

Lấy cảm hứng từ các Thuật toán di truyền tiền nhiệm và chiến lược tìm kiếm tham làm với các hàm heuristic Chúng tôi

đã phát triển một tác tử AI đủ thông minh để xóa các hàng một cách vô thời hạn trong trò chơi tetris đơn giản

3.2 Định hình trò chơi

Mặc dù phiên bản tiêu chuẩn của Tetris là trò chơi kinh điển, nhưng vẫn tồn tại rất nhiều biến thể của trò chơi Để có sự

rõ ràng cho sự trực quan và phương pháp tiếp cận, chúng tôi xây dựng tác tử AI từ nền tảng có các quy tắc như sau:

 Bàn cờ Tetris có kích thước hàng và cột lần lượt là 10 và

22, thêm vào đó là có 2 hàng bị ẩn ở trên

 Tất cả các Tetrominoes (các mảnh Tetris) sẽ bắt đầu ở giữa 2 hàng trên cùng

 Có tất cả bảy loại Tetromino: 'I', 'O', 'J', 'L', 'S', 'Z', 'T'

 Tác tử sẽ biết trước Tetrimino rơi xuống tiếp theo (look-ahead)

3.3 Bốn đặc trưng đánh giá

Cũng giống như những người chơi đã chơi cho đến nay Mục tiêu của chúng tôi là xóa càng nhiều đường càng tốt, nói cách khác là 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ử của chúng tôi sẽ quyết định nước đi tốt nhất cho một Tetromino nhất đị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 điểm số (điểm đánh giá) cho mỗi nước đi có thể (look-ahead) và chọn một nước có điểm tốt nhất làm nước đi tiếp theo

Điểm số 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 Kết quả này dựa trên bốn đặc trưng: tổng chiều cao của trạng thái,

số đường đã xóa, hố và độ gập ghềnh Mỗi đặc trưng này tác tử

sẽ cân nhắc, hoặc là cố gắng giảm thiểu, hoặc là tối đa hóa

3.3.1 Tổng chiều cao của trạng thái

Đặc trưng này cho chúng ta biết lưới "cao" như thế nào

Để tính toán chiều cao tổng hợp, chúng tôi lấy tổng chiều cao

Trang 13

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

Tất nhiên chúng tôi 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 tôi có thểthả nhiều Tetromino hơn vào bàn cờ trước khi chạm vào đỉnh của nó Ứng dụng thuật giải di truyền vào game xếp hình Tetris

Hình 1: Tổng chiều cao của trạng thái này là 48

3.3.2 Số hàng đã xóa

Đây có lẽ là đặc trưng dễ hiểu nhất trong số bốn đặc trưng Nó chỉ đơn giản là số hàng đã hoàn thành trong một bàn

cờ Chúng tôi muốn tối đa hóa số hàng đã hoàn thành này, do mục tiêu của AI 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

Hình 2: Số hàng đã xóa là 2

3.3.3 Số hố

Trang 14

Như đã đề cập ở trên, 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 tôi có thể chạm tới hố và lấp

đầy nó Do đó, chúng tôi sẽ phải giảm thiểu số các hố này

Hình 3: Số hố hiện tại là 2

3.3.4 Độ gập ghềnh

Từ Hình 3, xét trường hợp sau, các Tetromino 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 rất khó , 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ó khi giếng bị chặn bởi những khối gạch Và sau đó, rất khó để có thể lấp đầy Để khái quát hóa ý tưởng về giếng, chúng tôi định nghĩa một đặc trưng được đặt tên là độ gập ghềnh Ứng dụng thuật giải di truyền vào game xếp hình Tetris Độ 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ề

Từ các chỉ số chiều cao của các cột trên bàn cờ của Hình

3, dưới đây là cách tính độ gập ghềnh:|4-4| + |4-0| + + |4-5| + |5-4| =14

Mục tiêu của chúng tôi là giảm thiểu sự xuất hiện và độ sâu của những cái giếng này Vì vậy, đây là giá trị cần được giảm thiểu

3.3.5 Kết hợp các đặc trưng đánh giá

Bây giờ chúng tôi sẽ tính điểm của một trạng thái bàn cờ, bằng cách lấy sự kết hợp tuyến tính của bốn đặctrưng đã đề cập ở trên Hàm đánh giá của tác tử có công thức như sau: hàm đánh giá = a*(tổng chiều cao của trạng thái) + b*(số hàng đã xóa) + c*(số hố) + d*(độ gập ghềnh)

Ngày đăng: 23/01/2025, 12:20