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

Tìm hiểu về thuật toán di truyền và ứng dụng

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 (2.35 MB, 91 trang )

MỤC LỤC
MỞ ĐẦU..................................................................................................................................................... 3
CHƯƠNG 1: BÀI TOÁN TỐI ƯU HOÁ TỔNG QUÁT VÀ VẤN ĐỀ MÔ HÌNH HOÁ TOÁN HỌC.... 4
1.1. Bài toán tối ưu hoá tổng quát và mô hình hoá toán học. .......................................................................... 4
1.1.1.Bài toán tối ưu hoá tổng quát. .............................................................................................................. 4
1.1.2. Phân loại các bài toán ......................................................................................................................... 5
1.2.Vấn đề mô hình hoá toán học.................................................................................................................. 6
CHƯƠNG 2: TỔNG QUAN VỀ GIẢI THUẬT DI TRUYỀN .................................................................. 8
2.1. Đôi nét về lịch sử .................................................................................................................................. 8
2.2.Thuật giải di truyền cổ điển .................................................................................................................... 9
2.2.1. Thuật toán di truyền là gì? .................................................................................................................. 9
2.2.2. Cấu trúc của thuật toán di truyền cổ điển............................................................................................11
2.2.3. So sánh thuật toán di truyền cổ điển với một số thuật toán truyền thống khác......................................17
2.3. Cơ sở toán học của thuật giải di truyền cổ điển......................................................................................18
2.3.1. Khái niệm lược đồ .............................................................................................................................19
2.3.2. Tính chất của lược đồ ........................................................................................................................19
2.3.3. Vấn đề ngộ nhận và phương pháp giải quyết ......................................................................................20
2.4. Một số cải tiến của giải thuật di truyền cổ điển......................................................................................21
2.4.1. Cải tiến về phương pháp chọn lọc (modGA1).....................................................................................22
2.4.2. Cải tiến về hàm mục tiêu ...................................................................................................................24
2.4.3. Thuật toán di truyền cổ điển với kích thước quần thể thay đổi (modGA2) ...........................................26
2.4.4. Một số cải tiến của phép trao đổi chéo................................................................................................28
2.4.5.

Thuật toán di truyền hỗn hợp (modGA3)........................................................................................31

CHƯƠNG 3: PHƯƠNG PHÁP TÍNH TOÁN TIẾN HOÁ .....................................................................34
3.1.Các chiến lược tiến hoá .........................................................................................................................35
3.1.1. Nội dung của các chiến lược tiến hoá .................................................................................................35
3.1.2.So sánh các chiến lược tiến hoá và thuật toán di truyền........................................................................39
3.2.Lập trình tiến hoá và lập trình di truyền..................................................................................................39


3.2.1. Lập trình tiến hoá ..............................................................................................................................40
3.2.2. Lập trình di truyền ............................................................................................................................41
3.2.3.Chương trình tiến hoá .........................................................................................................................43
CHƯƠNG 4 TÌM HIỂU BÀI TOÁN TỐI ƯU ĐA MỤC TIÊU...............................................................48
4.1.Tổng quan về tối ưu đa mục tiêu. ...........................................................................................................48
4.2. Một số phương pháp giải bài toán đa mục tiêu.......................................................................................51
4.2.1 Phương pháp hàm lợi ích ....................................................................................................................51
4.2.2. Phương pháp tiêu chuẩn đánh giá toàn cục .........................................................................................53

1


4.2.3. Phương pháp điểm hợp lý ..................................................................................................................53
CHƯƠNG 5 ỨNG DỤNG GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN TỐI ƯU ĐA MỤC TIÊU.....55
5.1. Đặt vấn đề............................................................................................................................................55
5.2. Thuật toán tiến hoá...............................................................................................................................57
5.2.1. Thuật toán tiến hoá bằng các chuỗi nhị phân ......................................................................................59
5.2.2. Thuật toán tiến hoá bằng số thực........................................................................................................67
5.3 Ứng dụng giải thuật di truyền giải bài toán người du lịch (TSP) .............................................................77
5.3.1 Bài toán..............................................................................................................................................77
5.3.2. Các khó khăn khi thiết kế giải thuật di truyền. ....................................................................................77
5.3.4. chương trình tiến hoá cho bài toán TSP..............................................................................................85
KẾT LUẬN ................................................................................................................................................90
TÀI LIỆU THAM KHẢO ...........................................................................................................................91

2


MỞ ĐẦU
Trong thực tế, nhất là trong lĩnh vực thiết kế thường dẫn đến các bài toán tối

ưu đa mục tiêu. Chẳng hạn, người chế tạo sản phẩm thường chọn giải pháp tiết kiệm
vật liệu và chi phí sản xuất trong khi lại muốn giá trị sản phẩm là cao nhất. Nghiên
cứu giải bài toán tối ưu đa mục tiêu là một vấn đề thời sự, thực tiễn song không đơn
giản vì chưa chắc có lời giải thoả mãn đồng thời các mục tiêu mà không vi phạm các
ràng buộc nào đó. Đã có nhiều phương pháp giải bài toán tối ưu đa mục tiêu được đề
xuất, song các bài toán thực tế rất đa dạng, phong phú và việc nghiên cứu phát triển
các phương pháp này cũng như chỉ ra khả năng ứng dụng của chúng ta là cần thiết
và có ý nghĩa.
Đề tài “Tìm hiểu về thuật toán di truyền và ứng dụng” nhằm đặt nền móng
cho việc nghiên cứu về giải thuật di truyền và ứng dụng của nó trong việc giải bài
toán tối ưu đa mục tiêu. Với mục đích đó, ngoài phần tổng hợp lại một số phương
pháp truyền thống giải bài toán tối ưu đa mục tiêu, đề tài tập trung trình bày vấn đề
giải bài toán tối ưu đa mục tiêu bằng giải thuật di truyền.
Nghiên cứu về giải thuật di truyền và lớp bài toán tối ưu đa mục tiêu là một
lĩnh vực rộng lớn và có ý nghĩa thực tiễn. Song do hạn chế về thời gian và kiến thức
cơ sở nên đề tài mới chỉ dừng ở mức độ mô tả tổng quan và ứng dụng trong một bài
toán cụ thể. Khi có điều kiện em sẽ tiếp tục nghiên cứu và phát triển thêm nhất là
phần ứng dụng.
Em xin chân thành cảm ơn sự giúp đỡ của thầy giáo Vũ Vinh Quang cùng các
thầy cô giáo trong bộ môn Khoa Học Máy Tính đã tận tình hướng dẫn để em hoàn
thiện đề tài này.

Thái nguyên, tháng 06 năm 2008

3


CHƯƠNG 1
BÀI TOÁN TỐI ƯU HOÁ TỔNG QUÁT VÀ VẤN ĐỀ
MÔ HÌNH HOÁ TOÁN HỌC.


