Tải bản đầy đủ (.doc) (109 trang)

đồ án tốt nghiệp giải thuật gen và một số bài toán về giải thuật gen

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 (444.85 KB, 109 trang )

Giải thuật gen và một số bài toán về giải thuật gen
CHƯƠNG I: KHÁI QUÁT VỀ GIẢI THUẬT GEN
CHƯƠNG II: CƠ SỞ TOÁN HỌC CỦA GT GEN
CHƯƠNG III: HIỆN THỰC GIẢI THUẬT GEN

CHƯƠNG IV: SỰ CẢI TIẾN VÀ ỨNG DỤNG CỦA GIẢI
THUẬT GEN
CHƯƠNG V: BÀI TOÁN HỘP ĐEN
CHƯƠNG VI: BÀI TOÁN TỐI ƯU HOÁ

CHƯƠNG VII: BÀI TOÁN NGƯỜI TÙ( Prisoner's Dilemma
Problem)
CHƯƠNG VIII: BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHẤT(The
Traveling Salesman Problem - TSP)
CHƯƠNG I
KHÁI QUÁT VỀ GIẢI THUẬT GEN
*****
I-KHÁI NIỆM GIẢI THUẬT GEN ?
Giải thuật gen (GAs) là giải thuật tìm kiếm, chọn lựa các giải pháp tối ưu để giải
quyết các bài toán khác nhau dựa trên cơ chế chọn lọc tự nhiên của ngành di truyền
học.
Trong cơ thể cơ thể sinh vật, các gen liên kiết với nhau theo cấu trúc dạng chuỗi
gọi là nhiễm sắc thể , nó đặc trưng cho mỗi loài và quyết định sự sống còn của cơ thể
đó. Trong tự nhiên một loài muốn tồn tại phải thích nghi với môi trường ,cơ thề sống
nào thích nghi với môi trường hơn thì sẽ tồn tại và sinh sản với số lượng ngày càng
nhiều hơn , trái lại những loài không thích nghi với môi trường sẽ dần dần bị diệt
chủng .Môi trường tự nhiên luôn biến đổi ,nên cấu trúc nhiễm sắc thể cũng thay đổi
để thích nghi với môi trường ,và ở thế hệ sau luôn có độ thích nghi cao hơn ở thế hệ
trước .Cấu trúc này có được nhờ vào sự trao đổi thông tin ngẫu nhiên với môi trường
bên ngoài hay giữa chúng với nhau . Dựa vào đó các nhà khoa học máy tính xây dựng
nên một giải thuật tìm kiếm tinh tế dựa trên cơ sở chọn lọc tự nhiên và quy luật tiến


hóa, gọi là giải thuật gen (Genetic Algorithms)
Mục tiêu nghiên cứu của GAs là :
-Trừu tượng hóa và diễn đạt chính xác về các quá trình thích nghi trong hệ thống
tự nhiên .
-Thiết kế những phần mềm về hệ thống nhân tạo nhằm duy trì các cơ chế quan
trọng của hệ thống tự nhiên .
Những mục tiêu này đã dẫn đến những khám phá quan trọng trong hệ thống khoa
học tự nhiên lẫn nhân tạo .
Vấn đề trọng tâm của việc nghiên cứu GAs là tính mạnh mẻ của giải thuật ,sự cân
bằng giữa tính hiệu quả và sự cần thiết để có thể tồn tại trong nhiều môi trường khác
nhau.
GAs ra đời và phát triễn dựa trên quá trình tiến hóa trong tự nhiên và đã được ứng
dụng thành công trong nhiều lĩnh vực nhất là tối ưu hóa và máy học .

II-GIẢI THUẬT GEN VỚI CÁC PHƯƠNG PHÁP TRUYỀN THỐNG :
GAs khác với những sự tối ưu hóa thông thường và những giải thuật tìm kiếm
khác bởi 4 điểm sau :
1-GAs làm việc với sự mã hóa môt bộ các thông số , chứ không phải bản thân các
thông số .
2-GAs tìm kiếm từ một số điểm dân cư , chứ không phải từ một điểm.
3-GAs sử dụng các thông tin trả giá (payoff) của hàm mục tiêu chứ không phải
đạo hàm (derivatives) hay những tri thức phụ khác.
4-GAs sử dụng các luật chuyển đổi theo xác suất ,chứ không phải các luật chuyển
đổi xác định.
GAs đòi hỏi một tập hợp các thông số tự nhiên của bài toán tối ưu để mã hóa thành
các chuỗi có chiều dài hữu hạn , dựa trên một số hữu hạn các ký tự .
Để hiểu rõ ta xét bài toán tối ưu đơn giản sau đây :
Ví du: tối ưu hóa hàm f(x) = x
2
trên khoảng nguyên [0,31].

Chúng ta muốn tìm cực đại của hàm f(x) = x
2
trên đoạn số nguyên [0,31] .Bằng
phương pháp truyền thống , chúng ta lần lượt tính bình phương của x theo các giá trị
từ 0 đến 31 ,cho đến khi chúng ta chọn được giá trị cao nhất của hàm mục tiêu .
Với GAs bước đầu tiên của quá trình tối ưu hóa là mã hóa x thành một chuỗi có
chiều dài xác định .Có nhiều cách đề mã hóa x , chúng ta hãy xét bài toán tối ưu với
cách mã hóa tự nhiên .
Giả sử chúng ta có bài toán tắt mở một cái hộp đen ,với một dãy 5 công tắc ở đầu
vào . Mỗi tổ hợp các trạng thái của 5 công tắc ứng với một tín hiệu ra ( output ) của hàm f
, biễu diễn theo toán học là f = f(s) , trong đó s là một tổ hợp các trạng thái cụ thể của 5
công tắc . Mục tiêu của bài toán là phải đặt các công tắc như thế nào để đạt được giá trị
tối đa có thể có của hàm f . Với những phương pháp khác của bài toán tối ưu , chúng ta
có thể làm việc trực tiếp với bộ các thông số ( việc đặt các công tắc ) và bậc tắt các công
tắc từ một trạng thái này sang trạng thái khác bằng cách dùng những qui tắc chuyển đổi
theo phương pháp chuyên biệt . Với GAs ,đầu tiên chúng ta mã hóa dãy các công tắc
theo một chuỗi có chiều dài xác định . Cách mã hóa đơn giản như sau : dùng chuỗi dài 5
ký tự gồm các giá trị 0 và 1 , với quy ước tắt = ‘0’ , mở = ’1’.Thí dụ :chuỗi 11110 nghĩa
là 4 công tắc đầu mở , công tắc thứ 5 tắt .Bài toán tối ưu hóa hộp đen với 5 công tắc tắt-
mở . GAs không yêu cầu bạn biết nguyên tắc làm việc của hộp đen .
Trong nhiều phương pháp tối ưu ,chúng ta di chuyển thận trọng từ một điểm trong
không gian quyết định đến điểm kế bằng cách dùng vài luật chuyển đổi để xác định
điểm kế tiếp . Phương pháp điểm-đến-điểm này khá nguy hiểm , vì chắc chắn sẽ chỉ
ra những đỉnh sai trong không gian tìm kiếm đa hình (multimodal) .Trái lại GAs làm
việc với một cơ sỡ dữ liệu phong phú gồm có nhiều điểm đồng thời (một dân số các
chuỗi ),thực hiện leo nhiều điểm cùng lúc .Do đó , xác xuất gặp đỉnh sai được giảm
nhiều so với các phương pháp điểm-đến-điểm .Bài toán hộp đen là một ví dụ .những
kỹ thuật khác để giải quyết bài toán này có thể bắt đầu với một bộ các thiết lập các
công tắc ,áp dụng vài quy tắc chuyển đổi , và sinh ra một dãy các công tắc thử mới .
GAs bắt đầu với một dân số các chuỗi và sau đó sẽ phát sinh thành công những

dân số chuỗi khác . Trở lại bài công tắc một sự bắt đầu ngẫu nhiên bằng cách tung
đồng tiền ( ngửa =’1’, xấp =’0’ ) có thể sinh ra dân số ban đầu có kích thước n= 4
như sau:
01101
11000
01000
10011
Sau bước khởi đầu này, những dân số thành công sẽ được phát sinh ra bằng cách
dùng GAs . Bằng cách làm việc từ một dân số đa dạng , thích nghi cao ,thay vì một
điểm đơn , GAs trung thành với những ngạn ngữ cổ cho rằng sẽ có sự an toàn trong
một số đông ; chúng ta sẽ sớm hiểu ra cách mà những đặc trưng song song này đóng
góp vào sức mạnh của GAs .
Nhiều kỹ thuật tìm kiếm yêu cầu nhiều thông tin phụ để làm việc hiệu quả hơn
.Thí dụ, kỹ thuật gradient cần đạo hàm ( được tính tóan bằng giải tích hay bằng số)
để có thể leo lên đỉnh hiện tại , và những thủ tục tìm kiếm cục bộ khác giống như kỹ
thuật greedy của sự tối ưu hóa tổ hợp đòi hỏi truy xuất hầu hết những thông số cho
trong bảng .Trái lại GAs không cần tất cả những thông tin phụ này .Để thực hiện một
tìm kiếm hiệu quả cho những cấu trúc ngày càng tốt hơn , chúng chỉ yêu cầu các giá
trị của hàm mục tiêu liên kết với các nhiễm sắc thể .Những đặc tính này làm cho GAs
là một phương pháp chuẩn mực hơn nhiều các phương pháp tìm kiếm khác .
III-GIẢI THUẬT GEN ĐƠN GIẢN:
GAs là giải thuật tìm kiếm dựa trên cơ chế chọn lọc nhân tạo và sự tiến hoá của
các gen . Các gen liên kết nhau tạo thành chuỗi gọi là nhiễm sắc thể , quyết định quá
trình hoạt động của cơ thể sống.
Các chuỗi nhiễm sắc thể được biểu diễn bằng chuỗi các số nhị phân 0 và 1, mỗi
một thành phần trong chuỗi gọi là Allele .
Một GAs đơn giản cho những kết quả tốt trong nhiều bài toán thực tế bao gồm 3 thao
tác:
Sinh sản (hay tái tạo) (Reproduction).
Ghép chéo (Crossover) .

Đột biến (Mutation) .
1-SINH SẢN:
Sinh sản là một quá trình trong đó các chuỗi cá thể được ghép lại tuỳ theo các giá
trị của hàm mục tiêu f ( các nhà sinh vật học gọi hàm này là hàm thích nghi ) .Toán tử
này được xem là quá trình chọn lọc trong tự nhiên . Hàm mục tiêu f(i) được gán cho
mỗi cá thể trong dân số .Thao tác sinh sản ( chọn cha mẹ) được điều khiển bằng cách
quay bánh xe roulette , trong đó mỗi chuỗi trong dân số chiếm một khe có kích thước
tỉ lệ với độ thích nghi (fitness ) của nó trên bánh xe .
Giả sử dân số mẫu của bốn chuỗi trong bài toán hộp đen có các giá trị hàm thích
nghi ( hàm mục tiêu ) như trong bảng 1.1. Lấy tổng độ thích nghi của 4 chuỗi , chúng
ta được 1170 . Tỷ lệ % của độ thích nghi tổng của dân số được chỉ ra trong bảng 1.1 .
BẢNG 1.1 : Các chuỗi của bài toán mẫu và các giá trị thích nghi
Số TT Chuỗi Độ thích nghi % trong tổng số
1 01101 169 14.4
2 11000 576 49.2
3 01000 64 5.5
4 10011 361 30.9
Tổng cộng 1170 100.0
Bánh xe roulette được đánh trọng số phù hợp cho sự sinh sản của thế hệ này được
thể hiện trên hình 1.1.
HÌNH 1.1 : Sự sinh sản đơn giản phân bố các chuỗi con cháu nhờ sử dụng bánh
xe roulette với các khe hở tỷ lệ với độ thích nghi . Bánh xe mẫu được xác định dựa
trên bảng 1.1 và 1.2

