TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP NHÓM MÔN CÁC HỆ CƠ SỞ TRI THỨC
TÊN ĐỀ TÀI
CÁC TOÁN TỬ VÀ KỸ THUẬT NÂNG CAO
TRONG THUẬT GIẢI DI TRUYỀN
GVHD: TS. Lê Hoàng Thái
Nhóm thực hiện:
Nhóm 12 – Ngành Hệ thống Thông tin – Khóa 20
Nguyễn Văn Phúc MSHV: 10 12 030
Phan Thị Thanh Nga MSHV: 10 12 021
Nguyễn Tâm Duy MSHV: 10 12 006
Trương Anh Tuấn MSHV: 10 12 057
Tp. Hồ Chí Minh, tháng 11 năm 2010
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
MỤC LỤC
LỜI MỞ ĐẦU
LỜI MỞ ĐẦU
Trong khoa học máy tính, việc tìm kiếm lời giải tối ưu cho nhiều bài toán với không gian
tìm kiếm lớn được các nhà khoa đọc đặc biệt quan tâm. Việc đòi hỏi các thuật giải hiệu quả
cao và sử dụng trí tuệ nhân tạo là rất cần thiết khi giải quyết các bài toán dạng này. Thuật
giải di truyền là một trong các giải pháp để tìm kiếm lời giải tối ưu đã đáp ứng được yêu cầu
của nhiều bài toán và ứng dụng.
Thuật giải di truyền giải bài toán bằng cách mô phỏng lại và áp dụng các quy luật trong
quá trình tiến hóa của tự nhiên. Phương pháp này không đảm bảo đưa ra lời giải tối ưu mà
chỉ cố gắng tìm kiếm các lời giải tương đối tối ưu.
Thuật giải di truyền được ứng dụng nhiều trong thực tế từ khoa học, kinh doanh đến các
ngành công nghiệp, xây dựng và thậm chí là giải trí. Vì thế, nhóm chọn đề tài này với mong
muốn tìm hiểu sâu hơn về các kỹ thuật mới, tiên tiến đã được phát triển để giải quyết những
bài toán thực tế. Đồng thời, qua báo cáo, các thành viên sẽ củng cố được kiến thức quan
trọng của môn học.
Nội dung tìm hiểu chủ yếu được lấy từ chương 3 (trang 39 – 81) và chương 4 (trang 82 –
105) của cuốn sách Introduction to Genetic Algorithms (ấn bản 2008).
Báo cáo được chia làm ba phần chính. Hai phần đầu giới thiệu một cách tổng quan về
thuật giải di truyền, cách tiếp cận và các vấn đề liên quan cũng như các kỹ thuật cơ bản đã
được áp dụng rộng rãi. Phần tiếp theo sẽ trình bày nội dung chính mà nhóm tìm hiểu. Đó là
các toán tử và kỹ thuật nâng cao được áp dụng trong thuật giải di truyền. Phần cuối của báo
cáo là ứng dụng các kết quả nghiên cứu để giải một số bài toán điển hình. Do mã nguồn khá
dài nên nhóm không thể đưa vào báo cáo mà sẽ ghi vào một đĩa DVD chứa đầy đủ nội dung
của báo cáo.
Qua đây, nhóm chúng em cũng chân thành cảm ơn thầy Lê Hoàng Thái đã tận tình dạy dỗ
và tạo điều kiện cho nhóm hoàn thành đề tài này.
Nhóm thực hiện
Nhóm 12 Trang 2
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
CÁC TOÁN TỬ VÀ KỸ THUẬT NÂNG CAO TRONG THUẬT GIẢI DI TRUYỀN
1 Tổng quan về thuật giải di truyền
Thuật giải di truyền là một kỹ thuật của khoa học máy tính được dùng để tìm kiếm lời
giải cho các bài toán tối ưu tổ hợp hay các bài toán chưa có thuật toán để tìm chính xác lời
giải. Thuật giải di truyền sử dụng ngôn ngữ máy tính để mô phỏng lại quá trình tiến hóa tự
nhiên của một tập các đối tượng trừu tượng (gọi là quần thể). Mỗi đối tượng trừu tượng (gọi
là các nhiễm sắc thể) đại diện cho một giải pháp khả dĩ (gọi là cá thể) của bài toán tối ưu
hóa. Ngoài ra, mỗi giải pháp thường liên quan đến nhiều yếu tố, gọi là các biến. Vì thế, các
nhiễm sắc thể tương ứng cũng gồm nhiều phần tử, mỗi phần tử được gọi là một gen.
Tập các giải pháp này sẽ tiến triển theo hướng chọn lọc những giải pháp tốt hơn. Việc xác
định giải pháp nào tốt hơn được thực hiện bởi một hàm gọi là hàm mục tiêu hoặc hàm thích
nghi. Các giải pháp tốt được kết hợp với nhau với hi vọng sẽ tạo ra các giải pháp tốt hơn.
Quá trình tiến hóa bắt đầu từ một tập các cá thể ngẫu nhiên, và do đó, hầu hết chúng
không phải là các lời giải tốt. Qua từng thế hệ, độ thích nghi của từng cá thể được xác định.
Các cá thể được chọn lọc theo cách có định hướng (chọn cá thể tốt theo độ thích nghi) từ tập
hiện thời. Sau đó, các cá thể này được biến đổi bằng cách lai ghép hay đột biến để tạo ra các
cá thể mới. Việc này được thực hiện lặp đi lặp lại qua các thế hệ tiếp theo và cuối cùng, giải
thuật cho ra lời giải tối ưu hoặc gần tối ưu.
Một thuật giải di truyền có thể chia ra làm 5 bước, được mô tả qua thủ tục sau:
procedure GeneticAlgorithms
begin
T = 0; // Thế hệ thứ T
Khởi tạo quần thể P(T);
Đánh giá độ thích nghi cho các cá thể trong P(T);
while (not Điều_Kiện_Kết_Thúc) do
begin
T = T + 1;
Chọn lọc P(T) từ P(T-1);
Kết hợp các cá thể (bằng lai ghép & đột biến) trong P(T);
Đánh giá độ thích nghi cho các cá thể trong P(T);
end
end
Các toán tử và kỹ thuật được áp dụng trong thủ tục trên sẽ được mô tả chi tiết hơn trong các
phần tiếp theo.
Nhóm 12 Trang 3
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
2 Các thao tác cơ bản
Để giải một bài toán tối ưu bằng cách áp dụng thuật giải di truyền, ta thường phải giải
quyết 5 vấn đề:
• Biểu diễn di truyền hay chọn cách mã hóa các lời giải của bài toán
• Phát sinh quần thể ban đầu P(0).
• Chọn hàm đánh giá để xác định mức độ thích nghi của lời giải
• Áp dụng các toán tử di truyền (lai ghép, đột biến) để tạo ra các cá thể mới
• Xác định các tham số đầu vào của thuật giải. Chẳng hạn như kích thước quần thể, xác
suất lai ghép, xác suất đột biến,…
2.1 Mã hóa
Mã hóa là việc xác định cách thức biểu diễn di truyền đối với lời giải của bài toán. Việc
mã hóa phụ thuộc nhiều vào từng bài toán cụ thể. Một số cách biểu diễn thông dụng:
• Biểu diễn nhị phân: mỗi nhiễm sắc thể là một dãy số nhị phân. Mỗi gen có thể được
mã hóa nhờ một số lượng bit nào đó.
• Biểu diễn theo số tự nhiên: mỗi nhiễm sắc thể là một dãy các số tự nhiên. Phương
pháp này được dùng nhiều trong các bài toán tối ưu tổ hợp hay hoán vị.
• Biểu diễn số dấu chấm động: Mỗi gen trong nhiễm sắc thể được mã hóa bởi một số ở
dạng dấu chấm động. Cách biểu diễn này giải quyết được một số nhược điểm của biểu
diễn nhị phân và biểu diễn được miền giá trị lớn.
• Một số cách khác: Biểu diễn số ở hệ Octal (hay Hexa), biểu diễn bởi chuỗi ký tự, hay
kết hợp các dạng trên.
Cách biểu diễn Nhị phân Số tự nhiên Số thực Cách khác
Nhiễm sắc thể 100011011
010101010
123459876
679218345
5.5 2.3 7.1 4.0
3.1 1.9 2.5 5.6
2314506 (Octal)
ABCDE (Hexa / chuỗi)
Hình 1. Một số cách biểu diễn nhiễm sắc thể
2.2 Phát sinh quần thể ban đầu
Thông thường, việc khởi tạo các cá thể trong quần thể ở thế hệ đầu tiên là phát sinh ngẫu
nhiên và/hoặc có thêm một số ràng buộc (chẳng hạn sinh ra một hoán vị). Do đó, hầu hết
chúng có độ thích nghi thấp hay không phải là lời giải tối ưu. Trong một số trường hợp, việc
phát sinh ngẫu nhiên có thể làm quá trình tiến hóa chậm (chẳng hạn như với bài toán người
du lịch).
Một cách khởi tạo khác cũng hay được áp dụng, đó là sử dụng phương pháp tham lam
(greedy). Tùy vào đặc trưng của từng bài toán cụ thể, ta có thể phát sinh ra các cá thể sao cho
có khả năng gần với lời giải nhất có thể. Ví dụ, với bài toán người du lịch, tại gen thứ k, ta
chọn đỉnh gần nhất với đỉnh trong gen thứ k-1 và chưa được chọn.
2.3 Hàm đánh giá và hàm thích nghi
Trong hầu hết các bài toán áp dụng thuật giải di truyền, ta quy về việc tối ưu cực đại
(hoặc cực tiểu) một hàm một hoặc nhiều biến. Khi đó, độ tốt của cá thể là giá trị hàm tương
Nhóm 12 Trang 4
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
ứng của cá thể đó. Như vậy, nếu chọn một cá thể là nghiệm của bài toán thì cá thể càng tốt
khi giá trị hàm càng gần với giá trị tối ưu (cực đại hoặc cực tiểu) càng tốt. Hàm để đánh giá
độ tốt của cá thể hay lời giải gọi là hàm mục tiêu.
Tuy nhiên, để chọn lọc các cá thể di truyền cho thế hệ tiếp theo, ta cần phải biến đổi hàm
mục tiêu sang hàm thích nghi. Điều này cũng tương tự như trong tự nhiên, các cá thể thích
nghi tốt với môi trường sống sẽ được bảo tồn cho thế hệ kế tiếp.
Độ thích nghi của cá thể được định nghĩa là khả năng cá thể đó được chọn lọc vào thế hệ
sau hoặc được chọn cho việc lai ghép, tạo ra cá thể mới.
Hàm mục tiêu là cơ sở để đánh giá độ thích nghi của các cá thể. Việc ánh xạ từ hàm mục
tiêu sang hàm thích nghi tùy thuộc vào mục đích của bài toán thực tế.
2.4 Các toán tử di truyền
Chọn lọc là quá trình chọn một cách ngẫu nhiên các cặp cá thể trong quần thể để thực
hiện việc lai tạo ra cá thể con cho thế hệ sau. Mục đích của chọn lọc là chú trọng vào các cá
thể có độ thích nghi cao với hi vọng rằng, các con của chúng sẽ có độ thích nghi cao hơn
nữa. Một số cơ chế chọn lọc thường được áp dụng:
• Chọn lọc theo vòng Roulette (Roulette wheel selection)
• Chọn lọc cạnh tranh (Tournament selection)
• Chọn lọc thứ tự (Rank selection)
• Elitism selection
Lai ghép là quá trình lấy hai giải pháp bố - mẹ và sinh ra con của chúng. Sau quá trình
chọn lọc (sinh sản), quần thể được làm giàu bởi các cá thể tốt hơn. Lai ghép tạo ra bản sao
của các cá thể tốt chứ không tạo ra các cá thể mới vì lai ghép chỉ sao chép giá trị gen giữa
cặp cá thể bố - mẹ để tạo ra cá thể con. Toán tử lai ghép được áp dụng vào tổ hợp sinh sản
với hi vọng tạo ra được thế hệ con tốt hơn.
a. Lai ghép đa điểm b. Lai ghép đồng nhất c. Lai ghép thứ tự
Hình 2. Một số kiểu lai ghép
Các kỹ thuật lai ghép thường được áp dụng:
• Lai ghép một điểm (Single-point Crossover)
• Lai ghép đa điểm (Multi-point Crossover)
Nhóm 12 Trang 5
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
• Lai ghép đồng nhất (Uniform Crossover)
• Lai ghép chu trình (CX – Cycle Crossover)
• Lai ghép thứ tự (OX – Ordered Crossover)
• Lai ghép so khớp từng phần (PMX – Partially Matched Crossover)
Đột biến là thay đổi một cách ngẫu nhiên giá trị của một hoặc vài gen trong nhiễm sắc
thể. Nếu lai ghép được xem là khám phá các giải pháp hiện thời để tìm ra các giải pháp tốt
hơn thì đột biến được cho là để giúp thăm dò toàn bộ không gian tìm kiếm. Đột biến được
xem như một toán tử nền tảng để duy trì tính đa dạng di truyền trong quần thể. Đột biến giúp
thoát khỏi cái bẫy của cực tiểu cục bộ và duy trì tính đa dạng trong quần thể.
Có nhiều dạng đột biến khác nhau tùy thuộc vào cách mã hóa hay biểu diễn của nhiễm
sắc thể. Sau đây là một số kỹ thuật đột biến thường dùng:
• Đột biến đảo bit (Flipping): Thay thế giá trị của gen bằng một giá trị khác
• Đột biến đổi chổ (Interchanging): Hoán vị giá trị của hai gen
• Đột biến đảo ngược (Reversing): Đảo ngược một đoạn gen trong nhiễm sắc thể.
Flipping Interchanging Reversing
Parent 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0
Child 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0
Hình 3. Một số dạng đột biến
2.5 Các tham số của thuật giải
Kích thước quần thể (PopSize) là số lượng cá thể trong mỗi thế hệ tiến hóa. Giá trị của nó
phụ thuộc vào sự phức tạp của từng bài toán cụ thể. Kích thước quần thể lớn có thể giúp
khám phá nhanh toàn bộ không gian tìm kiếm. Tuy nhiên, nó yêu cầu chi phí cho việc tính
toán, bộ nhớ và cả thời gian thực thi. Trong thực tế, giá trị này thường được chọn là 100.
Xác suất lai ghép (p
c
) là tham số mô tả mức độ thường xuyên mà phép lai ghép được thực
hiện. Nếu p
c
= 100% thì mọi cá thể con đều được tạo ra từ việc lai ghép. Điều này đôi khi là
không tốt vì chúng ta muốn lưu giữ một phần của quần thể trước nhằm duy trì tính đa dạng
của quần thể. Nếu p
c
= 0% thì thế hệ sau chỉ là bản sao y nguyên của thế hệ trước, có nghĩa
là không có sự tiến hóa. Số lượng cá thể tham gia vào quá trình lai ghép là: p
c
* PopSize.
Xác suất đột biến (p
m
) là tham số quyết định mức độ thường xuyên mà các phần tử của
nhiễm sắc thể bị đột biến. Đột biến ngăn thuật giải di truyền rơi vào cực trị cục bộ. Giá trị
này càng lớn thì càng nhiều cá thể bị biến đổi làm mất tính ổn định của quần thể. Số lượng
gen bị đột biến trong toàn bộ quần thể sẽ là: p
m
* PopSize * kích thước nhiễm sắc thể.
3 Các toán tử và kỹ thuật di truyền nâng cao
Phần trên hệ thống lại một cách khái quát các khái niệm và một số kỹ thuật di truyền cơ
bản: sinh sản, lai ghép và đột biến. Chúng hoạt động tốt trong nhiều bài toán thực tế. Tuy
nhiên, để cải thiện sức mạnh của thuật giải di truyền, chúng ta cần có các kỹ thuật và toán tử
phức tạp hơn để biểu diễn được hầu hết các kiểu hình tự nhiên.
Nhóm 12 Trang 6
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Trong phần này, chúng tôi trình bày một số kỹ thuật biểu diễn mức thấp như thể trội, thể
lưỡng bội và các toán tử đảo, sao chép, xóa bỏ, chia tách. Các toán tử cấp cao như sự thích
nghi môi trường sống (niche), sự hình thành loài (speciation) và các kỹ thuật tối ưu nhiều
mục tiêu cũng được khảo sát chi tiết. Đây cũng chính là phần chính của báo cáo.
3.1 Thể lưỡng bội (Diploidy), thể trội (Dominicance) và thể khuyết (Abeyance)
Trong các phần trên, chúng ta chỉ xem xét các kiểu hình đơn giản nhất tồn tại trong tự
nhiên, đó là nhiễm sắc thể đơn bội. Một nhiễm sắc thể đơn bội chỉ chứa một tập các gen
nghĩa là một alen chiếm giữ một vị trí. Tự nhiên chứa đựng nhiều tổ chức đơn bội, nhưng
hầu hết chúng có dạng sống không phức tạp.
Khi tự nhiên muốn kiến tạo(xây dựng) một dạng sống phức tạp hơn hay dạng sống động
vật, một cấu trúc nhiễm sắc thể phức tạp hơn là cần thiết, đó là nhiễm sắc thể lưỡng bội hoặc
nhiễm sắc thể kép. Ở dạng lưỡng bội, một kiểu gen chứa một hoặc nhiều cặp nhiễm sắc thể,
mỗi cặp chứa thông tin cho cùng một chức năng.
Xét cấu trúc nhiễm sắc thể lưỡng bội sau, với các kí tự khác nhau đại diện cho các alen
khác nhau (giá trị chức năng gen khác nhau):
P q r s t
P Q R S t
Alen đại diện cho thuộc tính của một gen cụ thể. Mỗi vị trí của một kí tự đại diện cho một
alen. Các kí tự viết hoa và viết thường được đưa ra ở trên đại diện cho các alen thay thế
(alternative) tại mỗi vị trí. Trước tiên, trong tự nhiên mỗi alen biểu thị các thuộc tính kiểu
hình khác nhau. Chẳng hạn, Q có thể biểu diễn cho gen tóc xám và q có thể là gen tóc đen.
Như vậy, một cặp (Q, q) mô tả một chức năng, vì thế, cần phải có cách để quyết định xem
giá trị nào được chọn bởi vì chẳng hạn, kiểu hình không thể cùng lúc tóc xám và tóc đen.
Một cách tiếp cận để loại bỏ xung đột dư thừa này là thông qua một cơ chế gọi là gen
trội. Tại một vị trí, một alen (gọi là gen trội) sẽ được ưu tiên hơn một alen thay thế khác (gọi
là gen lặn). Có thể nói rằng, một alen là trội nếu nó được biểu hiện khi đi cặp với một vài
alen khác. Biểu hiện nghĩa là nó xuất hiện trong các kiểu hình.
Trong ví dụ trên, nếu giả sử tất cả các kí tự hoa là trội và tất cả các kí tự thường là lặn thì
kiểu hình được biểu thị của nhiễm sắc thể ví dụ trên sẽ là:
P q r S t
→ P Q R S t (gen được biểu hiện lên kiểu hình)
p Q R S t
Gen trội luôn luôn được biểu hiện và gen lặn chỉ biểu hiện khi nó đi cặp với cùng một
gen lặn. Gen trội được biểu thị trong các phần tử dị hợp (Pp P) hoặc đồng hợp (SS S)
và gen lặn được biểu thị chỉ khi là đồng hợp lặn (tt t).
Do đó trội là một toán tử di truyền được sử dụng để tính toán kiểu hình các giá trị alen có
thể tại một vị trí gen.
Nhiễm sắc thể lưỡng bội cung cấp sự thuận lợi cho các cá thể khi môi trường thay đổi
qua một khoảng thời gian. Việc có 2 gene cho phép hai giải pháp khác nhau được nhớ (ghi
Nhóm 12 Trang 7
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
lại) và chuyển qua cho con cháu. Một trong những gen này là trội (nghĩa là nó sẽ biểu hiện
lên kiểu hình), trong khi những gen khác là lặn.
Nếu điều kiện môi trường thay đổi, sự trội có thể hoán chuyển, do đó một gen khác sẽ là
trội. Sự hoán chuyển này có thể xảy ra nhanh hơn mức có thể nếu cơ chế tiến hóa phải thay
đổi gen. Cơ chế này là lý tưởng nếu môi trường chuyển giữa hai trạng thái (chẳng hạn kỷ
băng hà và không phải kỷ băng hà). Thuận lợi chính của lưỡng bội là nó cho phép sự đa dạng
rộng lớn hơn của các alen được giữ lại trong quần thể so với đơn bội. Hiện tại thì có hại
nhưng tiềm năng là các alen hữu dụng có thể vẫn được duy trì, nhưng ở trạng thái lặn.
Trong thuật giải di truyền, lưỡng bội có thể hữu ích trong các ứng dụng trực tuyến, các hệ
thống có thể chuyển giữa các trạng thái khác nhau. Lưỡng bội chiếm một vị trí quan trọng
trong thuật giải di truyền. Ngoài việc mang hai lần thông tin di truyền, nhiễm sắc thể phải
mang thông tin trội.
3.2 Thể đa bội (Multiploid)
Một thuật giải di truyền đa bội kết hợp một vài ứng viên (candidates) cho mỗi gen trong
một kiểu gen duy nhất, và sử dụng một vài cơ chế dạng trội để quyết định gen nào sẽ được
kích hoạt trong kiểu hình.
Trong tự nhiên, chúng ta tìm thấy nhiều tổ hợp có kiểu gen đa bội, các tổ hợp này chứa
nhiều bộ nhiễm sắc thể với một số cơ chế để xác định gen nào được biểu hiện, nghĩa là trội
tại một vị trí gen nào đó. Cơ chế này chủ yếu là nâng cao tính đa dạng của quần thể, các gen
hiện tại chưa được sử dụng vẫn còn là loại gen đa bội, chưa được biểu hiện, nhưng được bảo
vệ khỏi sự tuyệt chủng cho đến khi chúng trở nên hữu ích trong các thế hệ sau.
Một kiểu gen đa bội, thể hiện trong hình 4.a, một nhiễm sắc thể có p=3 thành phần, mỗi
thành phần có chiều dài L và tương tự như một nhiễm sắc thể đơn bội. Để xác định gen nào
được biểu hiện lên kiểu hình, ta dùng một mặt nạ, chỉ ra gen của thành phần nào trong p
thành phần là trội tại một vị trí cụ thể trong nhiễm sắc thể. Thông tin này được giải mã thành
kiểu hình như sau:
Hình 4.a. Đa bội loại 1 (multiploid type 1)
Nhóm 12 Trang 8
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Hình 4.b. Đa bội loại 2 (multiploid type 2)
Một giá trị alen a tại điểm i trong mặt nạ biểu thị rằng gen thứ i trong thành phần ứng với
chỉ số a trở thành gen thứ i trong kiểu hình. Chiều dài của mặt nạ có thể ngắn hơn chiều dài
của nhiễm sắc thể, như hình 4.b.
Trong hình 4.b, nếu chiều dài của mặt nạ là m và nhiễm sắc thể có chiều dài L, một gen
tại vị trí “i” trong mặt nạ với giá trị là “a” chỉ ra rằng tập L/m gen liên tục thứ i trong thành
phần thứ a của nhiễm sắc thể là trội.
3.3 Một số toán tử vi mô tái thiết lập thứ tự
3.3.1 Toán tử đảo (inversion)
Đảo là toán tử một ngôi, một trong các toán tử di truyền thực hiện việc tái sắp xếp thứ tự.
Toán tử đảo ngược là cơ chế tự nhiên chủ yếu để tái mã hóa một vấn đề. Trong toán tử đảo
ngược, hai điểm đánh dấu và chiều dài của nhiễm sắc thể được cho trước, đoạn nhiễm sắc thể
giữa hai điểm đánh dấu bị cắt và đảo ngược. Để rõ ràng hơn, ta xét hai nhiễm sắc thể có
chiều dài 8, hai điểm đánh dấu được chọn ngẫu nhiên (là 2 và 6) như sau:
Sử dụng toán tử đảo, ta có kết quả:
Toán tử đảo có thể sử dụng như một toán tử đột biến. Nó có một số biến thể sau:
• Đảo tuyến tính
• Đảo tuyến tính + cuối
• Đảo liên tục
• Đảo khối
Đảo tuyến tính là phép đảo như đã thấy ở ví dụ trên. Đảo tuyến tính+ cuối là đảo tuyến
tính với xác suất được chỉ ra là 0.75. Khi đảo tuyến tính không được thực hiện, đảo cuối có
thể được thực hiện với xác suất 0.125 tại đầu trái hoặc đầu phải của chuỗi. Đảo tuyến tính +
cuối khác đảo tuyến tính ở việc phá vỡ các alen gần trung tâm của chuỗi và các alen nằm ở
cuối chuỗi một cách không cân đối. Trong chế độ đảo liên tục, phép đảo được áp dụng với
một xác suất đảo cụ thể P
i
, đối với mỗi cá thể mới khi nó được tạo. Trong chế độ đảo khối
một nửa quần thể mới được tạo được trải qua việc đảo đồng nhất.
3.3.2 Chia tách và dịch chuyển
Xét quá trình hình thành giao tử khi có nhiều hơn một cặp nhiễm sắc thể trong kiểu gen.
Khi nó hình thành một giao tử, ta chọn ngẫu nhiên một trong mỗi nhiễm sắc thể đơn bội. Quá
trình chọn lọc ngẫu nhiên này được gọi là sự chia tách – phá vỡ mọi liên kết tồn tại giữa các
gen trên các nhiễm sắc thể khác nhau. Nó cho thấy rằng, sự chia tách khai thác cách tổ chức
phù hợp của các nhiễm sắc thể và quan trọng là chú ý vào cách mà nhiễm sắc thể được tổ
Nhóm 12 Trang 9
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
chức theo một cách thích hợp. Toán tử dịch chuyển được sử dụng cho mục đích này. Toán tử
dịch chuyển có thể được xem như một toán tử lai ghép liên nhiễm sắc thể. Toán tử này được
thực thi bằng cách nối các alen với tên các gen của chúng, để có thể xác định ý nghĩa của
chúng khi chúng được xáo trộn từ nhiễm sắc thể này sang nhiễm sắc thể khác bởi toán tử
dịch chuyển.
3.3.3 Nhân bản và xóa
Có một cặp toán tử mức thấp khác thực hiện việc tìm kiếm theo thuật giải di truyền. Sự
sao chép trong nội bộ nhiễm sắc thể thực hiện bằng cách nhân bản một gen nào đó và đặt nó
cùng với tổ tiên của nó lên nhiễm sắc thể. Việc xóa bằng cách loại bỏ một gen trùng khỏi
nhiễm sắc thể. Tỷ lệ đột biến có thể được điều khiển một cách hiệu quả bởi các toán tử này.
Khi tỷ lệ đột biến không đổi và nhân bản trong nhiễm sắc thể tạo ra k bản sao của một gen
nào đó thì xác suất đột biến hiệu quả cho gen này được nhân với k. Mặt khác, khi việc xóa
xảy ra, tỷ lệ đột biến hiệu quả cũng giảm.
3.3.4 Xác định giới tính (Sexual Determination)
Ban đầu, trong sơ đồ kết cặp, ta được phép kết cặp bất kỳ hai cá thể nào và kết quả di
truyền tạo ra được chia sao cho chúng bảo đảm một kiểu gen có khả năng sống được (viable
genotype). Xác định giới tính được xử lý khác nhau trong các loài khác nhau. Tuy nhiên, chỉ
cần xét ví dụ trên con người là đủ để hiểu về sự xác định giới tính. Giới tính được xác định
trong một người bởi một trong 23 cặp nhiễm sắc thể của người. Nữ có hai nhiễm sắc thể đều
là X và nam có hai nhiễm sắc thể khác nhau là X và Y. Trong quá trình hình thành giao tử
(gametogenesis process), nam giới hình thành tinh trùng (mang nhiễm sắc thể X hoặc Y) và
nữ giới sở hữu trứng (mang nhiễm sắc thể X).
Lúc thụ tinh, nhiễm sắc thể X sinh bởi người nữ được kết hợp với nhiễm sắc thể X hoặc
Y sinh ra bởi người nam. Vì thế, phương pháp xác định giới tính trên người rất đơn giản.
Chiến lược tương tự cũng được áp dụng để xác định giới tính trong tìm kiếm theo thuật giải
di truyền. Sự thiết lập giới tính khác nhau chia một loài thành 2 hay nhiều nhóm một cách có
hiệu quả. Điều này cho phép chuyên biệt hóa nam và nữ, do đó, kèm theo một loạt các hành
vi cần thiết cho sự sống một cách rộng rãi hơn với một quần thể cạnh tranh duy nhất. Các
nghiên cứu theo sự xác định giới tính và sự khác nhau về tìm kiếm thuật giải di truyền nhân
tạo vẫn còn đang tiếp diễn.
Khi tổ hợp các toán tử lai và toán tử đảo, ta thiết lập được một số phép lai có thể tái thiết
lập trật tự các gen. Ba phép lai theo dạng này được sử dụng nhiều trong các bài toán thực tế
là: lai so khớp từng phần (PMX), lai thứ tự (OX) và lai chu trình (CX).
3.3.5 Phép lai so khớp từng phần (Partially Matched Crossover – PMX)
Trong lai so khớp từng phần, hai chuỗi được sắp hàng, và hai điểm lai được chọn ngẫu
nhiên giống nhau dọc theo chiều dài của chuỗi. Hai điểm lai cho một chọn lọc khớp được
dùng để tác động thông qua toán tử trao đổi vị trí – vị trí.
Xét 2 nhiễm sắc thể:
Nhóm 12 Trang 10
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Hai điểm lai được chọn ngẫu nhiên, quá trình lai PMX thực hiện thay đổi vị trí. Giữa các
điểm lai, các gen được hoán đổi, nghĩa là gen 3 và 2, gen 6 và 7, gen 5 và 9 thay đổi vị trí.
Đây là ánh xạ từ mẹ B qua bố A. Bây giờ ánh xạ từ bố A qua mẹ B, gen 7 và 6, gen 9 và 5,
gen 2 và 3 thay đổi vị trí cho nhau. Do đó sau khi thực hiện PMX, con cháu sinh ra là:
Mỗi con cháu chứa thông tin có thứ tự một cách từng phần được quyết định bởi cha mẹ
của chúng. PMX có thể được áp dụng cho các bài toán biểu diễn hoán vị.
3.3.6 Lai ghép thứ tự (Ordered crossover – OX)
Lai OX bắt đầu theo cách tương tự như PMX. Nhưng thay vì sử dụng trao đổi điểm –
điểm như PMX, lai OX áp dụng chuyển động trượt để lấp đầy các vị trí trống bên trái bằng
cách chuyển các vị trí ánh xạ.
Xét cặp nhiễm sắc thể cha mẹ sau:
Khi ánh xạ từ mẹ B sang bố A, vị trí 3,6, và 5 trống
Những lỗ trống này bây giờ được lấp bằng một chuyển động trượt bắt đầu với điểm lai thứ
hai
Những lỗ trống này sau đó được lấp bằng phiên so khớp lấy từ bố A. Do đó, qua việc
thực hiện hành động này, con cháu được sinh ra bằng lai OX như sau:
Từ ví dụ trên, chúng ta có thể thấy rằng PMX hướng tới khía cạnh vị trí tuyệt đối trong
khi OX hướng tới khía cạnh vị trí tương đối.
3.3.7 Lai chu trình (Cycle crossover - CX)
Lai CX thực hiện tổ hợp lại dưới các ràng buộc mà mỗi gen xuất phát từ cha hoặc mẹ.
Mỗi cá thể con được tạo dựa trên vị trí, giá trị của cha mẹ thứ nhất và cha mẹ thứ hai.
Xét cặp nhiễm sắc thể bố mẹ sau:
Nhóm 12 Trang 11
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Parent A: 1 2 3 4 5 6 7 8 9
Parent B: 4 1 2 8 7 6 9 3 5
Ta sẽ tạo ra nhiễm sắc thể con A bằng cách lấy phần tử đầu tiên trong Parent A.
Child A: 1 - - - - - - - -
Tiếp tục xác định giá trị các gen tiếp theo cho Child A bằng cách so khớp với giá trị gen tại
Parent B. Chẳng hạn, gen thứ nhất của Parent B có giá trị là 4, giá trị này nằm tại vị trí 4
trong Parent A nên Child A sẽ là:
Child A: 1 - - 4 - - - - -
Tương tự, gen tại vị trí thứ 4 của Parent B có giá là 8, giá trị này nằm tại vị trí 8 trong Parent
A nên Child A sẽ là:
Child A: 1 - - 4 - - - 8 -
Tiếp tục thực hiện theo cách này, cho đến khi hoàn thành 1 chu trình, tức là quay trở lại một
gen đã chọn.
Child A: 1 - 3 4 - - - 8 -
Child A: 1 2 3 4 - - - 8 -
Sau đó, các giá trị còn lại được lấy từ Parent B, ta được Child A như sau
Child A: 1 2 3 4 7 6 9 8 5
Thực hiện tương tự các bước trên để tạo con B, ta được:
Child B: 4 1 2 8 5 6 7 3 9
3.4 Vùng thích nghi (Niche) và sự hình thành loài (Speciation)
Vấn đề muôn thuở của thuật toán di truyền là hội tụ sớm. Nghĩa là, một kiểu gen không
tối ưu kiểm soát quần thể kết quả trong đó mỗi cá thể hoặc giống hệt nhau hoặc rất giống
nhau. Hậu quả là quần thể sẽ không đủ đa dạng cho sự tiến hóa xa hơn.
Nếu đơn giản chỉ tăng kích thước quần thể sẽ không đủ để tránh vấn đề trên, vì bất cứ sự
gia tăng quần thể nào sẽ phải chịu chi phí gấp đôi và cần nhiều thế hệ hơn nữa để bài toán
hướng đến giải pháp tối ưu.
Như vậy, thuật giải di truyền đối mặt với một vấn đề khó khăn. Đó là làm thế nào để quần
thể có thể hội tụ về một giải pháp mà vẫn duy trì tính đa dạng. Những toán tử di truyền gây
ra hội tụ - như phép lai hay sinh sản - phải được thay đổi bằng cách nào đó.
Một hạn chế khác đối với thuật giải di truyền đó là thời gian tham gia vào việc dẫn xuất
ra một giải pháp. Nó không giống như những phương pháp khác như là mạng neural, tìm
kiếm leo đồi, các phương pháp dựa trên luật v.v , thuật giải di truyền nặng về mặt ngẫu
nhiên và không đảm bảo sẽ hướng đến kết quả trong một thời gian xác định. Việc xảy ra một
tỉ lệ lớn những lần chạy mà không tìm ra giải pháp tối ưu là bình thường đối với thuật giải di
truyền.
Nhóm 12 Trang 12
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Để giải quyết vấn đề này, người ta đề xuất hai khái niệm, đó là vùng thích nghi và loài.
Trong nhiều bài toán thực tế, hai khái niệm này giải quyết đáng kể các khó khăn đã được nêu
ở trên.
3.4.1 Vùng thích nghi và sự hình thành loài trong các bài toán đa phương thức
Giả sử hàm thích nghi là đa phương thức (multimodal), nghĩa là hàm có nhiều đỉnh cực
trị. Khi đó, thuật giải di truyền sẽ có xu hướng hội tụ đến một trong các đỉnh, đặt biệt là nếu
một trong các đỉnh tối ưu hơn so với những đỉnh còn lại.
Hình 5. Đồ thị của một hàm đa phương thức
Tuy nhiên, người ta thường muốn xác định sự hội tụ các đỉnh cùng lúc. Một vùng thích
nghi (niche) có thể được xem như là một trong các đỉnh và một loài là tập hợp các thành viên
của quần thể phù hợp nhất với vùng thích nghi đó hay tập các cá thể tương đồng hội tụ cùng
nhau tại đỉnh đó. Khi đó, chúng ta muốn thuật giải di truyền tạo ra một quần thể con ổn định
(loài) phù hợp với các vùng thích nghi
Đối với dạng bài toán này, thuật giải di truyền thường gặp hai vấn đề. Đầu tiên là sự phân
phối các cá thể không đồng đều trên các đỉnh của không gian giải pháp. Thứ hai đặt ra là bố
mẹ của những loài khác nhau - nghĩa là, từ những môi trường thích nghi khác nhau - có xu
hướng sản sinh cá thể con không tồn tại được. Và như vậy, các bố mẹ từ các vùng thích nghi
khác nhau không được khuyến khích cặp đôi. Hai kỹ thuật sau có thể được dùng để giải
quyết các khó khăn trên.
Hình 6. Việc kết cặp bố mẹ ở 2 vùng thích nghi khác nhau có thể dẫn đến việc tạo ra một con
không tồn tại được (gọi là cá thể chết).
Nhóm 12 Trang 13
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Lấn áp (Crowding)
Vấn đề đầu tiên - ngăn chặn 1 kiểu gen duy nhất chiếm cả quần thể - được giải quyết
bằng cách đảm bảo rằng 1 cá thể mới sẽ thay thế một trong nhữg kiểu gen tương đồng của
nó. Crowding cố gắng duy trì quần thể cân bằng. Cơ chế cho sự thay thế này khá là đơn giản:
chọn ngẫu nhiên CF cá thể và thông qua tính toán khoảng cách hamming, quyết định cá thể
thay thế thích hợp.
Ưu điểm của Crowding là đánh giá được các cá thể khi lựa chọn nạn nhân thay thế, CF
thường là 2 hoặc 3. Việc thay thế các cá thể tương đồng đóng vai trò ngăn chặn lại một kiểu
gen chiếm lĩnh toàn bộ quần thể, mặt khác, cho phép các vùng ít thích nghi có thể hình thành
bên trong quần thể chính
Crowding không tạo ra các vùng thích nghi một cách rõ ràng, cũng không cố gắng
khuyến khích chúng mà chỉ cho phép chúng hình thành.
Sharing
Một cách tiếp cận khác được thông qua trong sơ đồ Sharing, trong đó cá thể bên trong
quần thể sử dụng việc chia sẻ các tài nguyên hạn chế, vì chúng cố gắng thích nghi.
Theo cách tương tự như Crowding, sự chiếm lĩnh của quần thể bởi kiểu gen duy nhất
không được khuyến khích bằng cách thay thế các cá thể tương đồng nhau trong phần đông
quần thể. Tuy nhiên Sharing không đơn giản là tính toán như Crowding. Và một vấn đề rất
cụ thể phải biết trước là có bao nhiêu đỉnh trong không gian giải pháp.
Sharing khuyến khích sự hình thành các vùng thích nghi và ngăn chặn viễn cảnh không
tốt của những cá thể từ những vùng thích nghi khác nhau kết cặp để tạo ra cá thể con bằng
cách sử dụng hình thức giao phối giới hạn.
Xác định hàm Sharing dựa trên sự tương đồng
Hoặc dựa trên tương đồng kiểu hình (giá trị được mã hóa) thay vì kiểu gen
Hai nhiễm sắc càng tương đồng, chúng càng phải chia sẻ giá trị thích nghi. Mỗi nhiễm sắc
thể x có một hệ số tính toán cho nó
Share factor (x) = Sum over y in population share (similarity (x,y))
Giá trị thích nghi của nhiễm sắc thể sẽ được tính lại bằng cách chia giá trị thích nghi ban đầu
cho hệ số chia sẻ của nó
New fitness (x) = fitness (x)/share factor (x).
Nhóm 12 Trang 14
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Sharing được xem là hiệu quả hơn trong nhóm hàm đa phương thức (multimodal). Mặt
khác, Sharing tích cực phát triển nên vùng thích nghi mới, do đó phân phối các cá thể qua tất
cả các đỉnh trong không gian. Crowding đơn giản hơn Sharing, cả trong tính toán và thực
hiện.
3.4.2 Vùng thích nghi và sự hình thành loài trong bài toán đơn phương thức
Phương pháp tiếp cận bài toán đơn phương thức (Unimodal) liên quan đến vùng thích
nghi cố gắng duy trì một quần thể cân bằng, hoặc thông qua giới hạn việc sinh sản để ngăn
chặn sự kết hợp các cặp bố mẹ không tương thích hoặc thông qua các phương pháp thay thế
làm cản trở việc chiếm lĩnh một quần thể bởi một kiểu gen duy nhất.
Một số phương pháp không sử dụng vùng thích nghi hoàn toàn mà bắt chước hoạt động
của nó ở một mức độ nào đó. Có nhiều phương pháp thay thế bảo đảm rằng các cá thể mới
sinh ra đủ khác so với phần còn lại của quần thể trước khi cho phép chúng gia nhập quần thể,
chẳng hạn như thuật giải di truyền Clone Prevention, Steady State (SSGA). Cũng có một số
sơ đồ chọn lọc đặc biệt hoạt động theo cách tương tự như sinh sản có giới hạn được mô tả
trên đây, trong đó, cha mẹ được phép thực hiện sự kết đôi chỉ khi chúng thỏa một tiêu chí
nhất định. Sinh sản có giới hạn cho phép sự tiến hóa của các vùng thích nghi khác nhau. Do
đó, cho phép mỗi vùng thích nghi phát huy một số ảnh hưởng lên quá trình tiến hóa.
Clone prevention và SSGA hoạt động tương tự như Crowding, trong đó, trước khi một cá
thể được phép nhập vào quần thể, nó được so sánh với các cá thể khác để xác minh tính duy
nhất của nó. Trong khi mỗi lần, Crowding chỉ xem xét một vài cá thể, các phương pháp mới
này bảo đảm tính duy nhất bằng cách so sánh cá thể mới với mọi cá thể khác trong quần thể.
Giống như Crowding, chúng không cố gắng tạo các vùng thích nghi hay loài (species) rõ
ràng mà cố ngăn chặn sự chi phối lên quần thể bởi một hình thái duy nhất.
Không may, cả hai phương pháp này có chi phí cao vì việc so sánh các cá thể là việc khá
tốn kém.
Ngăn chặn sự loạn luân (Incest prevention)
Incest prevention cố mai mối (matchmake) cặp bố mẹ với ý định các con của chúng sẽ
lấy các gen tốt nhất từ bố mẹ chúng. Đó là kết hợp các bố mẹ khác nhau sao cho tính đa dạng
được giữ trong quần thể và vì vậy cho phép tiếp tục tiến hóa.
Khi một quần thể tiến hóa, các cá thể càng trở nên tương tự nhau hơn và vì vậy, khó mà
tìm được cặp bố mẹ phù hợp hơn. Để tránh tình huống không có cặp bố mẹ như vậy trong
quần thể, cần một tập ngưỡng khác – có thể nới lỏng nếu có sự khó khăn trong việc chọn bố
mẹ.
Hình 7. Đồ thị của một hàm đơn phương thức
Nhóm 12 Trang 15
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Mã giả cho thuật toán chọn cặp bố mẹ
SET THRESHOLD
REPEAT
FOR EACH INDIVIDUAL DO
TEST INDIVIDUAL
ENTER PARENT POPULATION
IF NO-NEW-PARENTS THEN
LOWER THRESHOLD
FOR EACH INDIVIDUAL DO
REPEAT
SELECT PARENTS
UNTIL DIFFERENT ( )
UNTIL END-CRITERION REACHED OR THRESHOLD=0
Ngay sau khi một cá thể được kiểm tra, nó cố gắng gia nhập vào quần thể bố mẹ như
được mô tả ở trên, bước này chỉ thành công nếu cá thể thích nghi hơn so với thành viên ít
thích nghi nhất trong quần thể bố mẹ. Sau khi mọi cá thể mới được kiểm tra, một kiểm tra để
xem liệu quần thể bố mẹ có bị thay đổi. Một quần thể không bị thay đổi sẽ dẫn đến một
ngưỡng khác (bằng cách giảm ngưỡng cũ).
Hàm DIFFERENT() đơn giản tính toán khoảng cách giữa các cặp bố mẹ và bảo đảm
rằng, nếu chúng là hạt giống sinh sản thì độ khác nhau sẽ trên ngưỡng.
Thuật toán Pygmy
Mặc dù incest prevention tránh được chi phí cho clone prevention, vẫn còn chi phí cho
việc tìm các cặp thỏa mãn mỗi khi giao phối (kết cặp). Để giảm chi phí càng nhiều càng tốt
như các phương pháp khác, thuật toán Pygmy được đề xuất – không tính rõ độ khác nhau
giữa cặp bố mẹ mà chỉ cho thấy rằng các cặp bố mẹ mà nó chọn là khác nhau.
Thuật toán Pygmy thường được dùng trong các bài toán với hai hay nhiều yêu cầu, chẳng
hạn: sự phát triển của các giải pháp cần phải đạt cả hai tiêu chí là hiệu quả và nhanh. Các
vùng thích nghi được dùng bởi hai hàm thích nghi riêng biệt, vì thế, tạo ra hai hình thái
(loài). Các cá thể từ mỗi loài sau đó được coi như có các giới tính khác biệt và khi cặp bố mẹ
được chọn cho việc tạo một cá thể mới, chúng được rút ra từ mỗi loài với ý định là mỗi bố
mẹ phát huy áp lực từ hàm thích nghi của mình.
Thông thường, có một hàm thích nghi chính cho biết tính hiệu quả và một cho yêu cầu
thứ cấp. Các cá thể hiệu quả cao sẽ gia nhập vùng thích nghi đầu tiên, các cá thể không thích
hợp với vùng thích nghi này trải qua một kiểm tra độ thích nghi thứ hai – đơn giản là hàm
thích nghi ban đầu được sửa đổi để bao gồm các yêu cầu phụ. Các cá thể này sau đó cố gắng
gia nhập vào vùng thích nghi thứ hai và nếu không hoàn thành việc này, các cá thể có liên
quan sẽ bị chết sớm.
Nhóm 12 Trang 16
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Việc sử dụng 2 vùng thích nghi duy trì một quần thể cân bằng và bảo đảm rằng các cá thể
phù hợp với các yêu cầu sẽ được sinh ra. Sau đây là mã giả của thuật toán Pygmy.
REPEAT
FOR EACH INDIVIDUAL DO
TEST INDIVIDUALWITH MAIN FITNESS FUNCTION
ENTER PARENT POPULATION #1
IF UNSUCCESSFUL
TEST INDIVIDUALWITH SECONDARY FITNESS FUNCTION
ENTER PARENT POPULATION #2
FOR EACH INDIVIDUAL DO
SELECT PARENT FROM POPULATION #1
SELECT PARENT FROM POPULATION #2
CREATE NEW INDIVIDUAL
UNTIL END-CRITERION REACHED
Mỗi vùng thích nghi được thực hiện nhằm duy trì các cá thể trong một không gian giải
pháp. Dĩ nhiên, cũng có khả năng một con nào đó thừa hưởng những đặc điểm tồi tệ nhất của
bố mẹ chúng. Những đứa con này sẽ được bỏ qua bởi thuật toán Pygmy nhưng bố mẹ chúng
vẫn tồn tại được – vì chúng có khả năng sinh ra các con tốt nên được duy trì.
Hạn chế kết cặp (Restricted Mating)
Mục đích của hạn chế việc kết cặp là khuyến khích sự hình thành loài và giảm khả năng
sinh sản chết (the production of lethals). Một cá thể chết (lethal) là một con của cặp bố mẹ từ
hai vùng thích nghi khác nhau. Mặc dù mỗi bố mẹ đều có độ thích nghi cao nhưng sự kết
hợp các nhiễm sắc thể của chúng có thể không thích hợp nếu nó rơi vào thung lũng giữa hai
đỉnh cực đại như hình 6.
Về mặt lý thuyết, nếu có hai bố mẹ tương tự nhau (nghĩa là từ cùng một niche) được giao
phối thì các con cái sẽ tương tự nhau. Tuy nhiên, điều này phụ thuộc nhiều vào sơ đồ mã hóa
– đặc biệt là sự tồn tại của các khối kiến trúc và tính lấn át gen (epistasis). Theo lẽ thường
của các toán tử lai ghép và đột biến , cặp bố mẹ tương đương về kiểu gen sẽ luôn sinh ra các
con có cùng kiểu gen. Nhưng trong một nhiễm sắc thể có tính lấn át gen cao, không có điều
gì đảm bảo rằng các con này không có độ thích nghi thấp, nghĩa là chúng dễ chết (lethal). Sự
tương tự về kiểu gen không bảo đảm sự tương tự về kiểu hình. Điều này ảnh hưởng tới giới
hạn của việc sử dụng kết cặp có giới hạn.
3.5 Tối ưu hóa đa mục tiêu
Các bài toán tối hóa đa mục tiêu nhận được sự quan tâm của nhiều nhà nghiên cứu từ đầu
những năm 1960. Trong bài toán tối ưu hóa đa mục tiêu, các hàm đa mục tiêu cần được tối
ưu hóa đồng thời. Trong trường hợp nhiều mục tiêu, không nhất thiết phải có giải pháp tối ưu
nhất đối với mọi mục tiêu vì sự khác biệt giữa các mục tiêu. Một giải pháp có thể là tốt nhất
đối với mục tiêu này nhưng lại tệ nhất đối với mục tiêu khác. Do đó, thường tồn tại một tập
hợp các giải pháp cho trường hợp nhiều mục tiêu mà không thể so sánh một cách đơn giản
Nhóm 12 Trang 17
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
với các giải pháp khác. Với các giải pháp như vậy - được gọi là các giải pháp tối ưu Pareto
hay các giải pháp không trội (non-dominated) – sự cải thiện là không thể trong các hàm mục
tiêu nếu như không hy sinh ít nhất một trong các hàm mục tiêu khác.
Như vậy, bằng cách dùng khái niệm về tối ưu Pareto, ta có thể tìm thấy một tập giải pháp
thỏa hiệp (compromise) tối ưu giữa các mục tiêu mâu thuẫn nhau. Tối ưu Pareto là một khái
niệm được dùng trong kinh tế, lý thuyết game, … Một giải pháp tối ưu Pareto là giải pháp
không nổi trội hơn các giải pháp khác, nghĩa là không thể cải thiện mục tiêu nào đó mà
không có sự suy giảm trong một hay nhiều mục tiêu khác.
Vấn đề chính trong việc giải các bài toán tối ưu đa mục tiêu dùng thuật giải di truyền là
làm thế nào để xác định giá trị thích nghi của các cá thể theo nhiều mục tiêu.
3.6 Tối ưu tổ hợp
Có một lượng lớn các bài toán thuộc dạng tối ưu tổ hợp với các đặc trưng và thuộc tính
khác nhau. Mặc dù các vấn đề này hơi khác, chúng có thể được mô tả theo một trong các loại
sau:
• Xác định một hoán vị của một số mục liên quan tới bài toán
• Xác định một tổ hợp các mục
• Xác định cả hoán vị và tổ hợp các mục
• Bất kỳ một trong các đối tượng trên để ràng buộc.
Chẳng hạn, bản chất của các bài toán lập lịch dự án ràng buộc trên tài nguyên, định tuyến
xe và các bài toán lập lịch là xác định một hoán vị của vài mục theo một số ràng buộc. Bản
chất của bài toán lập lịch máy song song là xác định cả hoán vị và tổ hợp của các mục theo
một số ràng buộc.
Một đặc trưng chung của các bài toán là nếu hoán vị và/hoặc tổ hợp có thể xác định được
thì giải pháp có thể dễ dàng dẫn xuất ra bằng một thủ tục cụ thể cho bài toán. Vì vậy, phương
pháp tiếp cận chung cho việc áp dụng thuật giải di truyền đối với các vấn đề này là:
• Sử dụng thuật giải di truyền để phát triển một hoán vị và/hoặc tổ hợp thích hợp của
các mục được xem xét
• Sau đó, dùng một phương pháp heuristic để xây dựng một giải pháp theo sự hoán vị
và kết hợp đó.
Các toán tử và kỹ thuật nâng cao đã được trình bày trên đây dẫn đến sự cải thiện đáng kể
hiệu quả và năng lực của thuật giải di truyền. Sau đây là chương trình minh họa cách giải
một số bài toán dùng thuật giải di truyền và toán tử trên.
4 Chương trình minh họa
4.1 Bài toán 1. So khớp chuỗi
Đây là một ví dụ khá đơn giản nhưng có thể minh họa được khả năng mạnh mẽ của thuật
giải di truyền cũng như cách biểu diễn (mã hóa) đa dạng của nhiễm sắc thể. Trong bài toán
này, thuật giải di truyền cố gắng phát triển (hay tiến hóa) đến một chuỗi nào đó, chẳng hạn
“to be or not to be”, từ một chuỗi các ký tự được sinh ngẫu nhiên.
Nhóm 12 Trang 18
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Vì bảng chữ cái có 26 ký tự, nghĩa là có 26 khả năng để đặt các ký tự vào 1 trong 13 vị trí
của chuỗi kết quả nên xác suất để đạt được cụm từ đúng sẽ là (1/26)
13
= 4.03038 * 10
-19
. Việc
sử dụng thuật giải di truyền giúp phát hiện nhanh chuỗi cần tìm mà không cần phải vét cạn
toàn bộ không gian tìm kiếm.
Ý tưởng
• Mã hóa: Mỗi nhiễm sắc thể là một dãy các ký tự có cùng chiều dài với chuỗi đích.
Chẳng hạn:
NST a o t e z Y T t h d b e
• Khởi tạo quần thể: bằng cách sinh các chuỗi ký tự ngẫu nhiên.
• Chọn lọc bằng vòng Roulette, có sử dụng Elitism
• Toán tử lai ghép: sử dụng lai ghép một điểm
• Toán tử đột biến: sử dụng đột biến Flipping (thay một ký tự bởi một ký tự ngẫu nhiên
khác).
• Độ thích nghi: được tính là số ký tự được so khớp.
• Một số hàm xử lý
// hàm sao chép gen từ cặp Parents sang Children
public void DoCrossOver(TGenome[] parents, TGenome[] children,
bool straightCopy, int index)
{
if (straightCopy) {
children[0][index] = parents[0][index];
children[1][index] = parents[1][index];
}
else {
children[1][index] = parents[0][index];
children[0][index] = parents[1][index];
}
}
// Hàm kiểm tra vị trí lai ghép
private bool ShouldSwitch(int currentPos) {
return currentPos == this.cutPoint; // cutPoint = điểm lai ghép
}
// hàm tiến hành lai ghép hai nhiễm sắc thể
public void Cross(TGenome[] parents, TGenome[] children)
{
bool straightCopy = true;
int max = parents[0].Length;
for (int i = 0; i < max; ++i)
{
if (this.ShouldSwitch(i)) {
straightCopy = !straightCopy;
}
DoCrossOver(parents, children, straightCopy, i);
}
}
// Hàm tính độ thích nghi
Nhóm 12 Trang 19
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
public int CalculateFitness(TGenome<char> genome, char pattern)
{
int sum = 0;
for (int i = 0; (i < genome.Length) && (i < pattern.Length); i++)
{
if (genome[i] == pattern[i])
sum += 1;
}
return sum;
}
Kết quả
Với kích thước quần thể là 50, số cá thể lưu giữ lại cho thế hệ sau là 3, xác suất đột biến là
0.1, thuật giải di truyền tìm được chuỗi “to be or not to be” sau 178 thế hệ.
4.2 Bài toán 2. Gom cụm dữ liệu
Đây là ví dụ minh họa cách biểu biễn nhiễm sắc thể ở dạng đa bội và cách sử dụng các
toán tử nâng cao. Bài toán gom cụm được phát biểu như sau:
Cho A={a
1
, a
2
, …, a
p
} là tập p thuộc tính, D là một cơ sở dữ liệu N đối tượng hay bộ dữ
liệu (data tuples). Trong đó, mỗi bộ dữ liệu X={x
1
, x
2
, …, x
p
} chứa một tập giá trị tương ứng
với p thuộc tính. Và cuối cùng, d là một hàm khoảng cách để tính độ tương tự hay độ khác
nhau giữa các đối tượng trong D. Nhiệm vụ của việc gom nhóm là đi tìm các cluster chứa tập
các đối tượng sao cho các thành viên trong cùng cluster thì tương tự nhau còn các đối tượng
khác cluster thì khác xa nhau.
Nhóm 12 Trang 20
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Ý tưởng:
• Dựa trên ý tưởng của thuật toán gom cụm mờ (fuzzy c-mean). Cho trước k cluster, khi
đó, mỗi đối tượng không chỉ thuộc vào một cluster cụ thể nào mà có thể thuộc vào k
cluster với k xác suất khác nhau (gọi là độ thuộc) : {p
1
, p
2
, …, p
k
}.
• Mã hóa: mỗi nhiễm sắc thể đa bội có k thành phần được biểu diễn bởi một mảng 2
chiều có N cột và k dòng. Giá trị tại dòng I cột J phản ánh độ thuộc của đối tượng thứ
J vào cluster I. Gen trội được định nghĩa là giá trị lớn nhất trong mỗi cột. Kiểu hình
chính là dãy các số hiệu cluster tương ứng với vị trí của các gen trội.
nhiễm sắc thể
[1] 0.3 0.24 0.48 0.57 0.14 0.01 0.18 0.65
[2] 0.45 0.1 0.47 0.35 0.67 0.45 0.38 0.28
[3] 0.25 0.66 0.05 0.08 0.19 0.54 0.44 0.07
Gen trội 0.45 0.66 0.48 0.57 0.67 0.54 0.44 0.65
Kiểu hình 2 3 1 1 2 3 3 1
• Khởi tạo quần thể: bằng cách sinh các giá trị ngẫu nhiên.
• Chọn lọc bằng vòng Roulette, có sử dụng Elitism.
• Toán tử lai ghép: sử dụng lai ghép một điểm.
• Toán tử đột biến: sử dụng cách hoán vị hai giá trị trên hai dòng của cùng một cột.
• Hàm mục tiêu g(x): được tính là tổng bình phương sai số trong kết quả gom cụm. Như
vậy, giá trị hàm mục tiêu càng nhỏ càng tốt.
• Hàm thích nghi: f(x) = 1 / g(x).
Kết quả
Nhóm 12 Trang 21
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
4.3 Bài toán 3. N-hậu
Bài toán N-hậu mở rộng từ bài toán 8-hậu khá quen thuộc. Đây là bài toán minh họa cách
sử dụng toán tử lai ghép đồng nhất và đột biến trên các nhiễm sắc thể được biểu diễn bởi một
hoán vị của N số.
Trong ví dụ này, nhóm sử dụng thuật giải di truyền để giải quyết bài toán đặt N quân hậu
lên một bàn cờ NxN sao cho các quân hậu không ăn nhau.
Ý tưởng
• Mã hóa: Mỗi nhiễm sắc thể biểu diễn một cách sắp xếp các quân hậu lên bàn cờ NxN.
Giá trị J tại vị trí thứ I trong nhiễm sắc thể chính là vị trí (hàng = I, cột = J) để đặt
quân hậu lên bàn cờ. Dễ thấy, các giá trị trong nhiễm sắc thể phải khác nhau và 1 <= J
<= N. Do đó, mỗi cách biểu diễn nhiễm sắc thể chính là một hoán vị của N số nguyên
dương đầu tiên. Ví dụ:
NST 4 1 6 3 2 8 5 7
• Khởi tạo: bằng cách sinh ngẫu nhiên cách hoán vị của N số.
• Chọn lọc: bằng phương pháp dùng vòng Roulette, có sử dụng Elitism.
• Lai ghép: sử dụng toán tử lai ghép đồng nhất.
• Đột biến: bằng cách hoán vị hai gen trên cùng nhiễm sắc thể.
• Hàm mục tiêu g(x) được tính là số quân hậu ăn nhau. Như vậy, giá trị này càng bé
càng tốt. Giá trị tối ưu là 0.
• Hàm thích nghi: f(x) = N – g(x).
• Một số hàm xử lý
Nhóm 12 Trang 22
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
// Hàm lai ghép các cặp nhiễm sắc thể theo phương pháp lai ghép đồng nhất.
public void Mating()
{
int temp, i, j, k;
int[,] tempMatrix = new int[2, MaxSize];
int[] tempMatrix0 = new int[MaxSize];
int[] tempMatrix1 = new int[MaxSize];
for (int index = 0; index < (PopSize / 4); index++)
{
for (int t = 0; t < 2; t++)
{
for (i = 0; i < CheckBoardSize; i++)
{
tempMatrix0[i] = Chromosomes[2 * index, i];
tempMatrix1[i] = Chromosomes[2 * index + 1, i];
}
for (i = 0; i < CheckBoardSize; i++)
{
if (crossover[2 * index + t, i] == 0)
{
for (j = 0; j < CheckBoardSize; j++)
if (tempMatrix0[j] != 100)
{
tempMatrix[t, i] = tempMatrix0[j];
temp = tempMatrix0[j];
tempMatrix0[j] = 100;
j = CheckBoardSize - 1;
for (k = 0; k < CheckBoardSize; k++)
{
if (tempMatrix1[k] == temp)
{
tempMatrix1[k] = 100;
k = CheckBoardSize - 1;
}
}
}
}
else
{
for (j = 0; j < CheckBoardSize; j++)
if (tempMatrix1[j] != 100)
{
tempMatrix[t, i] = tempMatrix1[j];
temp = tempMatrix1[j];
tempMatrix1[j] = 100;
j = CheckBoardSize - 1;
for (k = 0; k < CheckBoardSize; k++)
{
if (tempMatrix0[k] == temp)
{
tempMatrix0[k] = 100;
k = CheckBoardSize - 1;
}
}
}
Nhóm 12 Trang 23
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
} // end if
} // end for
for (i = 0; i < CheckBoardSize; i++)
Chromosomes[2 * index + PopSize / 2 + t, i] = tempMatrix[t, i];
} // end for
}
}
Kết quả
4.4 Bài toán 4. Người du lịch
Một người du lịch muốn đi thăm tất cả N thành phố, mỗi thành phố đúng một lần rồi
quay trở lại thành phố ban đầu. Hãy giúp người khách xây dựng một hành trình thõa yêu cầu
trên sao cho tổng chiều dài đường đi là ngắn nhất.
Đây là bài toán khá quen thuộc và có thể áp dụng nhiều thuật toán để giải. Tuy nhiên, các
thuật toán đó tốn nhiều chi phí về thời gian khi số lượng thành phố là lớn. Trong báo cáo này,
nhóm sử dụng thuật giải di truyền để khắc phục nhược điểm trên.
Nhóm 12 Trang 24
Báo cáo bài tập nhóm môn Các hệ cơ sở tri thức Một số toán tử và kỹ thuật di truyền nâng cao
Ngoài ra, với bài toán này, nhóm sử dụng phương pháp tham lam để khởi tạo quần thể và
lai ghép, chọn lọc bằng phương pháp cạnh tranh.
Ý tưởng
• Mã hóa: Mỗi nhiễm sắc thể biểu diễn một cách sắp xếp lộ trình đi qua các thành phố.
Do đó, mỗi cách biểu diễn nhiễm sắc thể chính là một hoán vị của N số nguyên dương
đầu tiên. Ví dụ, hành trình 4 1 6 3 2 8 5 7 4 được biểu diễn
NST 4 1 6 3 2 8 5 7
• Khởi tạo: bằng phương pháp tham lam. Tại mỗi vị trí trong nhiễm sắc thể, ta chọn
thành phố gần nhất với thành phố hiện tại và chưa được xét để đưa vào vị trị tiếp theo
trong nhiễm sắc thể.
• Chọn lọc bằng phương pháp chọn lọc cạnh tranh.
• Lai ghép: sử dụng phép lai OX hoặc phương pháp lai ghép tham lam.
• Đột biến: bằng cách hoán vị hai gen hoặc đảo ngược hoặc dịch chuyển các gen trên
cùng nhiễm sắc thể.
• Hàm mục tiêu g(x) được tính là tổng chiều dài của hành trình. Như vậy, giá trị này
càng bé càng tốt.
• Hàm thích nghi: f(x) = 1 / (1 + g(x)).
Kết quả
Nhóm 12 Trang 25