Các thành phần của thuật toán di truyền nhị phân

Một phần của tài liệu Nghiên cứu phương pháp tấn công chuẩn mật mã khối (DES) nhờ hệ thống tính toán hiệu năng cao (Trang 44)

GA bắt đầu giống nhƣ bất kỳ thuật toán tối ƣu nào khác, bằng cách định nghĩa các biến tối ƣu, chi phí và hàm chi phí, và cũng kết thúc tƣơng tự các thuật toán khác. Nhƣng phần giữa tiến trình thì hoàn toàn khác. Một đƣờng dẫn thông qua các thành phần của GA đƣợc trình diễn nhƣ là biểu đồ luồng ở Hình 3.5. Chi tiết mỗi khối trong “bức tranh lớn” ở Hình 3.5 sẽ đƣợc trình bày trong Chƣơng này.

Định nghĩa chi phí, hàm chi phí, các biến, chọn lọc các tham biến GA

Tạo dân số ban đầu Mã hóa các nhiễm sắc thể Tính chi phí mỗi nhiễm sắc thể Ghép cặp, sinh sản Đột biến Kết thúc Kiểm tra hội tụ

Có Không

Chọn lọc

Hình 3.5.Biểu đồ luồng của thuật toán di truyền nhị phân [12, pp.29]

a) Chọn các biến và hàm chi phí

Một hàm chi phí đƣợc tạo ra từ một tập các biến đầu vào (cấu thành một nhiễm sắc thể). Hàm chi phí có thể là hàm toán học, thực nghiệm, hoặc một trò chơi. Mục tiêu đặt ra là thay đổi giá trị hàm theo xu hƣớng nào đó bằng cách tìm kiếm các giá trị thích hợp cho các biến đầu vào.

39

Thuật ngữ “phù hợp” đƣợc sử dụng mở rộng cho đầu ra của hàm mục tiêu GA. “Phù hợp” chỉ ra vấn đề cực đại hóa. Mặc dầu từ “phù hợp” hay “thích nghi” có nghĩa liên quan nhiều đến sinh học hơn là thuật ngữ “chi phí”, nhƣng do hầu hết các tài liệu về tối ƣu hóa thƣờng đề cập đến việc cực tiểu hóa, hay cực tiểu hóa chi phí. Bởi vậy, ở đây, “phù hợp” và “chi phí thấp” là tƣơng đƣơng. Trong ví dụ dƣới đây, thuật ngữ “hàm chi phí” (cost function) đƣợc sử dụng thay cho thuật ngữ “hàm phù hợp” (fitness function).

GA bắt đầu bằng cách định nghĩa một nhiễm sắc thể hoặc một mảng các giá trị biến để tối ƣu hóa. Nếu nhiễm sắc thể có Nvar biến (một vấn đề tối ƣu hóa Nvar chiều) gồm p1, p2, p3, ..., pNvar, thì nhiễm sắc thể đƣợc viết nhƣ một vector dòng Nvar phần tử:

Nhiễm sắc thể = [p1, p2, p3, ..., pNvar]

Ví dụ, tìm kiếm độ cao cực đại trên bản đồ địa hình yêu cầu một hàm chi phí với các biến đầu vào là kinh độ (x) và vĩ độ (y).

Nhiễm sắc thể = [x, y]

Trong đó Nvar = 2, mỗi một nhiễm sắc thể đều có một chi phí đƣợc định giá bởi hàm chi phí, f, với các biến p1, p2, p3, ..., pNvar.

Chi phí = f (nhiễm sắc thể) = f (p1, p2, p3, ..., pNvar)

Ví dụ khi chúng ta cố gắng tìm kiếm đỉnh cao nhất của một dãy núi, thì hàm chi phí đƣợc viết nhƣ là phủ định của độ cao để đƣa nó về dạng thuật toán tìm cực tiểu.

f(x,y)= - độ cao tại (x,y)

