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 1TRƯỜ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
Đ TI:
Á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 : HONG HẢI NAM
HONG 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 2PHIẾU CHẤM ĐIỂM STT Họ và tên sinh viên Nội dung thực hiện Điểm Chữ
ký
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 3MỞ ĐẦ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 4CHƯƠ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 51.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 6CHƯƠ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: P s
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 8Lưu đồ giải thuật cơ bản
Trang 92.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 112.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 12CHƯƠNG 3: PHƯƠNG PHÁP DÙNG ĐỂ GIẢI QUYẾT BI
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 13củ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 14Như đã đề 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)