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

Giải thuật di truyển và ứng dụng vào bài toán lập lịch thi

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 (1.94 MB, 69 trang )

Mục lục
Mục lục ...............................................................................................................1
LỜI NÓI ĐẦU ....................................................................................................3
CHƯƠNG 1 GIỚI THIỆU VỀ GAs ................................................................4
1.1 Tổng quát..............................................................................................4
1.2 Sơ lược Lịch sử phát triển .....................................................................5
1.3 Sơ lược về ưu và nhược của giải thuật di truyền ....................................7
1.4 Sơ đồ tổng thể của GAs.........................................................................8
1.5 Các cách biểu diễn trong giải thuật di truyền .......................................10
1.6 Hàm thích nghi....................................................................................12
1.7 Các toán tử của GAs............................................................................13
1.7.1
Chọn lọc ......................................................................................13
1.8 Lai ghép ..............................................................................................16
1.8.1
Lai ghép một điểm .......................................................................17
1.8.2
Lai ghép 2 điểm ...........................................................................17
1.8.3
Cắt và nối.....................................................................................17
1.8.4
Lai ghép đồng bộ và lai ghép bán đồng bộ ...................................17
1.8.5
Lai ghép được ánh xạ từng phần ..................................................18
1.8.6
Lai ghép thứ tự.............................................................................19
1.8.7
Lai ghép thứ tự tuyến tính ............................................................19
1.8.8
Lai ghép vòng ..............................................................................19
1.8.9


Lai ghép tuyến tính mở rộng với số thực ......................................20
1.9 Đột biến ..............................................................................................21
1.9.1
Đột biến chèn (Insertion Mutation) ..............................................21
1.9.2
Đột biến thay thế (Displacement Mutation)..................................21
1.9.3
Đột biến đảo đoạn (Inversion Mutation).......................................22
1.9.4
Đột biến tương hỗ (Reciprocal Exchange Mutation).....................22
1.9.5
Đột biến dịch chuyển (Shift Mutation) .........................................22
1.9.6
Đột biến ngẫu nhiên (đột biến đều) ..............................................22
1.9.7
Đột biến không đồng bộ (đột biến không đều)..............................22
1.10 Tái sinh ...............................................................................................23
1.11 Các tham số của giải thuật di truyền ....................................................23
1.11.1 Kích thước quần thể .....................................................................23
1.11.2 Xác suất lai ghép..........................................................................24
1.11.3 Xác suất đột biến..........................................................................24
CHƯƠNG 2 GIỚI THIỆU VỀ BÀI TOÁN LẬP LỊCH THI .........................25
2.1 Bài toán Lập Lịch Thi (LLT)...............................................................25
2.2 Các cách tiếp cho bài toán LLT và Sơ lược lịch sử của bài toán LLT ..28
2.2.1
Cách tiếp cận tìm kiếm ngẫu nhiên và tìm kiếm vét cạn ..............28
2.2.2
Các cách tiếp cận vận trù học .......................................................29
2.2.3
Cách tiếp cận sử dụng GAs ..........................................................31

CHƯƠNG 3 SỬ DỤNG GAs GIẢI QUYẾT BÀI TOÁN LLT .....................34
3.1 Phát biểu bài toán................................................................................34
3.2 Các loại ràng buộc...............................................................................34
3.2.1
Ràng buộc cạnh............................................................................34
1


3.2.2
Các ràng buộc thứ tự....................................................................36
3.2.3
Các ràng buộc về độ dàn trải của các sự kiện ...............................37
3.2.4
Các qui định trước và các loại trừ.................................................37
3.2.5
Các ràng buộc về không gian .......................................................38
3.2.6
Ràng buộc cứng và ràng buộc mềm..............................................38
3.3 Mô hình GA tổng quát cho bài toán LLT.............................................39
3.3.1
Cách biểu diễn bài toán ................................................................39
3.3.2
Giải quyết các ràng buộc..............................................................41
3.3.3
Khởi tạo .......................................................................................44
3.3.4
Tái sinh (Recombination).............................................................44
3.3.5
Độ thích nghi ...............................................................................45
3.3.6

Đột biến thông minh ....................................................................47
CHƯƠNG 4 CÁC THỬ NGHIỆM CỦA GAs CHO EDAI ...........................49
4.1 Giới thiệu bài toán LLT tại EDAI(1).....................................................49
4.1.1
Mô tả bài toán cụ thể....................................................................50
4.1.2
Bài toán AI/CS MSc ....................................................................51
4.1.3
Áp dụng GA cơ bản cho bài toán Lập lịch thi tại EDAI................52
4.1.4
Khung làm việc cụ thể cho bài toán EDAI ...................................55
4.1.5
Lượng giá ....................................................................................55
4.1.6
Các thử nghiệm............................................................................58
KẾT LUẬN.......................................................................................................67
NHẬN XÉT CỦA GIÁO VIÊN ........................................................................68
TÀI LIỆU THAM KHẢO .................................................................................69

2


LỜI NÓI ĐẦU
Xuất phát từ thực tế tồn tại nhiều bài toán chưa có phương pháp giải chấp
nhận được hay lời giải tối ưu, các nhà nghiên cứu đã đề xuất một phương pháp
tính toán dựa trên quan sát về quá trình tiến hoá trong tự nhiên. Phương pháp tính
toán đó được gọi là Tính toán tiến hóa (Evolutionary Computation). Tính toán
tiến hóa có nhiều nhánh nhỏ khác nhau, trong đó có thể kể tới ba lĩnh vực thu hút
nhiều quan tâm của các nhà khoa học: Các chiến lược tiến hóa (Evolutionary
Strategies), Lập trình tiến hóa (Genetic Programming) và Giải thuật di truyền

(Genetic Algorithms).
Giải thuật di truyền đã thu hút được nhiều chú ý trong những năm gần
đây. Lớp giải thuật này đã được chứng minh là có nhiều ưu điểm nổi trội so với
các loại thuật toán khác đặc biệt khi áp dụng chúng vào lớp bài toán tối ưu - một
lớp bài toán khó và có nhiều ứng dụng trong đời sống thực tiễn. Lớp giải thuật
này mô phỏng quá trình tiến hóa trong tự nhiên có kế thừa, đấ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 nhằm tìm kiếm lời giải tối ưu.
Giải thuật di truyền thích hợp đối với các hệ thống phức tạp mà các phương pháp
cổ điển làm việc không hiệu quả, hay thậm chí không thể tìm ra được lời giải.
Chính những ưu điểm nổi bật của GAs thúc đẩy em nghiên cứu về lớp giải
thuật này và thực hiện đề tài:
Giải thuật di truyền và ứng dụng vào bài toán Lập Lịch Thi.
Đề tài gồm có 4 chương:
Chương 1: Giới thiệu về Giải thuật di truyền
Chương này giới thiệu tổng quát về GAs, sơ lược về về quá trình phát triển
và phân tích sơ lược về ưu, nhược của GAs và các thành phần chi tiết của GA.
Chương 2: Giới thiệu về bài toán Lập Lịch Thi. Chương này giới thiệu
chi tiết bài toán Lập lịch thi theo tín chỉ (module).
Chương 3: Sử dụng GAs giải quyết bài toán LLT. Chương này mô tả bài
toán lập lịch thi chi tiết hơn và hướng giải quyết bài toán sử dụng GAs.
Chương 4: Các thử nghiệm với GA cho bài toán AI/CS. Chương này giới
thiệu các kết quả mà các nhà nghiên cứu đi trước đã thu được. Qua đó chúng ta
có thể thấy được ưu điểm của GAs để giải quyết các bài toán tối ưu khó nói
chung và các bài toán lập lịch thi nói riêng.
Thái Nguyên tháng 05 năm 2008

