Giải thuật di truyền GA(GENETIC ALGORITHM) do D.E. Goldberg đề xuất, sau đó được L. Davis và Z. Michalevicz phát triển, đây cũng chính là một trong các thuật toán tiến hóa. Thuật toán tiến hóa là các chương trình máy tính có dùng các thuật toán tìm kiếm, tối ưu hóa dựa trên nguyên lý tiến hóa tự nhiên.
Trang 1MỤC LỤC
1 CHƯƠNG 1: GIẢI THUẬT DI TRUYỀN 2
1.1 GIỚI THIỆU 2
1.2 CÁC KHÁI NIỆM CƠ SỞ 3
1.2.1 Lai ghép 3
1.2.2 Đột biến 3
1.2.3 Chọn lọc 4
1.2.4 Nhiễm sắc thể 4
1.2.5 Cá thể 4
1.2.6 Quần thể 4
1.3 SƠ ĐỒ CHUNG CỦA GIẢI THUẬT DI TRUYỀN 5
1.4 CÁC PHƯƠNG PHÁP MÃ HÓA VÀ KHỞI TRỊ 6
1.4.1 Mã hóa dạng nhị phân 7
1.4.2 Mã hóa dạng số thực 8
1.4.3 Mã hoá hoán vị: 9
1.4.4 Tạo lập lời giải ban đầu (khởi tạo quần thể) 9
1.5 XÂY DỰNG HÀM THÍCH NGHI (hàm phù hợp) 9
1.6 CÁC TOÁN TỬ DI TRUYỀN 10
1.6.1 Toán tử chọn lọc (Selection) 11
1.6.2 Toán tử lai ghép (crossover) 14
1.6.3 Toán tử đột biến (Mutation) 17
2 CHƯƠNG2: ỨNG DỤNG GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN RA ĐỀ THI TỐI ƯU 21
2.1 Bài toán 21
2.2 Các yêu cầu chung của việc ra đề: 22
Các yêu cầu của đề thi: 22
2.3 Mô hình bài toán ra đề thi: 24
2.3.1 Phân tích bài toán: 24
2.3.2 Bài toán tìm đề thi tối ưu thuộc vào lớp bài toán NP-đầy đủ 25
2.3.3 Xây dựng cá thể, hàm thích nghi và các phép toán di truyền 25
KẾT LUẬN 29
Tài liệu tham khảo: 30
Trang 21 CHƯƠNG 1: GIẢI THUẬT DI TRUYỀN
1.1 GIỚI THIỆU
Giải thuật di truyền GA(GENETIC ALGORITHM) do D.E Goldberg đề
xuất, sau đó được L Davis và Z Michalevicz phát triển, đây cũng chính là mộttrong các thuật toán tiến hóa Thuật toán tiến hóa là các chương trình máy tính
có dùng các thuật toán tìm kiếm, tối ưu hóa dựa trên nguyên lý tiến hóa tựnhiên
Giải thuật di truyền được hình thành dựa trên quan niệm: quá trình tiến
hóa tự nhiên là quá trình hoàn hảo và hợp lý nhất, tự quá trình này đã mang tính tối ưu Quan niệm này là một tiên đề đúng, không chứng minh được nhưng
phù hợp với thực tế khách quan Tính tối ưu của quá trình tiến hóa thể hiện ởđặc điểm, thế hệ sau bao giờ cũng tốt hơn (phát triển hơn, hoàn thiện hơn) thế
hệ trước Tiến hóa tự nhiên được duy trì nhờ hai quá trình cơ bản là sinh sản vàchọn lọc tự nhiên, trong suốt quá trình tiến hóa tự nhiên, các thế hệ mới luônđược sinh ra để bổ sung thay thế thế hệ cũ Cá thể nào phát triển hơn, thích ứnghơn với môi trường sẽ tồn tại, cá thể nào không thích ứng được với môi trường
sẽ bị đào thải Sự thay đổi của môi trường là động lực thúc đẩy quá trình tiếnhóa, ngược lại tiến hóa cũng tác động trở lại góp phần thay đổi môi trường
Giải thuật di truyền là giải thuật tìm kiếm, chọn lựa các giải pháp tối ưu
để giải quyết các bài toán thực tế khác nhau, dựa trên cơ chế chọn lọc của tựnhiên: từ tập lời giải ban đầu, thông qua nhiều bước tiến hoá, hình thành tập lờigiải mới phù hợp hơn, và cuối cùng dẫn đến lời giải tối ưu toàn cục
Trong tự nhiên, mỗi cá thể muốn tồn tại và phát triển phải thích nghi vớimôi trường, cá thể nào thích nghi hơn thì tồn tại, cá thể nào kém thích nghi thì
bị tiêu diệt Trong mỗi cá thể, các gen liên kết với nhau theo cấu trúc dạngchuỗi, gọi là nhiễm sắc thể (NST) Mỗi NST đặc trưng cho mỗi loài và quyếtđịnh sự sống còn của cá thể đó Do môi trường tự nhiên luôn biến đổi nên cấu
Trang 3trúc NST cũng thay đổi để thích nghi với môi trường và thế hệ sau luôn thíchnghi hơn thế hệ trước Cấu trúc này có được do sự trao đổi thông tin có tínhngẫu nhiên với môi trường bên ngoài hoặc giữa các NST với nhau.
Từ ý tưởng đó, các nhà khoa học đã nghiên cứu và xây dựng nên giảithuật di truyền dựa trên cơ sở chọn lọc tự nhiên và quy luật tiến hoá Giải thuật
di truyền sử dụng các thuật ngữ được lấy từ di truyền học như: lai ghép, độtbiến, NST, cá thể Ở đây mỗi cá thể được đặc trưng bởi một tập nhiễm sắc thể,nhưng để đơn giản khi trình bày, ta xét trường hợp tế bào mỗi cá thể chỉ mộtNST Các NST được chia nhỏ thành các gen được sắp xếp theo một dãy tuyếntính Mỗi cá thể (hay NST) biểu diễn một lời giải có thể của bài toán Một xử lýtiến hoá duyệt trên tập các NST tương đương với việc tìm kiếm lời giải trongkhông gian lời giải của bài toán Quá trình tìm kiếm phải đạt được hai mục tiêu:
+ Khai thác những lời giải tốt nhất+ Xem xét trên toàn bộ không gian tìm kiếm
1.2 CÁC KHÁI NIỆM CƠ SỞ
1.2.1 Lai ghép
Lai ghép trong tự nhiên là sự kết hợp các tính trạng của bố mẹ để sinh rathế hệ con Trong giải thuật di truyền, lai ghép là quá trình hình thành nhiễm sắcthể mới trên cơ sở của nhiễm sắc thể cha mẹ, bằng cách ghép một hay nhiềuđoạn gen của hai (hay nhiều) nhiễm sắc thể của cha mẹ với nhau
1.2.2 Đột biến
Đột biến là một sự biến đổi tại một (hay một số) gen của nhiễm sắc thểban đầu để tạo ra một nhiễm sắc thể mới Đột biến có xác suất xảy ra thấp hơnlai ghép Đột biến có thể tạo ra một cá thể mới tốt hơn hoặc xấu hơn cá thể banđầu Tuy nhiên trong giải thuật di truyền thì ta luôn muốn tạo ra những phép độtbiến cho phép cải thiện lời giải qua từng thế hệ
Trang 41.2.3 Chọn lọc
Trong tự nhiên, quá trình chọn lọc và đấu tranh sinh tồn đã làm thay đổicác cá thể trong quần thể Những cá thể tốt, thích nghi được với điều kiện sốngthì có khả năng đấu tranh lớn hơn, do đó có thể tồn tại và sinh sản Các cá thểkhông thích nghi được với điều kiện sống thì dần mất đi Dựa vào nguyên lý củaquá trình chọn lọc và đấu tranh sinh tồn trong tự nhiên, chọn lựa các cá thểtrong GA chính là cách chọn các cá thể có độ thích nghi tốt để đưa vào thế hệtiếp theo hoặc để cho lai ghép, với mục đích là sinh ra các cá thể mới tốt hơn
Có nhiều cách để lựa chọn nhưng cuối cùng đều nhằm đáp ứng mục tiêu là các
cá thể tốt sẽ có khả năng được chọn cao hơn
1.2.4 Nhiễm sắc thể
Một NST được tạo thành từ nhiều gen, mỗi gen có thể có các giá trị khácnhau để quy định một tính trạng nào đó Trong GA, một gen được coi như mộtphần tử trong chuỗi NST
1.2.5 Cá thể
Một cá thể trong giải thuật di truyền, biểu diễn một giải pháp của bàitoán Tuy nhiên không giống với trong tự nhiên, một cá thể có nhiều nhiễm sắcthể, có một thì gọi là thể đơn bội, còn nếu có nhiều thì là thể đa bội, ở đây đểgiới hạn trong giải thuật di truyền ta quan niệm một cá thể có một nhiễm sắcthể Do đó khái niệm cá thể và nhiễm sắc thể của giải thuật di truyền trong tiểuluận này được coi là tương đương
1.2.6 Quần thể
Là tập hợp các cá thể cùng loài, cùng sống trong một khoảng không gianxác định vào một thời gian nhất định, có khả năng sinh sản và tạo thành thế hệmới Trong giải thuật di truyền ta quan niệm quần thể là một tập các lời giải
của một bài toán.
Trang 51.3 SƠ ĐỒ CHUNG CỦA GIẢI THUẬT DI TRUYỀN
Với các khái niệm được nêu ở trên, giải thuật di truyền có thể được mô tảvắn tắt như sau:
Khởi tạo quần thểBắt đầu
Đánh giá độ thích nghi
Chọn lọcLai ghépĐột biếnKiểm tra điều kiện
Kết quảKết thúc
KhôngThỏa
Hình: Sơ đồ cấu trúc giải thuật di truyền
Trang 6Giải thích các khối trong sơ đồ:
1 [Bắt đầu ] Nhận các tham số cho thuật toán.
2 [Khởi tạo quần thể] Sinh ngẫu nhiên một quần thể gồm M cá thể (là M
lời giải cho bài toán)
3 Tạo quần thể mới bằng cách lặp lại các bước sau cho đến khi quần thể
mới hoàn thành
a.[Đánh giá độ thích nghi] Đánh giá độ thích nghi eval(x) của mỗi
cá thể trong quần thể
b.[Chọn lọc] Chọn hai cá thể bố mẹ từ quần thể cũ theo độ thích
nghi của chúng (cá thể có độ thích nghi càng cao thì càng có nhiều khảnăng được chọn)
c.[Lai ghép] Với một xác suất lai ghép được chọn, lai ghép hai cá
thể bố mẹ để tạo ra một cá thể mới
d.[Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể
mới
e.[Kiểm tra điều kiện] Kiểm tra điều kiện kết thúc giải thuật
4 [Kết quả] Nếu điều kiện dừng được thỏa mãn thì thuật toán kết thúc và
trả về lời giải tốt nhất trong quần thể hiện tại
1.4 CÁC PHƯƠNG PHÁP MÃ HÓA VÀ KHỞI TRỊ
Việc mô tả di truyền cho lời giải cho bài toán gồm hai phần cơ bản:
+ Xây dựng cấu trúc gen cho mỗi lời giải của bài toán để từ mỗi lời giải
ta có thể mã hoá thành một NST (chuỗi các gen)
+ Giải mã các NST để nhận được lời giải
Đây là vấn đề cần giải quyết trước khi giải bài toán với GA Tuỳ thuộcvào nội dung của mỗi bài toán mà ta có cách mã hoá khác nhau
Trang 7Sau đây là các phương pháp mã hóa thường dùng:
Mã hoá - Biểu diễn các biến bằng véc tơ nhị phân
Ta sử dụng véc tơ nhị phân có độ dài L như một NST để biểu diễn giá trịthực của biến x [lx, ux] Độ dài L của NST phụ thuộc vào yêu cầu cụ thể củabài toán Một bit mã hoá x ứng với một giá trị trong khoảng [0, 2L] sẽ được ánh
xạ lên giá trị thực thuộc miền [lx,ux] Nhờ đó ta có thể kiểm soát miền giá trị củacác biến và tính chính xác của chúng Tỷ lệ co giãn của ánh xạ được tính nhưsau:
Giá trị x tương ứng với chuỗi NST nhị phân là:
x = lx+ decimal(NST) * gtrong đó, decimal(NST) là giá trị thập phân của chuỗi NST nhị phân
Chẳng hạn ta muốn tìm cực tiểu một hàm k biến f(x 1 ,…,x k ): Rk R Giả sử
thêm là mỗi biến x i có thể nhận giá trị trong miền D i = [ai, bi] R và f(x 1 ,…,x k )
> 0 với mọi x i thuộc D i Ta muốn tối ưu hoá hàm f với độ chính xác cho trước là
6 số lẻ đối với giá trị của các biến
Rõ ràng là để đạt được độ chính xác như vậy mỗi miền D i được phân cắt
thành (bi – ai)*106 miền con bằng nhau Gọi m i là số nguyên nhỏ nhất sao cho:
L x
x l u g
2
Trang 8(bi – ai)*106 2mi - 1
Như vậy, mỗi biến x i được biểu diễn bằng một chuỗi nhị phân có chiều dài
m i Biểu diễn như trên, rõ ràng thoả mãn điều kiện về độ chính xác yêu cầu
Công thức sau tính giá trị thập phân của mỗi chuỗi nhị phân biểu diễn biến x i
1 2 ).
01
i
a b decimal
a X
trong đó decimal(chuỗi 2 ) cho biết giá trị thập phân của chuỗi nhị phân đó.
Bây giờ, mỗi nhiễm sắc thể (là một lời giải) được biểu diễn bằng chuỗi nhị
phân có chiều dài L= k
i=1 m i
trong đó m 1 bit đầu tiên biểu diễn các giá trị trong khoảng [a 1 , b 1 ]; ; m k bit
cuối cùng biểu diễn giá trị trong khoảng [a k , b k]
Để khởi tạo quần thể, chỉ cần đơn giản tạo pop-size (kích cỡ quần thể) nhiễm
sắc thể ngẫu nhiên theo từng bit Phần còn lại của thuật giải di truyền rất đơn
giản: trong mỗi thế hệ, ta lượng giá từng nhiễm sắc thể (tính giá trị hàm f trên
các chuỗi biến nhị phân đã được giải mã), chọn quần thể mới thoả phân bố xácsuất dựa trên độ thích nghi và thực hiện các phép đột biến và lai để tạo các cáthể thế hệ mới Sau một số thế hệ, khi không còn cải thiện thêm được nữa,nhiễm sắc thể tốt nhất sẽ được xem như lời giải của bài toán tối ưu (thường làtoàn cục) Thông thường, ta cho dừng thuật giải di truyền sau một số bước lặp
cố định tuỳ thuộc vào điều kiện về tốc độ về tài nguyên máy tính
Trang 9Kí hiệu các thành phố là T1, T2, , Tn mỗi cá thể sự mã hoá của lời giải
-sẽ là một danh sách hoán vị của T1, T2, , Tn biểu diễn lộ trình mà người thươnggia đã đi qua Thí dụ T8T5T9T3 sẽ là kí hiệu của hành trình từ T8 T5 T9
T3
Như vậy mỗi chuỗi con sẽ biểu diễn cho một đỉnh của không gian tìmkiếm và qua đó thể hiện được cách trả lời có thể có của bài toán Sau này mỗichuỗi nhiễm sắc thể sẽ được giải mã lại để trả về các thông số ban đầu của bàitoán
1.4.4 Tạo lập lời giải ban đầu (khởi tạo quần thể)
Tập lời giải ban đầu thường được khởi tạo ngẫu nhiên từ miền xác địnhcủa các lời giải Cách tạo lập tập lời giải ban đầu phụ thuộc rất nhiều vào cách
Trang 10Biến đổi hàm mục tiêu thành hàm phù hợp:
Do giá trị phù hợp trong giải thuật di truyền là không âm, nên để áp dụng
GA cho bài toán tối ưu ta cần phải chuyển giá trị hàm mục tiêu thành hàm phùhợp
Nếu bài toán tối ưu là cực tiểu hàm mục tiêu g(x) thì ta chuyển sang hàmphù hợp như sau:
C x g x
g C x f
0
) ( )
( )
Trong đó, Cmax là tham số vào do người sử dụng chọn, thường chọn Cmax
là giá trị lớn nhất của hàm mục tiêu trong tập hiện tại
Nếu bài toán tối ưu là cực đại hàm mục tiêu g(x), ta có thể chuyển sanghàm phù hợp như sau :
C x g x
g C x f
0
0 )
( )
( )
Trang 111.6.1 Toán tử chọn lọc (Selection)
Phép chọn lọc được mô tả như sau:
Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần
Loại bỏ các cá thể cuối dãy chỉ để lại các cá thể tốt nhất
Có các toán tử chọn lọc sau:
Chọn lọc tỷ lệ: Được sử dụng thường xuyên nhất
trong GA Xác xuất lựa chọn của mỗi cá thể tỉ lệ thuận với giá trị độ thích hợpcủa nó, được tính theo công thức:
Pi = f(vi) / F (i = 1…m ~ kích cỡ của quần thể) gọi là xác suất chọn chomỗi nhiễm sắc thể vi
Trong đó: f(vi) là 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ể
Việc chọn lọc cá thể nào phụ thuộc vào xác suất qi của mỗi nhiễm sắc thể
vi được tính như sau: qi = Σi
j=1 pj
Có nhiều cách để thực hiện toán tử chọn lọc, nói chung đều theo tư tưởng
cá thể có độ thích nghi cao hơn thì khả năng được chọn nhiều hơn Nhưng có lẽđơn giản và hiệu quả nhất là sử dụng bánh xe Roulette (roulette wheel), mỗi cáthể trong quần thể chiếm một khe có độ rộng tỷ lệ thuận với giá trị phù hợp Độrộng của khe được tính bằng tỷ lệ % giá trị phù hợp của một cá thể trên tổng giátrị phù hợp toàn quần thể
Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe Roulette mlần; mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào quần thể mớitheo cách sau:
- Phát sinh ngẫu nhiên một số r trong đoạn [0 1]
- Nếu r <qi thì chọn nhiễm sắc thể đầu tiên v1, ngược lại chọn nhiễm sắcthể thứ i, vi (2 i pop-size) sao cho qi-1 < r qi
Trang 12Hiển nhiên, có thể sẽ có một số nhiễm sắc thể được chọn nhiều lần Điềunày phù hợp với lý thuyết sơ đồ (Nguyễn Đình Thúc, [1]): các nhiễm sắc thể tốtnhất có nhiều bản sao hơn, các nhiễm sắc thể trung bình không thay đổi, cácnhiễm sắc thể kém nhất thì mất đi
Ví dụ: Với quần thể gồm 4 cá thể cho trong bảng sau chúng ta có vòng tròn
Roulette như hình dưới
169 576 64
361
14.4 49.2 5.5 30.9
169 745 809 1170
Xét bảng trên với số ngẫu nhiên r= 654/1170 thì chuỗi thứ 2 sẽ được chọn
Trên thực tế người ta thường sử dụng toán tử chọn lọc tỷ lệ được mô tảnhư sau:
r := random[0,1];
i := 1;
Hình: Vòng tròn Roulette với 4 khe của 4 chuỗi bảng 1
Trang 13WHILE (i<m and r > ) DO
i := i+1;
Select(vi);
Chọn lọc cạnh tranh:
Trong thủ tục này chúng ta tiến hành như sau:
- Chọn t cá thể từ quần thể hiện tại một cách ngẫu nhiên và chọn cá thể tốtnhất trong t cá thể đó để sao chép sang quần thể tạm thời
- Lặp lại bước trên N lần chúng ta sẽ có quần thể tạm thời
Giá trị t được gọi là kích cỡ của chọn lọc cạnh tranh Khi t = 2 chúng tachọn lọc cạnh tranh nhị phân
Chọn lọc xếp hạng:
Các cá thể của quần thể hiện tại được sắp xếp theo thứ tự giảm dần của giá trị
độ thích nghi Cá thể tốt nhất được xếp thứ nhất và cá thể tồi nhất được xếp cuốicùng Trong thủ tục này cá thể thứ (N-j) trong dãy sẽ có xác suất chọn lựa là:
Các bước tiến hành của thủ tục là:
- Sắp xếp các chuỗi theo thứ tự giảm dần của hàm mục tiêu (bài toán cựcđại) hoặc theo thứ tự tăng dần của hàm mục tiêu (bài toán cực tiểu)
- Sử dụng thủ tục quay Roulette để chọn chuỗi sao chép sang quần thể tạmthời
1.6.2 Toán tử lai ghép (crossover)
Toán tử lai ghép được gán với một xác suất pc Quá trình được mô tả nhưsau:
Trang 14- Chọn ngẫu nhiên hai (hay nhiều) cá thể bất kỳ trong quần thể (để làm chamẹ) Giả sử các nhiễm sắc thể của cha mẹ đều có m gen
- Tạo một số ngẫu nhiên trong khoảng từ 1 đến m-1 (gọi là điểm lai ghép).Điểm lai ghép chia nhiễm sắc thể cha mẹ ra thành hai chuỗi con có độ dài m1 vàm2 Hai chuỗi nhiễm sắc thể con mới sẽ là : m11+m22 và m21+ m12
- Đưa hai cá thể mới vào quần thể để tham gia quá trình tiến hóa tiếp theo
Có một số dạng toán tử lai ghép như:
Lai ghép một điểm (One-point Crossover): là loại lai ghép đơn
giản nhất được sử dụng cả trong GA mã hóa nhị phân cũng như GA mã hóa sốthực Với cặp cha mẹ X,Y là cặp vectơ m chiều như ký hiệu trên, toán tử laighép một điểm chọn ngẫu nhiên một vị trí k (1 k m) rồi sinh ra hai cá thểcon theo công thức:
Trang 15Thủ tục lai ghép đơn giản như sau :
Procedure lai1diem(k; P1, P2; var C1, C2);
Lai ghép đa điểm (Multi-point Crossover)
Toán tử lai ghép đa điểm được mô tả như sau:
Chọn ngẫu nhiên k điểm j1,…,jk (1 j1<j2<…<jk<m), lai ghép đa điểmtạo ra cặp con (X’,Y’) bằng cách đánh số các đoạn [ jt , jt+1 ] từ 0 trở đi sau đó:
- x’i lấy bằng xi tại những đoạn có số hiệu chẵn và bằng yi tại những đoạn
Lai ghép đều hay lai ghép mặt nạ (Uniform Crossover)
Loại lai ghép này còn gọi là lai ghép đều; với hai cá thể cha mẹ đã chọn P1, P2
trước hết phát sinh một chuỗi nhị phân ngẫu nhiên cũng có độ dài L gọi là chuỗimặt nạ Sau đó các con được tạo ra dựa trên chuỗi mặt nạ này để quyết định lấythành phần của cá thể cha hay mẹ Chẳng hạn gen thứ i của cá thể con C1 đượclấy là gen thứ i của P1 nếu bit mặt nạ tương ứng là 1 và lấy gen thứ i của P2 nếubit mặt nạ là 0 Cá thể con C2 được tạo ngược lại