Giải thuật di truyền

Một phần của tài liệu Một số phương pháp Heuristic giải bài toán thiết kế mạng viễn thông (Trang 25 - 71)

1.3.1. C c k n ệm c bản

* Giới thiệu chung

Thuật di giải di truyền là kỹ thuật giúp giải quyết vấn đề bắt chƣớc theo sự tiến hóa của con ngƣời hay của sinh vật nói chung trong điều kiện quy định sẵn của môi trƣờng. Phƣơng tiện để thực hiện cách giải quyết vấn đề này là chƣơng trình tin học gồm các bƣớc phải thi hành, từ việc chọn giải pháp tiêu biểu cho vấn đề, cho đến việc chọn các hàm số thích nghi cũng nhƣ các phƣơng pháp biến hóa để tạo cho giải pháp ngày càng thích nghi hơn. Nhƣ vậy GA ( Genetic Algorithms ) không chú trọng đến giải pháp duy nhất và chính xác nhƣ phƣơng pháp cổ điển, trái lại GA xét đến toàn bộ các giải pháp và tuy dựa trên tính ngẫu nhiên nhƣng có hƣớng dẫn bởi hàm số thích nghi, do đó không có nghĩa là “đoán mò”. Chúng ta sẽ xét đến các phần dƣới đây.

* Các tính chất của giải thuật

- GA lập luận mang tính chất ngẫu nhiên (stochastic), thay vì xác định (determinisic) nhƣ toán học giải tích.

- GA duyệt xét toàn bộ các giải pháp, sau đó chọn lấy giải pháp tƣơng đối tốt nhất dựa trên hệ số thích nghi.

- GA không để ý đến chi tiết vấn đề, trái lại chỉ chú ý đến giải pháp, đặc biệt là số tƣợng trƣng cho giải pháp.

- GA rất thích hợp cho việc tìm kiếm giải pháp cho vấn đề , hay tìm điều kiện tối ƣu cho việc điều hành, và phân nhóm những giải pháp có đƣợc.

1.3.2. C c b ớc quan trọng trong giải thuật

Để giải quyết vấn đề bằng Thuật giải di truyền, chúng ta cần thực hiện bảy bƣớc quan trọng sau đây.

Bƣớc 1: Chọn mô hình cho giải pháp của vấn đề: Chọn 1 số tƣợng trƣng cho toàn bộ các giải pháp có thể có cho vấn đề.

Bƣớc 2: Chỉ định cho mỗi giải pháp một kí hiệu. Ký hiệu có thể là dãy của những số 1 và 0 thuộc hệ nhị phân, hay dãy số thập phân, của chữ hay hỗn hợp của số và chữ. Ở đây ta dùng hệ nhị phân để làm ký hiệu cho giải pháp.

Bƣớc 3: Tìm hàm số thích nghi cho vấn đề và tính hệ số thích nghi cho từng giải pháp.

Bƣớc 4: Dựa trên hệ số thích nghi của các giải pháp để thực hiện sự tạo sinh (reproduction) và biến hóa các giải pháp. Các phƣơng thức biến hóa gồm: Lai ghép (cross over), đột biến (mutation).

Bƣớc 5: Tính các hệ số thích nghi cho các giải pháp mới và loại bỏ những giải pháp kém nhất để chỉ còn giữ lại một số nhất định các giải pháp.

Bƣớc 6: Nếu chƣa tìm đƣợc giải pháp tối ƣu hay tƣơng đối khá nhất hay chƣa hết hạn ấn định, trở lại bƣớc thứ tƣ để tìm giải pháp mới.

Bƣớc 7: Tìm đƣợc giải pháp tối ƣu nếu thời gian cho phép đã chấm dứt thì báo cáo kết quả tính đƣợc.

1.3.3. Ví dụ minh họa

Trong thực tế GA đã đƣợc dùng để giải quyết những vấn đề phức tạp, tuy nhiên để trình bày về lý thuyết mới, ở đây một ví dụ rất đơn giản, tìm đáp số cho phƣơng trình X2 = 64. Dĩ nhiên bài toán này quá đơn giản không cần đến GA, nhƣng chúng ta sẽ xét đến nhiều ví dụ phức tạp hơn.