1.1. BÀI TOÁN TỐI ƯU HOÁ TỔNG QUÁT VÀ PHÂN LOẠI CÁC BÀI
TOÁN.
Khi tiến hành kế hoạch hoá sản xuất, điều khiển các hệ thống và thiết kế kỹ
thuật mà biết dựa trên các nguyên tắc cực trị ta sẽ tiết kiệm được vật tư tiền vốn, tài
nguyên, sức lao động, thời gian và tăng được hiệu quả giải quyết các vấn đề đặt ra.
1.1.1.Bài toán tối ưu hoá tổng quát.
Bài toán tối ưu hoá tổng quát được phát biểu như sau:
Cực đại hoá (cự tiểu hoá) hàm:
f(x)  max (min)

(1.1)

với các điều kiện:
gi(x) (, =, ≥) bi , i= 1…m

(1.2)

x X  Rn

(1.3)

Bài toán (1.1)  (1.3) được gọi là một quy hoạch, hàm f(x) được gọi là hàm
mục tiêu, các hàm gi(x), i=1..m được gọi là các hàm ràng buộc, mỗi đẳng thức hoặc
bất đẳng thức trong hệ (1.2) được gọi là một ràng buộc. Tập hợp:
D = { x  X | gi(x) (, , ≥) bi, i= 1..n } (1.4)
Được gọi là miền ràng buộc (hay miền chấp nhận được). Mỗi điểm x = (x1, x2,
…, xn)  D được gọi là một phương án (hay một lời giả chấp nhận được). Một
phương án x*  D đạt cực đại hay cực tiểu của hàm mục tiêu, cụ thể là:
f(x*) ≥ f(x), x  D (đối với bài toán max)

f(x*)  f(x), x  D (đối với bài toán min)
Được gọi là phương án tối ưu (lời giải tối ưu). Khi đó giá trị f(x*) được gọi là
giá trị tối ưu của bài toán.

4


1.1.2. Phân loại các bài toán
Một trong những phương pháp hiển nhiên nhất để giải bài toán đặt ra là
phương pháp điểm diện: Tính giá trị hàm mục tiêu f(x) trên tất cả các phương án,
sau đó so sánh các giá trị tính được để tìm ra giá trị tối ưu và phương án tối ưu của
bài toán. Tuy nhiên cách giải quyết này khó có thể thực hiện được, ngay cả khi kích
thước của bài toán (số biến n và số ràng buộc m) là không lớn, bởi vì tập D thông
thường gồm một số rất lớn các phần tử, trong nhiều trường hợp còn là không đếm
được.
Vì vậy cần phải có những nghiên cứu trước về mặt lý thuyết để có thể tách ra
từ bài toán tổng quát những lớp bài toán “dễ giải”. Các nghiên cứu lý thuyết đó
thường là:


Nghiên cứu các tính chất của các thành phần bài toán (hàm mục tiêu, các

hàm ràng buộc, các biến số, các hệ số…).


Các điều kiện tồn tại lời giải chấp nhận được.



Các điều kiện cần và đủ của cực trị.




Tính chất của các đối tượng nghiên cứu.

Các tính chất của các thành phần của bài toán và đối tượng nghiên cứu giúp ta
phân loại các bài toán. Một bài toán tối ưu được gọi là:


Quy hoạch tuyến tính (QHTT) nếu hàm mục tiêu f(x) và tất cả các hàm

ràng buộc gi(x), i=1..m là tuyến tính. Một trường hợp riêng quan trọng của QHTT là
bài toán vận tải.
 Quy hoạch tham số (QHTS) nếu các hệ số trong biểu thức của hàm mục tiêu
và của các ràng buộc phụ thuộc vào tham số.
 Quy hoạch động (QHĐ) nếu đối tượng xét là các quá trình có nhiều giai
đoạn nói chung, hay các quá trình phát triển theo thời gian nói riêng.
 Quy hoạch phi tuyến (QHPT) nếu f(x) hoặc có ít nhất một trong các hàm
gi(x) là phi tuyến hoặc cả hai trường hợp đó cùng xảy ra.

5




Quy hoạch rời rạc (QHRR) nếu miền ràng buộc D là tập rời rạc. Trong

trường hợp riêng khi các biến chỉ nhận giá trị nguyên ta có quy hoạch nguyên
(QHN). Một trường hợp riêng của QHN là quy hoạch biến booles khi các biến số chỉ
nhận giá trị 0 hoặc 1. Còn tối ưu hoá tổ hợp liên quan đến đặc tính hữu hạn của đối

tượng nghiên cứu, hay tồn tại một cấu trúc cho ta một định tính không gian của các
tình huống cần so sánh.
 Quy hoạch đa mục tiêu (QHĐMT) nếu trên cùng một miền ràng buộc ta xét
các hàm mục tiêu khác nhau.
1.2.VẤN ĐỀ MÔ HÌNH HOÁ TOÁN HỌC.
Việc mô hình hoá toán học cho một vấn đề thực tế có thể chia ra làm 4 bước:
Bước 1: Xây dựng mô hình định tính cho vấn đề thực tế tức là xác định các
yếu tố có ý nghĩa quan trọng nhất và xác lập các quy luật mà chúng phải tuân theo.
Nói một cách khác là phát triển mô hình bằng lời và bằng những biểu đồ, các điều
kiện về kinh tê, kỹ thuật, tự nhiên, xã hội, các mục tiêu cần đạt được.
Bước 2: Xây dựng mô hình toán học cho vấn đề đang xét, tức là diễn tả lại
dưới dạng ngôn ngữ toán học cho mô hình định tính. Khi có một hệ thống ta chọn
các biến số đặc trưng cho các trạng thái của hệ thống. Mô hình toán học thiết lập
mối liên hệ giữa các biến số và cá hệ số điều khiển hiện tượng. Việc làm quan trọng
ở bước này là phải xác định hàm mục tiêu, tức là một đặc trưng bằng số mà giá trị
càng lớn (càng nhỏ) của nó tương ứng với hiệu quả càng tốt hơn giải quyết vấn đề
mà người nhận lời giải mong muốn. Tiếp theo đó là phải diễn tả bằng các phương
trình hoặc bất phương trình các điều kiện kinh tế, kỹ thuật… Đó là các ràng buộc
toán học mà các biến số phải tuân theo.
Bước 3: Sử dụng các công cụ toán học để khảo sát và giải quyết bài toán hình
thành trong bước 2. Căn cứ vào mô hình đã xây dụng cần phải chọn hoặc xây dựng
phương pháp giải cho phù hợp. Tiếp đó cụ thể hoá phương pháp bằng các thuật toán
tối ưu. Vì các bài toán thực tế thường có kích thước lớn nên không thể giải bằng tay
được mà phải sử dụng máy tính điện tử. Vậy cần chương trình hoá thuật toán bằng

6


một ngôn ngữ lập trình phù hợp. Sau đó đưa lên máy tính điện tử để chạy và in ra
kết quả.