3


CHƯƠNG 1


GIỚI THIỆU VỀ GAs

1.1 Tổng quát
Từ lâu những người làm tin học đã rất quen thuộc với công thức:
Chương trình = giải thuật + cấu trúc dữ liệu
Trong đó giải thuật được định nghĩa là một dãy tuần tự hữu hạn các bước
mà chương trình bắt buộc phải thực hiện để sinh ra kết quả mong muốn. Trong
những thập niên gần đây, người ta bắt đầu quan tâm đến cách giải các bài toán
dựa trên qui luật tiến hóa của tự nhiên (thường sử dụng trong các bài toán lớn,
phức tạp, đặc biệt là các bài toán tối ưu). Các chương trình đó được gọi là các
chương trình tiến hóa (Evolution Program - EP), đó là các chương trình có sử
dụng các giả thuật đặc biệt dựa trên nguyên lý tiến hóa của tự nhiên. Các nhà
khoa học đã đưa ra một công thức mới trong việc xây dựng các chương trình:
EP = Giải thuật di truyền + cấu trúc dữ liệu
Chương trình tiến hóa được Rechenberg giới thiệu và những năm 1960
trong cuốn Evolution Strategies. Ý tưởng của ông sau này được nhiều nhà khoa
học kế thừa và phát triển. Còn giải thuật di truyền (Genetic Algorithm - GAs)
được ra đời sau, xuất hiện vào những năm 1970 do John Holland đề xuất.
Tác giả Holland đã đề ra 2 mục tiêu:
(1) Nâng cao hiểu biết về quá trình thích nghi với tự nhiên
(2) Thiết kế hệ thống nhân tạo có các đặc tính tương tự với hệ thống tự nhiên.
GAs là một lớp giải thuật được sử đụng để tìm kiếm lời giải tốt nhất cho bài
toán, đặc biệt các bài toán khó, nhờ việc áp dụng nguyên lý của thuyết tiến hóa
của khoa học máy tính. GAs có thể không tìm được giải pháp tối ưu, nhưng sẽ
đưa ra lời giải tương đối tốt trong điều kiện thời gian và không gian cho phép.
GAs là một phương pháp tính toán thích hợp cho việc giải quyết các bài toán tìm
kiếm và tối ưu.
Trong lĩnh vực nghiên cứu GAs người ta thường sử dụng các thuật ngữ vay
mượn của di truyền học như: cá thể, nhiễm sắc thể (NST), gen, quần thể, độ thích

nghi, lai ghép, đột biến, tái sinh, v.v… Trong đó cá thể (individuals, genotypes,
structure) biểu diễn một lời giải của bài toán (lời giải này có thể sai), trong giải
4


thuật di truyền thì một cá thể chỉ có một NST, khác với cá thể trong tự nhiên vậy
nên một cá thể cũng có thể được gọi là một NST (Chromosome). Các NST là
một chuỗi tuyến tính các đơn vị nhỏ hơn đó là các gen (Gene), mỗi gen biểu
diễn cho một đặc trưng và có một vị trí nhất định trong NST. Quần thể
(population) là một tập hợp nhiều cá thể có số lượng hữu hạn xác định, trong
GAs quần thể là một tập các lời giải (có thể gồm có cả lời giải sai). Chọn lọc
(selection), lai ghép (crosorver), đột biến (mutation), và tái sinh (generation) là
các phép toán thực hiện trên quần thể để tạo ra quần thể mới.
Một bài toán được giải bằng giải thuật di truyền thông thường phải trải qua
các bước:
 Biểu diễn di truyền cho lời giải của bài toán: biểu diễn bằng chuỗi nhị
phân, số thập phân, ký tự……
 Khởi tạo quần thể ban đầu gồm có N cá thể một cách ngẫu nhiên.
 Xây dựng hàm thích nghi làm tiêu chuẩn đánh giá các lời giải theo độ
thích nghi của chúng.
 Xác định kích thước quần thể, xác suất lai, xác suất đột biến….
 Xây dựng các phép toán di truyền: lai ghép, đột biến, tái sinh, chọn lọc.

1.2 Sơ lược Lịch sử phát triển
Vào những năm 1950 và 1960 một số nhà khoa học nghiên cứ các hệ thống
tiến hóa độc lập nhau với ý tưởng là tiến hóa có thể được sử dụng như một công
cụ tối ưu hóa cho các bài toán kỹ thuật. Ý tưởng trong tất cả các hệ thống liên
quan tới một quần thể các lời giải cho một bài toán cho trước, sử dụng các toán
tử bắt nguồn từ biến đổi gen và lựa chọn tự nhiên.
Vào những năm 1960, Rechenberg giới thiệu “các chiến lược tiến hóa”, một

phương pháp được ông sử dụng để tối ưu hóa các tham số thực cho các thiết bị
như máy bay. Ý tưởng này được tiếp tục phát triển sau đó bởi Schwefel. Lĩnh
vực các chiến lược tiến hóa vẫn là một lĩnh vực nghiên cứu được quan tâm nhiều,
hầu như phát triển độc lập với lĩnh vực giải thuật di truyền, nhưng gần đây 2 lĩnh
vực này bắt đầu có sự tương tác rõ nét hơn. Owens và Walsh (1966) đã phát triển
“Lập trình tiến hóa” một kỹ thuật trong đó các lời giải cho một bài toán cho trước
được biểu diễn dưới dạng các máy có trạng thái xác định, các máy này “tiến hóa”
5