¯¬®¯¬
¬
¬¬
¯
Để sinh sản , chúng ta chỉ cần quay bánh xe roulette 4 lần đối với bài toán này ,
chuỗi 1 có giá trị thích nghi là 169 , đại diện cho 14,4 % so với tổng độ thích nghi .

Kết quả là chuỗi 1 chiếm 14.4% bánh xe roulette dốc , và cứ mỗi lần quay 1 chuổi
chiếm 0,144 . Mỗi khi chúng ta yêu cầu 1 thê hệ khác , 1 vòng quay đơn giản của
bánh xe roulette đánh trọng số sẽ chọn ra được ứng cử viên để sinh sản . Bằng cách
này , những chuỗi thích nghi hơn sẽ có 1 số lượng con cháu lớn hơn trong các thế hệ
kế tiếp.
2-GHÉP CHÉO:
Mỗi khi một chuỗi được chọn để sinh sản , một bản sao chính xác của chuỗi đó sẽ
được tạo ra . Các bản sao này được đưa vào bể ghép đôi (mating pool) việc ghép chéo
đơn giản có thể được tiến hành theo 2 bước :

14

4
%
30.9 %
5.5 %
49.2 %
¬
¯
®
Đầu tiên các thành viên của các chuỗi đơn giản mới ở trong bể ghép ,được ghép
đôi với nhau một cách ngẫu nhiên .Sau đó, mỗi cặp chuỗi sẽ trãi qua việc ghép chéo
như sau : một số nguyên chỉ vị trí k dọc theo chuỗi sẽ được chọn lựa qua giá trị ngẫu
nhiên nằm trong khoảng từ 1 đến chiều dài chuỗi l trừ 1 [1, l-1 ].Hai chuỗi mới sẽ
được tạo ra bằng cách hoán đổi tất cả các ký tự nằm giữa vị trí k +1 và 1 .Thí dụ ,xét
2 chuỗi A
1
và A
2
từ dân số ban đầu trong ví dụ :

A
1
= 0110 | 1
A
2
= 1100 | 0
Giả sử trong khi chọn một số ngẫu nhiên nằm trong khoảng từ 1 và 4 , chúng ta
được k = 4 ( như được chỉ ra bằng dấu ngăn cách | ) .Kết quả của việc ghép chéo làm
sinh ra 2 chuỗi mới A’
1
và A’
2
trong đó dấu ‘ có nghĩa là các chuỗi này là phần tử của
thế hệ mới .
A’
1
= 01100
A’
2
= 11001
Cơ chế sinh sản và ghép chéo đơn giản , bao gồm việc sinh số ngẫu nhiên , sao
chép chuỗi và trao đổi các chuỗi thành phần .Tuy nhiên , điểm cần nhấn mạnh là việc
sinh sản và trao đôi thông tin có cấu trúc (dù là một cách ngẫu nhiên) của quá trình
ghép chéo làm cho các giải thuật gen tăng sức mạnh.
3-ĐỘT BIẾN:
Nếu sự sinh sản theo độ thích nghi kết hợp với sự ghép chéo làm cho GAs có
năng lực xử lý tốt hơn , thì sự đột biến đóng một vai trò quyết định thứ 2 trong hoạt
động của GAs .Sự đột biến là cần thiết bởi vì , cho dù sự sinh sản và ghép chéo đã tìm
kiếm hiệu quả và tái kết hợp lại các ký hiệu lại với nhau , nhưng thỉnh thoảng chúng
có thể trở nên quá sốt sắng và làm mất một vài gen hữu ích nào đó (bit 1 hay bit 0 tại

những vị trí đặc biệt nào đó) . Trong các hệ thống gen nhân tạo, toán tử đột biến sẽ
chống lại sự mất mát không khôi phục được đó . Trong GAs đơn giản , đột biến là sự
thay đổi ngẫu nhiên và không thường xuyên (với xác suất nhỏ) trị số vị trí của một
chuỗi. Trong việc mã hóa nhị phân của bài toán hộp đen , cónghĩa là chỉ cần đổi 1
thành 0 và ngược lại . Tự thân no, sự đột biến là một hoạt động ngẫu nhiên trong
không gian chuỗi , khi được dùng cùng với sự sinh sản và ghép chéo , nó sẽ là một
chính sách bảo hiểm chống lại nguy cơ mất mát những ký hiệu quan trọng .
Ba toán hạng sinh sản, ghép chéo và đột biến được áp dụng lặp đi lặp lại để tạo ra
nhiễm sắc thể mới, cho đến khi vượt quá kích thước dân số đã định thì dừng lại,coi
như một thế hệ mới tương ứng với một quá trình sinh sản đã được tạo xong bao gồm
một dân số các chuỗi nhiễm sắc thể, trong GAs có thể sinh ra nhiều thế hệ.
4-SƠ ĐỒ GIẢI THUẬT GEN :
Gas bao gồm các bước sau :
1. Khởi tạo 1 dân số (population)ban đầu của các chuổi nhiễm sắc thể .
2. Xác định giá trị mục tiêu cho mỗi một chuỗi nhiễm sắc thể .
3. Tạo các chuổi nhiễm sắc thể mới bằng sinh sản từ các chuổi nhiễm sắc
thể hiện tại , có tính vấn đề ghép chéo và đột biến xảy (nếu có)
4. Xác định hàm mục tiêu cho các chuổi nhiễm sắc thể mới và đưa nó vào
trong một dân số mới.
5. Nếu điều kiện dừng thỏa thì giải thuật dừng lại và trả về chuỗi nhiễm
sắc thể tốt nhất cùng với gía trị mục tiêu của nó , nếu không thì quay lại bước 3.
Sơ đồ giải thuật Gen :(hình 1.2)
Bước 1: Tạo một dân số ban đầu của các chuổi nhiễm sắc thể .
Bước 2: Xác định giá trị Hàm Mục tiêu của các chuổi nhiễm sắc thể.
Bước 3: Tạo các chuổi nhiễm sắc thể mới bằng cách sinh
sản từ các chuổi nhiễm sắc thể hiện tại (Có xét đến ghép
chéo và đột biến xảy ra ).
Bước 4: Tính toán các giá trị mục tiêu của các chuổi nhiễm
sắc thể mới và đưa nó vào một dân số mới.
Bước 5: Nếu điều kiện dừng đã thoã thì dừng lại và trả về

yêu cầu của bài toán ,nếu không thì quay lại bước 3 .
IV-HIỆN THỰC GIẢI THUẬT GEN
Chúng ta hãy áp dụng GAs theo từng bước một , cho một bài toán tối ưu hóa
chuyên biệt .Xét bài toán tìm giá trị lớn nhất của hàm f(x)=x
2
với x thuộc đoạn
[0,31] . Để sử dụng GAs, trước tiên chúng ta phải mã hóa những biến quyết định của
bài toán thành một chuỗi có chiều dài xác định nào đó .Ở ví dụ này , chúng ta mã hóa
biến x thành một số nguyên nhị phân không dấu có độ dài bằng 5 .
Vơí một số nguyên nhị phân không dấu 5 bit , chúng ta diểu diễn được số từ 0
(00000) đến 31(11111) .Bằng hàm mục tiêu đã xác định và phương pháp mã hóa
trên , chúng ta sẽ mô phỏng một thế hệ đơn giản qua GAs , với các thao tác : sinh
sản ,ghép chéo và đột biến .
Đầu tiên chúng ta hãy chọn ngẫu nhiên một dân số ban đầu có kích thước 4 , bằng
cách gieo đồng tiền 20 lần (xấp = 0; ngửa = 1) . Chúng ta có thể bỏ qua bước này
bằng cách dùng dân số ban đầu của bài toán đặt dãy công tắc cho hộp đen .Hãy xem
dân số này biễu diễn ở bên trái bảng 1.2 , chúng ta sẽ thấy giá trị giải mã của x , độ
thích nghi (hay chính là giá trị của hàm mục tiêu f(x)) .Để giá trị thích nghi f(x) được
tính từ chuỗi như thế nào hãy xem chuỗi thứ 3 của dân số ban đầu , chuỗi 01000 .
Giải mã chuỗi này theo số nguyên nhị phân không dấu chúng ta được x = 8. Để tính
độ thích nghi hay chính là hàm mục tiêu , chúng ta chỉ việc lấy bình phương của x .
Vậy f(x)=64.Các giá trị khác tính tương tự .
BẢNG 1.2: GAs tính bằng tay
Số Dân số Giá trị x Độ thích pselect
I
Số đếm
tt ban đầu nghi f
I
f
I

thật từ bánh xe
(chọn ngẫu nhiên) Σf f
roulette
1 01101 13 169 0.14 0.58 1
2 11000 24 576 0.49 1.97 2
3 01000 8 64 0.06 0.22 0
4 10011 19 361 0.31 1.23 1

Sum 1170 1.00 4.00 4.0
Average 293 0.25 1.00 1.0
Max 576 0.49 1.97 2.0
Một thế hệ mới bắt đầu bằng sự sinh sản .Chúng ta chọn bể ghép đôi cho các thế
hệ kế tiếp bằng cách quay bánh xe roulet 4 lần .Mô phỏng thực tế quá trình này theo
cách tung đồng tiền ,kềt quả là chuỗi 1 và chuỗi 4 nhận được một bản sao trong bể
ghép đôi, chuỗi 2 nhận được 2 và chuỗi 3 không nhận được gì. So sánh điều này với
số lượng các bản sao mong muốn (n * pselect
i
), chúng ta nhận tấy: chuỗi tốt nhất
nhận được nhiều bản sao, chuỗi trung bình thì giữ nguyên, chuỗi xấu nhất sẽ chết.
Bốn bản sao này ( 1 của chuỗi 1, 2 của chuỗi 2, 1 của chuỗi 4 ) sẽ được đưa vào ghép
chéo.
Quá trình ghép chéo đơn giản gồm 2 bước:
-Chọn cặp ghép chéo một cách ngẫu nhiên.
-Ghép chéo các cặp chuỗi. Chọn vị trí ghép một cách ngẫu nhiên bằng
cách tung đồng tiền.
Xem lại bảng 1.2, lựa chọn ngẫu nhiên đã chọn chuỗi 1 và 2, rồi chuỗi 3 và 4 để
ghép chéo. Chuỗi 1 và 2 được ghép chéo ở vị trí thứ 4, nghĩa là 2 chuỗi 01101 và
11000 được ghép chéo để tạo ra các chuỗi mới là 01100 và 11001. Chuỗi 3 và 4 được
ghép chéo tương tự ở vị trí thứ 2. Kết quả của việc ghép chéo sẽ sinh ra 4 chuỗi như
trong bảng 1.2 (tiếp)

Bể ghép đôi Cặp ghép đôi vị trí ghép Dân số Trị x f(x)=x
2
sau sinh sản với chuỗi (ngẫu nhiên) mới

0110|1 2 4 01100 12 144
1100|0 1 4 11001 25 625
11|000 4 2 11011 27 729
10|011 3 2 10000 16 256

