Thuật toán di truyền (Genetic Algorithm)

Một phần của tài liệu Tối ưu hoá thiết kế anten sóng chạy bằng thuật toán di truyền (Trang 27)

1, là độ rộng của góc nửa công suất trong các mặt phẳn gE và H.

2.2.Thuật toán di truyền (Genetic Algorithm)

Thuật toán di truyền (Genetic Algorithm - GA) là một lớp các phương pháp tìm kiếm. Phương pháp này sử dụng cơ chế chọn lọc tự nhiên và di truyền học để thực hiện việc tìm kiếm toàn cục các lời giải. Mục tiêu của việc tìm kiếm là tìm ra lời giải tốt cho vấn đề đặt ra.

Gen là thành phần cơ bản của thuật toán di truyền. Một gen là 1 mã hoá nhị phân của 1 tham số, 1 nhiễm sắc thể trong 1 thuật toán là 1 chuỗi gen. Mỗi nhiễm sắc thể có 1 hàm giá trị tương ứng, nó qui định giá trị tương đối của nhiễm sắc thể đó. Thuật toán di truyền bắt đầu bằng nhiều nhiễm sắc thể ngẫu nhiên. Hàm giá trị được đánh giá đối với từng nhiễm sắc thể. Các nhiễm sắc thể được xếp hạng từ loại phù hợp nhất đến loại ít phù hợp nhất, tuỳ theo hàm giá trị riêng của chúng. Những nhiễm sắc thể không được chấp nhận sẽ bị loại bỏ, chỉ giữ lại 1 tập hợp vượt trội của những nhiễm sắc thể ban đầu. Những gen được duy trì sẽ trở thành gen bố mẹ bằng cách trao đổi 1 số vật chất di truyền để tạo ra 2 gen mới. Gen bố mẹ sẽ tái sinh sản để bù lại số nhiễm sắc thể bị loại bỏ. Do đó tổng số nhiễm sắc thể vẫn không đổi sau mỗi vòng lặp. Sự biến dị tạo nên những thay đổi ngẫu nhiên trong nhiễm sắc thể. Hàm giá trị được đánh giá trên gen mới và nhiễm sắc thể biến dị, quá trình này được lặp lại. Thuật toán di truyền dừng lại sau 1 số vòng lặp nhất định hoặc khi đã đạt được 1 lời giải chấp nhận được.

Hình 2.1 là biểu đồ của thuật toán di truyền. Thuật toán di truyền bắt đầu bằng việc định nghĩa 1 nhiễm sắc thể như là 1 chuỗi các giá trị của tham số sẽ được tối ưu hoá. Nếu nhiễm sắc thể có Npar tham số (trong bài toán N chiều) cho bởi P1, P2...PNpar, thì nhiễm sắc thể đó được viết là:

choromosome = [P1P2P3...PNpar] (2.1)

Mỗi nhiễm sắc thể có 1 hàm giá trị, được tìm ra bằng cách đánh giá 1 hàm ,f, với Hàm giá trị được biểu diễn bằng: cost=

Hình 2.1. Sơ đồ khối của thuật toán di truyền

Các tham số Pn có thể rời rạc hoặc liên tục. Nếu tham số là liên tục thì hoặc là cần đặt các giới hạn cho các tham số hoặc giới hạn trong một số các giá trị. Một cách để giới hạn tham số là mã hóa chúng thành 1 chuỗi nhị phân, như là:

n L m m w n b m Q q 1 1 2 (2.3) Trong đó:

Qn= giá trị lượng tử hoá của Pn

Ln= số mức lượng tử hoá

Bw=chuỗi chứa xâu nhị phân biểu diễn qn Q= mức lượng tử hoá lớn nhất

Tham số đã mã hoá nhị phân không nhất thiết phải liên quan về mặt toán học với Pn, thay vào đó, qn có thể chỉ biểu diễn 1 số giá trị của Pn. Ví dụ nếu Pn biểu diễn 8 giá trị của suất điện trở thì qn có thể biểu diễn như sau:

800111 111 ... 200 001 100 000 n n n q q q

Sự thực thi của thuật toán di truyền miêu tả ở đây chỉ làm việc với chuỗi đã mã hoá của các tham số, mà không phải với chính các tham số. Mỗi khi hàm giá trị được tính toán, nhiễm sắc thể phải được giải mã trước. Sau đây là một ví dụ về một nhiễm sắc thể đã được mã hoá nhị phân, có Npar tham số, mỗi tham số được mã hoá bằng Npbit=10 bit:       Npar q q chromosome 11110010010011011111...0000101001 1

Thay thế cách biểu diễn nhị phân này vào phương trình (2.3) tạo ra 1 dãy các giá trị lượng tử hoá của các tham số. Nhiễm sắc thể này có tổng số Ngbit=Npbit * Npar bit. Sau khi mã hoá và giải mã các tham số, 1 loạt nhiễm sắc thể ngẫu nhiên được tạo ra. Mỗi nhiễm sắc thể có 1 giá trị tương ứng, được tính toán từ hàm giá trị. Ví dụ về danh sách của Nchro=4 nhiễm sắc thể ngẫu nhiên , cùng với giá trị tương ứng của chúng ở bảng 2.1. Bước tiếp theo của thuật toán là xếp hạng các nhiễm sắc thể từ tốt nhất đến kém nhất. Giả sử giá trị cao là tốt, thứ tự xếp hạng được biểu diễn ở bảng 2.2