Bài toán: Tìm đáp số cho phƣơng trình X2

= 64. (*)

(tức là trị số của X để X2 = 64)

Bước 1: Quy định số lƣợng các đáp số và ấn định ký hiệu cho từng đáp số. Giả sử chúng ta không biết đáp số của bài toán. Nên sẽ chọn 4 số trong những đáp số có thể có cho bài toán. Đồng thời chúng ta chọn mô hình để tƣợng trƣng cho các số phải xét (dùng hệ thống nhị phân để ký hiệu các đáp số).

H/t thập phân 1 2 3 4 5 6 7 8 H/t nhị phân 0001 0010 0011 0100 0101 0110 0111 1000

Bước 2: Chỉ định số đáp số và ký hiệu các đáp số cho bài toán. Sau đây 4 số có thể là đáp số cho bài toán

Thứ tự Nhị phân Thập phân

1 00100 4

2 10101 21

3 01010 10

4 11000 24

Bước 3: Ấn định hàm số thích nghi (fitness function) và tính hệ số thích nghi (fitness) cho từng đáp số. chúng ta có thể chọn bất cứ hệ thức hay hàm số nào để biểu diễn sự thích nghi của các đáp số của bài toán. Kinh nghiệm cho thấy hàm số thích nghi phải có liên hệ đến vấn đề. Bƣớc thứ ba này tƣơng đối phức tạp và khó thực hiện nhất, vì nếu chọn hàm số thích nghi không đúng, kết quả sẽ không có hiệu lực. Trong ví dụ này, chọn hàm số thích nghi bằng 100 – (X2 – 64) và quy định đáp số nào có hệ thích nghi bằng 1000 hay gần 1000 nhất sẽ là đáp số của bài toán. (adsbygoogle = window.adsbygoogle || []).push({});

Trong bảng đây chúng ta sẽ ghi lại chi tiết có trong bảng trên và thêm hệ số thích nghi cho mỗi đáp số:

Thứ tự (1) Nhị phân (2) Thập phân (3) Bình phƣơng của hệ số ở cột (3) trừ 64 Thích nghi 1 00100 4 -48 952 2 10101 21 377 623 3 01010 10 36 964 4 11000 24 312 488

Bước 4: Biến hóa và đáp số để tìm các đáp số có hệ số thích nghi tối ƣu. Nhìn vào bảng dƣới ta nhận thấy đáp số có hệ số thích nghi cao nhất vẫn còn cách xa 1000. Do đó, phải tìm ra những đáp số mới (để có hệ số này ngày càng lớn và bằng hay gần với 1000) bằng cách biến hóa các đáp số cũ.

Vấn đề đặt ra là: Trong 4 số (4, 21, 10, 24) trên, số nào sẽ đƣợc chọn để biến hóa. Nguyên tắc của GA đã trình bày trên là số nào đã đƣợc chọn để biến hóa hơn các số có hệ số thích nghi thấp. Điều này cũng giống với thực tế, chỉ những sinh vật nào thích nghi với hoàn cảnh hơn sẽ tồn tại lâu hơn và dĩ nhiên sẽ có cơ hội tạo sinh và biến hóa nhiều hơn.

