Tải bản đầy đủ
Lịch sử phát triển giải thuật di truyền:

Lịch sử phát triển giải thuật di truyền:

Tải bản đầy đủ

Artificial Systems) xuất bản năm 1975 đã tổng hợp các kết quả của quá trình nghiên
cứu và phát triển đó.
Năm 1992, John Koza đã dùng GA để xây dựng các chương trình giải quyết
một số bài toán và gọi phương pháp này là "Lập trình di truyền" (Genetic
Programming).
Năm 1996, thư viện các hàm C++ cho GA (GALib) đã được Mathew Wall,
trường Đại học Massachussets (Massachusetts Institute of Technology) đưa ra.Đây
là các công cụ sử dụng giải thuật di truyền cho tối ưu hoá các chương trình có sử
dụng sự biểu diễn hay các toán tử di truyền.
1.2 Các khái niệm cơ bản về GA
1.2.1 Nhiễm sắc thể
Nhiễm sắc thể (NST) hay còn gọi là cá thể. Các sinh vật sống đều cấu tạo từ
các tế bào, và tất cả các tế bào này đều bao gồm một tập hợp các nhiếm sắc thể
giống nhau. Các NST này là một chuỗi các ADN, quy định đặc tính của cả cá thể.
Mỗi NST bao gồm rất nhiều GEN, mỗi gen quy định một trạng thái nào đó.
Trong bài toán tối ưu, cá thể tương ứng với một lời giải tiềm tàng. Việc mã
hóa và giải mã gen, biến đổi giữa kiểu gen và kiểu hình được quyết định bởi tính
chất của bài toán. Nhưng thông thường có một số phương phá p mã hóa NST thường
gặp sau:

1.2.1.1 Mã hóa nhị phân
Đây là cách mã hóa nhị phân phổ biến nhất.Mỗi một nhiễm sắc thể là một
chuỗi bit nhị phân 0 & 1. Mỗi một bit có thể biểu diễn một đặc tính nào đó của lời
giải, và số bit cần để mã hóa được tính toán hợp lý để chuỗi nhị phân không quá
dài, mà chỉ vừa đủ cho biểu diễn thông tin cần thiết cho lời giải.
Chronosome A
Chronosome B

00110101000010111010
10111100110010001011

Bảng1: Mã hóa nhị phân độ dài 20 bit

12

Mã hoá nhị phân thường hay dùng trong các bài toán tối ưu các hàm một
biến hay nhiều biến. Khi đó, mỗi chuỗi nhị phân sẽ biểu diễn hàm tại một (tập) giá
trị của (các) biến hoặc mỗi bộ chuỗi nhị phân sẽ biểu diễn một bộ nghiệm của hàm.
Mã hoá nhị phân tuy là phổ biến nhưng nó có một nhược điểm là có thể tạo
ra không gian mã hoá lớn hơn so với không gian giá trị của NST. Do đó, với nhiều
bài toán thì biểu diễn nhị phân là không hữu hiệu.
1.2.1.2 Mã hóa hoán vị
Mỗi NST là một chuỗi hoán vị của các số (thường là số tự nhiên) để biểu
diễn một trình tự nào đó.
Chronosome A
Chronosome B

479321865
965143278

Bảng2: Mã hóa hoán vị 2 NST A&B
Mã hoá hoán vị phù hợp cho các bài toán liên quan đến thứ tự. Đối với các
bài toán này, việc thao tác trên các nhiễm sắc thể chính là hoán vị các số trong
chuỗi đó làm thay đổi trình tự của nó. Mã hóa hoán vị rất hữu ích với các bài toán
sắp xếp.
1.2.1.3 Mã hóa giá trị
Mã hóa giá trị trực tiếp có thể được sử dụng trong các bài toán mà giá trị của nó
là các giá trị phức tạp nhất là số thực. Sử dụng mã hóa nhị phân sẽ trở nên khó khăn.
Trong đó, mỗi NST là một chuỗi các giá trị. Các giá trị có thể là các thông tin liên quan
đến bài toán, từ số nguyên, số thực, kí tự cho đến các đối tượng phức tạp hơn.
Chronosome A
Chronosome B
Chronosome C

1.4765 6.2324 3.8653 9.2134
ABDJEIFJDHDIERJFDLDFLFEGT
(black) (black) (blue) (red) (white)