Thông thƣờng hàm chi phí là rất phức tạp, ví dụ cực đại hóa số dặm đi đƣợc trên một đơn vị khí ga của ô tô. Ngƣời áp xây dựng hàm phải quyết định đƣợc biến nào, thuộc yếu tố nào là quan trọng nhất. Nếu quá nhiều biến đƣợc đƣa ra sẽ tạo ra sự sa lầy trong GA. Các biến quan trọng để tối ƣu hóa hiệu suất sử dụng khí ga gồm có kích thƣớc ô tô, kích thƣớc động cơ, và trọng lƣợng của các chất liệu. Các biến khác nhƣ là màu sơn, kiểu đèn pha có ảnh hƣởng ít hoặc không ảnh hƣởng đến hiệu suất sử dụng khí ga và không cần thiết phải đƣa vào danh sách biến của hàm chi phí. Đôi khi, sự lựa chọn các biến có thể đƣợc quyết định qua kinh nghiệm và những lần chạy thử tối ƣu hóa. Chẳng hạn, với việc tối ƣu hóa số dặm mà ô tô chạy đƣợc trên một đơn vị khí ga là f(w, x, y, z) = 2x + 3y

+ z/100000 + √𝑤/9876. Trong đó, các yếu tố màu sơn (z), kiểu đèn pha (w) có ảnh hƣởng cực kỳ nhỏ đến giá trị hàm, vì vậy mà chúng có thể đƣợc bỏ qua. Bởi vậy, hàm chi phí bốn chiều nói trên có thể đƣợc mô hình hóa một cách tƣơng đƣơng thành hàm hàm hai chiều, hay hai biến gồm kích thƣớc ô tô (x) và kích thƣớc động cơ (y).

40

b) Mã hóa và giải mã các biến

Kể từ khi các biến đƣợc trình diễn ở dạng nhị phân, thì buộc phải có cách chuyển đổi các giá trị biến liên tục thành nhị phân và ngƣợc lại. Việc lƣợng hóa lấy mẫu một phạm vi (khoảng) liên tục của các giá trị và phân lớp các mẫu đó vào các phạm vi nhỏ riêng biệt. Hay nói cách khác, các giá trị rời rạc duy nhất đƣợc gán tới mỗi phạm vi nhỏ. Sự khác biệt giữa giá trị hàm thực tế và mức lƣợng hóa đƣợc xem nhƣ là lỗi lƣợng hóa. Việc tăng số lƣợng các bit sẽ làm giảm lỗi lƣợng hóa. Trình diễn nhị phân có thể tƣơng ứng với một giá trị phi số nhƣ là màu sắc, hay ý kiến đã đƣợc định nghĩa trƣớc khi lƣợng hóa.

Chúng ta có thể lấy ví dụ lƣợng hóa đối với một bản đồ địa hình với tọa độ 128 x 128 điểm (kinh độ x và vĩ độ y). x và y đƣợc lƣợng hóa và mã hóa bởi 2 gen, với mỗi gen có số bit Ngen = 7 bit. Nhƣ thế sẽ có 27 (128) giá trị có thể cho x và cho y. Các phạm vi giá trị này là từ 40°15’ ≤ y ≤ 40°16’ và 105°37’30’’ ≥ x ≥ 105°36’

Bảng 3.1. Ví dụ về trình diễn mã hóa nhị phân [12]

Biến Nhị phân Thập phân Giá trị thực (tọa độ)

Vĩ độ 0000000 1 40°15’

Vĩ độ 1111111 128 40°16’

Kinh độ 0000000 1 105°36’

Kinh độ 1111111 128 105°37’30’’

GA làm việc với các biến nhị phân nhƣng hàm chi phí thƣờng yêu cầu các giá trị liên tục. Bất cứ khi nào hàm chi phí đƣợc định giá, các nhiễm sắc thể trƣớc hết phải đƣợc giải mã. Sau đây là một ví dụ về nhiễm sắc thể đã đƣợc mã hóa nhị phân có Nvar biến, mỗi biến có Ngen = 10 bit,

nhiễm sắc thể = [11110010010011011111 ... 0000101001]

Việc đƣa các gen vào nhiễm sắc thể tạo thành một mảng các phiên bản đƣợc lƣợng hóa của các biến. Nhiễm sắc thể này có tổng số Nbit = Ngen x Nvar = (10 x Nvar) bit.

Nhƣ đã đề cập đến ví dụ về bản đồ địa hình nói trên, hàm chi phí có hai biến là kinh độ và vĩ độ.

nhiễm sắc thể = [11000110011001]

41