Nhìn vào bảng dƣới ta thấy theo thứ tự 10 và 4 có hệ số thích nghi cao hơn do đó chúng sẽ đƣợc chọn để tạo sinh và biến hóa, đồng thời số 21 và 24 có hệ số thích nghi thấp nhất sẽ bị loại (để giữ tổng số các đáp số là 4). Trong ví dụ này chúng ta lai ghép hai số 4 và 10 tại điểm giữa hàng thứ hai và thứ ba, nhƣ trình bày dƣới đây.

) 4 ( 00 001 01000(hay 8) ) 10 ( 10 010 01010 (hay 6)

Bước 5: Tính hệ số thích nghi cho các đáp số vừa có đƣợc kết quả ghi trong bảng dƣới đây.

Thứ tự (1) Nhị phân (2) Thập phân (3) Bình phƣơng của hệ

số ở cột (3) trừ 64 Thích nghi

1 00100 4 -48 952

2 10101 21 36 964

3 01010 10 0 1000

4 11000 24 -28 968

Bước 6: Trƣớc khi trở lại bƣớc 4 và bƣớc 5 nhƣ trình bày trên, chúng ta hãy xét các chi tiết trong bảng trên. May mắn chúng ta có đƣợc đáp số ở hàng thứ 3 là số 8 với hệ số thích nghi bằng 1000. Theo quy định ghi trong bƣớc 3, đây là đáp số

có hệ số thích nghi cao nhất, số này là 01000 (nhị phân) hay 8 (thập phân). Do đó chúng ta không cần trở lại bƣớc 4 và bƣớc 5, chúng ta sẽ báo cáo kết quả là 8.

Bước 7: Kết quả với X = 8, chúng ta sẽ có X2 = 82 =64

1.3.4. C c p n t ức biến đổi của giải thuật

Ba phƣơng pháp sau đây đã đƣợc dùng để biến hóa các giải pháp

* Tạo sinh (reproduction) * Lai ghép ( cross over) * Đột biến (mutation)

a) Tạo sinh: Tạo sinh là dùng những thành phần của thế hệ trƣớc để tạo thêm thành phần của thế hệ sau. Vậy thành phần nào sẽ đƣợc chọn cho việc tạo sinh? Cũng giống nhƣ trong thiên nhiên, những thành phần nào có hệ số thích nghi lớn hơn sẽ có cơ hội đƣợc chọn để thực hiện việc tạo sinh.

b) Lai ghép: Các ví dụ dƣới đây thể hiện các hình thức của lai ghép. Trƣớc khi lai ghép

1001110 (A)

0100011 (B)

Sau khi lai ghép tại vị trí giữa thứ 3 và thứ 4, chúng ta sẽ có

(A)001110 010110(B‟)

(B)01010(10) 1000011 (A‟)

Trƣớc khi lai ghép

1001110 (A)

0100011 (B)

Sau khi lai ghép tại vị trí giữa số thứ 4 và thứ 5, chúng ta có: (adsbygoogle = window.adsbygoogle || []).push({});

(A)1001110 0101110(B‟‟)

Trƣớc khi lai ghép

1001110 (A)

0100011 (B)

Sau khi lai ghép tại vị trí giữa số thứ 2 và 3, giữa số thứ 5 và thứ 6

(A)101110 011110(B‟‟)

(B)010011 100111 (A‟‟)

c) Đột biến: Việc thay đổi trị số của một số trong dãy số, thí dụ 0 thành 1 hoặc thành 0, cho trƣờng hợp dùng dãy số theo hệ nhị phân. So với lai ghép, phƣơng thức biến hóa dựa trên đột biến rất ít xảy ra. Theo kết quả nghiên cứu của Kenneth De Jong thì tỉ lệ lai ghép trung bình là 0.6 trong khi tỉ lệ đột biến là 0.001, phần còn lại 0.399 là tạo sinh.

Lai ghép dùng lại những tin tức có sẵn trong các thành phần của thế hệ trƣớc và truyền lại cho thế hệ sau, trong khi đột biến tạo ra những tin tức hoàn toàn mới.

Ví dụ: 110011 sẽ đƣợc biến đổi thành 110010, trong đó số 1 ở hàng cuối (tính từ trái) đã đƣợc đổi thành 0.

1.3.5. C c n uyên tắc c bản của giải thuật

- GA là phƣơng tiện để giải quyết vấn đề. GA bắt chƣớc những phƣơng thức mà con ngƣời, hay sinh vật nói chung, đã dùng để tồn tại và phát triển, trong những điều kiện do môi trƣờng quy định.

- GA giải quyết vấn đề bằng cách nhìn tổng quát tất cả các giải pháp hiện hữu. Trƣớc tiên xét đến một số những giải pháp rồi biến hóa để cải thiện phẩm chất của chúng, dựa trên hệ số thích nghi của từng giải pháp