Bước 4: Phân tích và kiểm định lại các kết quả tính toán thu được trong bước 3.
Trong bước này cần phải xác định mức độ phù hợp của mô hình và kết quả
tính toán với vấn đề thực nghiệm hoặc áp dụng phương pháp phân tích chuyên gia.
Ở đây có thể xảy ra một trong hai khả năng sau:
Khả năng 1: Mô hình và các kết quả tính toán phù hợp với thực tế. Khi đó cần
lập một bản tổng kết ghi rõ cách đặt vấn đề, mô hình toán học, thuật toán tối ưu,
chương trình, cách chuẩn bị số liệu để đưa vào máy tính, nghĩa là toàn bộ các công
việc cần thiết cho việc áp dụng mô hình và kết quả để giải quyết vấn đề thực tế đặt
ra. Trong trường hợp mô hình cần được sử dụng nhiều lần thì phải xây dựng hệ
thống phần mềm đảm bảo giao diện thuận tiện giữa người sử dụng và máy tính điện
tử, không đòi hỏi người sử dụng phải có trình độ chuyên môn cao về toán.
Khả năng 2: Mô hình và các kết quả tính toán không phù hợp với thực tế.
Trong trường hợp này cần phải xem xét các nguyên nhân của nó, rồi tìm ra phương
hướng giải quyết.

7


CHƯƠNG 2
TỔNG QUAN VỀ GIẢI THUẬT DI TRUYỀN

2.1. ĐÔI NÉT VỀ LỊCH SỬ
Khái niệm di truyền được biết tới từ những năm 50, trong thời kỳ này đã có
những ứng dụng lẻ tẻ để giải các bài toán sinh học. Một số nhà sinh vật học đã sử
dụng máy tính để mô phỏng lại các hệ thống di truyền phục vụ công việc nghiên cứu
của họ như: Barricelli năm 1957, Fraser năm 1960 – 1962, Martin và Cockerham
năm 1960. Nhưng trong thời kỳ này chưa phát triển thành phương pháp luận mà mới
chỉ được sử dụng để giải quyết các bài toán riêng rẽ xuất phát từ sinh học.
Thuật toán di truyền (tên tiếng Anh là Genetic Algorithm viết tắt là GA) được
giới thiệu bởi J. H.Holland và các đồng nghiệp của ông ở trường đại học Michigan

vào năm 1975 trong cuốn Adaptation in Natural and Artificial Systems. Ông được
xem là “người cha” của học thuyết Thuật giải di truyền và cuốn sách trên đã trở
thành nền tảng cho giới nghiên cứu về GA trong hai thập niên qua. Trong giai đoạn
đầu thập niên 70 và 80 của thế kỷ XX, phần lớn các nhà nghiên cứu và ứng dụng
của GA đều được đào tạo tại đại học Michigan dưới sự hướng dẫn của giáo sư
J.H.Holland và một số đồng nghiệp như Kenneth De Jong, David E.Goldberg đã dần
dần tạo nên nền tảng lý thuyết vững chắc và thực hiện các áp dụng của GA để giải
quyết các vấn đề phức tạp trong thực tế.
Tạp chí đầu tiên về lý thuyết và ứng dụng của GA là nguyệt san Evolutionarry
Computation (1993) do Kenneth De Jong chủ biên, ngoài ra còn có các nguyệt san
AI Expert, Arrtificial Intelligent cũng thường có bài đề cập về GA.
Tuy mới chỉ được hình thành cách đây chưa đầy 25 năm, GA đã có được cơ sở
toán học vững chắc về lý thuyết và có số lượng những áp dụng ngày càng gia tăng
bao gồm nhiều lĩnh vực khác nhau.
GA đã kết hợp với các kỹ thuật thuộc lĩnh vực trí tuệ nhân tạo như Hệ chuyên
gia (Expert Systems), mạng lưới nơron nhân tạo (Arrtificial Neural Network) và

8


logic mờ (Fuzzy logic) nhằm tìm giải pháp tối ưu cho những vấn đề phức tạp mà các
phương pháp cổ điển đã không giải quyết được thoả đáng.
GA được ứng dụng trong nhiều lĩnh vực khác nhau, từ khoa học tự nhiên đến
khoa học nhân văn, từ kỹ thuật sang thương vụ và kinh tế - tài chính. Những ứng
dụng này có thể được chia thành ba nhóm chính: Tìm mô hình tối ưu cho vấn đề
hoạch định quy trình sản xuất, lộ trình chuyển vận, cách bố trí các bộ phận trong
môi trường; chọn lựa các nhóm hay thành phần trong một tổ chức.
2.2. THUẬT GIẢI DI TRUYỀN CỔ ĐIỂN
2.2.1. Thuật toán di truyền là gì?
Việc giải một bài toán có thể xem là việc đi tìm trong không gian các lời giải

có thể. Trong thực tiễn, có nhiều bài toán tối ưu quan trọng đòi hỏi những thuật giải
chất lượng cao. Ví dụ, ta có thể áp dụng phương pháp mô phỏng luyện thép để tìm
đường đi ngắn nhất cho xe cứu hoả hay bài toán người du lịch,…Cũng có nhiều bài
toán tối ưu tổ hợp (trong đó có nhiều bài đã được chứng minh là thuộc loại NP - đủ)
có thể được giải gần đúng trên máy tính hiện đại bằng kỹ thuật Monte – Cario.
Nói chung, bài toán tối ưu có thể được xem như bài toán tìm kiếm giải pháp
(tốt nhất) trong không gian (vô cùng lớn) các giải pháp. Khi không gian tìm kiếm
nhỏ, các phương pháp cổ điển như trên cũng đủ thích hợp; nhưng khi không gian lớn
cần phải dùng đến những kỹ thuật Trí Tuệ Nhân Tạo đặc biệt. Thuật toán di truyền
(GA) là một trong những kỹ thuật đó.
Thuật toán di truyền cổ điển là các kỹ thuật phỏng theo quá trình thích nghi
tiến hoá của các quần thể sinh học dựa trên học thuyết Darwin.
Tư tưởng của thuật toán di truyền là mô phỏng các hiện tượng tự nhiên: kế
thừa và đấu tranh sinh tồn để cải tiến lời giải và khảo sát không gian lời giải. Khái
niệm kế thừa và đấu tranh sinh tồn được giải thích qua thí dụ về sự tiến hoá của một
quần thể thỏ như sau:
Có một quần thể thỏ. Trong số đó có một số con nhanh nhẹn và thông minh
hơn những con khác. Những chú thỏ nhanh nhẹn và thông minh có xác suất bị chồn

9