Bảng3: Mã hóa giá trị các NST A, B, C
Mã hoá theo giá trị thường dùng cho các bài toán đặc biệt. Trong cách mã
hoá này ta thường phải phát triển các toán tử đột biến và lai ghép cho phù hợp với
từng bài toán.

13

1.2.2 Quần thể, thế hệ, toán tử di truyền, tiến hóa
Quần thể (population) trong tự nhiên là một tập hợp các cá thể có cùng một
số đặc điểm nào đấy. 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 tiềm tàng của một bài toán.
Khái niệm thế hệ (generation) gắn chặt với khái niệm quần thể. Mỗi thế hệ
được xác định bởi một quần thể chưa tham gia vào quá trình tiến hóa tiếp theo.
Các toán tử di truyền (GA operator) là các toán tử thao tác đối với các cá thể
nhằm tạo ra các cá thể mới.
Quá trình tiến hóa (evolution) là việc áp dụng các toán tử di truyền đối với
các cá thể, chuyển quần thể từ thế hệ này sang thế hệ tiếp theo, với một bộ phận cá
thể hoặc toàn bộ quần thể đã được biến đổi.
1.2.3 Hàm thích nghi
Trong tự nhiên, chỉ có những cá thể nào thích nghi được với môi trường thì
mới tồn tại, không nó sẽ bị diệt vong. GA đưa ra khái niệm hàm thích nghi, hay
hàm sức khỏe để đánh giá một cá thể so với quần thể. Dựa vào giá trị hàm thích
nghi của mỗi cá thể, thuật toán di truyền mới có thể chọn lựa được các cá thể tốt
cho các thế hệ sau. Hàm thích nghi cũng là một tiêu chí đánh giá mức độ tiến hóa
của quần thể.
1.2.4 Chọn lọc
Dựa vào nguyên lý của quá 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. Tuy nhiên, quá trình chọn lọc mang rất nhiều yếu tố ngẫu nhiê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.
Có nhiều cách để lựa chọn các cá thể từ một quần thể. Sau đây sẽ giới thiệu
một số cơ chế hay áp dụng. Để tiện mô tả các cơ chế lựa chọn luận văn đưa ra một
số kí hiệu sau:

14

- Cách biểu diễn các NST thứ i là vi .
- Hàm tính độ thích nghi của NST vi là f(vi ).
- Kích thước quần thể là pop_size.
- Số NST cần chọn là N.
1.2.4.1 Lựa chọn theo bánh xe Roulet
Trước khi lựa chọn thì tính các giá trị sau:
- Tính tổng độ thích nghi của cả quần thể: F =

i)

- Tính xác suất chọn pi cho mỗi NST vi : pi = f(vi) / F

- Tính vị trí xác suất qi của mỗi NST: qi =

j

Hình 1: Xác suất của mỗi NST theo kiểu lựa chọn Roulet
Cơ chế lựa chọn theo bánh xe Roulet được thực hiện bằng cách quay bánh xe
Roulet N lần. Mỗi lần chọn một NST từ quần thể hiện hành vào quần thể mới bằng
cách sau:
- Phát sinh ngẫu nhiên một số r trong khoảng [0, 1].
- Nếu r < q1 thì chọn NST v1; ngược lại thì chọn NST thứ i (2 ≤ i ≤pop_size)
sao cho qi-1≤ r ≤ qi.
Với cơ chế lựa chọn như thế này thì có một số nhiễm sắc thể sẽ được chọn
nhiều lần. Điều này phù hợp với lý thuyết lược đồ: Các NST tốt nhất thì có nhiều
bản sao, NST trung bình thì không đổi, NST kém thì chết đi.
Hoặc lựa chọn kiểu bánh xe Roulet có thể mô tả theo thuật toán sau:

15

(1) [SUM] Tính tổng giá trị thích nghi S của tất cả các cá thể hay nhiễm sắc
thể trong toàn quần thể.
(2) [SELECT] sinh một số ngẫu nhiên trên đoạn (0...S) ta được r.
(3) [LOOP] duyệt lại toàn bộ quần thể, tính tổng hàm thích nghi từ 0, ta gọi
là s. Khi nào s > r thì ta dừng lại với nhiễm sắc thể hiện tại.
1.2.4.2 Lựa chọn xếp hạng
Theo cơ chế lựa chọn trên khi sự khác biệt giữa các hàm thích nghi lớn,các
NST có độ thích nghi kém sẽ rất ít có cơ hội được lựa chọn, nhất là khi có các NST
tốt có độ thích nghi trên 90%.
Cơ chế lựa chọn xếp hạng được mô tả như sau:
- Sắp xếp các NST trong quần thể theo độ thích nghi từ thấp đến cao.
- Đặt lại độ thích nghi cho quần thể đã sắp xếp theo kiểu: NST thứ nhất có độ
thích nghi là 1, nhiễm săc thể thứ hai có độ thích nghi là 2, v.v…, NST thứ pop_size
có độ thích nghi là pop_size.