nhờ đột biến (biến đổi) ngẫu nhiên các biểu đồ biến đổi trạng thái của chúng và
chọn những trạng thái tốt nhất. Các chiến lược tiến hóa, lập trình tiến hóa và giải
thuật di truyền cùng nhau tạo thành xương sống cho tính toán tiến hóa.
GAs được phát minh bởi John Holland trong những năm 1960 và được phát
triển bởi Holland với các sinh viên và đồng nghiệp của ông ở đại học Michigan.
Trong những năm 1960 và 1970. Không giống như các chiến lược tiến hóa và lập
trình tiến hóa, mục tiêu ban đầu của Holland là thiết kế các thuật toán để giải quyết
những bài toán cụ thể, nhưng sau đó từ những nghiên cứu hiện tượng thích nghi
xảy ra trong tự nhiên và để phát triển các phương pháp sử dụng các thích nghi như
trong tự nhiên ông thấy rằng chúng có thể được tích hợp trong máy tính.
Cuốn sách của Holland xuất bản năm 1975: “Thích nghi trong tự nhiên và
các hệ thống nhân tạo” giới thiệu giải thuật di truyền như là một khái niệm của
tiến hóa sinh học và đưa ra một nền móng lý thuyết cho tính thích nghi trong
GAs. Giải thuật di truyền của Holland là một phương pháp để di chuyển từ một
quần thể các NST sang một quần thể khác nhờ sử dụng một kiểu lựa chọn tự
nhiên cùng với các toán tử lai ghép, đột biến và đảo ngược. Mỗi NST gồm các
gen, mỗi gen là một thể hiện của một alen cụ thể. Toán tử lựa chọn chọn những
NST trong quần thể mà chúng cho phép sinh sản, và nói chung các NST thích
nghi tốt hơn tạo ra nhiều con hơn những NST có độ thích nghi thấp hơn. Lai
ghép là sự trao đổi những thành phần con của 2 NST, nó tương đối giống quá

trình lai ghép của 2 cá thể trong tự nhiên; sự đột biến ngẫu nhiên thay đổi các giá
trị alen của một số vị trí trong NST; và sự đảo ngược duy trì thứ tự của một phần
kề của NST, do đó sắp xếp lại thứ tự mà các gen được sắp đặt trước đó.
Việc đưa vào khái niệm quần thể của Holland cùng với các khái niệm lai
ghép, đảo ngược và đột biến thực sự là một cuộc cách mạng. Các chiến lược tiến
hóa của Rechenberg sử dụng quần thể với 2 cá thể, một cha/mẹ và một con, con
được đột biến đảo ngược so với cha/mẹ; một quần thể có nhiều cá thể và có sự lai
ghép đã không được đề cập lúc đầu. Lập trình tiến hóa của các tác giả Fogel,
Owens và Walsh cũng tương tự chỉ sử dụng đột biến để tăng tính đa dạng. Hơn
thế Holland là người đầu tiên cố gắng đặt sự tính toán tiến hóa trên nền tảng lý

6


thuyết vững chắc. Cho tới gần đây nền tảng lý thuyết này, dựa trên khái niệm sơ
đồ (schemas) là cơ sở cho hầu hết các thành tựu lý thuyết sau này về GAs.

1.3 Sơ lược về ưu và nhược của giải thuật di truyền
GAs được chú ý nhiều về mặt ứng dụng của nó trong các bài toán tối ưu
phức tạp. GAs đã được ứng dụng trong rất nhiều lĩnh vực khác nhau: khoa học tự
nhiên, khoa học xã hội, kinh tế - tài chính, giáo dục….. Những ứng dụng này có
thể được chia như sau:
 Tìm mô hình tối ưu cho bài toán. Đây có thể được xem là mặt mạnh
nhất của GAs, các ứng dụng phổ biến như: tối ưu hàm số, tối ưu hóa
cơ sở dữ liệu, tối ưu trong hóa học…
 Chọn lựa các nhóm hay thành phần trong một tổ chức.
 Hoạch định lộ trình, qui trình. Các ứng dụng phổ biến thuộc mảng này
như: điều khiển mạng lưới đèn giao thông, lập thời khóa biểu…..
GAs được ứng dụng rộng rãi là do có nhiều ưu điểm nổi bật:
 GAs là giải thuật rất mạnh và có thể giải quyết thành công một lượng

lớn các bài toán có độ phức tạp cao.
 Là phương pháp tìm kiếm tạo được sự cân đối đáng kể giữa việc khai
thác vào khảo sát không gian tìm kiếm.
 GAs thực hiện tiến trình tìm kiếm lời giải tối ưu theo nhiều hướng, duy
trì và xử lý một tập các lời giải, thúc đẩy sự hình thành và trao đổi
thông tin giữa các hướng này. Điều này giúp giảm khả năng gặp cực
tiểu địa phương.
 Thích hợp cho bài toán tìm kiếm trong không gian lớn nhưng lại hạn
chế về thời gian và chi phí.
Mặc dù GAs mới được xuất hiện trong thời gian gần đây nhưng đã có
những thành tựu nổi bật trong cả lý thuyết và ứng dụng. Đặc biệt người ta có thể
kết hợp GAs và các giải thuật khác để tạo nên một cơ chế điều khiển tự động
nhiều tầng, cho phép giải những bài toán tối ưu phức tạp nhanh chóng với độ
chính xác chấp nhận được.
7


Bên cạnh những ưu điểm nổi bật thì GAs cũng có nhiều hạn chế. Nhược
điểm lớn nhất của GAs là tốc độ hội tụ chậm. Sở dĩ có điều này là do sự kém
hiệu quả của các phép toán lai ghép và đột biến. Trong các toán tử này các NST
được tạo ra đôi khi rất kém hiệu quả. Do vậy mà quá trình tiến hóa của quần thể
sẽ bị chậm lại. Sự kém hiệu quả của 2 phép toán vừa đề cập là do chúng xây
dựng các NST mới dựa trên yếu tố ngẫu nhiên và không cần quan tâm tới hiệu
quả của chúng.

1.4 Sơ đồ tổng thể của GAs
GAs có thể được mô tả tổng quát như sau:
Bắt đầu
t = 0;
Khởi tạo quần thể P(t);

Tính giá trị thích nghi cho các cá thể của P(t);
Khi (điều kiện dừng chưa thỏa) lặp:
t = t+1;
Chọn lọc P(t) từ P(t-1);
Lai ghép P(t);
Đột biến P(t);
Tái sinh P(t);
Dừng lặp
Kết thúc.
Giải thích:
t: biến đếm
P(t): quần thể ở thế hệ (lần lặp) thứ t

8


Quá trình hoạt động của GAs có thể được biểu diễn bởi lưu đồ
dưới đây:

Begin

Khởi tạo quần thể

Tính giá trị thích nghi

Kiểm tra dừng

Chọn lọc

Lai ghép


Đột biến

Tái sinh

End

9


