Các thành phần chính trong giải thuật di truyền

Một phần của tài liệu Thuật toán di truyền giải bài toán cây khung truyền thông tối ưu (Trang 43)

2.2.1 Nhiễm sắ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 nhiễm sắc thể (NST) hay còn gọi là cá thể 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.

2.2.2 Quần thể, thế hệ, tiến hóa

Quần thể (population) trong tự nhiên là một tập hợp các cá thể có một số điểm chung nào đó. Trong giải thuật di truyền thì quần thể là tập các phương án tại từng thưòi điểm nào đó.

Khái niệm quần thể gắn chặt với khái niệm thế hệ (generation). Một 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.

35

Quá trình tiến hóa (evolution) là việc áp dụng các toán tử di truyền lên các cá thể, chuyển quần thể từ thế hệ này sang thế hệ tiếp theo, với các cá thể đã bị biến đổi.

2.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 còn gọi là hàm lượng giá- Fitness Function) để đá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ể.

2.2.4 Các toán tử di truyền

Các toán tử di truyền được coi là trung tâm trong thuật toán di truyền, mô hình đơn giản của GA đưa ra các loại toán tử: chọn lọc, lai ghép, đột biến

(mutation) và tái tạo quần thể mới.

Chọn lọc

Trong tự nhiên, quá trình chọn lọc đảm bảo những cá thể tốt 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 quá trình chọn lọc và đấu tranh sinh tồn trong tự nhiên, chọn lọc trong GA

chính là cách chọn lựa các cá thể có độ thích nghi tốt để đưa vào các thế hệ tiếp theo hoặc để mang đi 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ó rất nhiều cách chọn lọc nhưng cuối cùng đều là để đạt được mục tiêu là các cá thể tốt sẽ có khả năng được chọn cao hơn nhằm tăng chất lượng của quần thể.

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 lời giải cha mẹ nào đó để sinh ra lời giải mới với đặc

36

tính mong muốn là tốt hơn thế hệ cha mẹ. Đây là quá trình chủ yếu của giải thuật di truyền.

Đột biến

Đột biến là sự biến đổi tại một (hay một số) gen của NST ban đầu để tạo ra một NST 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ái tạo quần thể mới

Quá trình tái tạo quần thể mới là quá trình trong đó các NST của quần thể cha và các NST mới được sao chép đưa vào quần thể mới dựa trên cơ sở độ thích nghi của nó.

2.2.5 Các thông số khác của giải thuật di truyền Kích thƣớc quần thể Kích thƣớc quần thể

Kích thước quần thể không nên quá nhỏ hoặc quá lớn. Nếu quá nhỏ thì quá trình lai và đột biến thực hiện ít và chỉ trên một phần nhỏ của không gian tìm kiếm, còn lại sẽ là phần không được xét tới. Nhưng nếu kích thước quần thể quá lớn thì thuật toán chạy lâu, hiệu quả thấp mà còn chưa chắc thu được kết quả tốt hơn.

Kích thước quần thể cho biết có bao nhiêu cá thể trong một quần thể (trong một thế hệ). Tuy nhiên không phải khi nào kích thước càng lớn thì hiệu quả càng cao. Qua các nghiên cứu cũng như các thực nghiệm đã cho thấy kích thước quần thể không nên quá bé cũng như không quá lớn. Nếu quần thể có quá ít cá thể thì không gian tìm kiếm nhỏ nên thường chỉ đạt được các kết quả cục bộ. Như vậy sẽ dễ xảy ra trường hợp bỏ qua các lời giải tốt, các thế hệ sẽ thoái hóa dần theo quá trình. Nhưng quá nhiều cá thể cũng không tốt vì GA sẽ chạy chậm đi, ảnh hưởng đến hiệu quả của giải thuật. Các nghiên cứu cũng đã chỉ ra không có lợi khi tăng kích thước quần thể lên quá một giới hạn cho phép. Việc quyết định kích thước quần thể phụ thuộc khá lớn vào phương pháp mã hóa cá thể.

37

Xác suất lai ghép

Xác suất lai ghép là pc, chính là tỷ lệ số cá thể con trong quần thể mới được lai ghép từ các cá thể cha mẹ của quần thể hiện tại. Nếu xác suất lai ghép pc =100% thì tất cả các con sinh ra đều là do lai ghép từ các cá thể của quần thể hiện tại, còn nếu xác suất lai ghép pc =0% thì quần thể mới là sự sao chép chính xác quần thể cũ.

Xác suất đột biến (adsbygoogle = window.adsbygoogle || []).push({});

Xác suất đột biến cho biết các gen của nhiễm săc thể thay đổi thường xuyên như thế nào. Xác suất đột biến là pm, khả năng để mỗi gen của một NST bất kỳ bị đột biến là pm. Nếu pm = 100%, toàn bộ NST đều bị đột biến, nếu pm = 0%, không gen nào thay đổi. Toán tử đột biến có tác dụng ngăn ngừa giải thuật di truyền rơi vào tình trạng cực trị địa phương. Tuy nhiên nếu thực hiện đột biến với xác suất quá cao sẽ biến giải thuật di truyền thành giải thuật tìm kiếm ngẫu nhiên.

