ĐẠ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)
Cá
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)
Cá
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)
Cá
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)
Cá
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)
Cá
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