1.5 Các cách biểu diễn trong giải thuật di truyền
Để giải giải bài toán bằng GAs, trước hết phải tìm được cách biểu diễn di
truyền cho lời giải của bài toán - biểu diễn NST. Có nhiều phương pháp biểu
diễn khác nhau, nhưng cần dựa vào nội dung, yêu cầu, những tri thức của bài
toán cũng như yêu cầu đặt ra về tốc độ, lưu trữ….để lựa chọn cách biểu diễn
phù hợp.
Dưới đây là những cách biểu diễn NST thông dụng:

1.5.1.1

Biểu diễn bằng chuỗi nhị phân

Đây là phương pháp đầu tiên và cũng là phương pháp biểu diễn có tính
truyền thống trong GAs. Theo phương pháp này, mỗi gen của NST được mã hóa
bởi một số lượng bit nào đó. Một cá thể b có thể được biểu diễn
b = b1, b2, …, bn với b j  {0, 1} và n là độ dài chuỗi.
Cách biểu diễn này có nhược điểm là độ chính xác không cao khi số bit
dùng để biểu diễn nhỏ. Muốn tăng độ chính xác thì phải tăng số lượng bit dùng
để biểu diễn. Tuy nhiên điều này làm chậm thuật toán, tính chính xác có thể
không được như mong muốn.


1.5.1.2 Biểu diễn bằng số nguyên
Trong một số bài toán, phương pháp biểu diễn bằng chuỗi nhị phân không
phù hợp thì người ta có thể sử dụng phương pháp này. Ví dụ với bài toán người
du lịch, nếu như mã hóa một thành phố bởi một chuỗi bit cần [logn2], trong đó n
là số thành phố cần đi. Với n = 20, cần 5 bit để mã hóa. Khi đó có một chuỗi bit
không tương ứng với thành phố nào cả (10101), nói cách khác nó nằm ngoài
không gian tìm kiếm. Một phương pháp có thể được sử dụng thay thế, khắc phục
nhược điểm này là dùng số nguyên.
Một véc tơ v = (i1, i2, …, in) biểu diễn một đường đi, xuất phát từ i1 qua i2,
…, rồi đến in và trở về i1. các số ii là các số nguyên. Chúng ta có thể thấy rằng v
là một hoán vị của n thành phố trong không gian tìm kiếm.

10


Ví dụ dùng 3 bit biểu diễn cho 8 thành phố, ta có thể thu được:
Thành phố

Mã NST

0

000

1

001

2


010

3

011

4

100

5

101

6

110

7

111

1.5.1.3 Biểu diễn bằng số thập phân
Mỗi NST được mã hóa thành một véc tơ số dấu phẩy động cùng chiều với
chiều dài của véc tơ lời giải:
b = (x1, x2, …., xn)
Cách biểu diễn này có ưu điểm là khắc phục được nhược của cách biểu diễn
sử dụng xâu nhị phân, tuy nhiên độ chính xác còn phụ thuộc vào khả năng tính
toán của phần cứng (số chữ số thập phân sau dấy phẩy), nhưng nói chung là tốt

hơn cách biểu diễn nhị phân. Mặc dù ta có thể tăng độ chính xác của biểu diễn
nhị phân khi tăng thêm các bit, nhưng như thế thì làm cho tốc độ của giải thuật
chậm một cách đáng kể. Biểu diễn thực có khả năng biểu diễn được một miền rất lớn.
Ví dụ: dùng 8 chữ số từ 1 đến 8 biểu diễn cho 8 thành phố: 1, 2, 3, 4, 5, 6, 7, 8

1.5.1.4 Biểu diễn bằng chữ cái
Phương pháp này biểu diễn các NST bởi các chuỗi ký tự. Ví dụ của
phương pháp này là phương pháp mã hóa các qui tắc ngữ pháp tác giả Hiroaki
Kitano, trong đó sử dụng GAs để rút ra tập các luật cơ bản gọi là ngữ cảnh của
ngữ pháp.

11


Ví dụ: dùng các chữ cái: A, B, C, D để biểu diễn cho 8 thành phố.
Thành phố

Mã NST

1

ABCD

2

ABDC

3

DBAC


4

BCDA

5

BDAC

6

CDAB

7

CABD

8

DABC

1.5.1.5 Biểu diễn kết hợp chữ và số
Trong phương pháp biểu diễn này, các NST được mã hóa thành một chuỗi
các giá trị chữ và số. Phương pháp này có thể được sử dụng để mã hóa các lời
giải cho các bài toán tìm trọng số cho mạng nơ ron.
Ví dụ:
NST 1

1 2 3 4 5 6 7 8 9


NST 2

ABCDGHIHFPQ

NST 3

(trai), (phai), (truoc), (sau), (lui), tien)

1.6 Hàm thích nghi
Trong GAs, mỗi hàm thích nghi (hàm mục tiêu, hàm lượng giá) được xây
dựng để giả lập mối quan hệ giữa môi trường và khả năng thích nghi của mỗi cá
thể với môi trường. Đây là một trong những bước quan trọng và khó khăn nhất
khi áp dụng GAs trong thực tế.
Hàm thích nghi được sử dụng để tạo ra một hệ số thích nghi cho các cá thể
và cho cả quần thể. Thông thường thì hệ số thích nghi càng cao có nghĩa là cá thể
càng thích nghi tốt với môi trường, có nghĩa là khả năng sống sót qua các thế hệ sau
càng tăng.
Nhờ có hàm thích nghi mà GAs tuy mang tính chất ngẫu nhiên nhưng là
ngẫu nhiên có định hướng, hàm thích nghi đóng vai trò định hướng cho lời giải.

12


1.7 Các toán tử của GAs
Trong GAs thường sử dụng 4 loại toán tử di truyền chính nhằm sản sinh ra
thế hệ kế tiếp: chọn lọc, lai ghép, đột biến và tái sinh.
1.7.1 Chọn lọc
Toán tử chọn lọc là toán tử được thực hiện đầu tiên trong bốn toán tử của
GAs. Toán tử này chọn các NST theo thuyết tiến hóa của Darwin: NST tốt nhất
sẽ tồn tại và tạo ra các cá thể con mới. Cơ chế chọn lọc phải đảm bảo các NST có

độ thích hợp tốt hơn sẽ có xác suất được chọn cao hơn và kết quả của toán tử
chọn lọc không phụ thuộc vào các cách biểu diễn của NST. Chọn lọc là một
trong nhiều kỹ thuật làm tăng sự tiến hóa của loài.
Có nhiều phương pháp chọn lọc khác nhau được sử dụng: chọn lọc tỷ lệ,
chọn lọc xếp hạng, chọn lọc cạnh tranh…..
 Chọn lọc tỷ lệ
Chọn lọc tỷ lệ (roulette wheel selection) là phương pháp chọn lọc sử dụng
thủ tục quay Rullet được đề xuất bởi Holland. Giải thuật chọn lọc tỷ lệ có thể được
mô tả như sau:
Bước 1: Tính giá trị thích nghi fi, i = 1, 2, …, n của n cá thể. Sau đó tính
tổng giá trị thích nghi fsum =