Sum 1754
Average 439
Max 729
Thao tác cuối cùng là đột biến, thực hiện trên cơ sở thay đổi giá trị bit ở các vị trí
nào đó. Giả sử xác suất đột biến trong lần kiểm tra này là 0.001. Với 20 vị trí bit khả
chuyển, chúng ta mong đợi 20 * 0.001 = 0.02 bit chịu đột biến trong một thế hệ đã
cho. Với giá trị xác suất đột biến là 0.02, không có bit nào chịu đột biến trong thế hệ
này. Kết quả là không có vị trí bit nào chịu sự thay đổi từ 0 thành 1 hay ngược lại.
Qua thao tác sinh sản, ghép chéo và đột biến, một dân số mới đã sẵn sàng cho
việc thử nghiệm.Để thực hiện điều này, chúng ta lại giải mã các chuỗi dân số mới
được tạo bởi giải thuật gen đơn giản, và tính giá trị hàm tối ưu từ giá trị x. Kết quả
của một thế hệ dược trình bày bên phải bảng 1.2. Nhìn vào bảng chúng ta thấy các
thông số :tổng thích nghi(Sum) ,trị thích nghi trung bình (Average) và trị thích nghi
cực đại (Max) đều được cải thiện chỉ qua một thế hệ. Cụ thể Sum tăng từ 1170 lên
1754, Average tăng từ 293 lên 439, Max tăng từ 576 lên 729. Dù rằng quá trình ngẫu
nhiên đã giúp đỡ để tạo nên tình huống này, chúng ta thấy rõ ràng sự cải thiện không
hề là may mắn.
Chuỗi tốt nhất của thế hệ đầu (11000) nhận được 2 bản sao, vì nó có mức độ hoàn
thành cao trên trung bình. Khi nó kết hợp ngẫu nhiên với chuỗi có mức độ hoàn thành
cao kế tiếp(10011) và ghép chéo tại vị trí thứ 2 (tất nhiên bằng ngẫu nhiên) thì một
trong hai chuỗi kết quả là(11011) chứng tỏ rằng đó thật là một lựa chọn tốt.

Sự kiện này là một minh hoạ tuyệt vời cho ý tưởng và các ký hiệu được phát triển
tương tự trước đó . Trong trường hợp này, kết quả lý tưởng nhất là sự kết hợp của 2
ký hiệu trên trung bình, là hai chuỗi 11 và 11 . Mặc dù mọi lý lẽ ở đây vẫn có cái
gì đó mang tính nghiệm suy (heuristic), chúng ta bắt đầu thấy được hiệu quả của giải
thuật gen là khả năng tìm kiếm hiệu quả và mạnh mẽ. Trong phần sau, chúng ta mở
rộng hiểu biết về giải thuật gen qua các giản đồ và các mẫu tương đồng.
V-NHỮNG TƯƠNG ĐỒNG:
Trong một quá trình tìm kiếm chỉ cho các giá trị trả giá payoff (giá trị thích nghi)
(tức cho f(x) mà không cho x) ,thông tin nào được chứa trong các chuỗi và các giá trị
hàm mục tiêu sẽ giúp định hướng quá trình tìm kiếm trực tiếp theo huớng cải thiện
kết quả ? Để trả lời câu hỏi này hãy xem lại ,các chuỗi và các giá trị thích nghi ban
đầu trong bản 1.1 từ phần mô phỏng bài toán hộp đen trước đây , thể hiện như sau :
Chuỗi Độ thích nghi
01101 169
11000 576
01000 64
10011 361
Thông tin quan trọng nào chứa trong chuồi dân số hướng dẫn tìm kiếm trực tiếp
theo chiều hướng cải thiện ? Nhìn sơ qua,chúng ta chỉ thấy các chuỗi độc lập và độ
thích nghi tương ứng ,chẳng có gì đặc biệt. Nhưng nếu nhìn kỹ, chúng ta nhận thấy
có những điểm tương đồng nhất định giữa các chuỗi.Khảo sát sâu hơn các điểm tương
đồng này ,chúng ta thấy có những mẫu chuỗi nào đó dường như gắn bó mật thiết với
chất lượng tốt .Có một lý do hợp lý nào đó để tiến hành trộn và ghép cặp một vài
chuỗi con có độ tương quan cao với sự thành công trong quá khứ,ghép với nhau .Ví
dụ, trong mẫu dân số này ,những chuỗi bắt đầu bởi 1 dường như là nằm trong số
những chuỗi tốt nhất.Có lẽ đây là thành phần quan trọng trong việc tối ưu hoá hàm?
Qua hàm số đã cho ( f(x) = x
2
) và lối mã hoá đã biết (dùng số nguyên không dấu 5
bit) ,chúng ta có thể kiểm nghiệm điều này.Ơ đây có hai điều phân biệt :một là, chúng

ta tìm kiếm sự tương đồng giữa các chuỗi dân số; hai là,chúng ta mong đợi mối liên
hệ nhân quảgiữa điểm tương đồng này và độ thích nghi cao .Khi thực hiện điều này,
chúng ta sử dụng tính phong phú của các thông tin mới trong việc hướng dẫn tìm
kiếm.
VI-CÁC MẪU SƠ ĐỒ (Schemata):
Vì các điểm tương đồng quan trọng trong số các chuỗi thích nghi cao có thể định
hướng cho việc tìm kiếm, chúng ta hãy xem xét một chuỗi có thể tương đồng với
những chuỗi khác như thế nào. Một chuỗi đại diện cho các lớp chuỗi tương đồng khác
tại các vị trí nào đó, theo cách thức nào? Cốt lõi (khung) của các sơ đồ sẽ trả lời
những câu hỏi này .
Một sơ đồ (Holland, 1968,1975) và một khuôn mẫu tương tự , miêu tả một tập
con các chuỗi tương đồng nhau , tại những vị trí nào đó của chuỗi .Một lần nữa chúng
ta giới hạn sự thảo luận trên bộ ký tự nhị phân {0,1} mà không làm mất tính tổng quát
.Nếu thêm vào bộ ký tự nhị phân một ký hiệu đặc biệt là dấu * ,chúng ta có thể tạo ra
các chuỗi (sơ đồ) trên bộ kýtự tam phân {0,1 ,*} về ý nghĩa ,sơ đồ là một thiết bị để
so trùng các mẫu : một sơ đồ gọi là trùng khớp với một chuỗi cụ thể ,nếu ở một vị trí
của sơ đồ chúng ta có 1 so trùng với 1 của chuỗi , 0 so trùng với 0 , * so trùng với cả
0 và 1 .Thí dụ ,hãy xem xét một chuỗi và một sơ đồ dài 5 ký tự .Sơ đồ 0000 sẽ so
trùng với 2 chuỗi {10000, 00000}. Chuỗi *111* mô tả tập con gồm bốn phần tử
{01110 , 01111, 11110, 11111} .Sơ đồ 0*1** sẽ so trùng với bất cứ chuỗi nào trong
số 8 chuỗi có chiều dài bằng 5 ,bắt đầu bằng ký tự 0 và có ký tự 1 ở vị trí thứ 3 (từ
trái sang phải) . Ta thấy , ý tưởng về sơ đồ cho chúng ta một phương thức mạnh mẽ
và hữu hiệu để diễn đạt tất cả những sự tương đồng trong số những chuỗi có chiều dài
hữu hạn , qua một bộ ký tự hữu hạn . Chúng ta nhấn mạnh rằng chỉ có * là siêu ký
hiệu (tức ký hiệu diễn tả cho các ký hiệu khác) , nó không bao giờ được xử lý tường
minh bằng GAs .Nó chỉ đơn giản là một phương tiện cho ghi chép cho phép miêu tả
tất cả những sự tương đồng có thể có trong số các chuỗi có chiều dài và có bộ ký tự
xác định .
Việc tính toán số sơ đồ có thể có làm sáng tỏ thêm cho thí dụ .Nếu chuỗi dân số
có chiều dài l = 5 ,chúng ta có 3.3.3.3.3 = 3

5
khuôn mẫu tương đồng khác nhau ,vì
một trong số 5 vị trí có thể là 0,1 hay * . một cách tổng quát cho bảng ký tự gồm có k
ký tự , xét các sơ đồ có chiều dài l , chúng ta sẽ xây dựng được (k+1)
l
sơ đồ . Mới
xem qua hình như sơ đồ làm cho việc tìm kiếm khó khăn hơn . Một bản ký tự gồm k
phần tử chỉ có k
1
chuỗi khác nhau có chiều dài bằng l .Vậy tại sao xem xét đến (k
+1)
1
sơ đồ và làm mở rộng không gian tìm kiếm ? Trở lại ví dụ cũ với l = 5 , k=2 , ta
có 2
5
=32 chuỗi khác nhau tại sao lại thêm rắc rối với 3
5
= 243 sơ đồ ? thật ra các lý lẽ
đã nêu ra trước đây làm cho mọi việc dễ dàng hơn .Hãy xem lại các khắp lượt danh
sách 4 chuỗi cùng với giá trị thích nghi của chúng và cố hình dung thì chúng ta phải
làm gì tiếp theo? Chúng ta nhận thấy rằng nếu chỉ xem xét các chuỗi riêng rẽ thì
chúng ta chỉ có 4 mẫu thông tin ,nhưng nếu chúng ta xem xét các chuỗi , các giá trị
thích nghi và những sự tương đồng của chúng trong số các chuỗi dân số ,chúng ta sẽ
có thêm nhiều thông tin mới ,giúp định hướng cho quá trình tìm kiếm .Vậy khi xem
xét những sự tương đồng ,chúng ta nhận thêm được bao nhiêu thông tin ? Câu trả lời
liên quan đến số các sơ đồ duy nhất chứa trong dân số.
Để tính chính xác con số này đòi hỏi có kiến thức về các chuỗi trong trong một dân số
đặc thù .Để tính giới hạn trong một dân số cụ thể ,chúng ta phải đếm số lượng các sơ
đồ chứa trong một chuỗi riêng biệt , sau đó chúng ta tính đến một giới hạn trên của
tổng số sơ đồ trong dân số.

Để thấy rõ ,hãy xem xét một chuỗi đơn có chiều dài là 5 :11111 .Chuỗi này là một
phần tử của 2
5
sơ đồ ,bởi vì mỗi vị trí có thể nhận giá trị thật của nó (0 hay 1) hoặc
một ký tự thay thế ( * ) .Một cách tổng quát ,một chuỗi riêng biệt sẽ chứa 2
l
sơ đồ
,dẫn đến kết quả là một dân số kích thước n sẽ chứa một số lượng lớn sơ đồ nằm
trong khoảng từ 2
1
đến n*2
1
,tùy thuộc vào tính đa dạng của dân số .Điều này xác
minh cho trực giác trước đó của chúng ta .Động cơ thúc đẩy nguyên thủy của sự xem
xét những tương đồng quan trọng chính là để thu nhập được nhiều thông tin hơn
nhằm hướng dẫn quá trình tìm kiếm .Việc tìm kiếm các đối số chỉ ra rằng một gia tài
thông tin về những tương đồng quan trọng thật ra được chứa trong những dân số có
kích thước vừa phải .chúng ta sẽ nghiên cứu cách thức khai thác thông tin một cách
hiệu quả của GAs .Trong tình hình này ,một số quá trình xử lý song song là cần
thiết ,nếu chúng muốn dùng tất cả các thông tin này thật đúng lúc .Có bao nhiêu trong
số 2
1
đến n * 2
1
sơ đồ sẽ được GAs xử lý thật hữu ích ? Hãy xem xét ảnh hưởng của
quá trình sing sản , ghép chéo và đột biến trong việc tăng trưởng hay sút giảm của
những sơ đồ quan trọng ,từ thế hệ này sang thế hệ khác .Hiệu quả của sự sinh sản trên
một sơ đồ cụ thể dễ dàng xác định ; từ những chuỗi thích nghi cao hơn ,một cách bình
quân chúng ta lấy trị số gia tăng từ trước đến giờ đối với những mẫu tương đồng tốt
nhất đã quan sát được .Tuy nhiên , sự sinh sản của những mẫu đơn độc không tạo