STT Nhiễm sắc thể Giá trị 1 0011010110 8 2 1100111111 7.2 3 1011101000 8.2

4 0000100111 5.4

Bảng 2.1. Danh sách 4 nhiễm sắc thể và các giá trị tương ứng

STT Nhiễm sắc thể Giá trị Giữ lại một nửa

Giữ lại nếu giá trị lớn hơn 7

3 1011101000 8.2 Giữ Giữ

1 0011010110 8 Giữ Giữ

2 1100111111 7.2 Loại Giữ

4 0000100111 5.4 Loại Loại

Bảng 2.2. Nhiễm sắc thể sau khi đã sắp xếp

Theo cách này, những nhiễm sắc thể không phù hợp sẽ bị loại bỏ. Khái niệm “không phù hợp” do người sử dụng định nghĩa. Thông thường, các biến x trên cùng được giữ lại (khi x chẵn) và những biến x dưới cùng bị loại bỏ. Ví dụ nếu 50% nhiễm sắc thể bị loại bỏ, thì nhiễm sắc thể 1,2 được giữ lại, trong khi nhiễm sắc thể 3,4 bị loại (cột 4 bảng 2). Một khả năng khác là nó đòi hỏi giá trị phải phù hợp với 1 mức cụ thể nào đó. Ví dụ nếu giá trị phải lớn hơn 7 thì nhiễm sắc thể 1,2,3 được giữ lại trong khi nhiễm sắc thể 4 bị loại (cột 5, bảng 2).

Sau khi xếp hạng và loại bỏ nhiễm sắc thể, bước tiếp theo là chia Nchro/2 nhiễm sắc thể còn lại thành cặp để kết hợp. Bất kì 2 nhiễm sắc thể nào cũng kết hợp được. Một số phương pháp là: ghép từ trên xuống dưới trong danh sách, ghép ngẫu nhiên hoặc ghép nhiễm sắc thể 1 với Nchro/2, nhiễm sắc thể 2 với Nchro/2-1...v.v. Khi đã kết hợp, đời con được tạo thành từ vật chất di truyền trao đổi cặp. Ví dụ nhiễm sắc thể 3 kết hợp nhiễm sắc thể 1. Bây giờ lựa chọn điểm tương giao chéo ngẫu nhiên. Các số nhị phân bên phải điểm này trao đổi lẫn nhau để tạo ra thế hệ con cái. Nếu điểm tương giao chéo ngẫu nhiên này ở giữa bit 5 & 6, các nhiễm sắc thể mới được tạo ra:

bố mẹ 2 (nhiễm sắc thể 1) 0011010110 con 1 1011110110 con 2    01000 00110

Sau khi Nchro/2 nhiễm sắc thể chia cặp và kết hợp, danh sách Nchro/2 nhiễm sắc thể bố mẹ và Nchro/2 nhiễm sắc thể con cho kết quả tổng số Nchro nhiễm sắc thể (bằng số nhiễm sắc thể ban đầu)

Sau đó, sự biến dị ngẫu nhiên thay đổi 1 phần nhỏ số lượng bit trong danh sách nhiễm sắc thể bằng cách thay đổi 1 thành 0 hoặc ngược lại. 1 bit được lựa chọn 1 cách ngẫu nhiên cho quá trình biến dị trong tổng số Nchro*Ngbit bit trong tất cả các nhiễm sắc thể. Số lượng biến dị tăng làm tăng tính tự do của thuật toán ra ngoài phạm vi hiện thời của khoảng tham số. Tính tự do này trở nên quan trọng hơn khi thuật toán bắt đầu tập trung vào 1 lời giải cụ thể nào đó. Có thể là, yêu cầu 1% số bit biến dị mỗi lần lặp. Biến dị không xảy ra trong vòng lặp cuối cùng.

Sau quá trình biến dị, các giá trị tương ứng với thế hệ con và các nhiễm sắc thể đã biến dị được tính toán, và quá trình này được lặp lại. Số lượng thế hệ tiến hoá phụ thuộc vào việc có đạt được 1 lời giải phù hợp hay không, hoặc số vòng lặp nhất định có bị vượt quá hay không. Sau 1 thời gian, tất cả nhiễm sắc thể và giá trị tương ứng sẽ như nhau, ngoại trừ những nhiễm sắc thể đã biến dị. Khi đó, thuật toán cần phải được dừng lại. (adsbygoogle = window.adsbygoogle || []).push({});

Sau trạng thái lặp đầu tiên người sử dụng phải gọi 1 hàm để tính toán giá trị của nhiễm sắc thể. Vì nhiễm sắc thể được mã hoá nhị phân, hàm số này phải chuyển những

sắc thể. Số lượng nhiễm sắc thể, số bit của mỗi nhiễm sắc thể và số vòng lặp được đặt ở đầu chương trình.

Một phần của tài liệu Tối ưu hoá thiết kế anten sóng chạy bằng thuật toán di truyền (Trang 27)