cáo ăn thịt nhỏ hơn, do đó cúng tồn tại để làm những gì tốt nhất có thể: Tạo thêm
nhiều thỏ tốt. Dĩ nhiên, một số thỏ chậm chạp đần độn cũng sống sót vì may mắn.
Quần thể những chú thỏ còn sống sót sẽ bắt đầu sinh sản. Việc sinh sản này sẽ tạo ra
một hỗn hợp tốt về “nguyên liệu di truyền thỏ”. Một số thỏ chậm chạp có con với
những con thỏ nhanh, một số thỏ nhanh với thỏ nhanh, một số thỏ thông minh với
thỏ đần độn, v.v… Và trên tất cả, thiên nhiên lại ném vào một con thỏ “hoang dã”
bằng cách làm đột biến nguyên liệu di truyền thỏ. Những chú thỏ con do kết quả này
sẽ nhanh hơn và thông minh hơn những con thỏ trong quần thể gốc vì có nhiều bố

mẹ nhanh nhẹn và thông minh hơn đã thoát chết khỏi chồn, cáo.
Khi tìm kiếm lời giải tối ưu, thuật toán di truyền cũng thực hiện các bước
tương ứng với câu chuyện đấu tranh sinh tồn của loài thỏ.
Thuật toán di truyền sử dụng các thuật ngữ vay mượn của di truyền học. Ta có
thể nói về các cá thể (hay kiểu gen, cấu trúc) trong một quần thể; những cá thể này
cũng còn được gọi là các chuỗi hay các nhiễm sắc thể.
Mỗi kiểu (nhóm) gen (ta gọi là một nhiễm sắc thể) sẽ biểu diễn một lời giải
của bài toán đang giải (ý tưởng của một nhiễm sắc thể cụ thể được người sử dụng
xác định trước) một tiến trình tiến hoá được thực hiện trên một quần thể các nhiễm
sắc thể tương ứng với một quá trình tìm kiếm lời giải trong không gian lời giải. Tìm
kiếm đó cần cân đối hai mục tiêu: Khai thác những lời giải tốt nhất và khảo sát
không gian tìm kiếm. Leo đồi là một ví dụ về chiến lược cho phép khai thác và cải
thiện lời giải tốt nhất hiện hành nhưng leo đồi lại bỏ qua việc khảo sát không gian
tìm kiếm. Ngược lại, tìm kiếm ngẫu nhiên là một ví dụ điển hình của chiến lược
khảo sát không gian tìm kiếm mà không chú ý đến việc khai thác những vùng đầy
hứa hẹn của không gian. Thuật toán di truyền (GA) là phương pháp tìm kiếm (độc
lập miền) tạo được sự cân đối đáng kể giữa việc khai thác và khảo sát không gian
tìm kiếm.
Thực ra, GA thuộc lớp các thuật giải xác suất, nhưng lại rất khác những thuật
giải ngẫu nhiên vì chúng kết hợp các phần tử tìm kiếm trực tiếp và ngẫu nhiên. Khác

10


biệt quan trọng giữa tìm kiếm của GA và các phương pháp tìm kiếm khác là GA duy
trì và xử lý một tập các lời giải (ta gọi là một quần thể) tất cả những phương pháp
khác chỉ xử lý một điểm trong không gian tìm kiếm. Chính vì vậy mà GA mạnh hơn
các phương pháp tìm kiếm hiện có rất nhiều.
2.2.2. Cấu trúc của thuật toán di truyền cổ điển
2.2.2.1. Cấu trúc nhiễm sắc thể và cấu trúc thuật toán

Trong GA cổ điển, các cá thể (hay còn gọi là nhiễm sắc thể, viết tắt là NST)
được mã hoá bởi các chuỗi nhị phân (đây là phương pháp mã hoá truyền thống hay
cổ điển, kể từ đây GA áp dụng phương pháp mã hoá này được gọi là GA cổ điển),
mỗi vị trí trên chuỗi chỉ nhận một trong hai giá trị “0” hoặc “1”. Một NST trong GA
cổ điển có dạng như sau:
1

0

0

1

1

0

0

1

1

Mỗi NST biểu thị một lời giải có thể của bài toán; một quá trình tiến hoá được
thực hiện trên một quần thể (một tập hợp NST) tương đương với sự tìm kiếm trong
một không gian các lời giải có thể. Sự tìm kiếm này đòi hỏi sự cân bằng giữa hai
mục đích: tìm lời giải tốt nhất và khám phá không gian tìm kiếm.
Thuật toán di truyền cổ điển tìm kiếm theo nhiều hướng bằng cách duy trì một
tập lời giải có thể, khuyến khích sự hình thành và trao đổi thông tin giữa các hướng.
Tập các lời giải trải qua các quá trình tiến hoá và cuối cùng cho ta một lời giải đủ tốt

tuỳ theo yêu cầu. Tại mỗi thế hệ các lời giải tương đối tốt được tái sinh, trong khi đó
các lời giải tương đối tồi bị loại bỏ. Để phân biệt độ tốt xấu giữa các lời giải khác
nhau, người ta dùng một hàm được gọi là hàm thích nghi để đánh giá độ tốt xấu của
từng lời giải, hàm này đóng vai trò của một môi trường sống trong thuyết tiến hoá.
GA cổ điển được J.Holland giới thiệu để giải bài toán tối ưu:
Tìm Max {f(x) / x  M}, trong đó M là một miền không gian n-chiều, f(x)>0
với mọi x  M.
Cấu trúc của GA cổ điển như sau:
Procedure GA

11


Begin
T=0
Khởi tạo P(t)
Đánh giá P(t)
While ( not (điều kiện dừng)) do
Begin
T=T+1
Chọn P(t) từ P(t-1)
Thay đổi P(t)
Đánh giá P(t)
End
End
Các quá trình tiến hoá được diễn ra trong vòng lặp While, tại thế hệ thứ t, thuật
toán duy trì một tập lời giải P(t) ={ xt1,xt2, … , xtn}. Mỗi lời giải xti được đánh giá
“độ thích nghi ”. Một tập lời giải mới được xây dựng bằng cách “chọn lọc” các cá
thể thích nghi hơn, ta được một tập lời giải trung gian. Tiếp theo, một số cá thể trong
tập lời giải này được được biến đổi bằng phương pháp “lai ghép”và “đột biến” để

tạo thành các lời giải mới cho thế hệ (t-1).
Sơ đồ sau đây minh hoạ sự hoạt động của thuật toán di truyền:

12


Hình 1: Sơ đồ tổng quát của thuật toán di truyền.
Ban đầu, ta sẽ phát sinh một số lượng lớn, giới hạn các cá thể có gen ngẫu
nhiên - nghĩa là phát sinh một tập hợp các chuỗi bit ngẫu nhiên. Tập các cá thể này
được gọi là quần thể ban đầu (initial population). Sau đó, dựa trên một hàm nào đó,
ta sẽ xác định được một giá trị gọi là độ thích nghi – Fitness (độ "tốt/xấu" của lời
giải). Vì phát sinh ngẫu nhiên nên độ "tốt/xấu" của lời giải hay tính thích nghi của
các cá thể trong quần thể ban đầu là không xác định.
Để cải thiện tính thích nghi của quần thể, người ta tìm cách tạo ra quần thể
mới. Có hai thao tác thực hiện trên thế hệ hiện tại để tạo ra một thế hệ khác với độ
thích nghi tốt hơn.
Thao tác đầu tiên là sao chép nguyên mẫu một nhóm các cá thể tốt từ thế hệ
trước rồi đưa sang thế hệ sau (selection). Thao tác này đảm bảo độ thích nghi của
thế hệ sau luôn được giữ ở một mức độ hợp lý. Các cá thể được chọn thông thường
là các cá thể có độ thích nghi cao nhất.