n

i 1

f i của tất cả các thành viên trong

quần thể và gọi kết quả là tổng thích nghi tại thế hệ t.
Bước 2: Phát sinh một số ngẫu nhiên rand() trong khoảng [0, 1], và tập S.
S = fsum ×rand()
Bước 3: Thu được cá thể đầu tiên trong quần thể mà

n



i 1


f i ≥ S, và khi đó

chọn lọc k cá thể ở thế hệ t+1.
Bước 4: Lặp lại bước 2, và 3 cho đến khi số cá thể được chọn bằng n.

13


Roulette Wheel

10.3

20.8

22.1
16.7
6.3
23.8

Trên đây là một ví dụ của chọn lọc tỷ lệ, trong đó mỗi cá thể được gán một
phần của vòng tròn bánh xe Roulette. Các số biểu diễn trong mỗi phần tương ứng
với xác suất mỗi cá thể được chọn.


Chọn lọc giá trị kỳ vọng/ trung bình
Chọc lọc tỷ lệ nhằm chọn ra những cá thể tốt nhất nhưng lại có thể thất bại

trong các lần tái sinh kế tiếp và có thể dẫn đến những lỗi ngẫu nhiên. Để khắc
phục hạn chế này, một vài phương pháp cải tiến được kết hợp cùng với việc chọn

lọc tỷ lệ được đề xuất. Tác giải De Jong đã giới thiệu phương pháp chọn lọc giá
trị kỳ vọng (Expected value selection). Trong phương pháp này số con được kỳ
vọng của cá thể i được tính như sau: f i / f , trong đó f là giá trị thích nghi trung
bình trong quần thể hiện tại.
Trong chọn lọc giá trị kỳ vọng cho một quần thể gồm n NST, số con kỳ
vọng của NST thứ i được tính như sau:
Ni =

fi
n

i 1 f i

n

Khi đó, phần nguyên của Ni ký hiệu số các NST của thế hệ thứ i được duy
trì trong thế hệ kế tiếp. Còn phần thập phân của Ni là xác suất sống sót đến thế hệ
tiếp theo của cá thể i.


Chọn lọc khi lấy mẫu (Detemenistic Sampling)
Xác suất chọn lọc được tính như sau:
pi =

fi



N


14

j 1

fj


Khi đó số con cháu ei trong mội chuỗi Ai được tính như sau: ei = n*p i. Mỗi
chuỗi sẽ cấp phát mội số con cháu tùy thuộc vào giá trị ei. Những chuỗi còn lại
cần phải điền vào cho đầy một quần thể thì sẽ được lấy ra theo thứ tự đầu quần
thể được sắp xếp trước. Trong phương pháp lấy mẫu lại có 2 phương pháp nhỏ khác:
 Lấy phần tử còn lại ngẫu nhiên có thay thế (Remainder Stochatic Samling
with Replacement): Sau khi tính số con cháu ei trong phương pháp đã
được chọn để lọc lấy mẫu trong giai đoạn trên thì phần nguyên của ei sẽ
gán cho những cá thể có trong quần thể đó, còn phần thập phân của ei sẽ
được sử dụng để tính trọng số cho việc lựa chọn trên vòng tròn bánh xe để
sinh ra các thế hệ còn lại.
 Lấu mẫu còn lại ngẫu nhiên không thay thế: (Remainder Stochatic
Samling without Replacement): Phương pháp này cũng tương tự như trên
nhưng phần thập phân của ei được xem như là xác suất. Hay nói cách
khác, số lần tham gia vào trong quá trình sinh sản của một chuỗi bằng với
giá trị phần nguyên của ei. Sau đó, để đảm bảo đủ kích thước quần thể, ta
chọn những con cháu khác của những chuỗi với xác suất tương đương với
phần thập phân của số cá thể kỳ vọng cho đến khi đạt được kích thước N.


Chọn lọc xếp hạng (Rank Selection)
Phương Pháp chọn lọc xếp hạng sắp xếp cá thể dựa trên giá trị thích nghi

của chúng. Trong chọn lọc xếp hạng, quần thể được sắp xếp từ xấu nhất đến tốt

nhất, cá thể xấu nhất sẽ có gá trị là 1, kế tiếp là 2, …. Và cá thể tốt nhất có giá trị
thích nghi là N (N là số NST trong quần thể).
Chọn lọc xếp hạng có hai phương pháp đó là: chọn lọc xếp hạng tuyến tính
và chọn lọc xếp hạng phi tuyến.
 Chọn lọc xếp hạng tuyến tính: được đề xuất bởi Baker, trong đó mỗi cá
thể trong quần thể được sắp xếp theo độ tăng dần của hệ số thích nghi và
xác suất chọn lọc của mỗi cá thể i trong quần thể như sau:
Pi =

1 

 i 1 
    

N
N 1





Trong đó   và   là ký hiệu các giá trị kỳ vọng lớn nhất và nhỏ nhất,
đồng thời chúng xác định hệ số góc của hàm tuyến tính.
15


Điều kiện




N

i 1

p i  1 đòi hỏi   và   phải thỏa mãn 1<=   <= 2 và   =

2 -   . Thông thường thì giá trị của   =1.1.
 Chọn lọc xếp hạng phi tuyến theo hàm số mũ của Michalewicz: Pi = c(1-c)i-1
Trong đó c  (0,1) biểu diễn xác suất khi cá thể sắp xếp 1 được lựa chọn.
Có nhiều hàm số có thể sử dụng cho sơ đồ chọn lọc xếp hạng phi tuyến với điều
kiện giá trị của hàm giảm theo đối số i (vị trí của cá thể trong chuỗi).


Chọn lọc ưu tú (Elitist Selection)
Phương pháp chọn lọc ưu tú được De Jong giới thiệu. Ý tưởng của phương

pháp này như sau: một NST trong quần thể trước có hệ số thích nghi cao hơn so
với mọi NST trong quần thể hiện tại thì cá thể đó được sao chép vào quần thể
hiện tại.
Phương pháp này có thể gia tăng tốc độ tối ưu của một quần thể bởi những
NST tốt và do đó không những cải thiện được việc tìm kiếm cục bộ mà còn làm
cho GAs được thực hiện một cách hoàn thiện hơn. Tuy nhiên, cũng nên cẩn thận
khi sử dụng phương pháp này vì nó cũng có thể dẫn đến sự hội tụ sớm.


Chọn lọc cạnh tranh (Tounament Selection)
Trong chọn lọc cạnh tranh, mỗi lần lặp chọn ngẫu nhiên k NST và so sánh.

NST tốt nhất trong k NST đó được sao chép vào quần thể cha mẹ. Quá trình được
tiến hành N lần (N là số NST). Rõ ràng ta thấy nếu k lớn sẽ tăng thời gian tính