thêm những điểm mới trong không tìm kiếm .Khi bắt đầu ghép chéo, điều gì sẽ xảy
ra với một sơ đồ cụ thể ? Sự ghép chéo sẽ để lại một sơ đồ không bị tổn thương nếu
sự ghép chéo ấy không cắt sơ đồ ,nhưng nó có thể bị phá vỡ một sơ đồ khi nó cắt .Thí
dụ : xét 2 sơ đồ 1***0 và **11* .Sơ đồ thứ nhất gần như sẽ bị phá vỡ khi ghép chéo
,trong khi sơ đồ thứ hai tương đối ít bị phá vỡ hơn .Kết quả là ,các sơ đồ có chiều dài
ngắn được để lại đơn độc qua quá trình ghép chéo ,và được sinh sản theo một tỷ lệ lấy
mẫu tốt qua quá trình sinh sản .Thông thường sự đột biến có tỷ lệ thấp sẽ không làm
phá vỡ một sơ đồ cụ thể một cách thường xuyên .Sau nhiều quan sát ,chúng ta đi đến
kết luận: các sơ đồ có chiều dài xác định ngắn ,độ thích nghi cao (chúng ta gọi là
những khối gạch xây) sẽ được nhân giống từ thế hệ này sang thế hệ khác bởi các mẫu
gia tăng theo hàm mũ ,cho đến kết quả tốt nhất quan sát được .Tất cả chúng sẽ được
xử lý song song mà không cần tốn thêm vùng nhớ đặc biệt so với dân số của n chuỗi .
VII-CÁC THUẬT NGỮ:
Các GAs đã bắt rễ sâu trong cả ngành di truyền học tự nhiên lẫn nghành khoa học
máy tính ,nên những thuật ngữ được sử dụng trong các tài liệu về GAs là sự pha trộn
thuật ngữ giữa các ngành tự nhiên và nhân tạo . Mãi đến gần đây ,chúng ta mới tập
trung nghiên cứu khía cạnh nhân tạo của các dòng lai của GAs ,và bàn về các chuỗi ,
bảng ký tự ,vị trí chuỗi …Chúng ta hãy duyệt lại sự tương ứng giữa các thuật ngữ và
tên tương ứng trong giới tự nhiên , liên hệ với sự phát triển của các tài liệu về GAs
và cũng để tránh các sơ suất trong phát biểu .
Chuỗi (strings) trong hệ gen tương tự như nhiễm sắc thể (chromosomes ) trong hệ
thống sinh học .Trong tự nhiên ,một hay nhiều nhiễm sắc thể sẽ liên kết lại để tạo ra
một chỉ thị di truyền chung để xây dựng và điều khiển một cơ thể sống nào đó .Trong
tự nhiên , gói di truyền chung ( total genetic package) được gọi là kiểu gen
( genotype) .Trong hệ thống nhân tạo , một gói các chuỗi được gọi là một cấu trúc
(structure) (trong những chương đầu , cấu trúc chỉ chứa một chuỗi đơn mà thôi,do đó
chữ cấu trúc và chuỗi có thể thay đổi cho nhau, cho đến khi nào cần phân biệt chúng )
.Trong tự nhiên gen nhân tạo ,các cấu trúc được giải mã để tạo nên một tập thông số
cụ thể ,sự luân phiên của giải pháp hay điểm (trong không gian lời giải). Nhà thiết kế
hệ thống gen nhân tạo tạo sự luân phiên để để mã hóa cả các thông số bằng số lẫn

không phải bằng số.
Theo thuật ngữ sinh học , chúng ta nói nhiễm sắc thể bao gồm các gen .các gen
này chiếm một giá trị nào đó gọi là gen tương ứng (alleles) .Trong di truyền học , vị
trí của một gen (ổ gen của nó-locus) được chỉ riêng ra từ chức năng của gen đó .Thí
dụ : gen màu mắt ở vị trí thứ 10 (tức giá trị ổ gen ) của động vật ứng với mắt xanh.
Trong việc tìm kiếm gen nhân tạo , chúng ta nói rằng các chuỗi được cấu tạo từ
những đặc tính (features hay detector) ,chúng có những giá trị khác nhau .Đặc tính
có thể được đặt ở những vị trí (position) khác nhau của chuỗi .Sự tương quan giữa các
thuật ngữ tự nhiên và nhân tạo được chỉ ra trong bảng 1.3 .
Từ trước đến nay ,chúng ta không phải phân biệt giữa một gen (một ký tự cụ thể )
và một ổ gen của nó (vị trí của nó) ; vị trí của một bit trong một chuỗi xác định ý
nghĩa của nó (cách giải mã) một cách đồng nhất trong toàn bộ dân số và trong mọi
thời điểm .Thí dụ , chuỗi 10000 được giải mã theo số nhị phân không dấu ,ứng với số
16 (hệ 10) ,bởi vì bit 1 được ngầm hiểu là 16.
BẢNG 1.3: Đối chiếu các thuật ngữ
TRONG TỰ NHIÊN TRONG GIẢI THUẬT GEN
Chromosome (nhiễm sắc thể) Chuỗi
Gene Đặc tính , ký tự
Allele (gen tương ứng) Giá trị của đặc tính
Locus (ổ gen) Vị trí chuỗi
Genotype (kiểu gen) Cấu trúc
Phenotype (kiểu hình) Tập thông số, giải pháp luân phiên ,
cấu trúc được giải mã
Epistasis (tính lấn áp gen) Tính không tuyến tính
***

CHƯƠNG II
CƠ SỞ TOÁN HỌC CỦA GT GEN
I-ĐỊNH LÝ CƠ BẢN CỦA GIẢI THUẬT GEN:
Các thao tác của GAs bắt đầu với một dân số ngẫu nhiên có n chuỗi , rồi sao chép

các chuỗi theo khuynh hướng đến cái tốt , ghép cặp và đổi các chuỗi con thành phần ,
thỉnh thoảng làm đột biến giá trị bit để có số đo tốt . Mặc dù các GAs đã xử lý trực
tiếp dân số của các chuỗi theo cách không phức tạp , qua chương 1 chúng ta đã bắt
đầu nhận ra rằng quá trình xử lý các chuỗi một cách tường minh gây nên sự xử lý
ngầm nhiều sơ đồ trong mỗi thế hệ .Để phân tích sự tăng trưởng và suy giảm của
nhiều sơ đồ chứa trong một dân số , chúng ta cần vài ký hiệu bổ sung.Hãy xem xét
các thao tác sinh sản , ghép chéo và đột biến trên sơ đồ chứa trong một dân số.
Không làm mất tính tổng quát , chúng ta xét một chuỗi được tạo từ bộ ký tự nhị
phân V ={0,1} .Theo quy ước , chúng ta ký hiệu chuỗi bằng ký tự in hoa , các ký tự
riêng biệt bằng chữ thường có đánh chỉ số vị trí . Ví dụ , chuỗi A gồm 7 bit :
A =0111000 , được biểu diễn dưới dạng sau :
A = a
1
a
2
a
3
a
4
a
5
a
6
a
7
Ơ đây , a
i
chỉ đặc tính nhị phân đơn (còn gọi là gen a
i
), mỗi đặc tính có thể nhận

giá trị 1 hoặc 0 (đôi khi chúng ta còn gọi giá trị ai là gen tương ứng) .Trong chuỗi cụ
thể , a
1
= 0 ,a
2
=1 ,a
3
=1,a
4
=1,a
5
= 0…
Cũng có thể có các chuỗi mà đặc tính không được sắp thứ tự như chuỗi A , thí
dụ :A’ = a
2
a
6
a
4
a
3
a
7
a
1
a
5
.
Chương sau sẽ khai thác hiệu quả của sự mở rộng việc biễu diễn chuỗi để cho
phép các đặc tính bố trí độc lập với nhiệm vụ của chúng . Hiện thời ,giả thiết nhiệm

vụ của đặc tính có thể được xác định bằng vị trí của nó . Giải thuật gen đúng nghĩa
yêu cầu một dân số các chuỗi , chúng ta xét dân số của các chuỗi riêng lẻ Aj , j=1,2,3,
… ,n, chứa trong dân số A(t) ở thời điểm (hay thế hệ) t,chữ in đậm để chỉ dân số .Bên
cạnh các ký hiệu mô tả các dân số , các chuỗi ,các vị trí bit , và các gen tương ứng ,
chúng ta cần các ký hiệu quy ước để mô tả sơ đồ được chứa trong các chuỗi cá thể và
các dân số .Xét một sơ đồ H tạo nên từ bộ 3 ký tự V+={0,1,*} , trong đó * được so
trùng với cả ký tự 0 và 1 .Thí dụ ,xét sơ đồ 7 ký tự H = *11*0* * , chúng ta thấy
chuỗi A = 0111000 nói ở trên là một ví dụ của sơ đồ H .
Từ kết quả của chương trước, ta biết có 3
1
sơ đồ (hay sự tương đồng) được xác
định từ một chuỗi nhị phân có chiều dài l. Tổng quát, nếu bộ ký tự có k ký tự thì ta có
(k+1)
1
sơ đồ. Hơn nữa, trong một chuỗi dân số có n phần tử thì sẽ có nhiều nhất là
n*2
1
sơ đồ được chứa trong dân số đó, vì bản thân mỗi chuỗi là biểu diễn của 2
1

đồ.Những tính toán này cho chúng ta một cảm nhận nào đó về độ lớn của thông tin
được xử lý bởi GAs .Tuy nhiên, để hiểu rõ tầm quan trọng của những khối gạch xây
đối với những giải pháp trong tương lai, chúng ta cần phân biệt sự khác nhau giữa các
loại sơ đồ.
Tất cả các sơ đồ không được tạo nên một cách đồng đều, có một số sơ đồ đặc biệt
hơn những cái khác . Ví dụ,sơ đồ 011*1* * là một thể hiện xác định hơn về sự tương
đồng quan trọng so vớisơ đồ 0* * * * * * . Hơn nữa , một sơ đồ nào đó có thể trải
rộng với chiều dài chuỗi nhiều hơn các sơ đồ khác. Ví dụ, sơ đồ 1* * * *1* sẽ trải
một phần của chuỗi rộng hơn sơ đồ 1*1* * * *. Để đánh giá những ý tưởng này,
chúng ta cần giới thiệu về hai đặc trưng của sơ đồ: bậc (other) của sơ đồ và chiều dài

định nghĩa (defining length) của sơ đồ.
Bậc của sơ đồ H , ký hiệu là o(H), là số các vị trí xác định (trong bộ ký tự nhị
phân, chính là tổng số các bit 1 và 0) có trong mẫu. Ví dụ: bậc của sơ đồ 011*1* * là
4 (ký hiệu o(011*1**) = 4) còn bậc của sơ đồ 0* * * * * * là 1.
Chiều dài định nghĩa của sơ đồ H ,ký hiệu δ(H) là khoảng cách giữa vị trí có giá
trị xác định đầu tiên với vị trí có giá trị xác định sau cùng của sơ đồ .Thí dụ , sơ đồ
011*1* * có chiều dài định nghĩa δ = 4 , vì vị trí xác định cuối cùng là 5 và vị trí xác
định đầu tiên là 1 .do đó khoảng cách giữa chúng là δ(H) = 5-1 = 4 . Sơ đồ 0* * * * *
* chỉ có một vị trí xác định ,do đó vị trí đầu và cuối trùng nhau , nên chiều dài định
nghĩa δ = 0
Sơ đồ và những đặc trưng của nó là những công cụ ký hiệu thích hợp để thảo luận
và phân loại chính xác các sự tương đồng của chuỗi .Hơn thế nữa chúng cung cấp các
phương tiện cơ sở để phân tích hiệu quả ròng của việc sinh sản và các thao tác di
truyền trên các khối gạch xây được chứa bên trong dân số .Chúng ta hãy xem xét
hiệu quả riêng và hiệu quả phối hợp của việc sinh sản ,ghép chéo và đột biến ,trên sơ
đồ được chứa trong dân số của các chuỗi .
Dễ dàng xác định hiệu quả của việc sinh sản trên một số lượng mong muốn của
các sơ đồ trong một dân số .Giả sử tại bước thời gian (thế hệ) đã biết thứ t có m ví dụ
của một sơ đồ cụ thể H, chứa trong dân số A(t) .Chúng ta viết m = m(H,t) (có thể có
những số lượng khác nhau của các sơ đồ khác nhau tại những thế hệ t khác nhau). Khi
sinh sản , một chuỗi sẽ được sao chép theo giá trị thích nghi của nó , hay chính xác
hơn là chuỗi A
I
sẽ được tuyển chọn với xác xuất p
I
=f
i
/ Σ f
j
. Sau khi chọn một dân số