Điều kiện dừng của giải thuật

GA không phải là lặp lại vô tận, sinh sản liên tục, mà nó còn cần có điều kiện dừng để kết thúc giải thuật và chọn ra lời giải tốt nhất.

Kết thúc cưỡng bức: Ta sẽ thực hiện GA để sinh ra số thế hệ đúng bằng một số đã được cho trước. GA sẽ dừng khi đã tạo đến thế hệ cuối cùng. Sử dụng phương pháp cưỡng bức có thể gây ra lãng phí thời gian nếu như các thế hệ sau gần như không tốt lên. Tuy nhiên, cơ chế kiểm soát không phức tạp.

Kết thúc tự nhiên: Đến một thế hệ nào đó mà hàm thích nghi cho các con trong thế hệ đó không tốt hơn thì ta sẽ dừng giải thuật.

f(P(t+1) ) - f(P(t)) ≤ ε

Phương pháp kết thúc này có cơ chế kiểm soát phức tạp hơn nhưng không biết chính xác khi nào kết thúc giải thuật.

Tùy theo điều kiện của bài toán mà ta sẽ chọn một trong 02 điều kiện dừng của giải thuật.

38

2.2.6 Giải thuật di truyền đơn giản

Một giải thuật di truyền đơn giản có thể mô phỏng như sau:

1. [Khởi tạo quần thể] Sinh ngẫu nhiên một quần thể gồm n cá thể (là n lời giải cho bài toán).

2. [Thích nghi] Ước lượng độ thích nghi của mỗi cá thể x trong quần thể.