toán, giá trị k còn được gọi là kích thước cạnh tranh, thông thường k =2.

1.8 Lai ghép
Trong GAs, lai ghép là một toán tử di truyền được sử dụng để hình thành
NST mới trên cơ sở các NST cha mẹ bằng cách ghép các đoạn gen của hai hay
nhiều NST cha mẹ lại với nhau. Lai ghép nhằm tạo ra các cá thể mới ở thế hệ sau
tiến hóa hơn các cá thể cha mẹ. Toán tử lai ghép có ảnh hưởng lớn tới tốc độ hội
tụ của giải thuật.
Tuy nhiên không giống như toán tử chọn lọc, một số toán tử lai ghép chỉ
hoạt động được với sơ đồ biểu diễn (mã hóa) NST bởi số thực.
Dưới đây là một số kỹ thuật lai ghép.

16


1.8.1 Lai ghép một điểm
Chọn trên chuỗi cơ thể cha mẹ một vị trí để lai ghép. Tại điểm đó, chuỗi
cha mẹ được chia cắt làm 2 vùng khác nhau. Đem vùng 1 của cha ghép với vùng
2 của mẹ và vùng 1 của mẹ ghép với vùng 2 của cha ta thu được con.
1.8.2 Lai ghép 2 điểm
Chọn trên chuỗi cơ thể cha mẹ 2 điểm, 2 điểm này chia chuỗi cha mẹ làm
3 vùng dữ liệu riêng biệt. Sau đó đem vùng 2 (vùng ở giữa) của chuỗi cha hoán
đổi cho vùng 2 của chuỗi mẹ, ta sẽ thu được con.
1.8.3 Cắt và nối
Đây là một phương pháp lai ghép khác, kết quả chuỗi con thu được có chiều
dài khác với chuỗi cha mẹ. Chuỗi cha mẹ được lựa chọn 2 vị trí lai ghép khác nhau,
do vậy mà chuỗi con có chiều dài khác nhau. Tiến hành chọn ở chuỗi cha 2 điểm có
vị trí khác nhau, mỗi điểm chia chuỗi tương ứng thành 2 vùng dữ liệu. Cắt lấy vùng
1 của chuỗi 1 ghép với vùng 2 của chuỗi 2 và đem vùng 2 của chuỗi 1 ghép với
vùng 1 của chuỗi 2 ta được 2 con có chiều dài khác chiều dài bố mẹ.

1.8.4 Lai ghép đồng bộ và lai ghép bán đồng bộ
Trong lai ghép đồng bộ (Uniform scheme - UX), người ta tạo ngẫu nhiên
một “mặt nạ”. Tùy theo giá trị các bit tương ứng trên mặt nạ mà bit của cha mẹ
thứ nhất hay thứ 2 sẽ được sao chép sang cá thể con. Các bit được trao đổi với
một xác suất cố định, thường được chọn là 0.5. Trong mặt nạ lai ghép (Crossover
Mask) nếu là bit 1 thì gen của con sẽ được sao chép từ cha/mẹ thứ nhất, và ngược
lại, nếu là bit 0 thì gen sẽ được sao chép từ cha/mẹ thứ 2, như mô tả dưới đây:
Mặt nạ lai ghép: 1 0 0 1 0 1 1 1 0 0
Cha/mẹ thứ 1: 1 0 1 0 0 0 1 1 1 0
Con thứ 1:

1100001111

Cha/mẹ thứ 2: 0 1 0 1 0 1 0 0 1 1

17


Quá trình này được lặp lại với các cha mẹ khác để tạo ra các con cháu
khác. Một mặt nạ lai ghép được tạo ngẫu nhiên cho mỗi cặp cha mẹ. Vì vậy các
con đều đảm bảo gồm sự pha trộn gen từ cha mẹ chúng.
Trong sơ đồ lai ghép bán đồng bộ (Half Uniform Crossover Schemem
HUX), các bit trong chuỗi được so sánh giữa hai cha mẹ và đúng một nửa số bit
không giống sẽ được trao đổi.
Ở đây nếu như toán tử lai ghép một điểm hay nhiều điểm được áp dụng
cho các cá thể được tạo ra bởi hoán vị {1, 2, …, n} cho các bài toán hoán vị như
bài toán người bán hàng, bài toán lập lịch thì cả hai con tạo ra một hoán vị giống
nhau. Để giải quyết vấn đề đó, người ta đưa ra một số phương pháp lai ghép khác.
1.8.5 Lai ghép được ánh xạ từng phần
Kỹ thuật lai ghép được ánh xạ từng phần (Partially matched crossover PMX) được tác giả Goldberg và Lingle đề xuất. PMX được cải tiến từ phương

pháp lai ghép 2 điểm. Một chuỗi con được chọn bằng cách chọn ngẫu nhiên hai
điểm cắt, được dùng làm hai giới hạn cho các thao tác hoán vị. Mục đích của
phương pháp này là thay thế một số gen nhưng giữ nguyên càng nhiều đoạn cấu
trúc cha mẹ nếu có thể. Ví dụ:
Cha/mẹ thứ nhất: 1 2 3 | 4 5 6 7 | 8 9
Cha/mẹ thứ hai: 7 4 8 | 6 3 2 9 | 1 4
Giả sử chọn hai điểm cắt là 3 và 8, tức chọn vị trí từ 4 tới 7 trên chuỗi
cha/mẹ để thay đổi (như ví dụ sử dụng dấu | để đánh dấu). Ta sẽ thu được các con
như sau:
Con thứ nhất: 1 * * | 6 3 2 9 | 8 *
Con thứ hai: * * 8 | 4 5 6 7| 1 *
Sau đó chúng ta thực hiện đối với các vị trí xung đột và thay thế những
gen được đổi cho con khác. Như ở ví dụ thay thế 9 vở NTS thứ 1 bởi 5 và thay
thế 5 ở NST thứ 2 bởi 9. Thực hiện tương tự với các vị trí còn lại ta thu được con
đầy đủ:
Con thứ nhất: 1 7 4 | 6 3 2 9 | 8 5
Con thứ hai: 2 3 8 | 4 5 6 7| 1 9

18


1.8.6 Lai ghép thứ tự
Kỹ thuật lai ghép thứ tự (Order Crossover - OX) được tác giả Davis đề
xuất dựa vào ý tưởng là thứ tự của các thành phố quan trọng hơn vị trí của
chúng trong chuỗi. Tương tự như PMX, nó tạo ra các con bằng cách chọn một
chuỗi con từ một cha mẹ và giữ nguyên thứ tự tương đối của các thành phố của
cha mẹ kia.
Xét ví dụ sau:
Cha mẹ thứ nhất: 1 2 3 | 4 5 6 7 | 8 9
Cha mẹ thứ hai: 7 4 8 | 6 3 2 9 | 1 5