không phủ lắp (trùng lớp một phần ) có kích thước n với sự thay thế từ dân số A(t)
,chúng ta mong muốn có m(H,t+1) đại diện cho sơ đồ H trong dân số , tại thế hệ thứ
t+1 , được xác định qua phương trình :
m(H,t+1) = m(H,t) * n * f (H)/ Σ f
j
trong đó f(H) là dộ thích nghi trung bình của các chuỗi đại diện cho sơ đồ H ở thế hệ
thứ t . Nếu chúng ta nhận thấy được độ thích nghi trung bình của toàn bộ chuỗi có thể
được tính theo f = Σ f
j
/ n ,chúng ta có thể viết lại phương trình tăng trưởng của sơ
đồ sinh như sau:
m(H,t +1) = m(H,t) *f(H) / f
Qua đẳng thức trên chúng ta nhận thấy ,một sơ đồ cụ thể sẽ tăng trưởng tỉ lệ với
độ thích nghi trung bình của nó chia cho độ thích nghi trung bình của toàn bộ dân
số .Nói cách khác , các sơ đồ có giá trị thích nghi hơn độ thích nghi trung bình của
dân số sẽ gia tăng số lượng các mẫu trong thế hệ kế , và ngược laị. Nghĩa là , mọi sơ
đồ trong dân số sẽ tăng trưởng hay suy giảm tùy thuộc vào giá trị thích nghi trung
bình của dân số , dưới tác động riêng rẽ của việc sinh sản . Cần nhớ rằng tại một thế
hệ , có nhiều việc diễn ra song song với các thao tác đơn giản trên n chuỗi trong dân
số .
Anh hưởng của việc sinh sản trên sơ đồ là rõ ràng về mặt định tính :Các sơ đồ trên
trung bình sẽ tăng trưởng và các sơ đồ dưới trung bình sẽ phải chết . Chúng ta có thể
học thêm được điều gì khác nữa về dạng toán học của sự tăng trưởng (hoặc suy
giảm ) từ phương trình sai phân của sơ đồ ? Giả thiết sơ đồ đặc thù H vượt quá độ
thích nghi trung bình một lượng với c là hằng số .Với giả thiết này , chúng ta có thể
viết lại phương trình sai phân cuả sơ đồ như sau :
m(H,t+1) = m(H,t) ( f + cf ) / f = ( 1+c ) m(H,t)
Bắt đầu với t = 0 và giả thiết một giá trị c không , chúng ta được phương trình :
m(H,t) = m(H,0)(1+c)
t

Ta nhận thấy phương trình này giống như phương trình tiền lãi phức hợp , các về
toán học sẽ nhận thấy phương trình này giống như cấp số nhân hay phép tương tự rời
rạc dạng hàm mũ . Hiệu quả của việc sinh sản rõ ràng là định tính được việc sinh sản
cấp phát sự gia tăng (hay giảm) theo hàm mũ của số lượng các phép thử đối với sơ đồ
có độ thích nghi trên (hoặc dưới) trung bình .
Bây giờ ta xét ảnh hưởng của ghép chéo và đột biến :
Sự ghép chéo là sự trao đổi thông tin một cách ngẫu nhiên nhưng có cấu trúc giữa các
chuỗi .Việc ghép chéo tạo ra những cấu trúc mới , với sự phá vỡ tổi thiểu đối với
chiến lược cấp phát chỉ do sự sinh sản gây ra .Kết quả là các phần gia tăng(hay giảm)
theo hàm mũ của sơ đồ trong một dân số trên nhiều sơ đồ , được chứa trong một thế
hệ .
Để thấy sơ đồ nào bị ảnh hưởng bởi sự ghép chéo và sơ đồ nào không bị ảnh
hưởng , hãy xét một chuỗi A có chiều dài l = 7 và hai sơ đồ đại diện H
1
,H
2
của nó :
A = 0111000
H
1
= *1* * * * 0
H
2
= * * * 1 0 * *
Rõ ràng hai sơ đồ H1 và H2 đại diện cho chuỗi A , nhưng để thấy ảnh
hưởng của việc ghép chéo trên sơ đồ , trước tiên hãy nhớ lại rằng việc ghép chéo
đơn giản tiến hành với sự lựa chọn ngẫu nhiên một cặp chuỗi sau đó chọn ngẫu
nhiên vị trí ghép và trao đổi các chuỗi con từ đầu chuỗi đến vị trí ghép , với chuỗi
con tương ứng . Giả sử chuỗi A được chọn để cặp đôi và ghép chéo , chiều dài
của A là 7 . Quay xúc xắc để chọn chỗ ghép (có 6 chỗ có thể ghép trong một

chuỗi có chiều dài là 7), giả sử xúc xắc ngửa mặt 3 nghĩa là chúng ta cắt cả 2
chuỗi ban đầu tại giữa vị trí bit thứ 3 và bit thứ 4 . Điểm ghép được đánh dấu bởi
dấu |.
A = 011 | 1000
H
1
= *1* * | * * * 0
H
2
= * * * | 10 * *
Sơ đồ H1 sẽ bị phá hủy vì 1 ở vị trí 2 và 0 ở vị trí 7 sẽ được đặt vào các con cháu
khác nhau (chúng ở hai phía của điểm ghép hay điểm cắt). Rõ ràng là cũng ở cùng
một điểm cắt như vậy sơ đồ H
2
sẽ sống sót , bởi vì ở 1 vị trí 4 và 0 ở vị trí 5 sẽ được
mang trọn vào 1 thế hệ con cháu nào đó . Dù rằng chúng ta đã thấy khá rõ là H
1

dường như ít khả năng sống sót hơn H
2
bởi vì theo trung bình thì điểm cắt rơi vào
giữa những vị trí xác định xa nhất . Để định lượng sự quan sát này , chúng ta nhận
thấy H
1
chiều dài định nghĩa là 5 . Nếu điểm ghép được chọn gống nhau 1 cách ngẫu
nhiên trong số l – 1 = 7 –1 = 6 vị trí có thể có , rõ ràng là H
1
sẽ bị phá hủy với xác
xuất Pd = δ(H1)/(l-1) =5/6 (nó tồn tại với xác suất P
s

= 1 - P
d
= 1/6).
Tổng quát , chúng ta thấy giới hạn dưới của xác suất sống sót P
s
có thể đuợc tính
theo 1 sơ đồ bất kỳ . Bởi vì , 1 sơ đồsống sót khi điểm cắt rơi bên ngoài chiều dài
định nghĩa , xác suất sống sót của sự ghép chéo đơn giản là
P
s =
1
-
δ(H) /(l-1) , từ đó sơ đồ nhường như bị phá hủy bất cứ lúc nào tại 1 vị trí nằm
trong chiều dài định nghiã ,được chon từ l-1 vị trí có thể có . Nếu việc ghép chéo tự
thân nó thực hiện bằng sự lựa chọn ngẫu nhiên , chúng ta nói rằng với xác suất P
c

một cặp ghép cụ thể , xác suất sống sót có thể được cho bằng biểu thức :
Ps ≥ 1 – P
c
* δ(H) /(l-1)
Hiệu qủa phức hợp của sự sinh sản và ghép chéo giờ đây có thể được xem xét .
khi xét riêng việc sinh sản chúng ta quan tâm đến việc tính toán số lượng của 1 sơ đố
H cụ thể được mong đợi trong thế hệ kế tiếp . Giả sử hai thao tác sinh sản và ghép
chéo là độc lập với nhau chúng ta có thể ước lượng sau :
m(H,t+1) ≥ m(H,t) * f(H) * [1 - P
e
* δ(H) /(l-1)]
f
So sánh đẵng thức này với các biểu thứ c trước đây cho việc sinh sản riêng lẻ ,

hiệu quả của ghép chéo và sinh sản đạt được bằng cánh nhân với số lượng sơ đồ
mong muốn cho việc sinh sản riêng lẻ bởi xác suất sống sót P
s
dưới

tác dụng của việc
ghép chéo . Sơ đồ H sẽ tăng trưởng hay bị phá hủy tùy thuộc vào thừa số nhân .Đối
với cả hai việc ghép chéo lẫn sinh sản , thừ số nhân phụ thuộc vào 2 yếu tố : Sơ đồ đó
là trên hay dưới trung bình dân số , và sơ đồ đó có chiều dài định nghĩa tương ứng là
ngắn hay dài . Rõ ràng với những sơ đồ hội đủ 2 yếu tố trên (trên trung bình và chiều
dài định nghĩa ngắn ) sẽ được chọn làm mẫu với tỉ lệ gia tăng theo hàm mũ .
Thao tác cuối cùng cần xem xét là sự đột biến . Theo định nghĩa trước đây , sự đột
biến là sự thay thế ngẫu nhiên một vị trí đơn với xác suất P
m
.Để một sơ đồ H sống sót
được , tất cả những vị trí có giá trị xác định của nó phải được sống sót . Do đó, từ một
gen tương ứng (allene) sống sót với xác suất (1-P
m
) và từ mỗi đột biến độc lập theo
thống kê , một sơ đồ cụ thể sẽ sống sót khi từng vị trí cố định o(H) bên trong sơ đồ đó
sống sót . Nhân xác suất sống sót ( 1 - P
m
) với chính nó o(H) lần , chúng ta được xác
xuất của biến dị sống sót là (1-P
m
)
o(H)
.Đối với giá trị P
m
nhỏ (P

m
<< 1 ) , xác suất sống
sót của sơ đồ có thể tính xấp xỉ bởi biểu thức 1 – o(H)*P
m .
Vì thế chúng ta kết luận
rằng 1 sơ đồ H cụ thể nhận một số lượng mong muốn các bản sao trong thế hệ kế tiếp
dưới tác dụng của sự sinh sản , ghép chéo , và đột biến theo đẳng thức sau (bỏ qua các
đại lượng quá bé) :
m( H,t +1 ) ≥ m (H,t).f(H) /f .{1-P
c
.δ(H) /(l-1) – o(H)P
m
}
Sự đột biến thêm vào làm thay đổi một chút các kết luận trước đó . Những sơ đồ trên
trung bình , bậc thấp , ngắn sẽ nhận số lần thử tăng theo hàm mũ trong nhũng thế hệ
tiếp theo . Kết luận này quan trọng , rất quan trọng đến nỗi chúng ta đặt cho no một
tên gọi là Định lí sơ đồ hay là Lý thuyết nền tảng của giải thuật gen .
II-XỬ LÝ SƠ ĐỒ :
Chương 1 đã trình bày cơ chế của giải thuật GEN đơn giản thông qua sự tính toán
bằng tay cho một thế hệ . Chúng ta trở lại ví dụ này , nhưng lần này là để quan sát
cách GAs xử lý sơ đồ – chứ không phải các chuỗi cá thể - bên trong một dân số . Sự
tính toán bằng tay ở chương 1 được ghi lại trong bảng 2.1.
Bảng 2.1:Xử lý GAs đơn giản

Xử lý chuỗi

Số tt Dân số Giá trị x Độ thích Pselect
i
f
i

Số đếm từ
ban đầu nghi f(x)=x2 fi /Σf f bánh xe roulette

1 01101 13 169 0.14 0.58 1
2 11000 24 576 0.49 1.97 2
3 01000 8 64 0.06 0.22 0
4 10011 19 361 0.31 1.23 1