(a) Trạng thái quần thể trước khi
sắp xếp

(b) Trạng thái quần thể sau
khi sắp xếp

Hình 2: Lựa chọn xếp hạng
Theo phương pháp này việc một NST được chọn nhiều lần như trong lựa
chọn theo kiểu bánh xe Roulet đã giảm đi. Nhưng nó có thể dẫn đến sự hội tụ chậm
và NST có độ thích nghi cao cũng không khác mấy so với các NST khác.
1.2.4.3 Lựa chọn trận đấu
Hay còn được gọi là lựa chọn theo trạng thái ổn định. Cơ chế lựa chọn:

16

- Lấy một số NST trong quần thể ra để chọn, NST có độ thích nghi cao nhất
được chọn.
- Lặp lại thao tác trên N lần
1.2.5 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 ra thế
hệ con. Trong giải thuật di truyền, lai ghép được coi là một sự tổ hợp lại các tính
chất (thành phần) trong hai hoặc nhiều cá thể cha mẹ nào đó để sinh ra một cá thể
mới mà có đặc tính mong muốn là tốt hơn cá thể cha mẹ. Đây là một quá trình xảy
ra chủ yếu trong giải thuật di truyền.
Tùy theo cách mã hóa NST mà có các những cách lai ghép khác nhau:
1.2.5.1 Lai ghép theo mã hóa nhị phân
- Lai ghép một điểm cắt (One Points Crossover)
+ Điểm cắt là một gen vị trí ngẫu nhiên k trên NST
+ Cá thể con có phần đầu đến gen thứ k giống hệt cha, phần còn lại giống hệt mẹ.

Hình 3: Lai ghép một điểm cắt mã hóa nhị phân
- Lai ghép 2 điểm cắt
+ Hai điểm cắt sẽ được chọn ngẫu nhiên.

Hình 4: Lai ghép hai điểm cắt mã hóa nhị phân
- Lai ghép đồng nhất

17

+ Chuỗi nhị phân của con sẽ được lai ghép ngẫu nhiên hoặc từ mẹ hoặc từ
cha. Hay nói cách khác, ta sẽ xây dựng một mặt nạ lai ghép. Nó cũng là một chuỗi
nhị phân các bit 0&1.
+ Duyệt mặt nạ: ở vị trí bit mặt nạ = 1 thì gen ở vị trí tương ứng của mẹ được
lai ghép cho con, nếu bit mặt nạ = 0 thì gen ở vị trí tương ứng của cha được lai ghép
cho con.

Hình 5: Lai ghép đồng nhất mã hóa nhị phân
Cụ thể hơn ta có bảng sau:

Bảng4: Mặt nạ lai ghép đồng nhất
- Lai ghép số học: Cá thể con được sinh ra bằng một phép toán logic nào đó
(AND,OR,…) với cặp NST bố mẹ.

Hình 6: Lai ghép số học mã hóa nhị phân
1.2.5.2 Lai ghép theo mã hóa hoán vị
Lai ghép một điểm cắt:

18

- Vị trí cắt được chọn một cách ngẫu nhiên
- Con mới được sinh ra sẽ có phần gen đầu cho đến vị trí cắt giống mẹ.
- Duyệt NST cha từ đầu, gen nào chưa có trong NST của con thì đưa vào.

Bảng 5: Lai ghép một điểm cắt mã hóa hoán vị
1.2.5.3 Lai ghép theo mã hóa giá trị
Mã hoá theo giá trị có thể áp dụng tất cả các toán tử lai ghép có trong mã hoá nhị phân.