Nhiễm sắc thể này tƣơng đƣơng với tọa độ hệ thập phân [99,25] hoặc tọa độ vĩ độ, kinh độ [105°36’50’’, 40°15’29.7’’]. Trong suốt quá trình tối ƣu hóa, các giá trị thực của vĩ độ và kinh độ không cần thiết phải tính toán lại. Việc giải mã chỉ cần thiết để làm rõ kết quả khi thuật toán kết thúc.

Phần này không đi sâu vào phân tích việc lƣợng hóa các biến liên tục, chuyển đổi các biến từ nhiều dạng khác nhau sang các chuỗi nhị phân. Việc không phân tích các kỹ thuật lƣợng hóa là vì hai lý do. Thứ nhất, đối với các biến liên tục sẽ đƣợc áp dụng thuật toán di truyền liên tục. Thứ hai, trong phạm vi đề tài luận văn này sẽ sử dụng ngay các biến nhị phân (các bit khóa của hệ mã hóa) là các biến đầu vào.

c) Dân số

GA bắt đầu với một nhóm nhiễm sắc thể đƣợc gọi là dân số. Dân số có Npop nhiễm sắc thể và là một ma trận Npop x Nbit đƣợc lấp đầy bởi các số không và một đƣợc tạo ra một cách ngẫu nhiên bởi hàm sau:

pop=round(rand(Npop, Nbits));

Trong đó, hàm rand(Npop, Nbits) tạo ra một ma trận Npop x Nbits gồm các số ngẫu nhiên đồng bộ giữa không và một. Hàm round làm tròn các số tới số nguyên gần nhất mà trong trƣờng hợp này là không hoặc một. Mỗi dòng trong ma trận dân số là một nhiễm sắc thể.

d) Chọn lọc tự nhiên

Sự sống sót của nhiễm sắc thể phù hợp nhất đồng nghĩa với việc loại bỏ nhiễm sắc thể có chi phí cao nhất. Trƣớc hết, Npop chi phí gán với các nhiễm sắc thể đƣợc phân hạng từ chi phí thấp nhất đến chi phí cao nhất. Khi đó, chỉ những nhiễm sắc thể có chi phí thấp nhất đƣợc chọn để tiếp tục, trong khi phần còn lại là bị loại bỏ. Tỷ lệ chọn lọc, Xrate là một phần của dân số Npop sống sót để thực hiện bƣớc ghép cặp, giao phối tiếp theo. Số lƣợng của nhiễm sắc thể đƣợc giữ lại từ mỗi thế hệ là

Nkeep =Xrate Npop

Sự chọn lọc tự nhiên xảy ra ở mỗi thế hệ hoặc vòng lặp của thuật toán. Đối với Npop nhiễm sắc thể trong mỗi thế hệ, chỉ có Nkeep cái đầu tiên sống sót để giao phối, và

Npop - Nkeep cuối là bị loại bỏ để tạo chỗ trống cho các con mới. Quyết định bao nhiêu

42

nhiễm sắc thể đƣợc giữ lại là tùy ý. Chúng ta thƣờng giữ lại 50% (Xrate = 0.5) trong các tiến trình chọn lọc tự nhiên.

Một cách tiếp cận khác tới chọn lọc tự nhiên đƣợc gọi là ngưỡng. Theo cách tiếp cận này, nhiễm sắc thể nào có chi phí nhỏ hơn một ngƣỡng nào đó sẽ sống sót. Ngƣỡng đƣa ra phải đảm bảo có nhiễm sắc thể sống sót để tiếp tục trở thành bố mẹ và sinh con. Nếu không, toàn bộ dân số mới phải đƣợc tạo ra để tìm kiếm ra một số nhiễm sắc thể vƣợt qua sự kiểm tra (vƣợt qua “ngƣỡng”). Trƣớc hết, có thể có một vài nhiễm sắc thể sống sót. Nhƣng ở thế hệ kế tiếp, hầu hết các nhiễm sắc thể sẽ sống nếu nhƣ “ngƣỡng” không đƣợc thay đổi. Ƣu điểm của kỹ thuật này là dân số không cần phải sắp xếp.

đ) Ghép cặp

Có thể ví đây là công việc của một ngƣời mai mối, chọn hai nhiễm sắc thể từ Nkeep nhiễm sắc đã đƣợc chọn lọc thể để sinh ra hai con mới. Việc ghép cặp diễn ra trong dân số giao phối cho đến khi Npop - Nkeep con đƣợc sinh ra để thay thế cho các nhiễm sắc thể bị loại bỏ. Việc ghép cặp nhiễm sắc thể trong GA cũng thú vị và đa dạng nhƣ ghép cặp cho các loài vật. Chúng ta hãy quan sát sự đa dạng của các phƣơng pháp chọn lọc, bắt đầu với phƣơng pháp dễ nhất:

đ.1. Ghép cặp từ trên xuống: Bắt đầu từ đầu của danh sách và lần lƣợt ghép cặp hai nhiễm sắc thể cho đến khi Nkeep nhiễm sắc thể đƣợc chọn hết để giao phối. Bởi vậy, thuật toán sẽ ghép cặp các dòng chẵn với các dòng lẻ. Mẹ có các số dòng trong ma trận dân số là ma = 1, 3, 5,..., và bố có các số dòng là pa = 2, 4, 6,... Cách tiếp cận này không gần với chọn lọc tự nhiên nhƣng lại đơn giản, dễ lập trình.

đ.2. Ghép cặp ngẫu nhiên: Cách tiếp cập này sử dụng bộ tạo số ngẫu nhiên đồng bộ để chọn nhiễm sắc thể. Số dòng của bố, mẹ đƣợc xác định nhƣ sau:

ma=ceil(Nkeep*rand(1, Nkeep)) pa=ceil(Nkeep*rand(1, Nkeep))

trong đó hàm ceil làm tròn giá trị tới số nguyên cao nhất tiếp theo.

đ.3. Ghép cặp ngẫu nhiên theo trọng số: Các xác suất đƣợc gán cho các nhiễm sắc thể trong bể giao phối và tỷ lệ nghịch với chi phí của chúng. Một nhiễm sắc thể có chi phí thấp nhất sẽ có xác suất cao nhất để giao phối. Trong khi nhiễm sắc thể có chi phí cao nhất sẽ có xác suất thấp nhất. Một số ngẫu nhiên sẽ xác định nhiễm sắc thể nào đƣợc chọn. Kiểu đánh trọng số này thƣờng đƣợc xem nhƣ là đánh trọng số bánh xe Rulet. Có hai kỹ thuật: đánh trọng số phân hạng và trọng số chi phí.

* Trọng số phân hạng: Bản chất của cách tiếp cận này là tính xác suất từ thứ hạng,

43

trên xuống. Dân số nhỏ thƣờng có xác suất cao chọn lựa cùng một nhiễm sắc thể. Ƣu điểm của cách tiếp cận này là các xác suất chỉ phải tính một lần và các xác suất này không thay đổi qua các thế hệ.

* Trọng số chi phí: Xác suất của sự lựa chọn đƣợc tính toán từ chi phí của nhiễm sắc thể thay vì thứ hạng của nó trong dân số. Cách đánh chỉ số này hƣớng tới đánh chỉ số thậm chí khi toàn bộ nhiễm sắc thể là có chi phí xấp xỉ nhau. Vấn đề đặt ra ở đây tƣơng tự với kỹ thuật đánh trọng số phân hạn đã trình bày ở trên, đó là một nhiễm sắc thể đƣợc chọn có thể lại giao phối với chính nó. Vì vậy, mỗi trọng số xác suất của nhiễm sắc thể cần phải tính toán lại ở mỗi thế hệ.

đ.4. Ghép cặp thi đấu: Một cách tiếp cận khác giống với cuộc cạnh tranh giao phối trong tự nhiên đó là chọn ngẫu nhiên một tập con nhiễm sắc thể (hai hoặc ba) từ bể giao phối, và nhiễm sắc thể với chi phí thấp nhất trong tập con này sẽ trở thành bố mẹ. Cuộc thi đấu đƣợc lặp lại với mỗi bố mẹ cần thiết. Ngƣỡng đƣa ra và lựa chọn thi đấu giúp tạo ra một cặp đẹp, và dân số không cần phải sắp xếp. Thuật toán với lựa chọn thi đấu làm việc tốt nhất với kích thƣớc dân số lớn hơn do việc sắp xếp làm tiêu tốn rất nhiều thời gian đối với dân số lớn.