Sum 1170 1.0 4.00 4.0
Average 293 0.25 1.00 1.0
Max 576 1.49 1.97 2.0

Trước khi sinh sản.

Đại diện chuỗiĐộ thích nghi trung bình
của sơ đồ f(H)

H1 1**** 2,4 469
H2 *10** 2,3 320
H3 1***0 2 576

Sau khi sinh sản

Xử lý chuỗi

Bể ghép đôi ghép đôi Vị trí ghép Dân số Trị x f(x) = x
2
sau sinh sản với chuỗi mới

0110|1 2 4 01100 12 144

1100|0 1 4 11001 25 625
11|000 4 2 11011 27 729
10|011 3 2 10000 16 256

Sum 1754
Average 439
Max 729

Sau sinh sản Sau mọi thao tác

Số đếm Số đếm Đại diện Số đếm Số đếm Đại diện
mong muốn thật chuỗi mong muốn thật chuỗi

3.20 3 2,3,4 3.20 3 2,3,4
2.18 2 2,3 1.64 2 2,3
1.97 2 2,3 0.0 1 4

Cùng với các thông tin đã trình bày , chúng ta đếm được bao nhiêu lần chạy của 3
sơ đồ H1, H2 ,H3 với:
H1 = 1****
H2 = *10* *
H3 = 1***0
Quan sát hiệu quả của sự sinh sản , ghép chéo và đột biến trên sơ đồ H . Trong
suốt giai đoạn sinh sản các chuỗi được sao chép một cách xác suất tùy theo giá trị
thích nghi của chúng . Hãy xem cột thứ 1 trong bảng chúng ta thấy 2 chuỗi 2 và 4
cùng đại diện cho sơ đồ 1**** . Sau khi sinh sản , chúng ta thấy 3 bản sao của sơ đồ
được tạo ra (chuỗi 2 , 3, 4 trong cột ghép cặp). Số lượng này có phù hợp với giá trị
được tiên đoán trong định lí sơ đồ ? Từ định lí sơ đồ , chúng ta mong muốn có m *
f(H) /f bản sao . Tính trung bình của sơ đồ f(H
1

) , chúng ta được (576 + 361)/2 =
468.5 . Chia cho trung bình dân số f = 293 và nhân với số lượng sơ đồ H
1
có ở thế hệ t
, m (H,t) = 2 , chúng ta được số lượng mong muốn của sơ đồ H
1
tại thế hệ t+1 là m
( H,t+1 ) = 2 * 468.5 / 293=3.2 . So sánh với số lượng sơ đồ thực sự (là 3) chúng ta
thấy rằng đã có đúng số lượng các bản sao như mong muốn . Thực hiện thêm một
bước nữa , chúng ta thấy việc ghép chéo không có thêm bất kỳ một tác dụng nào ,
bởi vì chiều dài định nghĩa δ(H
1
)=0 đã ngăn cản sự phá vỡ một bit đơn . Thêm nữa ,
với P
m
=0.001 chúng ta muốn có m* P
m
=3* 0.001= 0.003 hoặc không có bit nào bị
thay đổi bên trong 3 bản sao của sơ đồ trong 3 chuỗi . Kết quả quan sát cho thấy đối
với sơ đồ H
1
, chúng ta nhận được số sơ đồ tăng theo tỉ lệ với hàm mũ đúng như định
lí sơ đồ đã tiên đoán .
Đến giờ mọi việc đều tốt đẹp ; nhưng sơ đồ H
1
chỉ có một bit xác định , dường
như chỉ là một trường hợp đặc biệt . Hãy xét sự nhân giống của sơ đồ H
2
= *10** và
H

3
= 1***0 . Sự sinh sản trước khi ghép chéo các bản sao sơ đồ là đúng .Trường hợp
H
2
bắt đầu với 2 ví dụ trong dân số ban đầu và kết thúc với 2 bản sao qua sự sinh
sản . Điều này tương đồng với số lượng các bản sao mong muốn , m (H
2
)=
2*320/293=2.18, trong đó 320 là độ thích nghi trung bình của sơ đồ và 293 là độ
thích nghi trung bình của dân số . Trường hợp H
3
bắt đầu với một ví dụ đơn (chuỗi 2)
và kết thúc với 2 bản sao qua sự sinh sản (chuỗi 2 và 3 trong cột các bản sao của
chuỗi ). Điều này tương đồng với số lượng các bản sao mong muốn m(H
3
) = 1* 576 /
293= 1.97 , trong đó 576 là độ thích nghi trung bình của sơ đồ và 293 là độ thích nghi
trung bình của dân số .Tình huống ghép chéo sau đây phức tạp hơn một chút .Để ý
rằng đối với sơ đồ ngắn như sơ đồ H
2
, hai bản sao vẫn được duy trì mặc dù sự ghép
chéo đã xảy ra . Bởi vì chiều dài định nghĩa ngắn , chúng ta mong đợi sự ghép chéo
để làm gián đoạn quá trình chỉ một lần trong bốn lần (l- 1= 5-1=4).Kết quả là , sơ đồ
H
2
sống sót với xác suất cao . Số lượng mong muốn thực tế của sơ đồ H
2
sau đó là :
m(H
2

,t+1)=2.18*0.75=1.64, hoàn tòan tương ứng với số lượng thực là 2 sơ đồ . Còn
H
3
thì lại mang màu sắc khác .Vì chiều dài định nghĩa lớn (δ(H
3
)=4) , do đó sự ghép
chéo thường phá hủy sơ đồ này .
III-BÀI TOÁN 2-Armed Bandit và K-Armed Bandit:
Hiệu quả của sự sinh sản ghép chéo và đột biến đã rõ ràng cả về mặt định tính lẫn
định lượng . Những sơ đồ có chiều dài định nghĩa ngắn , bậc thấp , độ thích nghi trên
trung bình ( những khối gạch xây ) sẽ tăng trưởng tỉ lệ với hàm mũ trong các thế hệ
tương lai .Nhưng mặc dù đã chứng minh kỹ lưỡng về điều này , vẫn còn một câu hỏi
tồn tại :Tại sao đây là một việc tốt để làm ? Tại sao phải chọn hàm mũ ? Những câu
hỏi này dẫn đến một bài toán quan trọng của lí thuyết quyết định theo thống kê , bài
toán máy đánh bạc 2 – cần và dạng mở rộng của nó là bài toán máy đánh bạc k- cần .
Giả sử chúng ta có một máy đánh bạc 2 cần với 2 cần có tên là Trái và Phải. Giả
thuyết chúng ta biết rằng một cần sẽ trả phần thưởng µ
1
với độ biến thiên δ
1
2
và cần
kia là trả thưởng µ
2
với δ
2
2
, trong đó µ
1



µ
2 .Chúng
ta nên chơi cần nào?
Hiển nhiên là chúng ta muốn chơi với cần trả thưởng thường xuyên hơn (cần có
tiền thưởng là µ
1
), nhưng chúng ta không biết trước cần nào sẽ trả thưởng cao hơn
(Trái hay Phải ) , chúng ta đang đối mặc với tình huống khó xử . Không những chúng
ta phải ra một quyết định về việc chơi cần nào , mà cùng lúc ấy chúng ta còn phải thu
thập thông tin xem cần nào tốt hơn . Sự trao đổi giữa việc khảo sát cho tri thức và
việc khai thác cho các tri thức ấy là một chủ đề nền tảng quan trọng trong lí thuyết và
các hệ thống đáp ứng . Cách thức xác định tình thế khó xử này sẽ nói lên nhiều điều
về thành công cuối cùng của một phương pháp .
Một cách để tiếp cận sự trao đổi này là tách sự khảo sát ra khỏi sự khai thác ,
bằng cách thực hiện trước một thí nghiệm đơn và sau đó ra một quyết định đơn tất
yếu (không thể đảo ngược được) dựa trên kết quả của thí nghiệm đó .Đó là cách tiếp
cận của lí thuyết quyết định truyền thống (cổ điển) mà chúng ta có thể miêu tả chính
xác như sau :
Giả sử chúng ta có tổng số lần thử là N cho cả 2 cần .Đầu tiên ,chúng ta đặt một
số lượng các phép thử bằng nhau n cho mỗi một trong hai cần (2n < N) trong suốt giai
đoạn thí nghiệm . Sau khi thí nghiệm xong , chúng ta đặt N-2n phép thử còn lại cho
cần nào cho số trả thưởng tốt nhất mà ta quan sát được .Giả sử , chúng ta biết rằng từ
N, µ
1
, µ
2
, δ
1
, δ

2
chúng ta có thể tính được sự mất mát theo mong muốn (De Jong ,
1975) :
L(N,n) = | µ
1
- µ
2
| . | ( N- n ) q (n) + n ( 1 – q(n) ) |
trong đó : q(n) là xác suất mà cần xấu được quan sát là tốt , sau n phép thử trên mỗi
máy .Xác suất này sẽ được xấp xỉ chính xác bởi phần đuôi của phân bố chuẩn :
; với
Từ đẳng thức này ,chúng ta có thể thấy hai nguyên nhân mất mát liên quan đến thủ
tục . Sự mất mát thứ nhất là kết quả của việc thực hiện n phép thử trên cần sai (muốn
thử trên cần tốt nhưng lại thử nhầm trên cần xấu) trong suốt thời gian thử nghiệm . Sự
mất mát thứ hai là kết quả của việc chọn phải cần có phần thưởng thấp (µ
2
) ngay cả
sau khi hoàn thành việc thử nghiệm .Chúng ta không thể nào khẳng định là vào cuối
cuộc thí nghiệm chúng ta sẽ chọn được đúng cần như mong muốn hay không , vì thế
chúng ta hy vọng rằng sẽ ít chọn phải cần xấu và chịu thêm một sự mất mát trong N –
2n phép thử còn lại trong giai đoạn khai thác .Chúng ta có thể giải quyết cho kích
thước thí nghiệm tối ưu là n* bằng cách lấy đạo hàm của phương trình mất mát và
đặt nó bằng 0.
Holland (1975) đã tính toán và chỉ ra cách phân phối các phép thử vào 2 cần như thế
nào để tối thiểu hóa sự mất mát theo như mong đợi .Điều này dẫn đến kết quả là đặt
n* phép thử vào cần xấu nhất và N – n* phép thử cho cần được thấy là tốt hơn , với
n* được tính bằng phương trình sau đây :
trong đó b = σ
1
/( µ

1

2
)
Xoay quanh phương trình này, chúng ta nhận thấy rằng số lần thử cho bởi cần tốt hơn
quan sát được ,thì tuân theo phương trình:

Nói cách khác , để đặt các phép thử một cách tốt ưu (theo nghĩa mất mát ít nhất
như mong muốn ) , chúng ta nên tăng thêm một chút số lượng phép thử gia tăng theo
hàm mũ cho cần được quan sát là tốt hơn . Nhưng không may là chiến lược này
không hiện thực , vì có yêu cầu biết kết quả trước khi có kết quả . Tuy nhiên , điều
này tạo nên một giới hạn quan trọng trong việc thực hiện , đó là một chiến lược hiện
thực nên cố gắng để đạt đến .Chắc chắn có nhiều chiến lược có thể đạt đến sự lý
tưởng này .Tiếp cận bằng thực nghiệm được phân tích ở trên cho thấy bằng cách nào
mà số lượng lần thử ít hơn (theo hàm mũ) được đặt vào cần xấu , với tư cách là số
lượng các phép thử được gia tăng .Một phương pháp khác thậm chí đã dẫn đến gần
với việc bố trí các phép thử lý tưởng , đó là GAs đã được thảo luận . Định lý sơ đồ
bảo đảm cung cấp ít ra là một số lượng gia tăng theo hàm mũ của các phép thử , cho
những khối gạch xây được quan sát thấy là tốt nhất. Bằng cách này, GAs là một thủ
tục hiện thực nhưng lại gần tối ưu ( Holland, 1973, 1975) để tìm kiếm những giải
pháp lựa chọn.
Với GAs, chúng ta sẽ giải quyết máy đánh bạc 2-cần đơn giản một cách nhanh
chóng; trong GAs thông thường, chúng ta xem xét giải pháp đồng thời của nhiều máy
đánh bạc nhiều cần. Để làm việc này một cách mạnh mẽ, trước tiên chúng ta xét dạng
giải pháp đối với máy k-cần đơn và sau đó chứng minh rằng GAs thông thường có thể
được xem là sự hợp thành của nhiều máy có k-cần như thế.
Dạng của giải pháp bài toán k-cần giới hạn được Holland khám phá ra năm 1973 .
Giải pháp mất mát tối thiểu theo mong muốn để bố trí các phép thử vaò k-cần cạnh
tranh nhau thì tương tự như giải pháp cho 2 cần: một số lượng lớn hơn (tăng theo hàm
mũ) của số các phép thử sẽ được đưa cho những cần được nhận thấy là tốt nhất . Kết