13


Thao tác thứ hai là tạo các cá thể mới bằng cách thực hiện các thao tác sinh
sản trên một số cá thể được chọn từ thế hệ trước – thông thường cũng là những cá
thể có độ thích nghi cao. Có hai loại thao tác sinh sản: một là lai tạo (crossover), hai
là đột biến (mutation). Trong thao tác lai tạo, từ gen của hai cá thể được chọn trong
thế hệ trước sẽ được phối hợp với nhau (theo một số quy tắc nào đó) để tạo thành
hai gen mới.

Thao tác chọn lọc và lai tạo giúp tạo ra thế hệ sau. Tuy nhiên, nhiều khi do thế
hệ khởi tạo ban đầu có đặc tính chưa phong phú và chưa phù hợp nên các cá thể
không rải đều được hết không gian của bài toán. Từ đó, khó có thể tìm ra lời giải tối
ưu cho bài toán. Thao tác đột biến sẽ giúp giải quyết được vấn đề này. Đó là sự biến
đổi ngẫu nhiên một hoặc nhiều thành phần gen của một cá thể ở thế hệ trước tạo ra
một cá thể hoàn toàn mới ở thế thệ sau. Nhưng thao tác này chỉ được phép xảy ra
với tần suất rất thấp (thường dưới 0.01), vì thao tác này có thể gây xáo trộn và làm
mất đi những cá thể đã chọn lọc và lai tạo có tính thích nghi cao, dẫn đến thuật toán
không còn hiệu quả.
Thế hệ mới được tạo ra lại được xử lý như thế hệ trước (xác định độ thích nghi
và tạo thế hệ mới) cho đến khi có một cá thể đạt được giải pháp mong muốn hoặc
đạt đến thời gian giới hạn, sau đó ta đi trình bày lời giải của bài toán.
2.2.2.2. Các thành phần của thuật toán di truyền:
a. Khởi tạo quần thể
Tạo quần thể đầu tiên trong thuật toán là nơi xuất phát quá trình tiến hoá bao
gồm tất cả các giá trị thô ban đầu. Tuỳ theo yêu cầu của bài toán mà có các cách
khởi tạo khác nhau. Trước một bài toán áp dụng thuật toán di truyền, ta cần phải xác
định rõ nhiễm sắc thể và cá thể cho vấn đề, và thông thường đó sẽ là kết quả cuối
cùng. Việc phân tích sẽ dựa trên kết quả là cơ bản tốt nhất.
b. Phép chọn lọc
Phép chọn lọc là một quá trình trong đó các cá thể được chọn để tham gia vào
các pha tiếp theo của quá trình tiến hoá, việc lựa chọn này tuỳ thuộc vào độ thích

14


nghi của cá thể đó, nghĩa là những cá thể nào có giá trị hàm thích nghi cao hơn sẽ có
khả năng có nhiều con cháu hơn trong các thế hệ tiếp theo. Phép chọn lọc có thể
được biểu diễn dưới dạng bánh xe xổ số, đó là một hình tròn trong đó mỗi cá thể
trong thế hệ hiện hành chiếm một phần tương ứng với giá trị của hàm thích nghi của

nó. Các giá trị này chính là xác suất chọn lọc của mỗi cá thể vi được tính theo công
thức: pi 

f (vi )
F

Trong đó: f(vi) là giá trị hàm thích nghi của mỗi cá thể vi.
F là tổng của các giá trị thích nghi của quần thể.
Hình 2: Minh hoạ bánh xe xổ số của quá trình lựa chọn.

Hình 2: Bánh xe xổ số
Trong hình trên cá thể 1 có xác suất chọn lọc là 15%, mỗi lần quay bánh xe xổ
số nó có khả năng được chọn là 0.15. Tương tự như vậy đối với các cá thể 2, 3, 4
Phép chọn lọc có thể được mô phỏng như sau:
i. Sắp xếp các quần thể theo thứ tự độ thích nghi giảm dần.
ii. Loại bỏ các cá thể cuối dãy để chỉ giữ lại n cá thể tốt nhất. Ở đây, ta giả sử
quần thể có kích thước cố định là n.
c. Phép trao đổi chéo (hay còn gọi là phép lai ghép)
Phép trao đổi chéo (hay phép lai ghép) là quá trình hình thành NST mới trên
cơ sở các NST cha mẹ bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều)
NST cha mẹ với nhau. Phép lai xảy ra với xác suất pc, có thể mô phỏng như sau:

15


i.Chọn ngẫu nhiên hai (hay nhiều) cá thể bất kỳ trong quần thể. Giả sử các NST
của cha mẹ đều có m gen.
ii.Tạo một số ngẫu nhiên trong khoảng từ 1 đến m-1 (ta gọi là điểm lai). Điểm
lai chia các chuỗi cha mẹ có độ dài m thành hai nhóm chuỗi con dài m1 và m2 . Hai
chuỗi NST con mới sẽ là m11 + m12 và m21 + m22.

iii.Đưa hai cá thể mới này vào quần thể để tham gia các quá trình tiến hoá tiếp
theo.
Ví dụ:

Parent 1

1

1

0

1

0

0

1

1

0

1

Parent 2

1


0

1

1

1

0

0

1

1

0

Thì việc trao đổi chéo các NST sau gen thứ năm sẽ tạo ra hai con như sau:
Child 1

1

1

0

1

0


0

0

1

1

0

Child 2

1

0

1

1

1

0

1

1

0


1

d. Phép đột biến
Phép đột biến là hiện tượng cá thể con mang một (hoặc một số) tính trạng
không có trong mã di truyền của cha mẹ, tức là sự sửa đổi một (hoặc vài) gen của
một NST được chọn bằng cách thay đổi ngẫu nhiên với xác suất là tỷ lệ đột biến.
Phép đột biến xảy ra với xác suất p m nhỏ hơn rất nhiều so với xác suất lai p c. Phép
đột biến có thể được mô phỏng như sau:
i.Chọn nhẫu nhiên một cá thể bất kỳ cha mẹ trong quần thể.
ii.Tạo một số ngẫu nhiên k trong khoảng từ 1 đến m với 1 ≤ k ≤ m.
iii.Thay đổi gen thứ k và trả cá thể này về quần thể để tham gia vào quá trình tiến
hoá tiếp theo.
Ví dụ:

16


V1

0

1

1

1

0


1

1

0

1

V1 ’

0

1

1

1

1

1

1

0

1

