Tải bản đầy đủ (.docx) (82 trang)

CƠ SỞ TOÁN HỌC CỦA GT 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 (379.05 KB, 82 trang )

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
sơ đồ.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ố đếmSố đế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 :
4
)1(
3
nll
s

+−
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 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;
Đây có lẽ là cách đơn giản nhất để hiện thực việc chọn lựa . Đoạn chương trình select cho
chúng ta cách chọn trực tiếp con cháu cho thế hệ kế . Bước kế tiếp là ghép chéo , thực hiện
bằng thủ tục crossover trên hình 3.5 :
Hình 3.5: thủ tục crossover hiện thực sự ghép chéo đơn giản
Procedure crossover(var parent1,parent2,child1,child2 : chromosome;
var lchrom,ncross,pmutation,jcross :integer;
var pcross,pmutation:real);
{ghép chéo 2 chuỗi bố mẹ đặt vào 2chuỗi con}
var j :integer;
begin
if flip(pcross) then begin {ghép chéo với (pcross)}
jcross := rnd(1,lchrom-1); {ghép giữa 1 và lchrom –1}
ncross := ncross + 1; {tăng bộ đếm lần ghép chéo}
end else
jcross := lchrom;
{ trao đổi lần 1, giữa 1 với 1 và 2 với 2}
for j := 1 to jcross do begin
child1[j] := mutation(parent1[j],pmutation,nmutation);
child2[j] := mutation(parent2[j],pmutation,nmutation);
end;
{ trao đổi lần 1, giữa 1 với 2 và 2 với 1}
if jcross < > lchrom then
{bỏ qua nếu mặt ghép là lchrom –không ghép}
for j := 1 to jcross do begin
child1[j] := mutation(parent2[j],pmutation,nmutation);
child2[j] := mutation(parent1[j],pmutation,nmutation);
end;
end;

Thủ tục crossover nhận 2 chuỗi bố mẹ là parent 1 và parent 2 và sinh ra 2 chuỗi con child1 và
child2. Các xác suất ghép chéo và đột biến pcross và pmutation được chuyển cho crossover ,
cùng với chiều dài chuỗi lchrom , bộ đếm tích lũy số lần đột biến nmutation .
Trong crossover , các thao tác phản ảnh các mô tả của chúng ta trong chương 1 . Đầu thủ
tục , chúng ta xác định khi nào sẽ thực hiện ghép chéo trên cặp nhiễm sắc thể bố mẹ hiện tại .
Chúng ta búng đồng tiền , để đạt được mặt ngửa với xác suất pcross .Mô phỏng việc búng đồng
tiền qua thủ tục boolean là flip , trong đó flip gọi thủ tục random giả lập số ngẫu nhiên .Nếu
cần ghép chéo , vị trí ghép chéo được chọn giữa 1 và vị trí ghép cuối cùng .Chỗ ghép chéo
được chọn qua hàm rnd , hàm này trả về một số nguyên ngẫu nhiên nằm giữa các giới hạn dưới
và trên (giữa 1 và lchrom-1 ) .Nếu không có sự ghép nào được chọn , chỗ ghép chéo được lấy
là lchrom (chuỗi đầy đủ dài 1) , qua đó sự đột biến theo từng bit được tiến hành cho dù thiếu
mặt sự ghép chéo .Cuối cùng , sự trao đổi các phần trong ghép chéo được thực hiện qua 2 cấu
trúc for-do ở cuối đoạn chương trình .Đoạn for-do đảm nhận chuyển từng bit nằm giữa parent1
và child1 , và giữa parent2 và child2 .Đoạn for –do thứ 2 đảm nhận chuyển và trao đổi từng
phần chất liệu giữa parent1 và child2 , và giữa parent2 và child1 .Trong trường hợp này , đột
biến theo từng bit được tiến hành bởi hàm boolean mutation .
Đột biến tại 1 điểm được thực hiện bằng thủ tục mutation trên hình 3.6.
Hình 3.6: Thủ tục Mutation thực hiện ghép chéo điểm, bit đơn:
function mutation(alleleval :allele; pmutation :real;
var nmutation :integer) :allele;
var mutate :boolean;
Begin
mutate := flip(pmutation); {búng đồng tiền}
if mutate begin
nmutation := nmutation + 1;
mutation := not alleleval; {đổi giá trị bit}
end else
mutation := alleleval; {không đổi}
end;
Thủ tục này dùng hàm flip (tung đồng tiền 2 mặt ) để xác định khi nào thay đổi từ true sang

false và ngược lại .Thủ tục flip chỉ đưa ra tỉ lệ phần trăm mặt ngửa pmutation theo thời gian ,
như kết quả bộ tạo số tự nhiên random nằm bên trong bản thân thủ tục flip .Hàm này cũng giữ
các mốc trên số các đột biến bằng cách tăng biến pmutation .Như vậy , với sự sinh sản có nhiều
cách để cải thiện biến dị đơn. Ví dụ , có thể tránh việc sinh ra quá nhiều số ngẫu nhiên nếu
chúng ta quyết định khi nào thế hệ kế phải có mặt hơn là gọi hàm flip mỗi lần .
III-GIAI ĐOẠN SINH SẢN VÀ GHÉP CHÉO:
Thủ tục tạo thế hệ mới từ thế hệ cũ , bắt đầu với chỉ số ban đầu j = 1 và tiếp tục cho tới khi
vượt quá kích thước dân số popsize, ta chọn 2 cặp mate1 và mate2 bằng cách gọi hàm select .
Việc lai ghép và đôy biến chuỗi nhờ thủ tục crossover , giải mã cặp chromosomes , tính các giá
trị hàm mục tiêu và tăng dân số lên 2 đơn vị.
Hình 3.7 : Thủ tục generation tạo thế hệ mới từ thế hệ cũ.
procedure generation;
{tạo thế hệ mới thông qua chọn lựa ghép chéo và đột biến}
var j,mate1,mate2,jcross :integer;
Begin
j := 1;
repeat
{chọn đột biến và ghép chéo cho đến khi newpop được lấp đâỳ}
mate1:= select(popsize,sumfitness,olpop); {chọn cặp ghép đôi}
mate2:= select(popsize,sumfitness,olpop);
{ghép chéo và đột biến –đột biến bên trong quá trình ghép chéo}
crossover(oldpop[mate1].chrom, oldpop[mate2].chrom,
newpop[j].chrom,newpop[j+1].chrom,lchrom,ncross, nmutation,jcross,pcross,pmutation);
{giải mã chuỗi, tính fitness }
with newpop[j] do begin
x := decode(chrom,lchrom);
fitness := objfunc(x);
parent1 := mate1;
parent2 := mate2;
xsite := jcross;

end;
with newpop[j+1] do begin
x := decode(chrom,lchrom);
fitness := objfunc(x);
parent1 := mate1;
parent2 := mate2;
xsite := jcross;
end;
{tăng chỉ số dân số}
j := j + 2;
until j > popsize;
end;
Với bài toá bất kỳ chúng ta phải tạo thủ tục giải mã các chuỗi, để tạo thông số hoặc bộ
thông số phù hợp với bài toán . chúng ta cũng tạo thủ tục nhận thông số hay bộ các thông số đã
cho. Các thủ tục này được đặt tên là decode và objfunc. với các bài toán phức tạp ,chúng ta cần
các thủ tục giải mã khác nhau ,các thủ tục tính hàm thích nghi khác nhau .Để thống nhất với
phần dã trình bày,chúng ta tiếp tục dùng cách mã hoá số nguyên nhị phân không dấu, và dùng
hàm luỹ thừa đơn giản biểu diễn hàm thích nghi :f(x) = x
10
.
Sau đây chúng ta xây dựng tủ tục decode. Trong thủ tục này, chromosome đơn được giải
mã bắt đầu từ bit thấp nhất và map từ phả sang trái bằng cách trích lũy vào lũy thừa cơ số 2
hiện tại ,được cất vào biến poweroftwo .Khi bit tương ứng được thiết lập .giá trị tích lũy này
được cất vào biến accum ,cuối cùng được trả về cho hàm decode.
Hình 3.8 : thủ tục decode giãi mã chuỗi nhị phân là số nguyên khop6ng dấu.
function decode(chrom :chromosome; lbits :integer) :real;
{giải mã chuỗi thành số nguyên không dấu}
var j : integer;
accum, powerof2 : real;
Begin

accum := 0.0powerof2 :=1;
for j:= 1 to lbits do begin
if chrom[j] then accum := accum + powerof2;
powerof2 := powerof2 * 2;
end;
decode := accum;
end;
Hàm mục tiêu ta dùng ở đây là hàm lũy thừa đơn giản :f(x) = (x/coeff)
10
.Giá trị coeff được chọn để chuẩn hóa thông số x khi chuỗi bit có chiều dài lchrom = 30 được
chọn : coeff = 2
30
–1 = 1073741823.0 Từ đó giá trị x được chuẩn hóa , giá trị tối đa của hàm là
f(x) = 1.0 ,khi x = 2
30
–1 cho trường hợp lchrom = 30
Hình 3.9: Thủ tục objfunc tính hàm thích nghi f(x) = cx
10
từ thông số giải mã x.
function objfunc (x :real) :real;
const coeff = 1073741823.0; {hệ số chuẩn hóa vùng}
n = 10;
Begin
objfunc := power(x/coeff,n)
end;
IV-CHƯƠNG TRÌNH CHÍNH :
Dưới đây là chương trình chính của GAs đơn giản:
Hình 3.10 : Chương trình chính GAS :
Begin
gen := 0;

repeat {vòng lặp chính}
gen := gen +1 ;
generation;
statictics(popsize, max, avg, min, sumfitness, newpop}
report(gen}
oldpop := newpop ; {hướng đến thế hệ mới}
until (gen >= maxgen) ;
end;
Bắt đầu chương trình chính, chúng ta đặt bộ đếm thế hệ gen := 0. Sau đó chúng ta nhập dữ
liệu vào chương trình , khởi tạo dân số ngẫu nhiên ban đầu, tính toán thống kê dân số ban đầu,
và in ra báo cáo ban đầu bằng thủ tục initialize. Ở đây không đào sâu vào đoạn chương trình
khởi động .
Kế tiếp vòng lặp chính của chương trình chứa trong cấu trúc repeat-until gồm : tăng bộ đếm
thế hệ, sinh ra một dân số mới trong thủ tục generation, tính toán các thống kê sinh sản mới
bằng thủ tục statictics , in bản báo cáo ban đầu nhờ thủ tục report ,rồi gán dân số mới vào dân
số cũ cho thế hệ kế tiếp :
oldpop := newpop ;
Kiểmtra điều kiện ,nếu bộ đếm thế hệ còn nhỏ hơn số thế hệ tối đa maxgen thì quay trở lên
làm lại các lệnh trong vònglặp này cho đến khi điều kiện được thỏa.
Thủ tục statictics sẽ tính toán các giá trị trung bình ,lớn nhất và nhỏ nhất của độ thích nghi;
nó cũng tính tổng thích nghi sumfitness mà bánh xe roulette yêu cầu:
Hình 3.11 : Thủ tục statictics tính các thống kê dân số quan trọng:
procedure statictics(popsize :integer; var max, avg ,min ,sumfitness
:real; var pop :opulation) ;
var j :integer;
Begin
{khởi tạo}
sumfitness := pop[1].fitness ;
min := pop[1].fitness ;
max := pop[1].fitness ;

{vòng lặp tìm max ,min ,sumfitness}
for j := 2 to popsize do
begin
sumfitness := sumfitness + fitness;
if fitness > max then max := fitness ;
if fitness < min then min := fitness ;
end;
avg := sumfitness / popsize ;
end ;
Thủ tục report sẽ tình bày một bản báo cáo dân số đầy đủ bao gồm các chuỗi ,các độ thích
nghi và các giá trị thông số .Một danh sách của report và chương trình con writechrom .
Hình 3.12 Thủ tục writechrom:
procedure writechrom(var out : text ; chrom :chromosome; lchrom :integer) ;
var j :integer;
begin
for j := lchrom downto 1 do
if chrom[j] then writeln(out,’1’)
else write(out,’0’) ;
end;
V-PHÂN TÍCH CHƯƠNG TRÌNH :
Chúng ta xác định một phép thử đơn giản .Chuỗi bit như là số nguyên không dấu 30 bit.
Hàm thích nghi (x /c)
n
, trong đó c được chọn để chuẩn hóa x, và n được chọn là 10.
Ở đây ta chọn số mũ lớn hơn là vì với số mũ lớn hơn ,giá trị trung bình của hàm sẽ thấp
hơn ,và một phần nhỏ hơn của vùng sẽ ánh xạ đến các giá trị trên một vài số lượng đã chỉ ra
.Kết quả là dân số bắt đầu ngẫu nhiên sẽ không chứa nhiều điểm tốt để bắt đầu dò tìm, đây là
phép thử tốt hơn cho việc thực hiện GAs.
Để xác định các mô phỏng một cách chính xác hơn ,hãy chọn một tập hợp các thông số tử
cho GAs .Trong nghiên cứu của De Jong (1975) về GAs để tối ưu hóa hàm ,một loạt các thông

số nghiên cứu bằng 5 hàm phù hợp với các bài toán ,đã khuyên cáo rằng sự thực hiện tốt đẹp
của GAs đòi hỏi chọn lựa một xác suất ghép chéo lớn ,xác suất đột biến nhỏ (tỉ lệ nghịch với
dân số) và một độ lớn dân số vừa phải .Theo khuyến cáo này , chúng ta chọn các thông số sau
cho các mô phỏng tính toán đầu tiên :
pmutation = 0.0333 (xác suất đột biến)
pcross = 0.6 (xác suất ghép chéo)
popsize = 30 (độ lớn dân số)
Trong sự mô phỏng bằng tay ở chương 1 ,chiều dài chuỗi là ngắn (l=5) .vậy không gian tìm
kiếm nhỏ , chỉ gồm 2
5
= 32 điểm .Miền này nhỏ quá, phép thử không có sức thuyết phục cao ,vì
bất kỳ một phương pháp tìm kiếm kiểu liệt kê hay ngẫu nhiên nao cũng có thể tìm ra kết quả
nhanh chóng với không gian tìm kiếm nhỏ như vậy .Giờ đây ,chúng ta muốn thấy phép thử
khắc nghiệt hơn đối với GAs ,chiều dài chuỗi được tăng lên và số mũ đem thử của hàm cũng
được tăng lên ,với chiều dài chuỗi lchrom = 30 ,không gian tìm kiếm sẽ rộng hơn và cách làm
việc kiểu ngẫu nhiên hay liệt kê sẽ không tích hợp .Với lchrom = 30 sẽ có 2
30
điểm,phương
pháp liệt kê mỗi điễm một lần hoàn toàn không thể làm nhanh được .Hơn nữa với sự gia tăng
hàm số mũ của hàm thích nghi vừa mới điều chỉnh thì chỉ có 1.05% số điểm của không gian
tìm kiếm là có giá trị lớn hơn 0.9 ,hai sự sửa đổi này rõ ràng đã làm cho phép thử GAs thuyết
phục hơn .
Chúng ta bắt đầu với GAs đơn giả và cho nó chạy qua 7 thế hệ .Bảng thống kê chỉ ra như
sau :
Các thông số của GAs đơn giản :
Độ lớn dân số (popsize) = 30
Chiều dài nhiễm sắc thể (lchrom) = 30
Số thế hệ tối đa(maxgen) = 10
Xác suất ghép chéo (pcross) = 0.6
Xác suất đột biến (pmutation) =0.0333

Các thống kê dân số ban đầu :
Độ thích nghi cực đại dân số ban đầu = 2.8241322532E-0.1
Độ thích nghi trung bình dân số ban đầu = 3.4715832788E-0.2
Độ thích nghi cực tiểu dân số ban đầu= 1.1406151375E-10
Tổng độ thích nghi dân số ban đầu = 1.0414749837+0.0
Dân số khởi động có độ thích nghi trung bình là 0.0347 .Thích nghi trung bình của hàm
trong khoảng đã cho có thể tính được bằng 0.0909 .Trong một chừng mực nào đó chúng ta đã
không gặp may ,khi lựa chọn ngẫu nhiên dân số ban đầu .Lướt qua các độ tích nghi thành phần
tốt nhất trong dân số khởi động chúng ta thấy f
max
= 0.2824 ,chúng ta muốn có 30.(1-0.2824
0.1
)
= 3.56 hay là xấp xỉ 4 chuỗi trong một dân số ngẫu nhiên 30 phần tử có độ thích nghi tốt hơn
0.2824 .Không những chúng ta gặp xui với giá trị trung bình ,mà chúng ta lại không gặp may
với giá trị max .Măc dù có sự giảm không mong muốn dân số ban đầu ,mỗi khi GAs khởi đông
nó sẽ nhanh chóng tìm ra cách thực hiện tốt ,sau vòng sinh sản ,ghép chéo và đột biến đầu
tiên .Trong thế hệ thứ nhất ,một chuỗi rất tốt với độ thích nghi là 0.8715 đã được tìm ra .Nếu
chạy tiếp nữa sự cải thiện xa hơn được tìm thấy trên cả độ thích nghi dân số trung bình lẫn độ
thích nghi dân số cực đại .Càng về cuối quá trình ,sự hội tụ quan sát được càng cao .Trong thế
hệ thứ 7 ,Chúng ta nhận thấy rằng có sự hợp lý ở hầu hết các vị trí bit .Điều này đã xảy ra ,mặc
dù chúng ta chưa đạt đến điểm tốt nhất trong không gian ,tuy nhiên chúng ta đã đến gần điểm
đó .Ở thế hệ thứ 6 ,một cá thể đã xuất hiện với độ thích nghi là f =0.9807 .Điểm này gần điểm
tối ưư nhưng chưa phải điểm tối ưu .Hành vi hội tụ mà không bảo đảm tối ưu đã làm phiền
lòng những ai tiếp cậ GAs từ cơ sở tối ưu tuyền thống khác.Có nhiều cách làm giảm sự hội tụ
sớm này ,chúng ta sẽ nghiên cứu vài cách.Tuy nhiên sự thật của vấn đề là các GAs không đảm
bảo hội tụ trong bài toán tùy ý .Dù chúng ta rút ra được các miền đáng quan tâm của không
gian tìm kiếm một cách nhanh chóng ,nhưng chúng là những phương pháp yếu ,không đảm bảo
có những thủ tục hội tụ hơn.Điều nàynkhông làm giảm giá trị tiện ích của chúng .Hoàn toàn
ngược lại có nhiều phương pháp hội tụ hơn lại phải hy sinh tính toàn cục và tính linh hoạt cho

sự hội tụ .Thêm nữa ,nhiều phương pháp bị hạn chế bởi một lớp hẹp các bài toán .Kết quả là
các GAs có thể được dùng ở những nơi mà các kỹ thuật hội tụ hơn không giám giải quyết .Hơn
nữa,nếu chúng ta đang giải quyết bài toán được biết là cục bộ nhưng hội tụ , thì các phương
pháp hiện có ,các ý tưởng về phương pháp lai là hoàn toàn tự nhiên .Hãy bắt đầu sự tìm kiếm
bằng GAs để chọn ra những ngọn đồi đáng qua tâm trong bài toán .Một khi GAs tìm được ra
những miền tốt nhất ,kế đó hãy chọn các sơ đồ hội tụ cục bộ và leo lên những dỉnh cục bộ
.Bằng các này ta có thể kết hợp tính toàn cục và tính song song của GAs ,với hành vi hội tụ hơn
của kỹ thuật cục bộ .

VI-BIẾN ĐỔI CÁC HÀM MỤC TIÊU SANG HÀM THÍCH NGHI:
Trong nhiều bài toán ,mục tiêu được đưa ra một cách tự nhiên ,chẳn hạn là cực tiểu hóa một
số hàm g(x) nào đó ,hay là cực đại hóa hàm lợi ích hay hàm lợi nhuận n(x) .Ngay khi bài toán
được đưa ra một cách tự nhiên dưới dạng tối ưu hóa ,thì điều này không bảo đảm hàm tiện ích
sẽ không âm với mọi x mà chúng ta yêu cầu trong hàm thích nghi (hàm thích nghi phải có giá
trị không âm) .Như vậy cần thiết phải chuyển những hàm mục tiêu thông thường sang một
dạng hàm thích nghi ,thông qua một hay nhiều phép biến đổi .
Tính đối ngẫu của cực tiể hóa giá thành và cực đại quá lợi nhuậnđược tìm hiểu rất rõ
.Thông thường để chuyển một bài toán cực tiểu hoá sang bài toán cực đại hóa ,chúng ta chỉ cần
nhân hàm giá với một số âm .Trong GAs thao tác này là chưa đủ ,bởi vì đại lượng đạt được sau
đó sẽ không có gì bảo đảm là không âm trong mọi trường hợp .Với GAs ,sự chuyển đổi từ giá
sang giá trị thích nghi thường làm như sau :
f(x) = C
max
– g(x) khi g(x) < C
max
,f(x) = 0 và ngược lại.
Có nhiều cách khác nhau để chọn hệ số C
max
. C
max

có thể được lấy như là hệ số nhập ,theo
giá trị g lớn nhất quan sát được tính đến lúc ấy ,theo giá trị g lớn nhất trong dân số hiện thời
,hay theo giá trị lớn nhất của k thế hệ sau cùng .Để thích hợp hơn , C
max
nên biến đổi theo sự
biến động dân số .
Khi phát biểu hàm mục tiêu như là hàm lợi nhuận hay hàm tiện ích , chúng ta dễ dàng định
hướng hàm : lợi nhuận hay ích lợi tối đa sẽ dẫn đến sự thực hiện như mong muốn .Có thể
chúng ta vẫn còn một vấn đề với giá trị âm cuả hàm tiện ích u(x) .Để khắc phục điều này
,chúng ta chỉ cần biến đổi độ thích nghi theo phương trình sau :
f(x) = u(x) + C
min
khi u(x) + C
min
> 0, f(x) = 0 vá ngược lại.
Chúng ta có thể chọn C
max
như là hệ số nhập ,như là giá trị tuyệt đối của giá trị xấu nhất
trong thế hệ hiên tại hay k thế hệ sau cùng ,hay theo một hàm biến động dân số .
Mọi sự bắt chước với các hàm mục tiêu này gây ra sự nghi ngờ về mối liên hệ giữa hàm
mục tiêu và hàm thích nghi .Trong tự nhiên ,sự thích nghi (một số con cháu sống sót để sinh
sản) là phép lặp thừa .Một số lượng con cháu sẽ sống sót bởi vì chúng thích nghi ,và chúng
thích nghi bởi vì một số lượng con cháu sẽ sống sót .Sự sinh tồn trong dân số tự nhiên là một
nhiệm vụ tối hậu và duy nhất của bất kỳ sự du nhập nào .Ngược lại trong công việc của GAs
,chúng ta có cơ hội điều chỉnh mức độ cạnh tranh giữa các thành viên của dân số đr63 đạt đến
sự thực hiện quá độ và chủ yếu mà chúng ta mong muốn .Đây là cái mà chúng ta phải làm ,khi
chúng ta thực hiện việc co độ thích nghi.
VII-ĐỘ CO THÍCH NGHI :
Điều chỉnh số lượng các bản sao là đặt biệt quan trọng đối với GAs dân số nhỏ .Trong lúc
bắt đầu chạy GAs ,chúng ta thường có một số ít cá thể đặc biệt trong dân số .Nếu các cá thể đặc

biệt lại cho luật chọn lọc bình thường (pselect = f
i
/ Σf) ,chúng có thể chiếm tỉ lệ đáng kể của
dân số trong một thế hệ , và điều này sẽ gây ra sự hội tụ sớm .Sau đó chỉ sau một lần chạy ta có
bài toán rất khác với bài toán đầu .Cuối lần chạy có thể có sự biến đổi đáng kể bên trong dân số
,tuy nhiên độ thích nghi trung bình dân số cá thể đạt gần đến độ thích nghi dân số tốt nhất .Nếu
điều này xảy ra ,các thành viên trung bình và các thành viên tốt nhất gần như lấy cùng số lượng
bản sao trong những thế hệ tương lai ,và sự sống sót của cá thể thích nghi nhất cần thiết cho sự
cải thiện sẽ trở thành ngẫu nhiên trong dân số những cá thể bình thường .Trong cả hai trường
hợp ,khi bắt đầu chạy cũng như khi bắt đầu chạy ổn định ,phép co độ thích nghi là một lối
thoát.
Một thủ tục có ích là phép co tuyến tính .Gọ f là độ thích nghi thô và f’ là độ thích nghi
được co .Co tuyến tính yêu cầu một quan hệ tuyến tính giữa f và f’ như sau :
f’ = af + b
Các hệ số a và b có thể được chọn theo nhiều cách ,tuy nhiên trong tất cả mọi trường hợp
chúng ta muốn có độ co thích nghi trung bình f’
avg
bằng với độ thích nghi thô f
avg
,bởi vì việc
dùng thủ tục chọn lọc sau đó sẽ bảo đảm rằng mọi thành viên dân số trung bình sẽ đóng góp
vào thế hệ con cháu kỳ vọng trong thế hệ kế tiếp .Để điều khiển số lượng dân số đã cho đối với
thành viên dân số có độ thích nghi thô tố đa ,chúng ta chọn quan hệ co kiểu khác để đạt được
độ thích nghi co tối đa f’
max
= C
mult
* f
avg
trong đó C

mult
là số lượng các bản sao mong muốn cho
thành viên dân số tốt nhất .Đối với các dân số nhỏ (n = 50 .. 100) , = 1.2 đến 2 được sử dụng
thành công.
Thủ tục co đơn giản thông qua 3 chương trình con prescale ,scale , scalepop.
procedure prescale(umax,uavg,umin :real; var a,b :real);
{tính các hệ số co cho phép co tuyến tính}
const fmultiple = {bội số của phép co là 2}
var delta :real; {ước số}
Begin
if umin > (fmultiple * uavg – umax) / (fmultiple –1.0)
{kiểm tra không âm} then begin {phép co thông thường}
delta := umax –uavg;
a := (fmutiple – 1.0) * uavg / delta ;
b := uavg * (uavg – fmultiple * uavg) / delta ;
end else begin {co thật nhiều nếu có thể được}
a:= uavg / delta ;
b:= -umin * uavg / delta ;
end;
end;
function scale(u,a,b :real) :real;
{co một giá trị của hàm mục tiêu}
Begin
scale := a * u + b;
end;
procedure scalepop (popsize :integer ;var max ,avg ,min ,sumfitness :real ;
var pop :poulation) ;
{co toàn bộ dân số}
var j :integer ;
a ,b :real ; {độ dốc và phần bị chắn cho phương trình tuyến tính}

Begin
prescale(max ,avg ,min ,a ,b) ;
{nhận độ dốc và phần bị chắn cho hàm}
sumfitness := 0.0 ;
for j:= 1to popsize do begin
fitness :=scale(objective ,a ,b) ;
sumfitness := sumfitness + fitness ;
end;
end;
Thủ tục prescale nhận các giá trị thích nghi thô trung bình ,tối đa và tối thiểu ,là uavg ,umax
,umin và tính toán các hệ số co tuyến tính a và b dựa trên logic .Nếu có thể thì co đến bội sô
1mong muốn C
mult
(trong chương trình là fmultiple) ,sau đó thực hiện tính toán .Mặt khác việc
thực hiện co bằng cách chốt quanh giá trị trung bình và kéo giãn độ thích nghi cho đến khi giá
trị cực tiểu dần đến 0 .Thủ tục scale sẽ được gọi sau thủ tục prescale để co tất cả các giá trị thô
của các cá thể bằng cách dùng hàm scale đơn giản .Ở đây chúng ta giả thiết rằng các giá trị
thích nghi thô được lưu trữ trong record indivadual trong một giá trị thực được gọi là
objective(pop[j].objective) .Các độ thích nghi đã co được đặt vào thông số thực fitness ,và tổng
thích nghi sumfitness sẽ được tính lại .
Bằng cách này ,phép co đơn giản sẽ giúp ta ngăn chặn những chi phối sớm của những cá
thể đặc biệt ,để khuyến khích sự cạnh tranh lành mạnh giữa những cá thể gần bằng nhau .Tuy
nhiên ,điều này không phải là toàn bộ những nghiên cứu của chúng ta về các biến đổi hàm mục
tiêu có thể có .
VIII-MÃ HOÁ :
Để biến đổi chuỗi có chiều dài hữu hạn thành các thông số của bài toán tối ưu hoá .chúng ta
đã giới thiệu một mã nhị phân đơn giản để giải bài toán bậc công tắc nhị phân đơn giản .Trong
phép mã hoá này chúng ta cho phép nối dài các bit 0 ,1 ,trong đó giá trị 0(hay 1) thứ I chỉ rằng
công tắc thứ I là tắt (hay mở) .Chúng ta cũng đã giải mã chuỗi nhị phân này thành số nguyên
không dấu. Mặt dù ,cách mã hóa này cho chúng ta một sự linh hoạt nào đó ,nó không cung cấp

đủ các chọn lựa mà chúng ta cần để giải quyết các bài toán mà chúng ta gặp trong khoa học
,kinh doanh và kỹ thuật .Trong phần này chúng ta giải quyết 2 nguyên lý cơ bản của sự mã hóa
trong GAs để giúp thiết kế mã cho các bài toán khác nhau .Sau đó ,chúng ta sẽ nghiên cứu cách
mã hóa chuỗi nhị phân ,đã biến đổi và đa thông số ,mà cách này đã chứng tỏ có ích lợi tropng
nhiều bài toán khác nhau .
Về một phương diện nào đó mã hóa một bài toán cho việc tìm kiếm trong GAs không phải
là vấn đề lớn ,vì các lập trình viên GAs bị hạn chế nhiều bởi sự hình dung của họ .Chúng ta đã
thấy trong chương trứớc ,các GAs khai thác những sự tương đồng trong các mã tùy ý ,cũng như
là những viên gạch xâydẫn đến điểm gần tối ưu .
Chúng ta dựa trên 2 nguyên lý cơ bản để mã hóa GAs : Nguyên lý khối gạch xây có nghĩa
và nguyên lý bộ ký tự tối thiểu .
Nguyên lý khối gạch xây có nghiã : Ngưòi sử dụng nên chọn cách mã hóa sau cho các sơ
đồ bậc thấp ,ngắn sẽ thích hợp với bài toán đã cho và không có liên hệ tương đối với sơ đồ
trên các vị trí khác.
Nguyên lý bộ ký tự tối thiểu :Người sử dụng nên chọn bộ ký tự nhỏ nhất cho phép diễn tả
bài toán một cách tự nhiên .
Bảng sau sẽ thấy các chuỗi nhị phân với độ thích nghi của chúng : có được bằng cách giải
mã một chuỗi nhị phân thành một số nguyên không dấu và sau đó đánh giá độ thích nghi bằng
hàm f(x) = x
2
.
Chuỗi nhị phân Trị x Chuỗi không nhị phân Độ thích nghi
01101 13 N 169
11000 24 Y 576
01000 8 I 64
10011 19 T 361
Sự tương quan giữa mã nhị phân và mã không nhị phân
Nhị phân Không nhị phân
00000 A
00001 B

00010 C
… …
11001 Z
11010 1
11011 2
… …
11111 6
Trong trường hợp nhị phân vi65c tìm kiếm những tương đồng quan trọng có thể thực hiện
bằng một số lượng nhỏ ký tự của bảng chữ cái .Trong trường hợp không nhị phân ,chúng ta chỉ
có 4 chuỗi ký tự đơnvà các giá trị thích nghi của chúng ;không có sự tương đồng về mặt mã để
khai thác .
Để hiểu điều này một cách toán học hơn ,chúng ta so sánh số lượng sơ đồ có sẳn trong mã
nhị phân với một sơ đồ có sẳn trong mã không nhị phân .Trong cả hai trưòng hợp mã nhị phân
và không nhị phân phải mã hóa một số lượng như nhau các giải pháp ,tuy nhiên những phần
chính của bộ ký tự khác nhau yêu cầu những chiều dài chuỗi khác nhau .Để cân bằng số điểm
trong mỗi không gian ,chúng ta cần 2
l
= k
l’
,trong đó l là chiều dài chuỗi theo mã nhị phân ,l’ là
chiều dài chuỗi theo mã không nhị phân .Số lượng sơ đồ theo mỗi cách mã hóa có thể được
tính toán bằng cách sử dụng chiều dài chuỗi tương ứng : 3
l
cho trường hợp nhị phân va(k+1)
l’

cho trường hợp không nhị phân.Dể dà chỉ ra rằng bộ ký tự nhị phân cung cấp một số sơ đồ tối
đa trên một bit thông tin trên bộ mã bất kỳ .Từ đó, những tương đồng này là điều thiết yếu cho
sự tìm kiếm,khi chúng ta thiết kế một bộ mã chúng ta nên cực đại hóa số lượng khả dụng của
chúng cho GAs khai thác .

IX-CÁC RÀNG BUỘC :
Chúng ta chỉ mới thảo luận GAs để tìm kiếm những hàm mục tiêu không ràng buộc .Nhiều
bài toán thực tế chưá một hay nhiều ràng buộc .Trong phần này chúng ta xét sự hợpnthành
trong tìm kiếm theo GAs.
Các ràng buộc thường được phân lớp thành các quan hệ bằng nhau hay khác nhau .Từ
đó,các ràng buộc “bằng nhau” có thể được xếp vào một mô hình hệ thống – hay hộp đen
,chúng ta chỉ quan tâm đến những ràng buộc “khác nhau”.Đầu tiên ,có thể xuất hiện những
ràng buộc “khác nhau” mà có thể không tạo ra bài toán riêng .Một GAs sinh ra một trình tự các
thông số được kiểm tra nhờ mô hình hệ thống ,hàm mục tiêu và các ràng buộc .Đơn giản là
chúng ta chỉ cần chạy mô hinh ,đánh giá hàm mục tiêu ,và kiểm tra để phát hiện các ràng buộc
bị vi phạm.Nếu không tập thông số sẽ được gắn giá trị thích nghi phù hợp với sự đánh giá hàm
mục tiêu .Nếu ràng buộc bị vi phạm ,giải pháp sẽ là không khả thi và do đó không thích nghi
.Thủ tục này là tốt ,ngoại trừ các bài toán ứng dụng bị ràng buộc cao ;việc tìm thấy một điểm
khả thi cũng khó khăn như tìm ra điểm tốt nhất .Kết quả là ,chúng ta thường muốn rút ra một số
thông tinnào đó về giải pháp không khả thi ,có thể bằng cách giảm tầm quan trọng của thích
nghi trong mối quan hệ với mức độ vi phạmcủa ràng buộc .Đó chính là phương pháp chụi phạt.
Trong phương pháp chụi phạt ,một bài toán ràng buộc trong tối ưu hóa được biến đổi thành
bài toán kông ràng buộc bằng cách kết hợp với phí tổn hay phạt với tất cả phạm vi ràng buộc
.Phí tổn này được bao hàm trong sự đánh giá hàm mục tiêu .Thí dụ ,bài toán ràng buộc ban đầu
với dạng tối thiểu hóa:
tối thiểu hóa g(x)
phụ thuộc vào hi(x) >= 0 ,I = 1,2,…,n
trong đó x là một m-vectơ
Chúng ta dổi sang dạng không ràng buộc :
tối thiểu hóa g(x) + r.
Trong đó Φ : hàm phạt
r : hệ số chụi phạt
Có một số giải pháp thực hiện hàm phạt Φ .Ở đây, chúng ta lấy bình phương của vi phạm
ràng buộc , Φ|h
i

(x)| = h
i
2
(x) cho tất cả mọi ràng buộc i bị vi phạm .Dưới điều kiện xác định ,giải
pháp không ràng buộc sẽ hội tụ đến giải pháp ràng buộc ,khi hệ số phạt r dần đến vô cực.Trong
thực tiễn ,các giá trị r trong các GAs thưởng được xáx dịnh độc lập cho mỗi ràng buộc ,vì thế
những vi phạm vừa phải cuả các ràng buộc sẽ sinh ra các phần phạt ,đó là một số phần trăm
đáng kể của chi phí hoạt động theo danh nghiã .
--------------- ***------------------
CHƯƠNG IV
SỰ CẢI TIẾN VÀ ỨNG DỤNG
CỦA GIẢI THUẬT GEN
I-SỰ CẢI TIẾN CỦA GIẢI THUẬT GEN:
1.Sự tiến hóa của giải thuật gen:
Qua các chương , những khái niệm cơ bản của GAs đã được đề cập ,tuy nhiên để GAs thực
thi có hiệu quả hơn ,người ta đã thực hiên một số cải tiến GAs chuẩn này.Trước tiêncải tiến dựa
trên chọn lọc các sơ đồ và sau đó là một số cải tiến trên toan tử gen.
a/Cải tiến trong việc chọn lựa các sơ đồ:
Việc chọn lọc các sơ đồ được sử dụng trong GAs chuẩn đó là lựa chọn trên bánh xe roulette
.Những sơ đồ này là những thành viên tốt nhất nhưng có thể thất bại trong các lần sinh kế tiếp
và có thể dẫn đến những lỗi ngẫu nhiên .Để cải thiện điều này , một vài phương pháp cải
tiếnđược liên kết cùng với việc chọn lựa trên bánh xe roulette đã được tiến hành.
Chọn lọc ưu tú (elitist): Chiến thuật này nhằm sao chép lại thành viên tốt nhất trong một thế hệ
và đưa nó vào trong thế hệ kế tiếp .Chiến thuật này có thể gia tăng tốc độ tôí ưu của một dân số
bởinhững cá thể tốt và do đó không những cải thiện được việc tìm kiếmcục bộ mà còn làm cho
GAs được thực hiện hoàn chỉnh hơn .
Chọn lọc khi lấy mẫu (Deterministic Sampling): Trong một sơ đồ ,xác suất chọn lọc thường
được tính như sau : pselect
i
= f

i
/Σ f
j
.Sau đó số con cái e
i
trong một chuỗi A
i
được tính bởi e
i
=
n * pselect
i
.Mỗi chuỗi sẽ cấp phát một số con cái tùy thuộc vào giá trị e
i
.Những chuỗi còn lại
cần phải điền cho đầy một dân số thì sẽ được lấy ra theo thứ tự từ đầu dân số đã được sắp xếp
trước .
Lấy phần mẫu còn lại ngẫu nhiên có thay thế (Remainder Stochatic Sampling With
Replacement) :Sau khi đã tính số con cái e
i
trong một sơ đồ đã được chọn lọc để lấy mẫu trong
giai đoạn trên , thì phần nguyên của e
i
sẽ gán cho những cá thể có trong dân số đó ,còn phần lẻ
của e
i
sẽ được sử dụng để tính trọng số trong việc chọn lựa trên vòng tròn bánh xe để sinh ra
các cá thể còn lại.
Lấy mẫu còn lại ngẫu nhiên và không thay thế ( Remainder Stochatic Sampling Without
Replacement ) :Cũng tương tự như trên nhưng phần lẻ của giá trị e

i
bây giờ được xem như là
xác suất. Hay nói cách khác ,số lần tham gia vào trong quá trình sinh sản của một chuổi bằng
với giá trị phần nguyên của e
i
.Sau đó ,để đảm bảo đủ kích thước dân số , ta chọn những con
cái khác của những chuỗi với xác suất tương đương với phần lẻ của số cá thể mong đợi cho
đến khi đạt được kích thước dân số n .Ví dụ 1 chuỗi với số bản copy mong đợi là 1.5 ,chắc
chắn sẽ nhận được một bản copy và một bản copy khác với xác suất 0.5
Ranking Procedure : Theo phuơng pháp này ,một dân số được sắp xếp tùy thuộc vào giá trị
fitness .Sau đó ta gán các cá thể này cho mỗi một con cháu mà có hàm gần giống với Rank
.Một hàm Rank do BanKer đề ra (1985) :
Count
Rank
Khi đó :
Trong đó λ
max
là giá trị do user đưa vào ,1 < λ
max
<=2 với n là kích thước dân số .Miền e
i
sau
đó sẽ là[2 - λ
max
, λ
max
].Phương trình trên là một trường hợp đặc biệt.
2-Cải tiến trên các toán tử tối ưu :
GAs là sự kết hợp của 3 toán tử :tái tạo ,ghép chéo và đột biến .Chúng tác động ở cấp độ
trên toàn bộ dân số ,ta có một số cải tiến trên các toán tử này như sau:

Ghép chéo nhiều điểm: Toán tử ghép chéo mà ta sử dụng từ trước đến giờ là ghép chéo chỉ trên
1 bit đơn tại 1 vị trí được. Quá trình ghép chéo này có thể tiến hóa thành ghép chéo nhiều điểm
mà trong đó số điểmghép chéo sẽ được cho trước Nc .Khi Nc = 1 thì trở thành ghép chéo
đơn ,với Nc chẳn chuỗi được xem như là một chuỗi không có sự bắt đầu và kết thúc ,và số
điểm ghép chéo Nc được chọn xung quanh một vòng tròn đồng nhất một cách ngẫu nhiên. Quá
trình ghép chéo nhiều điểm có thể giải quyết 1 tổ hợp cụ thể các đặt tính đã được mã hóa trên
một chuỗi nhiễm sắc thể mà sự ghép chéo một điểm không giải quyết được.
Giả sử ta có hai chuỗi :
Chuỗi 1 : 10110001100
Chuỗi 2 : 00101101001
Trong đó các bits gạch dưới biểu diễn cho những sơ đồ có tính hoàn thiện cao .Giả sử một
trong hai sơ đồ này hoán chuyển thì sẽ mất đi thuận lợi trong quá trình ghép chéo .Rõ ràng
ghép chéo một điểm không thể tránh được điều này ,sơ đồ 1 sẽ bị phá vỡ và không được truyền
đi .Vấn đề này có thể giải quyết bằng ghép chéo hai điểm như sau :
Chuỗi 1 : 1 0 1 1 | 0 0 0 1 | 1 0 0
Chuỗi 2 : 0 0 1 0 | 1 1 0 1 | 0 0 1
Chuỗi con 1 : 1 0 1 1 1 1 0 1 1 0 0
Chuỗi con 2 : 0 0 1 0 0 0 0 1 0 0 1
Một cách khác thể hiện sự ghép chéo nhiều điểm là ghép chéo đồng nhất đã được giới thiệu
bởi Syswerda(1989) .Theo cách này ,hai chuỗi parents được chọn và hai chuỗi children sẽ được
tạo ra .Với mỗi vị trí trên hai chuỗi con ,chúng ta quyết địng ngẫu nhiên chuỗi cha nào đó đóng
góp giá trị bit vào chuỗi con này tùy thuộc vào khuôn mẫu (template) đã được chọn ngẫu
nhiên .Quá trình được mô tả như sau :
parent 1 : 01100111
parent 2 : 11010001
template: 01101001
Tương ứng với 0 thì lấy chuỗi 1 còn 1 thì lấy chuỗi 2 và ngược lại.Kết quả :
child 1 : 11110001
child 2 : 01000111
Mặc dù ghép chéo nhiều điểm có ưu điểm trên ,nhưng đôi khi nó dẫn đến cấu trúc phức

tạp .
- Các toán tử tái lập lại bậc : Không giống như toán tử từ trước chỉ tìm kiếm trên
tập allele tốt ,các toán tử này còn tìm kiếm trên những cách mã hóa cũng như
tập các giá trị allele tốt hơn .Những toán tử này thích hợp cho bài toán mà giá trị
fitness phụ thuộc vào sự sắp xếp chuỗi ,chẵn hạn như trị fitness phụ thuộc vào
tổ hợp của các giá trị allele v và bậc o , f = f(v,o) ,một chuỗi kết hợp các giá trị
allele và các thônh tin có thể biểu diễn như sau :
12345678
10010001
Trong đó 1,2 … 8 biểu diễn vị trí gen hay tên gen .Thông thường các toán tử tái lập lại bậc
là toán tử đảo chiều .Với toán tử này ,người ta chọn hai điểm trên chiều dài chuỗi ,sau đó ta
tiến hành cắt lại điểm này ,và những điểm cuối của phần cắt sẽ hoán chỗ cho nhau . Ví dụ ,hai
chuỗi có 8 bit sẽ hoán đổi như sau :
1 2 | 3 4 5 6 | 7 8
0 1 | 1 1 1 0 | 1 0
Sau khi hoán đổi ta có :
1 2 6 5 4 3 7 8
0 1 0 1 1 1 1 0
3/ Giải thuật lai gen :
Giải thuật lai gen đơn giản ,mặc dù mạnh mẻ ,nhưng nói chung không phải
lúc nào giải thuật cũng đạt tối ưu hoá .Ghép chéo hoá một GA với GA hiện có có
thể sinh ra một giải thuật tốt hơn cả GA và giải thuật hiện tại .Vì vậy , đối với các
bài toán tối ưu hoá , khi có nhiều giải thuật tối ưu hoá một cách có hiệu quả ,thì có
thể sử dụng nó cho vấn đề tối ưu .Một GA có thể ghép chéo vơí nhiều kỹ thuật tìm
kiếm khác nhau ,để taọ ra một dạng ghép chéo mà khai thác được việc tìm kiếm
toàn cục và cả tìm kiếm cục bộ.
Có rất nhiều kỹ thuật đạo hàm và không đạo hàm có sẵn cho việc tìm kiếm
tối ưu hóa cục bộ trong các hàm tính toán quaen thuộc .Mặc dù không có những
hàm tính toán quen thuộc ,vẫn luôn luôn có những sơ đồ tìm kiếm tối ưu cho bài
toán đặc biệt .Trong một số trường hợp ,sự kế thừa ghép chéo đã đưa ra việc biểu

diễn tốt cũng như kỹ thuật tốt trang việc sử dụng .
II-ỨNG DỤNG CỦA GIẢI THUẬT GEN :
1 / Tối ưu hóa đường ống :
David E.Golderg đã ứng dụng GAs để tối ưu hóa bài toán điều khiễn hệ thống
đường ống dãn khí thiên nhiên . Trong bài roán đầu tiên ,ông đã xem xét bài toán của Wong và
Larson ,với hệ thống 10 máy nén khí ,10 ống dẫn khí nối tiếp . Bài toán bị chi phối bởi phương
trình chuyển đổi phi tuyến ,chỉ ra sự sụt áp qua các đường ống và sự tăng áp khi qua máy nén.
Để kiểm tra GAs đơn giản trong các bài toán đường ống khác nhau , tác giả đã mã hoá bài
toán điều khiển nhất thời một đường ống của Wong và Larson .Trong bài toán này, mục tiêu là
cực tiểu hóa năng lượng do quá trình nén ,phụ thuộc vào áp suất tối đa và áp suất tối thiểu và
các ràng buộc tỉ lệ áp suất . Các chi tiết nhất thời mà tác giả đã dùng vượt quá phạm vi nghien
cứu .Điều này đủ để noí rằng các phương trình riêng phần đã đơn giản hoá tính liên tục và động
lượng được chuyển đổi thành các phương trình vi phân thông thường bằng cách dùng các
phương pháp đặc thù .Sau đó ,các phương trình này được giải quyết bằng số trên một mạng
lưới thời gian thông thường bởi thủ tu5c vi phân hữu hạn .Cũng như bài toán trạng thái bền ,các
ràng buộc được đưa vào bài toán bằng phương pháp phạt bên ngoài ,dạng bậc hai.
2 / Tối ưu hoá kết cấu qua GAs :
Tác giả đã áp dụng GAs vào việc tối ưu hóa kết cấu của một khung phẳng gồm 10
thanh.
Mục tiêu của bài toán này là cực tiểu hóa trọng lượng của kết cấu ,Phụ thuộc vào các ràng
buộc về ứng suất lớn nhất và ứng suất nhỏ nhất của mỗi thanh .Trong công trình của tác giả

×