quả này không làm ngạc nhiên, nhưng nó luôn liên hệ chặt chẽ với những nhận xét
của chúng ta về việc xử lí sơ đồ, nếu như chúng ta xem một tập các sơ đồ đang cạnh
tranh nhau như là một máy đánh bạc k-cần chuyên biệt. Để thấy sự liên hệ này ,
chúng ta xác định các yếu tố của một tập hợp các sơ đồ đang cạnh tranh , và sau đó
đếm số lượng và kích thước của các bài toán máy đánh bạc k-cần đang được giải
quyết bên trong một GAs của chiều dài chuỗi đã cho.
Hai sơ đồ A và B với các vị trí riêng biệt a
1
và b
1
là đang cạnh tranh nếu ở tại mọi
vị trí i = 1,2,…,l, chúng ta có hoặc là a
i
= b
i
=* hoặc là a
i
≠ *, b
i
≠ *, a
i
≠ b
i
tại ít nhất
một giá trị i. Thí dụ, xét tập hợp 8 sơ đồ cạnh tranh tại các vị trí 2,3,5, trong các chuỗi
có chiều dài 7 dưới đây:
* 0 0 * 0 * *
* 0 0 * 1 * *
* 0 1 * 0 * *
* 0 1 * 1 * *

* 1 0 * 0 * *
* 1 0 * 1 * *
* 1 1 * 0 * *
* 1 1 * 1 * *
Có 8 sơ đồ cạnh tranh trên 3 vị trí 2, 3 và 5, bởi vì bất kì vị trí nào trong số 3 vị trí
này đều có thể chiếm hoặc là giá trị 1 hoặc là giá trị 0 (2
3
= 8).
Chúng ta có thể bắt đầu thấy sự liên hệ với bài toán k-cần trong danh sách 8 sơ đồ
cạnh tranh ở trên .Từ những sơ đồ được xác định trên các vị trí giống nhau này, chúng
cạnh tranh với cái khác để chiếm những khe hở dân số quí giá.Để đặt các khe dân số
một cách thích hợp, chúng ta cần đặt các số tăng theo hàm mũ cho những sơ đồ được
thấy là tốt nhất, chỉ khi chúng ta cho các phép thử gia tăng tỉ lệ với hàm mũ cho cần
được thấy là tốt nhất trong số k-cần. Một trong những khác biệt giữa tình thế của
chúng ta trong một GAs và bài toán k-cần là chúng ta có một số các bài toán tiến
hành song song. Thí dụ, với 3 vị trí cố định trên một chuỗi chiều dài 7, có [
7
3
]= 35
của ( 2
3
= 8) các bài toán 8 cần. Tổng quát, cho sơ đồ bậc j trên các chuỗi có chiều dài
l , chúng ta có {
l

j
} bài toán k
j
cần khác nhau, trong đó k
j

= 2
j
. Không phải tất cả
Σ{
l
j
}= 2
1
bài toán đều được giải quyết tốt như nhau, vì sự ghép chéo có khuynh
hướng phá vỡ những máy nào có các chiều dài định nghĩa lớn như đã nói trước đây.
Trong phần kế, chúng ta đếm số sơ đồ xử lí hiệu quả bằng Gas.
IV-SỐ SƠ ĐỒ ĐƯỢC XỬ LÝ HIỆU QUẢ :
Các đối số đếm được từ trước đến nay đã chỉ rằng chúng ta có từ 2
1
cho tới n * 2
1

sơ đồ đang xử lý trong một dân số chuỗi với chiều dài l và kích thước n . Như đã
biết , không phải tất cả đều được xử lý với xác suất cao , bởi vì sự ghép chéo đã phá
vỡ những sơ đồ với chiều dài định nghĩa tương đối lớn . Trong phần này chúng ta sẽ
tính toán một giới hạn thấp nhất của những sơ đồ được xử lý hữu ích – đó chính là
mẫu cho tỷ lệ gia tăng theo hàm mũ .
Mặc dù bài toán chỉ n cấu trúc cho mỗi thế hệ , nhưng một GT GEN có vẻ như
phải xử lý đến n
3
sơ đồ . Kết quả này rất quan trọng và Holland đã cho nó một tên gọi
đặc biệt là sự song song ngầm .Mặc dầu ở mỗi thế hệ chúng ta thực hiện sự tính toán
tỷ lệ với độ lớn của dân số , chúng ta đạt đến sự xử lý hữu ích một số lượng dường
như là n
3

sơ đồ theo cách song song , mà không cần tốn thêm vùng nhớ đặc biệt nào
hơn chính bản thân dân số .Chúng ta hãy nhận lại sự ước lượng này để hiểu những giả
thuyết nền tảng của nó và khảo sát nguồn gốc của đòn bẫy tính toán này .
Xét một dân số gồm n chuỗi nhị phân có chiều dài l .Chúng ta chỉ xét các sơ đồ
sống sót với một xác suất lớn hơn hằng số P
s
. Giả thiết thao tác ghép chéo là đơn
giản và tỷ lệ lỗi ε < 1 - P
s
.Điều này dẫn chúng ta đi đến việc chỉ quan sát những sơ đồ
có chiều dài l
s
< ε (l -1) +1 .
Với một chiều dài sơ đồ cụ thể , chúng ta có thể ước tính một giới hạn thấp nhất
của số các sơ đồ duy nhất được xử lý bởi một dân số ngẫu nhiên ban đầu của các
chuỗi .Để làm điều này , đầu tiên chúng ta đếm số lượng các sơ đồ có chiều dài l
s
hay
ngắn hơn .Sau đó nhân với một độ lớn dân số thích ứng , được chọn theo ý chúng ta
muốn , theo trung bình thì không lớn hơn 1 đối với mỗi sơ đồ có chiều dài l
s
/2 .Giả sử
chúng ta muốn đếm được số sơ đồ có chiều dài l = 10 như sau:
1 0 1 1 1 0 0 0 1 0
Để làm điều này , chúng ta tính số lượng sơ đồ trong ô nhớ thứ nhất gồm 5 vị trí :
1 0 1 1 1 0 0 0 1 0
sao cho bit cuối cùng của ô là cố định .Điều này có nhgĩa là chúng ta muốn mọi sơ đồ
có dạng :
%%%%1 * * * * *
trong đó các dấu * là giá trị nào đó và các dấu % sẽ lấy hoặc là giá trị cố định (1 hay

không ở vị trí đó ) hoặc là giá trị nào đó . Rõ ràng có 2
(ls –1)
sơ đồ ,bởi vì l
s
–1 = 4 vị trí
có thể được cố định hay nhận giá trị nào đó . Để đếm số lượng tổng cộng của những
sơ đồ này , đơn giản là chúng ta chỉ ta cần trượt khung mẫu gồm 5 vị trí dọc theo sơ
đồ :
1 0 1 1 1 0 0 0 1 0
Chúng ta thực hiện việc này tổng cộng là l - l
s
+ 1 lần và chúng ta có thể ước
lượng tổng số các sơ đồ có chiều dài l
s
hay nhỏ hơn là 2
(ls-1)
* (l - l
s
+ 1). Đó là số
lượng các sơ đồ trong chuỗi cụ thể đã cho . Để phỏng định toàn thể số lượng các sơ
đồ như thế trong toàn bộ dân số , đơn giản là chúng ta có thể nhân với độ lớn n của
dân số và có được n * 2
(ls - 1 )
* (l - l
s
+ 1 ). Số này hiển nhiên là phỏng định cho con số
chính xác , bởi vì chắc chắn là sẽ có những sự lặp lại của các sơ đồ bậc thấp trong các
dân số lớn . Để tinh chế lại sự phỏng định này , chúng ta lấy ra một độ lớn dân số n
= 2
ls/2


. Bằng cách chọn lựa theo phương thức này chúng ta muốn có toàn bộ (hay là
một số ít hơn ) số các sơ đồ có bậc l
s
/2 hoặc lớn hơn . Nhận thấy rằng số lượng sơ đồ
được phân bố thành 2 thành phần (nhị thức , binomially) , chúng ta kết luận là một
nửa có bậc cao hơn l
s
/2 và một nửa bậc thấp hơn l
s
/2 . Nếu chúng ta chỉ đếm nhũng
sơ đồ có bậc cao hơn , chúng ta ước chừng một giới hạn thấp cho các sơ đồ như sau :
n
s
≥ n( l – l
s
+ 1 )2
(l
s
-2)

Điều này khác với sự phỏng định trước đó bởi thừa số l/2 .Hơn nữa , nếu
giới hạn độ lớn trong giá trị cụ thể 2
ls/2
,cho kết quả là biểu thức sau :
n
s
=

Từ n