3. [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:

a. [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).

b. [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.

c. [Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới. d. [Chấp nhận] Thay con mới vào quần thể.

4. [Thay thế] Sử dụng quần thể mới cho quá trình tiếp theo của thuật toán.

5. [Kiểm tra điều kiện dừng] 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.

6. [Vòng lặp] Quay lại bước 2.

2.2.7 Không gian tìm kiếm của giải thuật di truyền

Khi giải một bài toán, các bộ lời giải sẽ được sinh ra và lời giải hoặc bộ lời giải tốt nhất sẽ được xem là đáp án của bài toán. Không gian của tất cả các lời giải khả thi được gọi là không gian tìm kiếm (hay không gian trạng thái). Mỗi một điểm trong không gian tìm kiếm biểu diễn cho 01 lời giải tiềm tàng. Mỗi lời giải tiềm tàng được đánh dấu bằng giá trị hay sức khỏe của nó trong bài toán. Với GA, lời giải tốt nhất sẽ được tìm ra trong số rất nhiều các lời giải tiềm tàng.

39

Tìm kiếm một lời giải tương ứng với việc tìm một giá trị cực nào đó (lớn nhất hoặc nhỏ nhất) trong không gian tìm kiếm. Đôi khi không gian tìm kiếm là rất tốt, nhưng chỉ là một số. Trong tiến trình sử dụng GA, quá trình tìm kiếm lời giải sẽ sinh ra những điểm khác trong quá trình tiến hóa.

Vấn đề là việc tìm kiếm rất là phức tạp. Tìm lời giải ở đâu và bắt đầu từ đầu cũng là một vấn đề khó khăn. Có rất nhiều cách để tìm lời giải thích hợp, nhưng những phương pháp này có thể không cần phải đưa ra lời giải tốt nhất như các giải thuật leo đồi, tìm kiếm tabu, mô phỏng tôi luyện và giải thuật di truyền.

2.2.8 Đặc điểm của giải thuật di truyền

Giải thuật di truyền có các đặc điểm nổi bật sau :

 Giải thuật di truyền tìm kiếm nhiều đỉnh (điểm tối ưu) cùng một lúc. Các toán tử di truyền sẽ giúp trao đổi thông tin giữa các đỉnh. Như vậy, khả năng kết thúc tại một điểm cực trị địa phương sẽ giảm bớt.

 Giải thuật di truyền chỉ làm việc với các NST là mã của các lời giải. Do đó với một GA có sẵn, đôi khi chỉ cần thay đổi cách biểu diễn NST là có giải thuật cho một bài toán mới.

 Giải thuật di truyền chỉ cần đánh giá hàm mục tiêu để phục vụ quá trình tìm kiếm chứ không đòi hỏi các thông tin bổ trợ các. (adsbygoogle = window.adsbygoogle || []).push({});

 Các thao tác cơ bản trong giải thuật di truyền dựa trên khả năng tích hợp tính ngẫu nhiên trong quá trình xử lý.

 Thời gian tính toán lâu hơn các giải thuật khác. Đây là một nhược điểm của

GA nhưng với sự phát triển của máy tính ngày nay thì đây không phải là một vấn đề quá lớn.

40

2.2.9 Ứng dụng của giải thuật di truyền

Với các đặc điểm được chỉ ra ở trên, GA thường được áp dụng để giải các bài toán khó (ví dụ như các bài toán thuộc lớp bài toán NP - khó), máy học và cũng để cải tiến các chương trình. Cụ thể nó được áp dụng trong các lĩnh vực sau :

 Các hệ phi tuyến động - phỏng đoán, phân tích dữ liệu.

 Thiết kế mạng nơron, cả về phần kiến trúc lẫn phần trọng số.

 Thiết lập quỹ đạo cho người máy.

 Quy hoạch chiến lược.

 Các bài toán tối ưu trên đồ thị - ví dụ như các bài toán cây khung nhỏ nhất bị ràng buộc.

 Tìm dạng của các phần tủ Protein.

 Bài toán người du lịch và lập thời gian biểu

 Các hàm tạo ảnh

2.3 Các cách biểu diễn NST

2.3.1 Biểu diễn 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.

41

Chronosome A 00110101000010111010

Chronosome B 10111100110010001011

Bảng 2.1. Mã hóa nhị phân độ dài 20 bit

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.

Ví dụ: Trong bài toán cái túi, dùng một chuỗi nhị phân để biểu diễn một cách xếp đồ vào túi có kích thước bằng số đồ vật, mỗi bit tương ứng với các đồ vật sẽ có hai giá trị : giá trị 0 nếu đồ vật đó không được cho vào túi và giá trị 1 nếu đồ vật được cho vào túi.

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.

2.3.2 Biểu diễn số nguyên

Biểu diễn nhị phân có một nhược điểm khá lớn là trong một số bài toán thì việc sử dụng mã hoá này tạo ra không gian tìm kiếm quá lớn so với không gian giá trị có thể có của bài toán. Chính vì vậy, trong trường hợp này có thể sử dụng cách mã hoá khác, như biểu diễn số nguyên.

Chronosome A 3 1 7 2 4 6 5 8

Chronosome B 2 7 4 6 5 1 8 3

Bảng 2.2. Biểu diễn số nguyên của NST có chiều dài 8

Nếu số thành phần trong bộ gen là X thì kích thước không gian tìm kiếm sẽ là (adsbygoogle = window.adsbygoogle || []).push({});

l g | X

|

42

2.3.3 Biểu diễn giá trị thực và kí tự

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ư là số thực nếu 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 1.4765 6.2324 3.8653 9.2134

Chronosome B ABDJEIFJDHDIERJFDLDFLFEGT

Chronosome C (black) (black) (blue) (red) (white)

Bảng 2.3. Biểu diễn số nguyên của NST có chiều dài 8

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.

Ví dụ: Trong bài toán mã hoá protein, mỗi nhiễm sắc thể là một chuỗi các axit amin, trong đó mỗi axitamin lại được mã hoá tượng trưng bởi một kí tự… Khi đó, giả sử một chuỗi axit amin sẽ được biểu diễn là một chuỗi gồm 9 kí tự đại diện cho 9 loại axit amin đó, ví dụ như : AGGTBFTCZ. Khoảng cách giữa 2 cá thể (2 chuỗi axit amin) được tính bằng số vị trí mà kí tự tương ứng tại đó khác nhau.

2.3.4 Biểu diễn cây

Cách mã hóa này được dùng chủ yếu trong chương trình hoặc biểu thức tiến hóa. Trong mã hoá theo cấu trúc cây, mỗi NST là một cây các đối tượng. Các đối tượng có thể là các hàm, các lệnh của ngôn ngữ hay các giá trị của biến, v.v. Cách mã hóa này được dùng nhiều trong ngôn ngữ lập trình LISP, vì ngôn ngữ biểu diễn chương trình dưới dạng cây và rất dễ dàng phân giải cây, do đó lai ghép và đột biến thực hiện thuận lợi hơn. Hình sau là một ví dụ về việc sử dụng cây để mã hóa một biểu thức đại số.

43

Hình 2.2. Cây mã hóa biểu thức a * ((b – 9) / c)

2.3.5 Khởi tạo quần thể

Khởi tạo quần thể là bước đầu tiên của bài toán theo GA. Quần thể ban đầu thường được sinh ra một cách ngẫu nhiên, bao gồm các lời giải ngẫu nhiên thỏa mãn các điều kiện của bài toán nhưng ta chưa biết chắc được liệu nó có phải là lời giải tối ưu hay không? Tùy thuộc vào bài toán khác nhau mà ta có các cách khởi tạo quần thể khác nhau. Cũng như trong tự nhiên, nếu chất lượng của quần thể ban đầu càng tốt, ta càng hi vọng các thế hệ sau sẽ ngày càng tốt hơn. Do đó, khi tính toán giải thuật để tạo quần thể ban đầu, chúng ta cố gằng tìm những cách có thể đưa ra

Một phần của tài liệu Thuật toán di truyền giải bài toán cây khung truyền thông tối ưu (Trang 43)