NST V1 được chọn để đột biến tại gen số năm, gen này hiện tại là 0 sau khi đột
biến sẽ chuyển thành 1. Khi đó NST V1 thành V1’.

2.2.3. So sánh thuật toán di truyền cổ điển với một số thuật toán truyền
thống khác
Ta sẽ so sánh thuật toán di truyền với một số thuật toán truyền thống phổ biến
đó là thuật toán “vét cạn”, thuật toán “leo đồi” và thuật toán “mô phỏng luyện thép”.
Thuật toán “vét cạn” (tìm kiếm theo chiều rộng hoặc chiều sâu), về mặt
nguyên tắc các phương pháp tìm kiếm này đảm bảo tìm được nghiệm của bài toán
nếu bài toán có nghiệm. Trong thực tế ta thấy có rất nhiều bài toán không áp dụng
phương pháp này được bởi vì ta phải phát triển một không gian trạng thái quá lớn
trước khi đi tới trạng thái đích, mà do những hạn chế về mặt thời gian và dung lượng
bộ nhớ.
Trong thuật toán “leo đồi” dùng kỹ thuật và áp dụng cho một điểm duy nhất
(điểm hiện hành trong không gian tìm kiếm). Trong mỗi bước lặp, một điểm được
chọn từ lân cận của điểm hiện hành (vì thế leo đồi còn được gọi là phương pháp tìm
kiếm lân cận hay là tìm kiếm cục bộ). Nếu điểm mới có giá trị (của hàm mục tiêu)
tốt hơn, điểm mới sẽ trở thành điểm hiện hành. Nếu không, một lân cận khác sẽ
được chọn và thử. Quá trình trên sẽ dừng lại nếu không cải thiện thêm được cho lời
giải hiện hành. Do vậy phương pháp “leo đồi” chỉ cung cấp các giá trị tối ưu cục bộ
và những giá trị này phụ thuộc rất nhiều vào điểm khởi đầu. Mặt khác ta không có
thông số sẵn có về sai số tương đối (thoả tối ưu toàn cục) của lời giải tìm được.
Để tăng cơ hội thành công, phương pháp leo đồi thường được thực hiện nhiều
lần, mỗi lần với mỗi thời điểm khởi đầu khác nhau (những điểm này không cần chọn

17


nhẫu nhiên - một tập hợp các điểm khởi đầu của một lần thực thi thì phụ thuộc vào
kết quả của những lần chạy trước đó).
Kỹ thuật mô phỏng luyện thép là một kỹ thuật khắc phục những bất lợi của
phương pháp leo đồi: Lời giải không còn tuỳ thuộc nhiều vào điểm khởi đầu và gần
với điểm tối ưu. Trong thuật toán này người ta dùng kỹ thuật thay đổi entropy của

hệ, ở phương pháp này ta điều khiển tốc độ hội tụ của của quần thể bằng cách biến
đổi nhiệt động học với một tham số nhiệt độ T toàn cục. Để hạn chế việc tối ưu cục
bộ và tăng khả năng khám phá không gian tìm kiếm, người ta dùng thủ thuật giảm
nhiệt độ T từng bước (đến một mức nào đó). Tuy nhiên, vì T chỉ giảm đến một mức
nhất định nên phương pháp này cũng không tránh khỏi những hạn chế trong việc
khám phá không gian tìm kiếm mới và sự hội tụ địa phương.
Còn với GA, GA thực hiện tiến trình tìm kiếm lời giải tối ưu theo nhiều hướng
bằng cách duy trì một quần thể các lời giải, và thúc đẩy sự hình thành và trao đổi
thông tin giữa các hướng này. Quần thể trải qua tiến trình tiến hoá: Ở mỗi thế hệ lại
tái sinh các lời giải tương đối “tốt”, trong khi các lời giải tương đối “xấu” thì bị loại
bỏ. Thuật toán di truyền cổ điển làm việc với mã của các hàm mục tiêu của các đối
tượng chứ không làm việc trực tiếp với chính các đối tượng đó, nó dùng thông tin đã
được đưa ra của hàm mục tiêu để thực hiện tối ưu hoá chứ không phải là những
thông tin ban đầu hay những thông tin bổ trợ khác.
Thuật toán di truyền cổ điển dùng những luật chuyển đổi có thể xảy ra chứ
không phải là những chiến lược ấn định trước, yếu tố ngẫu nhiên đóng vai trò quan
trọng trong việc hướng dẫn tìm kiếm.
Chính vì các đặc điểm trên mà thuật toán di truyền cổ điển khắc phục được
những nhược điểm của hai thuật toán vét cạn và leo đồi.
2.3. CƠ SỞ TOÁN HỌC CỦA GIẢI THUẬT DI TRUYỀN CỔ ĐIỂN.
Cơ sở toán học của thuật toán di truyền dựa trên biểu diễn chuỗi nhị phân và
khái niệm lược đồ (scheme). Khái niệm lược đồ là một khái niệm quan trọng trong
việc biểu diễn các cá thể có những thuộc tính giống nhau. Sự phát triển hay suy tàn

18


của các cá thể đều được lý giải một cách khoa học trong lý thuyết lược đồ, đó cũng
chính là sự lý giải cho tính hiệu quả của GA cổ điển mà chủ yếu là thông qua các
phép: chọn lọc, lai ghép, và đột biến.

2.3.1. Khái niệm lược đồ
Một lược đồ được xây dựng bằng cách bổ sung các kí hiệu không quan tâm
“*” vào một bộ ký tự của gen (NST). Một lược đồ đại diện cho tất cả các chuỗi mà
mọi vị trí (trừ các vị trí “*”) đều giống nó.
Ví dụ: Xét các chuỗi và các lược đồ có độ dài 8 bước, lược đồ (*1110010) đại
diện cho hai chuỗi sau:
(01110010) và (11110010)
Lược đồ (*1*11001) đại diện cho bốn chuỗi sau:
(01011001), (01111001), (11011001), (11111001)
Trường hợp đặc biệt, lược đồ (01001110) chỉ đại diện cho duy nhất một chuỗi
(01001110) và lược đồ (********) đại diện cho mọi chuỗi có độ dài 8. Hiển nhiên,
mỗi lược đồ đều đại diện cho 2r chuỗi, r là số các ký tự không quan tâm “*”ở trong
lược đồ đó. Ngược lại, mỗi chuỗi có độ dài m có thể phù hợp với 2m lược đồ khác
nhau. Ví dụ: chuỗi (11000101) phù hợp với 28 lược đồ sau:

(11000101)

(**000101)

(***00101)

(*1000101)

(*1*00101)

……….

(1*000101)

……….


(11000***)

…….

(110001**)

……….

(1100010*)

………..

(********)

Vậy một quần thể n chuỗi có đồ dài m có thể được biểu diễn bằng 2m đến n x 2m
lược đồ khác nhau.
2.3.2. Tính chất của lược đồ.
Có hai tính chất quan trọng của lược đồ đó là bậc và độ dài xác định. Ta sẽ tìm
hiểu lần lượt hai tính chất này.