Thu được các con như sau:
Con thứ nhất: * * * | 6 3 2 9 | * *
Con thứ hai: * * * | 4 5 6 7 | * *
Sau đó tiến hành tiếp, với thứ tự các vị trí của con thứ nhất viết lại các vị
trí trong cha mẹ thứ nhất nhưng bắt đầu từ vị trí sau điểm cắt thứ hai:
891234567
Sau khi đã bỏ đi các giá trị đã có của con thứ hai ta thu được:
81457
Thứ tự này được chèn vào con thứ nhất bắt đầu từ điểm cắt thứ hai, được:
457 |6329 |81
Tương tự ta thu được con thứ hai:
329 |4567 |18
1.8.7 Lai ghép thứ tự tuyến tính
Lai ghép thứ tự tuyến tính (Linear Order crossover - LOX) thích hợp cho
bài toán xếp công việc của cửa hàng (Job - Shopping Scheduling) được tác giải
Davis đề xuất. Xuất phát từ thực tế quan sát người ta thất rằng kỹ thuật này hoạt
động khá tốt với sơ đồ biểu diễn số thực.
1.8.8 Lai ghép vòng
Phương pháp lai ghép vòng (Circle Crossover - CX) phù hợp cho bài toán
người du lịch và được tác giả Oliver đề xuất.

19


Ví dụ:
Cha/mẹ thứ nhất: 1 2 3 | 4 5 6 7 | 8 9
Cha mẹ thứ hai: 7 4 8 | 6 3 2 9 | 1 5
Bắt đầu từ vị trí thứ nhất của con thứ nhất:
Con thứ nhất:


1*******

Con thứ hai:

********

Con cháu thứ hai có thể chỉ có 7 trong ở vị trí thứ nhất vì ta không muốn
một thành phố mới được giới thiệu ở đây. Vậy nên có:
Con thứ nhất:

1*******

Con thứ hai:

7*******

Trong cha/mẹ thứ nhất, 7 ở vị trí thứ bảy và 9 ở vị trí thứ bảy trong con
thứ 2. Nên ta có:
Con thứ nhất:

1*******

Con thứ hai:

7*******

Quá trình này lặp đi lặp lại cho đến khi thành các phố đã được xem xét, và
ta có một chu trình con:
Con thứ nhất:


1*3*5*7 89

Con thứ hai:

7*8*3*9 15

Đối với chu trình thứ hai, chúng ta có thể bắt đầu với thành phố từ cha mẹ
thứ hai và chèn nó vào chon cháu thứ nhất.
Con thứ nhất:

143*5*7 89

Con thứ hai:

728*3*9 15

Cứ như vậy ta sẽ xác định được hai con, ở đây ta thu được:
Con thứ nhất:

1436527 89

Con thứ hai:

7284369 15

1.8.9 Lai ghép tuyến tính mở rộng với số thực
Phương pháp này được thực hiện qua hai giai đoạn:
 Chọn một điểm cắt ngẫu nhiên trên chuỗi cơ thể cha mẹ tạo ra hai
không gian con.
 Thực hiện hai toán tử lai ghép tuyến tính trên các không gian con đó.

Khoảng mở rộng về hai phía của hai cá thể cha mẹ.

20


1.9 Đột biến
Trong giải thuật di truyền, đột biến là một toán tử di truyền được dùng để
duy trì tính đa dạng di truyền từ một thế hệ của một quần thể cho thế hệ tiếp sau.
Đột biến là sự biến đổi một hay nhiều gen của cá thể được chọn, nó tương tự như
đột biến của sinh học.
Mục đích của sự đột biến trong giải thuật di truyền là để giải thuật tránh gặp
cực tiểu địa phương hay là hội tụ cục bộ.
Cũng giống như lai ghép, toán tử này làm tăng nhanh quá trình hội tụ,
nhưng có thể tăng một cách đột ngột và cũng có thể là không gây ra tác dụng
nhiều. Tùy thuộc vào cách biểu diễn NST mà có nhiều phương pháp đột biến
khác nhau, từ đơn giản tới phức tạp. Rất khó để kết luận rằng phương pháp nào là
tối ưu nhất.
Đối với cách biển diễn bằng bit, người ta có thể sử dụng một biến ngẫu nhiên
cho mỗi bit trong chuỗi, và biến này sẽ quyết định bit đó được thay đổi hay không.
Đối với cách biểu diễn bằng số nguyên, thì có một số phương pháp phổ
biến sau:
1.9.1 Đột biến chèn (Insertion Mutation)
Trong đột biến chèn, tiến hành chọn ngẫu nhiên một gen trong chuỗi NST
và sau đó chèn nó vào vị trí ngẫu nhiên..
Ví dụ:
NST:

756892341

Đột biến:


753689241

1.9.2 Đột biến thay thế (Displacement Mutation)
Phương pháp này chọn ngẫu nhiên một chuỗi con trong chuỗi NST sau đó
chèn nó vào vị trí ngẫu nhiên. Đột biến chèn có thể được xem là trường hợp đặc
biệt của đột biến thay thế, trong đó chuỗi được lựa chọn chỉ có một gen.
Ví dụ:
NST:

756892341

Đột biến:

756923841

21


1.9.3 Đột biến đảo đoạn (Inversion Mutation)
Phương pháp đột biến đảo đoạn lựa chọn hai vị trí ngẫu nhiên trong chuỗi
NST, sau đó đảo nghịch chuỗi giữa hai vị trí này.
Ví dụ:
NST:

756892341

Đột biến:

756329841


1.9.4 Đột biến tương hỗ (Reciprocal Exchange Mutation)
Trong phương pháp này, chọn ngẫu nhiên hai vị trí trong chuỗi NST và sau
đó hoán vị gen trên những vị trí này.
Ví dụ:
NST:

756892341

Đột biến:

753892641

1.9.5 Đột biến dịch chuyển (Shift Mutation)
Đột biến dịch chuyển tiến hành lựa chọn ngẫu nhiên một gen, sau đó dịch
chuyển chúng đến mọt vị trí ngẫu nhiên sang trái hay phải trong NST.
Ví dụ:
NST:

756892341

Đột biến trái:

756893241

Đột biến phải:

756892431

Các phương pháp đột biến cho không gian biểu diễn thực:

1.9.6 Đột biến ngẫu nhiên (đột biến đều)
Tiến hành Chọn ngẫu nhiên gen i của NST b = (x1, x2, …, xn), mỗi xi được
thay bởi một giá trị ngẫu nhiên trong miền tham số tương ứng [ai, bi], xác suất
đột biến của các xi là như nhau.
1.9.7 Đột biến không đồng bộ (đột biến không đều)
Trong phương pháp này, tác động của đột biến có thể giảm the số thế hẹ của
quần thể. Giả sử tmax là số thế hệ tối đa cho trước. Tương tự như đột biến ngẫu
nhiên, mỗi xi được thay bởi một trong hai giá trị:

22


xi'  xi   (t , bi  xi ) , nếu chữ số ngẫu nhiên là 0
xi''  xi   (t , xi  a i ) , nếu chữ số ngẫu nhiên là 1

Trong đó hàm (t , x) xác định được số bước đột biến trong miền [0, x] sao
cho xác suất của (t , x ) gần bằng 0 sẽ tăng khi t tăng theo công thức sau:

t 

 1

 t



max 
 (t , x)  x.1  




r







Tron đó λ là một hệ số ngẫu nhiên trong khoảng [0,1], t là thế hệ đang khảo
sát, r là tham số hệ thống xác định mức độ không đồng bộ, nghĩa là tham số r xác
định ảnh hưởng của thế hệ t dựa vào sự phân phối của các bước đột biến trong
miền [0, x].

1.10 Tái sinh
Phép tái sinh là quá trình sao chép các NST vào thế hệ tiếp theo tùy thuộc
vào hệ số thích nghi của chúng trong quần thể đang khảo sát.

1.11 Các tham số của giải thuật di truyền
1.11.1 Kích thước quần thể
Kích thước quần thể là số các NST trong một quần thể (hay còn gọi trong
một thế hệ). Nếu kích thước quần thể quá nhỏ thì GAs có ít khả năng thực hiện
lai ghép và chỉ một phần nhỏ của không gian tìm kiếm được khảo sát. Nếu có quá
nhiều NST trong quần thể thì GAs sẽ làm việc khá chậm chạp. Thực nghiệm cho
thấy rằng sau một số giới hạn, nếu sử dụng các quần thể có kích thước rất lớn thì
không khả thi. Kích thước quần thể thường khoảng 20-30 là chấp nhận được và
đôi khi có thể lên 50 đến 100. Người ta cũng chứng minh rằng kích thước quần
thể phụ thuộc kích thước của NST, nếu kích thước NST là 32 bit thì kích thước
quần thể sẽ lớn hơn kích thước của quần thể có các NST có kích thước là 16 bit.


23


1.11.2 Xác suất lai ghép
Xác suất lai ghép là xác suất mà mỗi cá thể trong quần thể có cơ hội được
chọn để thực hiện lai ghép. Nếu không lai ghép thì các con được sao chép nguyên
bản từ cha mẹ của chúng. Nếu có lai ghép thì các con được tạo ra từ một phần
của cha mẹ của chúng. Khi xác suất lai ghép là 1 hay 100% thì tất cả các con
được tạo ra bởi lai ghép. Ngược lại nếu xác suất lai ghép là 0 hay 0% thì tất cả
các con được tạo ra bằng cách sao chép nguyên bản từ cha mẹ. Việc xác định xác
suất lai ghép là tùy thuộc vào bài toán và có tính chất kinh nghiệm.
1.11.3 Xác suất đột biến
Xác suất đột biến là xác suất để một bit bất kỳ của cá thể trong quần thể bị
đột biến. Nếu không có đột biến, các con được tạo ra ngay sau lai ghép mà không
có thay đổi gì. Nếu thực hiện đột biến, thì sẽ có các cá thể mới được sinh ra sau
khi lai ghép. Nếu như xác suất này là 1 hay 100% thì tất cả các con sau khi được
sinh ra từ lai ghép sẽ được biến đổi. Ngược lại khi tỉ lệ này là 0% thì các con mới
sinh ra chính là kết quả đơn thuần của lai ghép mà thôi.
Thông thường thì xác suất đột biến nhỏ hơn xác suất lai ghép rất nhiều.
Theo như kết quả nghiên cứu của tác giả De Jong thì xác suất lai ghép trung bình
là 0.6 trong khi đó xác suất đột biến trung bình là 0.001 và 0.399 cho tái sinh.

24


CHƯƠNG 2 GIỚI THIỆU VỀ BÀI TOÁN LẬP LỊCH THI
Như chúng ta đã biết, GAs là một nhóm phương pháp giải quyết bài toán
nhờ sử dụng các thuật toán dựa theo quá trình tiến hóa theo lý thuyết tiến hóa của
Darwin. Trong GAs, kết quả của một tập lời giải khả thi cho bài toán (gọi là các
NST) được đánh giá và sắp xếp, sau đó những lời giải mới được sinh ra bằng

cách lựa chọn những lời giải khả thi làm cha mẹ và áp dụng các toán tử đột biến
hay lai ghép để kết hợp các bit của 2 cha mẹ để sinh ra một hay nhiều con. Tập
lời giải mới được đánh giá, và chu kỳ như vậy lặp lại cho tới khi lời giải thỏa
mãn yêu cầu được tìm thấy.

2.1 Bài toán Lập Lịch Thi (LLT)
Một bài toán LLT là một dạng bài toán mà các sự kiện (môn thi) cần được
sắp xếp vào một số khoảng thời gian (time slot) và tuân theo nhiều ràng buộc
khác nhau. Nhu cầu cần có những phương pháp giải bài toán LLT lớn là rất rõ
ràng, ví dụ như có e môn thi cần sắp xếp vào t khoảng thời gian khác nhau thì sẽ
có te lời giải khả thi, mỗi lời giải có mức độ tối ưu khác nhau phụ thuộc vào các
ràng buộc của bài toán.
Các phương pháp LLT thông thường quan tâm tới việc tìm thời gian biểu
ngắn nhất thỏa mãn tất cả các ràng buộc, thường sử dụng thuật toán tô màu
(graph-colouring algorithm) và ít quan tâm tới sự tối ưu với một tập các ràng
buộc mềm. Đó là tìm ra một tập các môn thi có thể sắp xếp vào cùng thời điểm,
tương ứng với việc tìm ra một cách tô màu sao cho những điểm kề có màu khác
nhau: mỗi màu biểu diễn một khoảng thời gian và mỗi cạnh biểu diễn một ràng
buộc mà 2 đỉnh nối với nhau phải ở những khoảng thời gian khác nhau (có màu
khác nhau). Các cách tiếp cận dựa tri thức hay dựa vào phép OR để giải những
bài toán này rất khó có thể xây dựng, và thường không mềm dẻo. Những ứng
dụng lập lịch truyền thống thường chỉ thỏa mãn các ràng buộc đơn giản nhưng
rất khó thỏa mãn các ràng buộc mềm. Thường thì con người vẫn phải sắp xếp lại
bằng tay xuất phát từ một lời giải có sẵn và thay đổi lời giải đó. Điều này thường
dẫn tới những lời giải tối ưu địa phương và gây ra bất lợi về tổ chức cũng như tài
chính, kinh tế.
25



×