1.2.6 Đột biến
Đột biến là một sự biến đổi tại một (hay một số) gen của cá thể ban đầu để
tạo ra một cá thể mới. Độ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 đột biến cho phép cải thiện lời giải qua từng thế hệ. Đột biến cũng mang tính
chất ngẫu nhiên.
Tương tự lai ghép, mỗi cách mã hóa NST khác nhau sẽ có những phép đột
biến khác nhau.
1.2.6.1 Đột biến theo mã hóa nhị phân
Phép đảo bit: Bit được chọn sẽ được đảo.

Bảng 6: Phép đảo bit mã hóa nhị phân
1.2.6.2 Đột biến theo mã hóa hoán vị
Hoán đổi thứ tự:

Thứ tự các gen được hoán đổi được lựa chọn ngẫu nhiên

19

Bảng 7: Hoán vị thứ tự mã hóa hoán vị
1.2.6.3 Đột biến theo mã hóa giá trị
Ví dụ: Nếu mã hóa số thực, ta có thể thêm hoặc bớt một lượng rất nhỏ vào các gen
được chọn để đột biến.

Bảng 8: Thay đổi giá trị trong mã hóa giá trị
1.2.7 Chiến lược nạp lại quần thể
Chiến lược nạp lại quần thể là một trong những bước rất quan trọng của thuật
toán di truyền. Nó dường như quyết định khả năng và tốc độ hội tụ của thuật toán di
truyền. Dựa vào chiến lược nạp lại quần thể có thể phân loại các thuật toán di
truyền. Sau đây là một số chiến lược nạp lại quần thể:
1.2.7.1 Chiến lược nạp lại quần thể
Tạo ra số NST mới bằng kích thước quần thể và quần thể mới bao gồm toàn
các NST mới này, không có NST nào của thế hệ trước.

Hình 7: Chiến lược nạp lại hoàn toàn
Đây là chiến lược đơn giản nhất. Mỗi NST chỉ tồn tại trong một thế hệ, sang
thế hệ tiếp theo sẽ được thay mới hoàn toàn. Như vậy sẽ xảy ra trường hợp là các

20

NST tốt sẽ không được giữ lại, do đó chiến lược này không phải là chiến lược phù
hợp cho việc cải thiện lời giải qua các thế hệ.
1.2.7.2 Chiến lược nạp lại ngẫu nhiên
Tạo ra số NST mới ít hơn kích thước quần thể và thay thế một cách ngẫu
nhiên các NST ở thế hệ trước bằng NST ở thế hệ sau:

Hình 8: Chiến lược nạp lại ngẫu nhiên
Chiến lược này luôn đảm bảo toàn bộ số con được sinh ra sẽ được nạp vào,
nhưng số lượng con mới được sinh ra ít, và chiến lược ngẫu nhiên không đảm báo
các NST tốt của thế hệ trước sẽ được giữ lại, và có thể nó sẽ được thay thế bởi một
NST tồi hơn rất nhiều so với nó. Nạp lại ngẫu nhiên vẫn khả thi hơn chiến lược nạp
lại hoàn toàn khi các NST có thể tồn tại lớn hơn hoặc bằng hai thế hệ.
1.2.7.3 Chiến lược nạp lại theo mô hình cá thể ưu tú
Tạo ra số NST mới ít hơn kích thước quần thể và thay thế chúng cho các bố
mẹ có độ thích nghi thấp:

Hình 9: Chiến lược nạp lại theo mô hình cá thể ưu tú
Đây được coi là chiến lược tối ưu. Các NST tốt sẽ sống sót qua nhiều thế hệ.
Qua mỗi thế hệ, sẽ có một số lượng nhất định các NST tồi bị thay thế. Tuy chiến lược

21

này không kiểm tra các NST con nạp vào có tốt hơn NST bố mẹ bị thay thế hay
không nhưng tính chất của quần thể không bị ảnh hưởng. Vì nếu quần thể nạp vào
các NST con tồi thì những NST con này chắc chắn sẽ bị loại ra trong thế hệ tiếp.
1.3 Mô hình GA
Với các khái niệm được giới thiệu ở trên, GA được mô tả bởi sơ đồ sau đây

Hình 10: Sơ đồ mô tả GA
1. Xác lập các tham số ban đầu của bài toán.
2. Khởi tạo: Sinh ngẫu nhiên một quần thể gồm n cá thể (là n lời giải ban đầu
của bài toán).
3. Xác lập quần thể mới: 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, bao gồm:
- Tính độ thích nghi của mỗi cá thể.

22