- GA giải quyết vấn đề bằng cách dùng rất nhiều phép tính mà trƣớc đây không thể thực hiện đƣợc bằng trí óc và giấy bút, gần đây mới thực hiện với máy tính và chƣơng trình tin học thích hợp. Trƣớc tiên phải tạo mô hình để tƣợng trƣng

các giải pháp bằng ký hiệu, tức là dãy những số thuộc hệ nhị phân hay thập phân, hay chữ và số. Kế đó phải chọn hàm số thích nghi để tính trị số thích nghi cho từng giải pháp.

- Chọn một số giải pháp tiêu biểu, rồi áp dụng những phƣơng thức biến hóa để tìm ra giải pháp có trị số thích nghi tốt hơn. Nếu chƣa đạt đƣợc mục tiêu đề ra thì tiếp tục việc biến hóa trên các giải pháp vừa có, cho đến khi đạt đƣợc mục tiêu hay cho đến khi nào thời gian cho phép chấm dứt.

- Nhƣ vậy GA duyệt xét toàn bộ các giải pháp của vấn đề, thay vì chỉ để ý đến giải đáp chính xác và duy nhất nhƣ toán học giải tích đã dùng trƣớc đây.

- GA dùng những định luật về xác suất để tìm ra giải pháp mới. Nhƣng xác suất trong trƣờng hợp này đƣợc hƣớng dẫn bởi hàm số thích nghi thay vì xác suất không định hƣớng nhƣ trƣờng hợp xác suất Monte Carlo.

- Những thành phần đƣợc chọn để biến hóa và tạo ra giải pháp mới phải có trị số thích nghi cao hơn, các thành phần có trị số thích nghi nhỏ sẽ bị loại bỏ.

- GA cơ bản do JH. Holland đề xuất có cơ sở toán học vững vàng, đã đƣợc chứng minh bởi chính tác giả hay các nhà nghiên cứu khác, nhƣ Kenneth De Jong. Sau này có những biến thể của GA, tuy thành công trong nhiều trƣờng hợp đặc biệt nhƣng chƣa đƣợc kiểm chứng một cách khoa học.

- GA là kỹ thuật rất thích nghi cho việc việc tìm kiếm giải pháp tối ƣu khi chúng ta có quá nhiều giải pháp nhƣng không có giá trị, hay vấn đề quá phức tạp không biết cách nào để giải quyết. Tìm kiếm, hoạch định chƣơng trình hoạt động, phân loại cũng là những lĩnh vực ứng dụng quan trọng của GA.

- Mặc dù đã thành công trong một số trƣờng hợp, GA vẫn còn một lý thuyết tƣơng đối mới mẻ. GA cũng có những khuyết điểm nhƣ những kỹ thuật của trí tuệ nhân tạo nhƣ Hệ chuyên gia, Mạng nơron nhân tạo, là lôgíc mờ. Riêng mỗi một kỹ thuật trên đều có khả năng giải quyết một số vấn đề, tuy nhiên nếu kết hợp phức tạp hơn. Đây chính là một trong những lĩnh vực đang khai phá bởi một số nhà nghiên cứu. Một số thành công sơ khai đã đƣợc báo cáo mở đầu cho những triển vọng đầy hứa hẹn trong tƣơng lai.

1.3.6. Giả bà to n tố u bằng giải thuật di truyền

* Đặt vấn đề

Tối ƣu hóa là một nội dung quan trọng của Tin học ứng dụng có liên quan đến mọi lĩnh vực của tự nhiên và xã hội.

Cho đến nay, tuy đã có khá nhiều phƣơng pháp giải quyết bài toán tối ƣu hàm số, nhƣng nhìn chung các phƣơng pháp chỉ dừng lại ở những lớp bài toán với thông tin rõ ràng hoặc với các thông tin bổ trợ khác. Do đó, việc tìm một phƣơng pháp mới giải bài toán tối ƣu hàm nhiều biến tổng quát là cần thiết và có ý nghĩa thực tế.

Nhƣ đã trình bày ở các chƣơng trƣớc, ta nhận thấy hoàn toàn có thể áp dụng Thuật giải di truyền để giải bài toán tối ƣu hàm nhiều biến tổng quát.

