Tải bản đầy đủ (.pdf) (24 trang)

Đồ án huấn luyện AI chơi game tetris

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (636.91 KB, 24 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
🙡🕮🙣

ĐỒ ÁN 1
Đề tài: Huấn luyện AI chơi game Tetris

Giáo viên hướng dẫn: Huỳnh Tuấn Anh
Sinh viên thực hiện: Dư Chế Anh - 18520445
Thi Thanh Chương -18520539

Thành phố Hồ Chí Minh, tháng 6 năm 2021


ĐỒ ÁN 1
TETRIS AI

TETRIS AI

TÀI LIỆU BÁO CÁO DỰ ÁN
Date: 28/06/2021

Authors:
-

Dư Chế Anh
Thi Thanh Chương

Contacts:
-





2


ĐỒ ÁN 1
TETRIS AI

NHẬN XÉT
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................

............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
............................................................................................................................
...........................................................................................................................
3


ĐỒ ÁN 1
TETRIS AI


LỜI CẢM ƠN
Cảm ơn thầy Huỳnh Tuấn Anh vì đã cung cấp cho nhóm chúng em nói riêng
và các sinh viên trong lớp nói chung những đề tài đồ án thú vị ạ, nhóm chúng
em đã có những kiến thức mới và kinh nghiệm làm việc nhóm thú vị.
Trong q trình làm việc, khó tránh được các sai sót từ nhỏ đến lớn, mong
các thầy cơ quan tâm và góp ý tận tình giúp nhóm chúng em có thể phát triển
hơn ạ.
Cảm ơn các thầy cơ ạ!

4


ĐỒ ÁN 1
TETRIS AI

Contents
GIỚI THIỆU ..................................................................................................... 6
1. Mục đích tài liệu: ....................................................................................... 6
2. Đề tài:........................................................................................................ 6
3. Vấn đề:...................................................................................................... 6
4. Hướng giải quyết: ..................................................................................... 6
5. Mục tiêu: ................................................................................................... 6
KẾ HOẠCH VÀ PHÂN TÍCH ............................................................................ 7
1. Kế hoạch ................................................................................................... 7
2. Phân tích ................................................................................................... 7
Thực thi .......................................................................................................... 10
1. Tetris: ...................................................................................................... 10
2. Bot: ......................................................................................................... 10
3. AI ............................................................................................................ 11
NGHIÊN CỨU ................................................................................................ 12

Case #1: Ai cơ bản train ở 1 seed .............................................................. 13
Case #2: AI cơ bản train ở nhiều seed ....................................................... 14
Case #3: AI với fitness mới và train ở 1 seed ............................................. 15
Case #4: AI tự train vs AI tự train................................................................ 17
KẾT LUẬN ..................................................................................................... 19
THAM KHẢO.................................................................................................. 20
Records ......................................................................................................... 21
Record1 ...................................................................................................... 21
Record 2 ..................................................................................................... 21
Record 3 ..................................................................................................... 22
Record 4 ..................................................................................................... 23
Record 5 ..................................................................................................... 23

5


ĐỒ ÁN 1
TETRIS AI

GIỚI THIỆU
1. Mục đích tài liệu:
Tài liệu này được xây dựng với mục đích giới thiệu đề tài, ghi nhận và phân
tích q trình tiếp nhận và giải quyết vấn đề, từ ban đầu cho đến khi hoàn thành
đồ án.

2. Đề tài:
Huấn luyện AI chơi game Tetris.

3. Vấn đề:
Tetris mà một tựa game cần chú ý nhiều input.

Các sinh viên thực hiện đề tài khơng có kinh nghiệm với học máy hoặc trí tuệ
nhân tạo.

4. Hướng giải quyết:
Sử dụng ngơn ngữ lập trình Python cho dự án, vì số lượng tài liệu và hướng
dẫn lớn.
Sử dụng Reinforcement learning để huấn luyện cho AI (huấn luyện tăng
cường).

5. Mục tiêu:
Tạo ra AI có thể đạt được 1,000,000 điểm trong tetris

6


ĐỒ ÁN 1
TETRIS AI

KẾ HOẠCH VÀ PHÂN TÍCH
1. Kế hoạch
Bước

Mục đích

Nghiên cứu

Nghiên cứu về Python và ứng dụng trong AI

Thực thi


Tạo ra bot chơi Tetris, bot sẽ được feed thông số đầu vào

Huấn luyện

Biến bot thành AI, bot sẽ tự huấn luyện để lấy thơng số đầu vào

2. Phân tích
- Tetris: Mục tiêu của trò chơi là di chuyển các khối gạch đang rơi từ từ xuống
trong kích thước hình chữ nhật 20 hàng x 10 cột (trên màn hình). Chỗ nào có
gạch rồi 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ẽ biến
mất. (Source: Wikipedia)
- Cách một cá nhân thơng thường chơi Tetris:


Đảm bảo độ cao hiện tại là tối thiểu: Khi các viên gạch Tetris chạm
đến độ cao tối đa, thì người chơi sẽ thua cuộc, nên ta phải đảm bào
được khi chọn vị trí đặt gạch ta sẽ tối ưu độ cao của chúng.



Đảm bảo người chơi clear được số hàng nhiều nhất (ghi điểm
nhiều nhất): Người chơi sẽ ghi điểm trong game bằng các clear các
hàng, nên điểm sẽ là cách chúng ta độ hiệu quả của AI.

7


ĐỒ ÁN 1
TETRIS AI




Đảm bảo số lượng lỗ giữa cột là nhỏ nhất: Các lỗ giữa hàng sẽ gây
cản trở cho việc ghi điểm và clear nhiều hàng một lúc nên chúng ta phải
đảm bảo cho việc trên.



Đảm bảo các cột có độ lệch khơng lớn: Nếu độ lệch giữa các cột gần
nhau lớn thì chúng sẽ giới hạn số lượng gạch có thể được đặt trên chúng
nên cần phải tối ưu thông số này.

Bumpiness = |3-5| + |5-6| + |6-5| + |5-4| + |4-5| = 6

8


ĐỒ ÁN 1
TETRIS AI

- AI phù hợp: Sau nhiều lần nghiên cứu tài liệu và video hướng dẫn thì nhóm
đã đi đến quyết định chọn Genetic Algorithm (thuật toán di truyền) để sử dụng
cho hệ thống


1.
2.

3.

4.

5.

6.

7.

Giới thiệu về thuật tốn di truyền: Là một mơ hình mơ phỏng thuyết
chọn lọc tự nhiên của Darwin.
Quy trình thực thi thuật tốn di truyền:
Tạo ra một quần thể với số lượng các cá
thể cho trước mang thơng số ngẫu nhiên
Tính fitness cho từng cá thể trong quần
thể (fitness là hàm tính độ phù hợp cho hệ
thống, như tetris thì fitness sẽ trả về số
điểm hoặc số line đã clear)
Chọn ra các các thể có fitness cao nhất để
đi lai tạo
Các cá thể lai tạo sẽ tạo ra các cá thể mới,
có thơng số ngẫu nhiên (có thể lớn hoặc
nhỏ hơn cá thể bố và mẹ)
Các cá thể vừa được lai tạo có tỉ lệ nhỏ bị
đột biến, khi cá thể bị đột biến, thơng số
của cá thể sẽ có sự thay đổi.
Sau đó chúng ta tổng hợp các cá thể tốt
nhất của đời này và các cá thể mới được
lai tạo, tổng hợp lại để tạo thành một quần
thể mới
Lặp lại quá trình cho đến khi nào đạt nhu

cầu của người lập trình, ta thu kết quả và
lấy cá thể có kết quả tốt nhất.

9


ĐỒ ÁN 1
TETRIS AI

Thực thi
1. Tetris:
Vì đây là đồ án huấn luyện AI chơi game tetris nên nhóm
bỏ qua bước phát triển game tetris bằng cách clone một
tetris repo trên github về và phát triển tính năng AI thêm
vào repo trên (info).
Repo có chức năng cơ bản, đọc dễ hiểu và có khả năng
chỉnh sửa cao.

2. Bot:
Trong q trình phân tích nhóm đã đưa ra các thơng số cần đảm bảo với một
người chơi tetris thơng thường, đó là: Độ cao hiện tại, số dòng clear, số lượng
lỗ giữa các cột, độ lệch giữa các cột. Để chơi tetris người chơi phải cân nhắc
các thông số trên (ở tốc độ của con người) để đưa ra quyết định hợp lý, máy
tính cũng tương tự, ta sẽ đưa các thơng số vào cho AI để chúng quyết định
xem nên tiến hành bước gì tiếp theo.
Nhưng chỉ các thơng số trên thơi thì là chưa đủ, chúng đều quan trọng, nhưng
đối với người chơi thì clear dịng sẽ quan trọng hơn thảy và người chơi sẽ quan
trọng việc hạn chế lỗ giữa cột hơn là đảm bảo độ cao hiện tại. Vì vậy để đưa
ra lựa chọn chính xác, ta phải cho mỗi thơng số một cân nặng (weight).
Từ đó ta đưa ra cách tính điểm:

a=Aggregate Height
b=Lines Clear
c=Holes
d=Bumpiness
score = a*w1 + b*w2 + c*w3 + d*w4
Với w1 – w4 là các weight tương ứng
với các thông số trên. Và khi xử lý, ta
sẽ đọc tất cả vị trí phù hợp với viên
gạch hiện tại, tính score cho từng vị trí,
và chọn vị trí có score là tốt nhất để đặt
viên gạch của chúng ta.

10


ĐỒ ÁN 1
TETRIS AI

Sau khi tạo nên các hàm tính toán cần thiết, ta chỉ việc cho chúng 1 bộ weights
phù hợp. May mắn thay có một dự án có bộ weights sẵn cho các thông số
tương tự nên ta có thể áp dụng chúng vào bot để cho bot hoạt động được.
Weights= [-0.510066, 0.760666, -0.35663, -0.184483] (source)

3. AI
Đầu tiên nhóm tạo một class chứa các hàm của thuật tốn tiến hóa

Trong đó hàm tính fitness của một quần thể sẽ trả về điểm số của từng cá thể
trong một quần thể với một số lượng gạch giới hạn nào đó (piecelimit)
Sau đó chúng ta áp dụng mơ hình thuật tốn tiến hóa để dự án có thể tự đưa
ra weights phù hợp.


11


ĐỒ ÁN 1
TETRIS AI

NGHIÊN CỨU
Lưu ý:






Các kết quả nghiên cứu sau được tiến hành với fastmode=True (các viên
gạch được rơi ngay) và sẽ không hiển thị GUI để đảm bảo độ chính xác
của kết quả (hiển thị GUI sẽ ảnh hưởng đến kết quả tùy theo sức mạnh
của phần cứng).
Weight được lấy từ ví dụ trên mạng trong bài đã được huấn luyện rất
nhiều và có thể chơi tetris liên tục 2 tuần liền, và clear hơn 2 triệu lines
mà vẫn khơng có dấu hiệu thua cuộc, nên nhóm thấy đây sẽ là một mốc
so sánh tốt.
Kiểm tra file readme.md trên github repo nếu muốn tiến hành thực thi lại
các thí nghiệm sau.

Để đánh giá kết quả nghiên cứu, chúng ta sẽ so sánh kết quả khi dùng weight
huấn luyện được với dùng weight của ví dụ trên mạng
Weight trên mạng ta sẽ gọi là demo_weight =
[-0.510066, 0.760666, -0.35663, -0.184483]

Weight ta train được sẽ gọi là trained_weight

12


ĐỒ ÁN 1
TETRIS AI

Case #1: Ai cơ bản train ở 1 seed
Đặc điểm:



Các viên gạch và thứ tự gạch xuất hiện luôn là giống nhau (dùng seed)
AI được train với seed=1
Fitness được đo bằng số điểm đạt được

Kết quả huấn luyện (record1)

thể

SL
Đời

SL
lai

SL
gạch


Max
fitness

Weight của cá thể tốt nhất

5

5

2

100

7072

[-1.23962156, -1.19593245, -1.23643526, 1.21559287]

Bảng so sánh
STT

seed

Số lượng
gạch

Trained
fitness

Demo
fitness


Train fitness/demo
fitness

1.1

1

100

7072

7588

0.931998

1.2

1

200

21975

25253

0.870194

1.3


2

100

1403

7601

0.184581

1.4

random

100

4594

7665

0.599348

1.5

random

100

2916


7804

0.373655

1.6

1

infinite

61900

>2.000.000
(stopped)

(lost)

Phân tích case#1:
- AI của chúng ta được huấn luyện
qua 5 đời, mỗi đời gồm 5 cá thể, với
giới hạn gạch là 100
- Ở 1.1, các thông số của được set
tương tự như lúc AI được huấn
luyện, nên điểm số cho ra đạt được
93% so với demo_weight
- Ở 1.2, vì số lượng gạch tăng lên
nhiều hơn so với lúc huấn luyện nên
tỉ lệ khi mang ra so sánh là 87% so
với demo_weight


- Ở 1.3, 1.4, 1.5, trained_weight cho
ra số điểm thấp hơn rõ rệt khi so với
demo_weight (ở 1.3 ta đạt 18%)
Kết luận case#1:
- Cần có thêm nhiều cá thể ở mỗi
đời, thêm nhiều đời cho quần thể.
- Huấn luyện với seed nhất định sẽ
tối ưu thời gian (nếu ta kiểm thử ở
seed đó), nhưng khả năng cao sẽ
phát sinh vấn đề khi sử dụng AI
trong thực tiễn.
13


ĐỒ ÁN 1
TETRIS AI

Case #2: AI cơ bản train ở nhiều seed
Đặc điểm:



Các viên gạch và thứ tự gạch xuất hiện luôn là ngẫu nhiên
AI được train với seed=random
Fitness được đo bằng số điểm đạt được

Kết quả huấn luyện (record2)

thể


SL
Đời

SL
lai

SL
gạch

Max
fitness

Weight của cá thể tốt nhất

10

10

2

500

169,382

[-0.95302473, 0.18715282, -2.16764887, 0.34569755]

Bảng so sánh
STT

seed


Số lượng
gạch

Trained
fitness

Demo
fitness

Train fitness/demo
fitness

2.1

1

500

29,795

146,396

0.203523

2.2

2

500


1,612

146,398

0.011011

2.3

3

500

159,545

145,229

1.098575

2.4

4

500

18,009

151,914

0.118547


2.5

5

500

37,861

144,788

0.261493

infinite

247.437
(lost)

>3.000.00
0
(stopped)

2.6

3

Phân tích case #2:
- AI của chúng ta được huấn luyện
qua 10 đời, mỗi đời gồm 10 cá
thể,với giới hạn gạch là 500


- Ta thua ở 247,437 điểm ở hàng 2.6
(không giới hạn gạch), vẫn không
đạt yêu cầu
Kết luận case#2:

- Khi thực chiến mỗi cá thể có giới
hạn gạch và seed khác nhau.

- Huấn luyện AI với các seed ngẫu
nhiên có khả năng tạo ra AI tốt hơn

- Ngoại trừ ở 2.3, thì trained_weight
ln đạt tỉ lệ rất thấp khi so với
demo_weight (2.2 đạt 1,1%)

- Huấn luyện AI với seed ngẫu nhiên
cần rất nhiều cá thể mỗi đời và cần
qua rất nhiều đời để đạt được khả
năng ứng dụng cao (khi so với ứng
dụng trong case #2)

- Ở 2.3 ta đạt 110%

14


ĐỒ ÁN 1
TETRIS AI


Case #3: AI với fitness mới và train ở 1 seed
Đặc điểm:



Các viên gạch và thứ tự gạch xuất hiện được xác định bằng seed
AI được train với seed=1
Fitness được đo bằng:
số lượng line đã xóa*1000 + số lượng gạch đã đặt

Kết quả huấn luyện (record3)

thể

SL
Đời

SL
lai

SL
gạch

Max
fitness

Weight của cá thể tốt nhất

5


5

2

300

118300

[-0.31534278, 0.2462788, -1.93889201, 0.48623653]

Bảng so sánh
Lưu ý:


Ở bảng này ta thêm một thông số nằm sau fitness của 2 weight, đó hiệu
năng của fitness, mỗi viên gạch tetris có 4 khối nhỏ, cần 10 khối nhỏ để
tạo thành một hàng ngang, cách tính fitness mới là: số lượng line đã
xóa*1000 + số lượng gạch đã đặt, vì vậy theo lý thuyết, nếu đặt 300 viên
gạch:
->fitness tối đa có thể đạt được là: 300*0.4*1000 + 300 =120,300




Ta sẽ giới thiệu thêm thông số nằm sau fitness của 2 weight đó là tỉ lệ
của chúng so với fitness tối đa đối với thông số của chúng.
Với các bài train ở số lượng gạch là vơ hạn thì chúng sẽ được giám sát
kèm với UI nên số điểm có thể thấp hơn số điểm tối đa.

STT


seed

Số
lượng
gạch

3.1

1

300

Theoretical
maximum

120,300

3.2

1

600

240,600

3.3

1


1,000

401,000

Trained
fitness

Demo fitness

118,300

117,300

(98.3%)

(97.5%)

236,600

237,600

(98.3%)

(98.7%)

399,000

400,000

(99.5%)


(99.7%)

Train
fitness/
demo
fitness
1.008

0.995

0.997

15


ĐỒ ÁN 1
TETRIS AI

3.4

3.5

2

2

500

Infinite


200,500

Infinite

198,500

196,500

(99%)

(98%)

1,535,862

1,049,655

(99%,thua ở
line 3862)

(98.5%, thua ở
line 2655)

1.010

1.463

Phân tích case #3:







AI của chúng ta được huấn luyện qua 5 đời, mỗi đời gồm 5 cá thể, với
giới hạn gạch là 300.
Khi thực chiến với demo_weight mỗi cá thể có giới hạn gạch và seed
khác nhau.
Kết quả khi mang ra so sánh với demo_fitness là thật sự xuất sắc, chỉ
qua tổng cộng 25 cá thể mà AI đã có thể ngang bằng so với
demo_fitness ở 4/5 bài test và chạm ngưỡng 146% hiệu năng khi dùng
seed 2 và không giới hạn gạch
Có sự khác biệt rất lớn khi thay đổi cơng thức tính fitness

Kết luận case#3:




Huấn luyện AI tetris muốn đạt hiệu quả cao, nhanh chóng thì ta tính
fitness bằng số lượng line đã clear, sẽ tốt hơn là tính điểm, vì cơng thức
tính điểm là số lượng line clear = [1,2,3,4] thì sẽ có số điểm là
[40,100,300,1200], vì cơng thức tính điểm chơi ưu tiên clear nhiều line
một lúc, có thể mang lại nguy hiểm cho AI vì độ cao trung bình sẽ được
đẩy lên để ưu tiên clear nhiều line. AI với fitness theo số line đã clear thì
sẽ ưu tiên clear line trước, dẫn đến độ cao trung bình thấp, khiến chúng
sống được lâu hơn.
Cần có kiểm chứng về thực lực của các AI với các bộ fitness khác nhau

16



ĐỒ ÁN 1
TETRIS AI

Case #4: AI tự train vs AI tự train
Đặc điểm:





Khi so sánh với nhau các AI sẽ được so sánh bằng số điểm đạt được
Các viên gạch và thứ tự gạch xuất hiện được xác định bằng seed
2 AI sẽ được train ở seed = 1
Ta sẽ train 2 AI đối đầu với nhau
Fitness của AI 1 được đo bằng:
số lượng line đã xóa*1000 + số lượng gạch đã đặt

Kết quả huấn luyện AI 1 (record4)

thể

SL
Đời

SL
lai

SL

gạch

Max
fitness

Weight của cá thể tốt nhất

5

5

2

300

119,300

[-0.40254199, 0.83214954, -1.22852379, 0.60817082]

Fitness của AI 2 được đo bằng số điểm đạt được

Kết quả huấn luyện AI 2 (record5)

thể

SL
Đời

SL
lai


SL
gạch

Max
fitness

Weight của cá thể tốt nhất

5

5

2

300

59,075

[-0.99519968, 0.51426722, -1.50641223, 0.66819176]

Bảng so sánh
Lưu ý:


Với các bài train ở số lượng gạch là vơ hạn thì chúng sẽ được giám sát
kèm với UI nên số điểm có thể thấp hơn số điểm tối đa mà chúng có thể
đạt được
STT


seed

Số lượng
gạch

AI 1

AI 2

Score

Score

AI 1 score/AI
2 score

4.1

1

100

7,551

7,620

0.990944882

4.2


1

300

55,769

59,075

0.944037241

4.3

1

600

203,548

225,613

0.902199785

4.4

1

Infinite

2,134,832


495,705

(lost)

(lost)

4.306658194
17


ĐỒ ÁN 1
TETRIS AI

4.5

2

Infinite

337,842

1,550,578

(lost)

(lost)

0.217881332

Phân tích case #4:





AI của chúng ta được huấn luyện qua 5 đời, mỗi đời gồm 5 cá thể, với
giới hạn gạch là 300.
Khi train AI sử dụng số điểm đạt được AI sẽ tối ưu clear nhiều hàng cung
một lúc hơn, như ở 4.1 và 4.2 và 4.3, AI 2 luôn đạt điểm số cao hơn
Nhưng khi muốn AI tồn tại lâu hơn thì AI 1 tồn tại tốt hơn (4.4)

Kết luận case #4:




AI được huấn luyện với fitness ưu tiên clear nhiều hàng một lúc (AI 2)
sẽ có hiệu năng tốt hơn trong số lượng gạch được cho phép
AI được huấn luyện với fitness ưu tiên độ cao của các cột (AI 1) sẽ có
khả năng tồn tại tốt hơn (4.4)
Nếu muốn đánh giá AI bằng các seed khác nhau thì nên thử ở nhiều
seed vì kết quả sẽ phụ thuộc vào seed đó (4.5)

18


ĐỒ ÁN 1
TETRIS AI

KẾT LUẬN
Sau các bài nghiên cứu và huấn luyện thì nhóm đã có nhiều kiến thức và đã

tạo được một AI có khả năng chơi Tetris hơn 34,000,000 điểm. AI được huấn
luyện qua 20 đời, gồm 20 cá thể, 5000 gạch giới hạn và được huấn luyện hồn
chỉnh trong vịng 13h. (Video)
Sau khi hồn thành đồ án và tiến hành các bài nghiên cứu, nhóm đã biết thêm
được nhiều nội dung liên quan đến AI nói chung và AI cho game Tetris nói
riêng.
Các kiến thức trên có thể được dùng cho học tập và các dự án sau này, nhóm
rất vui vì đã chọn được một đề tài tốt và mang lại nhiều kiến thức bổ ích.
Cảm ơn các thầy cô hoặc các bạn đã đọc qua báo cáo.

19


ĐỒ ÁN 1
TETRIS AI

THAM KHẢO
Tetris game:
/>a36f6fcc9
Demo weights & charts: Tetris AI – The (Near) Perfect Bot | Code My Road
(wordpress.com)
Genetic algorithm: />
20


ĐỒ ÁN 1
TETRIS AI

Records
Record1

new population:
[[-0.12589704 -1.34197848 -0.06709601 0.3200456 ]
[-1.23962156 -1.19593245 -0.75849727 -1.21559287]
[ 1.07378825 0.1164188 -1.30261983 1.92559758]
[-1.062422 -1.78877925 0.62026639 -1.46762026]
[-0.27343832 -1.98723154 1.81341477 1.11719358]]
Original Generation fitnesses:
[257, 3647, 256, 558, 135]
Generation 1 fitnesses: [3647, 558, 795, 1863, 428]
Generation 2 fitnesses: [3647, 1863, 4989, 1863, 4989]
Generation 3 fitnesses: [4989, 4989, 7072, 7072, 4025]
Generation 4 fitnesses: [7072, 7072, 2946, 7072, 4989]
Generation 5 fitnesses: [7072, 7072, 5635, 4025, 4869]
Best solution: [-1.23962156 -1.19593245 -1.23643526 -1.21559287]
best solution fitness: 7072

Record 2
new population:
[[-0.36033681 0.27601282 0.53840525 0.05282673]
[ 0.53552701 -0.51392713 -0.737155 -0.34569755]
[ 0.91680168 -0.10872061 -0.8428988 -0.79516539]
[-0.95302473 0.18715282 0.10498858 -0.1459121 ]
[ 0.42588522 0.10440791 0.73048244 0.15893209]
[ 0.19346333 -0.959116

0.50918438 0.00269006]

[-0.25760762 -0.26413225 0.38128662 0.09112444]
[-0.91848655 -0.10188107 -0.27684545 0.0634764 ]
[ 0.41675761 -0.04812963 0.42923271 -0.03727684]

[-0.5583668 0.87129382 0.27870917 0.02245596]]
Original Generation fitnesses:
[129, 565, 391, 154016, 119, 117, 100, 265, 141, 255]
21


ĐỒ ÁN 1
TETRIS AI

Generation 1 fitnesses: [121631, 469, 138103, 121, 148502, 129, 133175, 506,
153663, 134]
current best [-0.95302473 0.18715282 -0.38422874 -0.34569755]
Generation 2 fitnesses: [149836, 157954, 156179, 156516, 155680, 147348,
146984, 150102, 147736, 153386]
current best [-0.95302473 0.18715282 -1.11446077 -0.34569755]
Generation 3 fitnesses: [146975, 147132, 146514, 151658, 12936, 151628,
136977, 149282, 19929, 88325]
current best [-0.95302473 0.18715282 -1.85092342 -0.34569755]
Generation 4 fitnesses: [170107, 158058, 140054, 151453, 145574, 2949,
136085, 159224, 76696, 155764]
current best [-0.95302473 0.18715282 -1.85092342 -0.34569755]
Generation 5 fitnesses: [79757, 42186, 154283, 160948, 146836, 1159,
153866, 3638, 152591, 169382]
current best [-0.95302473 0.18715282 -2.16764887 -0.34569755]
Best solution: [-0.95302473 0.18715282 -2.16764887 -0.34569755]
best solution fitness: 169382

Record 3
new population:
[[-0.31534278 0.2462788 -0.55076098 -0.73178723]

[ 0.99695293 -0.29059119 -0.53770487 -0.96082544]
[-0.001084

0.0704489 0.94301807 0.55202953]

[-0.94000427 -0.03486777 -0.61674877 -0.48623653]
[ 0.47391941 -0.43178742 0.84252522 -0.15626129]]
Original Generation fitnesses:
[78236, 1023, 16, 47158, 14]
Generation 1 fitnesses: [41146, 107300, 30118, 29116, 118300]
current best [-0.31534278 0.2462788 -1.31614839 -0.48623653]
Generation 2 fitnesses: [117300, 114300, 12069, 100284, 10059]
current best [-0.31534278 0.2462788 -1.31614839 -0.48623653]
Generation 3 fitnesses: [115300, 114300, 117300, 112300, 13072]
current best [-0.31534278 0.2462788 -0.97926943 -0.48623653]
Generation 4 fitnesses: [114300, 113300, 111300, 115300, 56183]
current best [-0.31534278 0.2462788 -1.93889201 -0.48623653]
22


ĐỒ ÁN 1
TETRIS AI

Generation 5 fitnesses: [118300, 117300, 117300, 116300, 118300]
current best [-0.31534278 0.2462788 -1.93889201 -0.48623653]
Best solution: [-0.31534278 0.2462788 -1.93889201 -0.48623653]
best solution fitness: 118300

Record 4
new population:

[[-0.88319204 -0.69847013 0.28717479 0.60853124]
[-0.12275299 -0.14480655 0.87347775 0.15159102]
[ 0.90889062 0.29639745 0.89318931 -0.99309231]
[-0.21858926 -0.53570015 -0.37034827 -0.60817082]
[-0.40254199 0.83214954 0.340375

0.57362504]]

Original Generation fitnesses:
[17, 12, 18, 14077, 22]
Generation 1 fitnesses: [14077, 22, 17, 114300, 14]
current best [-0.40254199 0.83214954 -0.8896612 -0.60817082]
Generation 2 fitnesses: [114300, 14077, 12071, 23100, 119300]
current best [-0.40254199 0.83214954 -1.22852379 -0.60817082]
Generation 3 fitnesses: [119300, 114300, 117300, 94277, 94277]
current best [-0.40254199 0.83214954 -1.22852379 -0.60817082]
Generation 4 fitnesses: [119300, 117300, 117300, 119300, 119300]
current best [-0.40254199 0.83214954 -1.22852379 -0.60817082]
Generation 5 fitnesses: [119300, 119300, 119300, 117300, 119300]
current best [-0.40254199 0.83214954 -1.22852379 -0.60817082]
Best solution: [-0.40254199 0.83214954 -1.22852379 -0.60817082]
best solution fitness: 119300

Record 5
new population:
[[ 0.19585127 -0.9264338 0.27480114 -0.31096539]
[ 0.99071723 -0.62228411 0.00677708 0.29658396]
[-0.99519968 0.51426722 -0.62563145 -0.55191613]
[ 0.835203


0.4954197 0.88405925 -0.85152596]
23


ĐỒ ÁN 1
TETRIS AI

[-0.69418774 0.19499202 -0.71301293 -0.66819176]]
Original Generation fitnesses:
[172, 122, 56402, 137, 20042]
Generation 1 fitnesses: [56402, 20042, 55717, 27571, 55717]
current best [-0.99519968 0.51426722 -0.62563145 -0.55191613]
Generation 2 fitnesses: [56402, 55717, 55088, 4724, 55748]
current best [-0.99519968 0.51426722 -0.62563145 -0.55191613]
Generation 3 fitnesses: [56402, 55748, 54153, 55748, 55717]
current best [-0.99519968 0.51426722 -0.62563145 -0.55191613]
Generation 4 fitnesses: [56402, 55748, 55717, 55717, 53916]
current best [-0.99519968 0.51426722 -0.62563145 -0.55191613]
Generation 5 fitnesses: [56402, 55748, 55748, 51674, 59075]
current best [-0.99519968 0.51426722 -1.50641223 -0.66819176]
Best solution: [-0.99519968 0.51426722 -1.50641223 -0.66819176]
best solution fitness: 59075

24



×