19


 Bậc của lược đồ
Cho một lược đồ S, ta ký hiệu o(S) là số các vị trí nhận giá trị 0 hoặc 1 của
lược đồ, o(S) được gọi là bậc của lược đồ.
Như vậy bậc của lược đồ xác định “độ cụ thể” của lược đồ đó.
Ví dụ: Cho 3 lược đồ sau:
S1 = (***110*1), S2 = (***11*1*), S3 = (10*110*1)

Các lược đồ có bậc tương ứng là:
o(S1) = 4, o(S2) = 3, o(S3) = 6
Bậc của lược đồ sẽ liên quan đến việc tính xác suất tồn tại của một lược đồ khi
đột biến.
 Độ dài xác định của lược đồ
Cho lược đồ S, ta ký hiệu δ(S) là khoảng cách vị trí xác định đầu tiên và vị trí
xác định cuối cùng của lược đồ. δ(S) được gọi là độ dài xác định của lược đồ (độ cô
đọng của thông tin chứa trong lược đồ).
Ví dụ: Vẫn với 3 lược đồ đã cho ở trên, ta có:
δ(S1) = 8 – 4 = 4; δ(S2) = 7–4 = 3; δ(S3) = 8 – 1 = 7.
Trong trường hợp lược đồ có đúng một vị trí xác định thì độ dài xác định bằng
0.
Độ dài xác định của lược đồ đó liên quan đến việc tính xác suất tồn tại của một
lược đồ khi trao đổi chéo.
2.3.3. Vấn đề ngộ nhận và phương pháp giải quyết
 Vấn đề ngộ nhận của GA cổ điển:
Qua quá trình đưa ra định lý về lược đồ, ta thấy thuật toán di truyền cổ điển
thực hiện tìm kiếm lời giải tối ưu bằng cách nhân ghép các lược đồ có thích nghi
trên trung bình, độ dài xác định ngắn, bậc thấp. Các lược đồ này được gọi là các
khối cơ bản.
Theo giả thiết này, vấn đề mã hoá cho GA đóng vai trò quan trọng, việc mã
hoá sao cho phải thoả mãn ý tưởng về khối cơ bản. Tuy nhiên, nó hướng sự hội tụ về

20


điểm hội tụ không phải là tối ưu toàn cục. Người ta gọi hiện tượng này là hiện tượng
ngộ nhận.
Ví dụ: Giả sử ta có hai lược đồ trên trung bình, ngắn, bậc thấp.
S1 = (111******) và S2 = (********11).

Hai lược đồ này kết hợp lại được: S3 = (111*****11) có độ thích nghi kém hơn
lược đồ S4 = (000*****00), và giả sử lược đồ ứng với giá trị tối ưu của hàm mục
tiêu là S5 = (1111111111), chuỗi này thỏa mãn S3. Như vậy GA sẽ có khả năng hội
tụ tới điểm không phải tối ưu S6 = (0001111100), vì lược đồ S4 tốt hơn lược đồ S3.
 Các hướng tiếp cận giải quyết vấn đề ngộ nhận:
Để giải quyết vấn đề trên, người ta đã đưa ra một số cách sau:
 Cách 1: Cách này cần phải có kiến thức tốt về hàm mục tiêu để mã hoá nó
sao cho phù hợp. Chẳng hạn ta có thể mã hoá sao cho 5 bit ‘1’ của S3 đặt sát nhau
thay vì cách nhau tới 5 vị trí.
 Cách 2: Dùng phép đảo gen, ta coi đây là phép biến đổi gen thứ 3 sau hai
phép lai ghép và đột biến: Nội dung của phép này đơn giản như sau: Chọn hai điểm
trên chuỗi và đảo thứ tự của các bit nằm giữa hai điểm đó, nhưng vẫn phải ghi nhớ ý
nghĩa của các bit (ghi nhớ vị trí ban đầu của các bit đó).
Ví dụ: Xét lược đồ S3 = (111*****11), hai điểm được chọn trên chuỗi là vị trí
thứ 4 và vị trí thứ 10. Sau khi thực hiện phép đảo, ta có:
S’3 = ((1,1)(2,1)(3,1)(10,1)(9,1)(8,*)(7,*)(6,*)(5,*)(4,*))
 Cách 3: Người ta dựa trên một hướng tiếp cận mới được đề xuất gần đây