Trong chƣơng này, chúng tôi sẽ đề cập chi tiết việc áp dụng Thuật giải di truyền cho bài toán tối ƣu một hàm f có n biến, f (x1, x2… xn). Biết rằng mỗi biến xi có thể lấy các giá trị từ miền Di = [ ai, bi] là tập hợp con của tập các số thực R và yêu cầu độ chính xác là k chữ số thập phân đối với các giá trị biến.

* Biểu diễn các biến nhớ các véc tơ nhị phân

Bƣớc đầu tiên trong Thuật giải di truyền là mã hóa, ánh xạ một xâu với chiều dài hữu hạn sang các tham biến của bài toán tối ƣu. (adsbygoogle = window.adsbygoogle || []).push({});

Tham biến x thuộc [Umin; Umax] sẽ đƣợc biểu diễn bởi chuối nhị phân có chiều dài L. L bit mã hóa x ứng với giá trị trong miền [0; 2L] sẽ đƣợc ánh xạ lên các giá trị thuộc miền xác định [Umin; Umax]. Theo cách này chúng ta có thể kiểm soát miền giá trị của các biến và tính chính xác của chúng. Tỷ lệ dãn của ánh xạ này đƣợc cho bởi:

Ta thấy giá trị x tƣơng ứng với mã string2 sẽ đƣợc xác định theo công thức.

Trong đó decimal (string2) biểu diễn giá trị thập phân của chuỗi nhị phân string2 g đƣợc xác định bởi công thức (1.6)

(1.6)

Ví dụ: decimal (0001) = 1; decimal (0011) = 3

Để mã hóa tập các biến, ta ghép nối mã các biến riêng lẻ lại với nhau. Mỗi mã tƣơng ứng với một chiều dài các bit riêng và các định một giá trị tƣơng ứng của nó nằm trong miền [Umin; Umax]

Mã hóa cho 10 biến đƣợc cho bởi

1111 1100 ... 0101 0001 10 9 2 1U ...U U U

Trong đó thành tố thứ nhất (4 bít đầu tiên) tƣơng ứng với biểu diễn của biến thứ nhất, thành tố cuối cùng (4 bit cuối cùng) biểu diễn biến cuối cùng.

* Toán tử chọn cá thể (select)

Toán tử chọn lọc là thao tác xử lý trong đó mỗi cá thể đƣợc bảo lƣu cho vòng tạo sinh tiếp sau tùy thuộc vào giá trị thích nghi của nói. Toán tử này là một phiên bản mô phỏng của quá trình chọn lọc tự nhiên. Giá trị thích nghi f(i) đƣợc xác định đối với mỗi cá thể trong quần thể. Giá trị này càng lớn thì cá thể đƣợc coi là hợp lý. Hàm thích nghi có thể hàm không liên tục, hàm dƣơng hay phi tuyến. Xử lý chọn lọc các cá thể cha mẹ đƣợc hình thành theo mô hình tái tạo quay trên vòng tròn (roulette weel). Vòng quay của chúng có kích thƣớc khác nhau ứng với những giá trị hợp lý của các cá thể. Kỹ thuật này đƣợc gọi là lựa chọn cha mẹ trên vòng tròn quay (roulette weel parent selection). Mỗi khi cần tạo ra một con cháu, sẽ thực hiện một lần quay trên vòng tròn trọng số nhằm sản sinh ra ứng cử viên cho một tái sản xuất.

Kỹ thuật này có thể thực hiện theo các bƣớc.

Bƣớc 1. Tính tổng giá trị thích nghi của tất cả thành viên quần thể và gọi nó là tổng thích nghi (total fitness).

Bƣớc 2. Phát sinh một số n là số ngẫu nhiên trong khoảng từ 0 đến tổng thích nghi. Bƣớc 3. Trả lại thành viên quần thể đầu tiên mà độ thích nghi của nó cộng với độ thích nghi của các thành viên quần thể trƣớc đấy lớn hơn hoặc bằng n.

Một phần của tài liệu Một số phương pháp Heuristic giải bài toán thiết kế mạng viễn thông (Trang 25 - 71)