s
= C n
3
,chúng ta kết luận là số lượng sơ d0ồ tỉ lệ với lũy thừa bậc 3 của độ lớn
dân số , và do có bậc n
3
,tức (o(n
3
))
Vì thế , chúng ta thấy rằng mặc dầu có sự phá hủy những sơ đồ bậc cao ,dài bởi sự
ghép chéo và đột biến ,các GT GEN vốn dĩ xử lí một số lượng lớn các sơ đồ ,trong
khi xử lí một số lượng tương d0ối nhỏ các chuổi.
V-CÁC GIẢ THUYẾT KHỐI GẠCH XÂY :
Bức tranh của việc thực hiện GT GEN sẽ rõ ràng hơn với viễn cảnh được cung
cấp bởi các sơ đồ . Những sơ đồ thấp bậc thấp và thích nghi cao sẽ được lấy mẫu liên
kết lại và lấy mẫu lại để tạo nên các chuỗi có tiềm lực thích nghi cao hơn . Theo lối
này bằng làm việc với những sơ đồ cụ thể này (những khối gạch xây) , chúng ta có
thể giảm độ phức tạp của bài toán thay vì xây dựng các chuỗi hoàn thành cao bằng
4
)1(
3
nll
s
+−
cách thử mọi tổ hợp có thể tưởng tượng được ,chúng ta xây dựng các chuỗi ngày càng
tốt hơn từ những giải pháp riêng phần tốt nhất của các mẫu trong quá khứ .
Bởi vì những sơ đồ thích nghi cao của các chuỗi có chiều dài định nghĩa ngắn và
bậc thấp đóng vai trò quan trọng trong hành vi của các GAs ,chúng ta đã đặt cho
chúng một tên gọi đặc biệt là khối gạch xây .Giống như trẻ con tạo các pháo đài nguy
nga bằng cách ghép các mẫu gỗ đơn giản , các GAs sẽ tìm sự hoàn thành gần tối ưu

thông qua việc đặt cạnh nhau các sơ đồ hoàn thành cao ,bậc thấp và ngắn ,hay đó
chính là các khối gạch xây.
Chương 1 đã nhấn mạnh nhiều lần rằng các ký hiệu sẽ liên kết lại để tạo nên
những ý tưởng tốt hơn .Đến giờ chúng ta nhìn nhận rằng chính những khối gạch xây
sẽ liên kết để tạo nên những chuỗi tốt hơn .Hiển nhiên là sự tăng lên của các bằng
chứng theo kinh nghiệm đã cung cấp những yêu cầu trong một lớp rộng các bài
toán .Bắt đầu từ 2 thập niên trước với các luận văn của hai nhà tiên phong (Babley ,
1967 và Rosenberg ,1967 ) và được tiếp tục thông qua nhiều ứng dụng của GAs được
nêu lên ở các hội nghị gần đây về GAs ,giả thuyết khối gạch xây được nêu ra trong
nhiều bài toán khác nhau .Các bài toán đơn hình ,trơn , các bài toán đa hình có nhiễu ,
và các bài toán tối ưu hóa phức hợp, đều được giải quyết thành công nhờ GAs .Trong
khi các bằng chứng theo kinh nghiệm có giới hạn thì không có lý thuyết chứng
minh ,có gợi ý là GAs thích hợp cho nhiều dạng của bài toán mà chúng ta thường gặp
.
Mới đây , Bethke (1981) đã làm rõ thêm vấn đề này .Sử dụng các hàm Walsh và
chuyển đổi khéo léo các sơ đồ , ông đã phát minh ra phương pháp phân tích hiệu quả
các giá trị thích nghi trung bình nhờ dùng các hệ số Walsh .Điều này cho phép chúng
ta xác định các hàm và mã đặc biệt đã cho ,các khối gạch xây phối hợp lại để tạo nên
lời giải tối ưu hay gần tối ưu .Holland (1987) đã mở rộng các tính toán của Benthke
để phân tích độ thích nghi trung bình của sơ đồ khi dân số không được phân bố đồng
nhất .
Việc chuyển đổi sơ đồ của Bethke và Holland vượt quá phạm vi nguyên cứu của
chúng ta .Với người đọc quen thuộc với chuỗi Fourier ,tính tuần hoàn của các sơ đồ
khác nhau được đặt ra .Thật ra ,chính sự tuần hoàn này cho phép phân tích hàm
Walsh .Trong khi sự phân tích điều hòa xác định các đặc trưng vật lý thông qua sự
kiểm tra độ lớn tương đối của các hệ số Fourier thì sự phân tích hàm Walsh sẽ xác
định sự hiệu xuất tĩnh như mong muốn của GAs thông qua sự phân tích các độ lớn
tương đối của những hệ số Walsh .
Mặc dù những phương pháp chuyển đổi này là các công cụ toán học mạnh để
phân tích GAs trong những trường hợp xác định ,nhưng sự tổng quát hóa những kết

quả này cho việc mã hóa và các hàm tùy ý đã được chứng minh là rất khó khăn
.Bethke đã tạo ra một số trường hợp thí nghiệm có thể dẫn đến sai lạc cho GT GEN 3
thao tác (chúng ta gọi tổ hợp các hàm –mã hóa này GAs –lầm lẫn ) .Những kết quả
này nói lên rằng các hàm và việc mã hóa mà là GAs lầm lẫn ,có khuynh hướng chứa
đỉnh tối đa cô lập : những điểm tốt nhất có khuynh hướng bị vây quanh bởi những
điểm xấu nhất .Thực tế nhiều hàm chúng ta gặp phải trong thế giới thực không có các
đặc trưng hi hữu này ; có một số tính đều đặn thông thường trong tổ hợp mã hóa hàm
–giống như tính đều đặn của một hay nhiều sơ đồ –có thể được khai thác bởi sự tái
liên kết những khối gạch xây .Tóm lại ,chúng ta có thể nói rằng việc tìm ra những
hàm xấu loại này là khó khăn ,bất chấp kỹ thuật tìm kiếm .Tuy nhiên ,điều quan trọng
phải ghi nhớ là GAs đơn giản phụ thuộc vào sự tái liên kết của các khối gạch xây để
dò tìm những điểm tốt nhất .Nếu các khối gạch xây dẫn dắt kém hiệu quả ,vì sự mã
hóa đã dùng hay do bản thân hàm ,bài toán có thể yêu cầu một thời gian chờ đợi lâu
hơn để đi đến những giải pháp gần tối ưu .
***

CHƯƠNG III
HIỆN THỰC GIẢI THUẬT GEN
*****
I- CẤU TRÚC DỮ LIỆU
GAs xử lý các dân số của các chuỗi . do đó không có gì ngạc nhiên khi cấu trúc
dữ liệu nguyên thủy cho GAs là một chuỗi dân số . Có nhiều cách để hiện thực dân
số. Với GAs , chúng ta chọn cách đơn giản nhất . Chúng ta xây dựng dân số là một
mảng các cá thể , trong đó mỗi cá thể chứa kiểu hình ( phenotype) (thông số hay các
thông số đã giải mã), kiểu gen (genotype)(nhiễm sắc thể nhân tạo hay chuỗi bit) , và
giá trị thích nghi (hàm mục tiêu ) cùng với các thông tin phụ khác .Sơ đồ dân số được
trình bày trên hình 3.1 .Đoạn chương trình trên hình 3.2 khai báo kiểu dân số tương
ứng với mô hình này .
HÌNH 3.1 :Sơ đồ của một dân số chuỗi trong giải thuật gen
INDIVIDAL

NUMBER
INDIVIDUALS
STRING X f (x) []THER
1 01111 15 225
2 01001 9 81
3 : : : :
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:

:
:
:
:
:
:
:
:
:
:
:
: : : : :
n 00111 7 49
Các khai báo kiểu dữ liệu theo Pascal
const maxpop = 10;
maxstring = 30;
type allele = boolean ; (allele = vị trí bit)
chromsome = array [1 maxstring] of allele ;(chuỗi bit)
individual = record
chrom:chromosome; (genotype = chuỗi bit)
x: real; (phenotype = số nguyên không dấu )
fitness : real ; (gía trị hàm mục tiêu )
parent1, parent2 ,xsite : integer;
(parent và cross pt)
end;
population = array [ 1 maxpop] of individual;
Tham khảo đoạn chương trình trên , các hằng được khai báo gồm kích dân số tối
đa maxpop, chiều dài tối đa maxstring . Đây chính là giới hạn trên của kích thước dân
số và chiều dài chuỗi .Phần khai báo dữ liệu individual là record gồm chrom thuộc
kiểu chromosome đại diện cho nhiễm sắc thể nhân tạo ,fitness là biến đại diện cho giá

trị thích nghi của chuỗi, và x là biến thực tương ứng với gía trị thông số đã giải mã
.Bản thân kiểu chromosome là mảng của kiểu allene (đánh chỉ số từ 1 đến maxstring).
Trong GAs , chúng ta áp dụng các toán tử gen trên toàn bộ dân số ở từng thế hệ .
Để thực hiện trên các thao tác này , chúng ta sử dụng 2 dân số không phủ lấp nhau ,
qua đó đơn giản hóa viện sinh sản của các con cháu và sự thay thế của các bố mẹ
.Khai báo hai dân số là oldpop và newpop cùng các biến toàn cục của chương trình
.Với các dân số này, ta có thể dễ dàng tạo ra các con cháu mới từ các thành viên của
oldpop nhờ các toán tử gen , và thay oldpop thành newpop để chuyển sang thế hệ mới
Có các phương pháp lưu trữ hiệu qủa hơn để xử lí các dân số . Chúng ta có thể duy trì
dân số đơn , không phủ lấp nhau .Không có lý do đặc biệt náo để kích thước dân số
cố định . Các dân số tự nhiên chắc chắn thay đổi kích thước , và có thể là động cơ của
suốt quá trình tìm kiếm bằng gen nhân tạo để cho phép kích thưóc dân số thay đổ từ
thế hệ này sang thế hệ khác . Tuy nhiên , có một động cơ mạnh mẽ trong công việc
hiện tại của chúng ta để giữ cho mọi việc đều đơn giản , và hướng dẫn lựa chọn các
dân số không phủ lấp có kích thước cố định .
Hình 3.3:Khai báo biến toàn cục của GAs theo Pascal
var oldpop,newpop,: population;(2 dân số không phủ lấp)
popsize , 1chrom ,gen, maxgen :integer ;(các biến tòan cục)
pcross , pmutation , sumfitness: real;
nmutation, ncross : (các thống kê nguyên)
avg, max, min :real; (các thống kê thực)
Trước khi tìm hiểu 3 thao tác thiết yếu của GAs , chúng ta cần định nghĩa một số
biến toàn cục quan trọng , có ảnh hưởng đến tòan bộ chương trình , biến popsize
tương ứng với kích thước dân số (n),biến lchrom ứng với chiều dài chuỗi (l)biến gen
ứng với bộ đếm số thế hệ (t).Biến maxgen là giới hạn trên của số các thế hệ.Các biến
pcross, pmulation là các xác suất ghép chéo và đột biến, ứng với p
c
và p
m
. Biến

sumfitness là tổng các độ thích nghi dân số Σf . Các biến này quan trọng trong suốt
phép chọn của bánh xe roulette.
II-SINH SẢN, GHÉP CHÉO VÀ ĐỘT BIẾN :
Trước khi tìm hiểu từng thủ tục kể trên chúng ta cần nhớ sợi dây chung xuyên
suốt 3 thao tác sinh sản ,ghép chéo và đột biến là các phép chọn ngẫu nhiên .Trong
các đoạn chương trình dưới đây , chúng ta giả thiết đã có 3 thủ tục ngẫu nhiên :
Random : trả về số thực nhẫu nhiên , nằm giữa 0 và 1 .
Flip: trả về giá trị boolean là true cùng với xác suất đặc tả ( giá trị ngẫu nhiên
bernoully)
Rnd: trả về giá trị nguyên nằm giữa các giới hạn dưới và trên đã chỉ ra (biến ngẫu
nhiên đồng nhất trên tập con các số nguyên kề nhau ).
Trong giải thuật gen đơn giản , việc sinh sản được hiện thực trong thủ tục select , như
việc tìm kiếm tuyến tính thông qua bánh xe roulete với các khe hở trọng số tỉ lệ với
giá trị thích nghi của chuẩn . Trong đoạn chương trình trên hình 3.4 , chúng ta thấy
select trả về giá trị chỉ số dân số tương ứng với cá thể đã chọn . Để làm điều này ,
tổng riêng phần của các giá trị thích nghi được cộng dồn vào biến thực partsum . Biến
thực rand chứa vị trí nơi bánh xe chiếm sau khi quay , theo tính toán sau :
Rand: = randdom* sumfitness
Ơ đây , tổng các độ thích nghi của dân số (được tính trong thủ tục statistics) được
nhân với số ngẫu nhiên giả lặp tạo bởi thủ tục random . Cuối cùng , cấu trúc repeat-
untill tìm kiếm thông qua bánh xe roulet có trọng số , cho đến khi tổng riêng phần lớn
hơn hoặc bằng điểm dừng rand .Hàm trả về với giá trị chỉ số dân số hiện tại j được
gán cho select .
Hình 3.4 hàm select hiện thực phép chọn của bánh xe roulet .
function select(popize : integer; sumfitness :real;
var pop: integer) :integer;
{một cá thể qua phép chọn củ bánh xe roulette}
var rand, partsum :real;{điểm ngẫu niên trên bánh xe roulette}
j :integer;{chỉ số dân số}
begin

partsum := 0.0; j:= 0; {gán 0 cho bộ đếm và bộ tích luỹ}
rand := random*sumfitness;
{tínt toán điểm trên bánh xe roulette, sử dụng số ngẫu nhiên[0,1]}
repeat
j := j+1;
partsum := partsum + pop[j].fitness;
until (partsum >= rand) or (j =popsize);
{trả về số cá thể}
select := j;
end;

×