nhất, đồng thời cũng là cách có nhiều điều thú vị nhất đó là “thuật toán di truyền hỗn
hợp”.
2.4. MỘT SỐ CẢI TIẾN CỦA GIẢI THUẬT DI TRUYỀN CỔ ĐIỂN.
Thuật toán di truyền cổ điển chuẩn (biểu diễn NST là chuỗi nhị phân, có độ
dài không đổi, có hai toán tử di truyền là trao đổi chéo (lai ghép) và đột biến nhị
phân đôi khi mắc một số hạn chế, một trong những hạn chế đáng lưu ý nhất là vấn
đề hội tụ sớm về một cực đại, mà cực đại đó không phải lời giải tối ưu.

21


Trong những năm gần đây, nhiều công trình đã đi sâu nghiên cứu nhằm khắc
phục những hạn chế của GA cổ điển chuẩn, nhiều công trình nghiên cứu xung quanh

vấn đề này đã được công bố. Phần lớn các công trình nghiên cứu trong lĩnh vực này
đều liên quan đến những hạn chế của thuật toán di truyền do cơ chế lấy lược đồ
(chọn các chuỗi) và các tính chất của hàm mục tiêu gây ra.
Sau đây chúng ta sẽ tìm hiểu một số cải tiến của thuật toán di truyền cổ điển đối
với những hạn chế trên.
2.4.1. Cải tiến về phương pháp chọn lọc (modGA1)
 Nội dung cải tiến:
Sau đây trình bày một cải tiến của GA cổ điển chuẩn (để cho tiện ta viết tắt là
GA_old), cải tiến này được gọi là modGA1. Khác với GA_old, trong modGA1 bước
chọn P(t) từ P(t-1) được thay thế bằng hai bước:
 Bước 1: Chọn r cá thể một cách độc lập (không nhất thiết phải khác nhau)
để cho tái tạo.
 Bước 2: Chọn r cá thể phân biệt để loại bỏ.
Việc chọn lọc trên được thực hiện dựa theo độ thích nghi của các cá thể, các cá
thể có độ thích nghi trên trung bình có nhiều khả năng được chọn để tái tạo hơn, các
cá thể có độ thích nghi dưới trung bình có khả năng được chọn để loại bỏ cao hơn.
Sau khi thực hiện hai bước trên ta có ba nhóm cá thể không nhất thiết rời nhau trong
quần thể:
 r cá thể (không nhất thiết khác nhau) để tái tạo.
 r cá thể (khác nhau) để loại bỏ.
 Các cá thể còn lại (trung hoà).
Số cá thể trung hoà trong một thế hệ có từ pop_size – 2r đến pop_size – r, tuỳ
thuộc vào số cá thể cha, mẹ phân biệt được chọn lọc và số các cá thể sinh và tử. Sau
đó một quần thể mới P(t+1) được xây dựng, gồm pop_size – r cá thể (trừ các cá thể
bị chọn loại bỏ), và r cá thể con của r cá thể cha, mẹ sinh ra. Sau đây là giải thuật
modGA1:

22



Procedure modGA1
Begin
T=0
Khởi tạo P(t)
Đánh giá P(t)
While (not (điều kiện dừng)) do
Begin
T=T+1
Chọn sinh từ P(t-1)
Chọn tử từ P(t-1)
Xây dựng P(t): Cho các cá thể cha mẹ sinh sản
Đánh giá P(t)
End
End.
Một vấn đề khó giải quyết với thuật toán trên là chọn r cá thể loại bỏ bằng
cách nào. Tất nhiên ta phải thực hiện bước chọn lọc này sao cho các cá thể tốt hơn
có xác suất chết thấp hơn. Để đạt mục đích đó, quá trình xây dựng quần thể mới
P(t+1) được tiến hành như sau:
 Bước 1: Chọn r cá thể cha, mẹ từ P(t), mỗi cá thể đã được chọn được đánh
dấu để được áp dụng chỉ một phép biến đổi gen.
 Bước 2: Chọn pop_size – r cá thể phân biệt từ P(t) và sao chép chúng sang
P(t+1).
 Bước 3: Chọn r cá thể cha, mẹ sinh sản tạo ra r cá thể con.
 Bước 4: Nhập r cá thể con vào quần thể P(t+1).
Quy trình chọn trên có một số ưu điểm sau:
o Các cá thể cha, mẹ và con đều có cơ hội có mặt trong thế hệ mới. Thật vậy,
một cá thể trên trung bình có khả năng được chọn để tái sinh, đồng thời nó cũng có

23



thể được chọn vào trong số pop_size – r cá thể của quần thể mới. Như vậy, có ít nhất
một cá thể con nó nằm trong số r cá thể còn lại trong quần thể.
o Việc áp dụng toán tử di truyền trên từng cá thể thay vì trên từng bit, điều
này có nghĩa là các toán tử di truyền (trao đổi chéo, đột biến, đảo gen), được sử
dụng một cách đồng nhất, một số cá thể cha, mẹ được trao đổi chéo, một số khác bị
đột biến, phần còn lại bị đảo gen.
 Ưu điểm của modGA1:
Qua nghiên cứu thuật toán di truyền cải tiến modGA1, ta thấy điểm mạnh nổi
bật của nó là: modGA1 tránh được có nhiều bản sao của một cá thể trong quần thể
mới (nó có thể xảy ra nhưng rất hữu hạn). Chính vì vậy nó hạn chế được sự hội tụ
sớm của thuật toán mà GA_old mắc phải.
2.4.2. Cải tiến về hàm mục tiêu
 Chuyển đổi hàm mục tiêu thành hàm thích nghi (fitness)
Ta đã giả thiết rằng hàm mục tiêu trong các bài toán được xét có miền giá trị
thuộc tập tương đương và ta chỉ xét các bài toán tối ưu tìm giá trị lớn nhất của hàm.
Những bài toán đã gặp trong thực tế là đa dạng, vấn đề này được giải quyết ra sao?
Để trả lời câu hỏi này ta lần lượt xét hai trường sau:
 Trường hợp 1: Nếu là bài toán tối ưu yêu cầu làm cực tiểu hàm f(x), ta đưa
bài toán làm cực đại hàm g(x) = -f(x). Khi đó giá trị X0pt làm cực đại hàm g(x) thì
cũng chính là điểm làm cực tiểu hàm f(x).
 Trường hợp 2: Nếu hàm mục tiêu f có cả giá trị âm, thì ta có thể cộng thêm
một hằng số dương C nào đó sao cho f(x) có miền giá trị thuộc tập dương.
 Phép sửa đổi hàm phù hợp theo từng bước lặp
Ở trên chúng ta đã đưa ra thuật toán modGA1, có nghĩa là đã đưa ra một kỹ
thuật mới trong việc xây dựng quần thể mới từ một quần thể cũ. Ta cũng có một số
cách tiếp cận khác để phục vụ những hạn chế của GA_old, các phương pháp này
liên quan đến tính chất của hàm cần được tối ưu. Trong những năm gần đây, có
nhiều hướng tiếp cận vấn đề này, chẳng hạn: Phương pháp luyện thép kỹ thuật thay


24


đổi entropy của hệ. Ở phương pháp này người ta đã điều khiển tốc độ hội tụ của
quần thể bằng cách biến đổi nhiệt độ động học với một tham số nhiệt độ toàn cục.
Phương pháp được nhiều người quan tâm nhất, được đưa ra trong những năm
gần đây là: biến đổi chính hàm phù hợp, bằng cách đưa ra một phép vị tự để thay đổi
hàm phù hợp, ta sẽ bàn chi tiết về phương pháp này. Goldberg đã phân ghép vị tự
thành ba loại sau đây:
 Phép vị tự tuyến tính: Ở phương pháp này, giá trị sửa đổi của hàm phù hợp
(fitness) fi’ được tính theo công thức sau: fi’ = a x fi + b.
Trong đó fi là giá trị ban đầu của hàm phù hợp, a, b là các tham số. Thường
các tham số a, b phải được chọn sao cho:
+ Độ thích nghi trung bình truớc sửa đổi fi(avg) và độ thích nghi trung bình sau
sửa đổi fi’(avg) là tương ứng nhau, để đảm bảo không làm ảnh hưởng tới pha chọn lọc,
bởi vì trong pha này những cá thể có độ thích nghi trên trung bình có nhiều khả năng
được chọn để tái sinh.
+ Độ thích nghi cao nhất có một khoảng cách nhất định với độ thích nghi trung
bình.
Phương pháp này được đánh giá là có hiệu quả cao trong việc khắc phục
những hạn chế của GA_old. Nhưng nó cũng nảy sinh vấn đề rắc rối sau: Trong
những thế hệ sau có thể nảy sinh các độ thích nghi âm, hơn nữa các tham số a, b
thường là cố định và không liên quan gì đến bài toán.

- Phép vị tự làm tròn xichma: Đây là phương pháp cải tiến của phép vị tự
tuyến tính, nhằm xử lý các giá trị thích nghi âm và đưa được các dữ kiện của bài
toán vào hàm đánh giá. Giá trị sửa đổi của hàm phù hợp (fitness) fi’ được tính theo
công thức sau:

fi '  f i  ( f  c   )

Trong đó, c là một số nguyên dương cho trước (thường được chọn trong
khoảng từ 1  5),  là độ chênh lệch tiêu chuẩn của quần thể, f là giá trị trung
bình của hàm phù hợp, các giá trị âm nếu có của f ’ được gán bằng 0.

25


×