Mỗi một phƣơng pháp lựa chọn bố mẹ cho kết quả một tập hợp bố mẹ khác. Vì vậy, sự cấu thành thế hệ tiếp theo sẽ khác nhau khi áp dụng các phƣơng pháp lựa chọn khác nhau. Bánh xe RuletGhép cặp thi đấu là những phƣơng pháp chuẩn cho hầu hết các thuật toán di truyền. Rất khó để đƣa ra lời khuyên lƣợc đồ đánh trọng số nào là làm việc tốt nhất.

e) Giao phối

e1. Giao phối lai ghép điểm đơn:

44

Giao phối là việc tạo ra một hoặc nhiều con từ các bố mẹ đƣợc chọn trong giai đoạn ghép cặp. Việc hình thành tính di truyền của dân số đƣợc giới hạn bởi các thành viên hiện tại của dân số. Dạng phổ biến nhất của giao phối là hai bố mẹ sản sinh ra hai con (xem Hình 3.6). Một điểm giao phối đƣợc nhọn ngẫu nhiên giữa bit đầu tiên và bit cuối cùng của nhiễm sắc thể bố mẹ. Trƣớc hết, bố_mẹ_1 chuyển mã nhị phân bên trái điểm giao phối tới phần bên trái con_1. Theo cách tƣơng tự, bố_mẹ_2 chuyển mã nhị phân bên trái của cùng một điểm giao phối tới phần bên trái con_2. Kế tiếp, mã nhị phân bên phải điểm giao phối của bố_mẹ_1 chuyển tới con_2, và bố_mẹ_2 chuyển mã của nó tới con_1. Kết quả là con chứa các phần mã nhị phân của cả bố và mẹ. Bố mẹ sản sinh ra Npop - Nkeep

con. Bởi vậy, dân số nhiễm sắc thể sẽ đƣợc trở lại số lƣợng Npop.

Bảng 3.2. Ví dụ về tiến trình ghép cặp và giao phối theo hình thức lai ghép điểm đơn [12]

Nhiễm sắc thể Họ Chuỗi nhị phân

3 mẹ (1) 00101111001000 2 bố (1) 11101100000001 5 con_1 00101100000001 6 con_2 11101111001000 3 mẹ (2) 00101111001000 1 bố (2) 00101111000110 7 con_3 00101111000110 8 con_4 00101111001000

Bảng 3.6 cho thấy rõ tiến trình ghép cặp và giao phối. Tập bố mẹ đầu tiên là các nhiễm sắc thể 3 và 2 có một điểm lai ghép giữa các bit 5 và 6. Tập bố mẹ thứ hai là các nhiễm sắc thể 3 và 1 có một điểm lai ghép giữa các bit 10 và 11. Tiến trình này đƣợc gọi là lai ghép đơn giản hay lai ghép điểm đơn.

e2. Giao phối lai ghép điểm kép:

Bố_mẹ_1 001 010110 00110

Bố_mẹ_2 011 111000 01100

Con_1 001 111000 00110

45

Hai điểm lai ghép ngẫu nhiên đƣợc chọn trên các bố mẹ. Sau đó các bố mẹ hoán vị các bit giữa hai điểm lai ghép để tạo ra hai con. Ngoài ra, một sự lựa chọn ngẫu nhiên khác từ một trong ba phần của nhiễm sắc thể sẽ quyết định nhóm bit nào đƣợc hoán vị.

e3. Giao phối lai ghép đa điểm (nhiều hơn hai điểm): Nhiễm sắc thể bố và mẹ đƣợc chia thành nhiều phần dựa trên nhiều điểm lai ghép khác nhau. Từ đó các nhiểm sắc thể con sẽ đƣợc sinh ra dựa trên cơ sở hoán vị đồng bộ giữa các nhóm bit của bố và mẹ.

g) Đột biến

Các đột biến ngẫu nhiên làm thay đổi một tỷ lệ phần trăm xác định các bit trong danh sách các nhiễm sắc thể. Đột biến là cách thứ hai để GA tìm kiếm một bề mặt chi phí. Nó có thể tạo ra các đặc điểm không có trong dân số gốc. Một đột biến điểm đơn làm thay đổi 1 thành 0 và ngƣợc lại. Các điểm đột biến đƣợc chọn lọc một cách ngẫu nhiên từ tổng

Một phần của tài liệu Nghiên cứu phương pháp tấn công chuẩn mật mã khối (DES) nhờ hệ thống tính toán hiệu năng cao (Trang 44)

Tải bản đầy đủ (PDF)

(76 trang)