HƯỚNG
3.1. Mở đầu
Thuật toán tiến hóa là một dạng thuật toán tìm kiếm ngẫu nhiên. Bởi vậy, một trong những chìa khóa dẫn đến thành công trong thiết kế thuật toán tiến hóa là có được các thông tin định hướng tốt để chỉ dẫn quá trình tìm kiếm. Trong tối ưu hóa cổ điển, phương pháp Gradient descent là một ví dụ điển hình về lợi thế của việc sử dụng thông tin định hướng tốt trong quá trình tìm kiếm. Tuy nhiên việc xác định được các thông tin định hướng tốt theo cách này là việc làm không đơn giản, đặc biệt trong trường hợp hàm mục tiêu của bài toán tối ưu là không tuyến tính (non-linear) hoặc là hộp đen (black-box). Trong thiết kế thuật toán tiến hóa hiện đại, vấn đề xác định thông tin định hướng cũng nhận được nhiều sự quan tâm, chẳng hạn như trường hợp của Tiến hóa vi phân (DE, xem lại phần 2.2.4). DE sử dụng thông tin định hướng được xác định là sự khác biệt giữa 2 cá thể bố mẹ được lựa chọn một cách ngẫu nhiên để sinh ra cá thể con cái. Thực nghiệm đã cho thấy DE rất hiệu quả trong việc giải quyết các bài toán tối ưu liên tục. Trong một số trường hợp, có được thông tin định hướng tốt nên DE đã sinh ra cá thể tốt. Một số trường hợp khác, nếu thông tin định hướng xấu được sinh ra thì chất lượng của cá thể hiện tại có thể bị suy giảm. Vấn đề đặt ra là làm thế nào để khởi tạo và duy trì các hướng tốt một cách có hệ thống?
Một yêu cầu khác cũng cần quan tâm trong việc thiết kế các thuật toán tiến hóa là đảm bảo sự cân bằng phù hợp giữa tính hội tụ và tính đa dạng bởi vì thuật toán tiến hóa là một thuật toán tìm kiếm ngẫu nhiên. Tính
hội tụ giúp cho thuật toán nhanh chóng tìm được các phương án tối ưu, trong khi đó tính đa dạng giúp cho không gian tìm kiếm được rộng khắp và thuật toán không sa lầy vào các phương án tối ưu địa phương.
Trong luận án này, thông tin định hướng được xây dựng từ tập các cá thể ưu tú được ký hiệu là ETS (Elite Set). Đó là tập các cá thể có giá trị đánh giá lớn hơn các cá thể khác còn lại (cá thể xếp hạng hai) và được quản lý, duy trì trong suốt quá trình tiến hóa. Ý tưởng quan tâm đến việc tổ chức, duy trì và cập nhật tập ETS nói trên trong cả quá trình tiến hóa đã làm cho tập ETS không chỉ thực hiện việc đóng góp các cá thể ưu tú cho thế hệ kế tiếp mà còn được sử dụng để định hướng, để chỉ dẫn quá trình sản sinh các cá thể mới cho thế hệ tiếp theo.
Có hai dạng thông tin định hướng được luận án quan tâm: (1) hướng hội tụ là hướng từ một cá thể tới một cá thể tốt hơn và (2) hướng tản mát là hướng giữa hai cá thể ưu tú. Tác giả gọi chung là các hướng cải thiện (direction of improvement). Tại mỗi thế hệ tiến hóa, hai hướng cải thiện được định nghĩa:
• Hướng hội tụ (CD - Convergence Direction) là hướng từ một cá thể xếp hạng hai trong quần thể hiện tại đến một cá thể ưu tú trong tập ETS.
• Hướng tản mát (SD - Spread Direction) là hướng giữa hai cá thể ưu tú trong tập ETS hiện tại.
Do việc tổ chức và quản lý ETS một cách toàn cục nên các hướng cải thiện sẽ có tính toàn cục. Trong quá trình tiến hóa, nếu một cá thể được định hướng theo hướng hội tụ, nó sẽ hướng tới một khu vực tốt hơn khu vực hiện tại, còn nếu một cá thể được định hướng theo hướng tản mát, quần thể trong thế hệ mới có tính đa dạng cao hơn.
Thuật toán mới được gọi là Direction-guided Evolutionary ALgorithm hay DEAL. Những nội dung liên quan của DEAL như sơ đồ thuật toán, độ phức tạp tính toán, các tùy chọn đột biến và chiến lược lai ghép sẽ được trình bày cụ thể trong phần tiếp theo.
Nhằm tăng cường hiệu quả tính toán của DEAL khi giải quyết các bài toán tối ưu phức tạp, luận án quan tâm nghiên cứu kỹ thuật song song hóa thuật toán DEAL bằng cách kết hợp giữa mô hình master/slave truyền thống với kỹ thuật đồng tiến hóa hợp tác (xem lại phần 2.4.5). Mô hình song song này được phân tích một cách cụ thể về thời gian thực thi và tính toán hệ số tăng tốc. Thuật toán DEAL song song có tên là Parallel CoOperative CoEvolution for DEAL (PCCDEAL) được trình bày gồm
thuật toán ở master và thuật toán ở slave. Phần cuối của chương là các thực nghiệm được chia thành 2 phần. Phần thứ nhất dành cho DEAL, lớp các bài toán tối ưu chỉ có một phương án tối ưu toàn cục được lựa chọn thực nghiệm, nhằm phân tích, đánh giá các hành vi và hiệu quả của DEAL. Trong phần này, DEAL được so sánh hiệu quả với 10 thuật toán nổi tiếng khác khi cùng giải quyết các bài toán được lựa chọn. Phần thứ hai dành cho PCCDEAL, các bài toán tối ưu đã thực nghiệm được phức tạp hóa bằng cách tăng số chiều của bài toán (D = 500). Hiệu quả về mặt thời gian tính toán, hệ số tăng tốc cũng như chất lượng lời giải sẽ được phân tích một cách cụ thể.
3.2. Thuật toán DEAL
Như đã mô tả ở trên, DEAL là thuật toán tiến hóa sử dụng thông tin hướng cải thiện để chỉ dẫn quá trình tiến hóa tìm kiếm lời giải. Thông tin hướng cải thiện là hướng toàn cục và được xây dựng từ tập các cá thể ưu tú ETS. Sơ đồ của DEAL được mô tả như sau:
Algorithm 3.1 Sơ đồ của Thuật toán DEAL
Input: N là kích thước quần thể; θc, θm, σ1, σ2 là các tham số điều khiển.
Output: a∗ là cá thể tốt nhất tìm được.
1: t←− 0;
2: P(t) ←− initialize(N);
3: f(t) ←− evaluate(P(t));
4: ET S(t) ←− selectElite(P(t));
5: while (termination() 6= true) do
6: M(t) ←− P(t);
7: M(t) ←− generate(M(t), P(t), θc, θm, σ1, σ2);
8: C(t) ←− M(t)∪ET S(t);
9: ET S(t) ←−selectElite(C(t));
10: P(t+ 1) ←− M(t);
11: t ←− t+ 1;
12: end while
13: return a∗ = best(P(t));
Trong đó, thủ tục initilize(N) thực hiện việc khởi tạo ngẫu nhiên quần thể P với kích thước N cá thể. Sau khi khởi tạo, quần thểP(t) được đánh giá bằng thủ tục evaluate(P(t)). Tại dòng 4, thủ tục selectElite(P(t)) thực hiện việc khởi tạo tập ETS chứa các cá thể ưu tú (có giá trị đánh giá
tốt hơn) từ quần thể P(t). Trong DEAL, tập ETS được sử dụng có kích thước bằng 1/2 kích thước của quần thể chính. Để khởi tạo ETS, quần thể P(t) được sắp xếp theo chiều giảm dần của giá trị đánh giá f(t), các cá thể có giá trị đánh giá cao hơn được lựa chọn cho đến khi đủ số lượng của ETS.
Điều kiện dừng thuật toán termination() có thể sử dụng tùy ý theo các điều kiện dừng của một thuật toán tiến hóa thông thường. Tuy nhiên với DEAL, tác giả sử dụng điều kiện dừng theo thời gian thông qua tham số MaxFEs là số lần tính giá trị hàm đánh giá tối đa.
Thủ tục generate(M(t), P(t), θc, θm, σ1, σ2) là thủ tục quan trọng nhất trong thuật toán DEAL. Thủ tục này thực hiện việc sinh ra tập M(t) gồm các cá thể thử nghiệm s1 và s2, trong đó:
• Cá thể thử nghiệm s1 thu được khi lai ghép một cá thể cha pr (được lựa chọn ngẫu nhiên trong quần thể hiện tại) với cá thể thu được khi dịch chuyển pr theo hướng hội tụ, còn
• Cá thể thử nghiệm s2 thu được khi lai ghép một cá thể cha pr nói trên với cá thể thu được khi dịch chuyển pr theo hướng tản mát.
Tập M(t) gọi là quần thể trộn do các cá thể của nó sinh ra từ 2 hướng cải thiện khác nhau.
Các hướng cải thiện (hội tụ và tản mát) được lựa chọn một cách ngẫu nhiên trong không gian các véc tơ định hướng sinh bởi các cặp cá thể khác nhau trong quần thể hiện tại. Bởi vậy, các công thức sau đây được sử dụng để xác định các hướng hội tụ d~1 và hướng tản mát d~2 trong thuật toán:
• Hướng hội tụ d~1
d~1 = ~x11−~x12 k~x11−~x12k
trong đó x11 là cá thể ưu tú được lựa chọn ngẫu nhiên trong tập ETS, x12 là cá thể hạng hai được lựa chọn ngẫu nhiên trong quần thể P(t).
• Hướng tản mát d~2
d~2 = ~x21−~x22 k~x21−~x22k
trong đó x21, x22 là 2 cá thể ưu tú được lựa chọn ngẫu nhiên trong tập ETS.
Các tham số điều khiển của thủ tục generate() gồm xác suất lai ghép θc, các bước nhảy định hướng σ1, σ2. Sơ đồ chi tiết dạng bước của thủ tục generate() được mô tả như sau:
Bước 1: index = 0.
Bước 2: Lựa chọn ngẫu nhiên một cá thể cha pr. Bước 3: Lựa chọn hướng hội tụ d1.
Bước 4: Xác định cá thể thử nghiệm s1 bằng cách lai ghép pr với cá thể sinh ra khi dịch chuyển pr theo hướng hội tụ d1, bước nhảy định hướng σ1, xác suất lai ghép θc.
Bước 5: Đánh giá s1,
Nếu s1 tốt hơn pindex thì thay thế mindex = s1. Bước 6: Lựa chọn hướng tản mát d2.
Bước 7: Xác định cá thể thử nghiệm s2 bằng cách lai ghép pr với cá thể sinh ra khi dịch chuyển pr theo hướng tản mát d2, bước nhảy định hướng σ2, xác suất lai ghép θc.
Bước 8: Đột biến s2 theo xác suất đột biến θm. Bước 9: Đánh giá s2,
Nếu S2 tốt hơn pindex+1 thì mindex+1 = s2. Bước 10: index = index+ 2,
Lặp lại Bước 1 cho đến khi duyệt hết các cá thể của M.
Việc xác định cá thể thử nghiệm s1 và s2 trong bước 4 và bước 7 có thể được cụ thể hóa trong các đoạn giả mã sau:
• Cá thể thử nghiệm s1 = (s1(i))i=1...D If (rand() < θc) or (i = irand) then
s1(i) =pr(i) +σ1 ×d1(i);
else
s1(i) =pr(i);
• Cá thể thử nghiệm s2 = (s2(i))i=1...D If (rand() < θc) or (i = irand) then
s2(i) =pr(i) +σ2 ×d2(i);
else
s2(i) =pr(i);
trong đó D là chiều của bài toán, rand() là hàm sinh số ngẫu nhiên trong đoạn [0,1], irand là số nguyên ngẫu nhiên trong đoạn [1, D].
Tại dòng 9 của thuật toán DEAL, thủ tục selectElite(C(t)) thực hiện việc xác định lại tập ETS cho thế hệ kế tiếp. Quần thể C(t) là quần thể
kết hợp giữa tập ETS hiện thời và quần thể trộn M(t). Bởi vậy, thủ tục này làm cho tập ETS chứa các cá thể ưu tú có tính toàn cục.
Lợi ích của việc dịch chuyển một cá thể theo hướng hội tụ hoặc hướng tản mát có thể được minh họa trong Hình 3.1. Trong hình vẽ 3.1.a, hướng từ cá thể xGr1 tới cá thể xGr2 là hướng hội tụ. Bởi thế, nếu cá thể xGr3 được dịch chuyển theo hướng hội tụ thì có thể sinh ra một cá thể mới (màu đỏ) tốt hơn. Tương tự như vậy trong hình vẽ 3.1.b, nếu cá thể xGr3 được dịch chuyển theo hướng tản mát thì cá thể mới sinh ra có thể thuộc vào các khu vực tìm kiếm tiềm năng hơn.
(a) Hướng hội tụd1 (b) Hướng tản mátd2
Hình 3.1: Hai dạng thông tin định hướng của DEAL
3.2.1. Độ phức tạp tính toán
Phân tích các bước của thuật toán DEAL trong Algorithm 3.1, chúng ta có thể dễ dàng nhận ra phần tính toán phức tạp chính của thuật toán nằm ở thủ tục selecElite() xác định tập ETS cho thế hệ kế tiếp (dòng thứ 9). Thủ tục này đòi hỏi phải sắp xếp quần thể kết hợp C(t) và được thực hiện trong một vòng lặp m thế hệ tiến hóa.
Nói chung các thuật toán sắp xếp một tập hợp có kích thước N thường có độ phức tạp là O(N logN). Bởi vậy, nếu không quan tâm đến số chiều D của bài toán thì độ phức tạp của thuật toán DEAL sẽ là O(mN logN), trong đó N là kích thước quần thể, m là số thế hệ tiến hóa (m là một tham số của bài toán hoặc phụ thuộc vào tham số M axF Es là tổng số lần tính giá trị hàm đánh giá tối đa).
3.2.2. Các tùy chọn về bước nhảy định hướng
Trong thuật toán DEAL, khi sinh ra các cá thể thử nghiệm s1 và s2, DEAL sử dụng 2 tham số σ1 và σ2 để điều chỉnh độ lớn của véc tơ định hướngd1 và d2. Các tham số này được gọi là bước nhảy định hướng và các giá trị khác nhau của chúng có ảnh hưởng đến chất lượng của thuật toán.
Điều này sẽ được kiểm chứng và phân tích một cách cụ thể hơn trong các thực nghiệm ở phần cuối của chương.
3.2.3. Các chiến lược lai ghép
Như đã trình bày trong các thủ tục ở phần trên, thuật toán DEAL sử dụng một cá thể cha pr vừa làm cá thể đột biến (cá thể được dịch chuyển theo hướng hội tụ hoặc hướng tản mát) vừa làm cá thể lai ghép (hiến tạng) để sinh ra các cá thể thử nghiệm s1 và s2. Đây là chiến lược lai ghép thứ nhất. Ngoài ra, thay vì sử dụng cá thể cha pr làm cá thể lai ghép, thuật toán này có thể thay đổi bằng cách sử dụng các cá thể pindex và pindex+1 làm cá thể lai ghép (index là thứ tự bước lặp trong thủ tục generate()). Đây là chiến lược lai ghép thứ hai. Phiên bản lai ghép này của DEAL được gọi tên là MDEAL (Modified Strategy for DEAL). Xem minh họa sự khác biệt của hai chiến lược lai ghép trong Hình 3.2.
(a) DEAL (b) MDEAL
Hình 3.2: Các chiến lược lai ghép của DEAL
Với MDEAL, các thủ tục sinh s1 và s2 được thay đổi như sau:
• Cá thể thử nghiệm s1 = (s1(i))i=1...D If (rand() < θc) or (i = irand) then
s1(i) =pr(i) +σ1 ×d1(i);
else
s1(i) =pindex(i);
• Cá thể thử nghiệm s2 = (s2(i))i=1...D If (rand() < θc) or (i = irand) then
s2(i) =pr(i) +σ2 ×d2(i);
else
s2(i) =pindex+1(i);
3.3. Song song DEAL với kỹ thuật đồng tiến hóa hợp tác Cũng như các thuật toán tiến hóa khác, DEAL sẽ gặp khó khăn về mặt thời gian khi giải quyết các bài toán tối ưu phức tạp như các bài toán tối ưu cỡ lớn. Một trong những kỹ thuật vượt qua khó khăn này là kỹ thuật song song hóa thuật toán. Có thể song song hóa thuật toán DEAL theo các mô hình khác nhau như đã trình bày trong phần 2.4. Tuy nhiên, trong phần này, luận án sử dụng mô hình song song là sự kết hợp giữa mô hình song song master/slave truyền thống và kỹ thuật đồng tiến hóa hợp tác (CoOperative CoEvolution - CC).
3.3.1. Mô hình song song
Trong mô hình song song được đề xuất, quá trình tiến hóa các quần thể được thực hiện tại các slave thay vì chỉ thực hiện các phép đánh giá giá trị cá thể như trong mô hình truyền thống, còn master thực hiện việc điều khiển quá trình tiến hóa và quản lý các giá trị toàn cục. Chi tiết về mô hình này được biểu diễn trong Hình 3.3.
Tại master, một quần thể (Population) gồm các cá thể được khởi tạo ngẫu nhiên trong không gian tìm kiếm, được phân chia (Decomposition) thành các quần thể con mà mỗi quần thể con (subPopulation) tương ứng với một phần của bài toán (vì vậy có số chiều nhỏ hơn). Cũng tại đây, một cá thể toàn cục tốt nhất (Current best) được xác định và quản lý trong suốt quá trình tiến hóa. Các quần thể con (SubPop) và cá thể tốt nhất toàn cục hiện thời (Current best) sẽ được phân phát (Delivery) tới các slave để được tiến hóa một cách độc lập và đồng thời.
Tại mỗi slave, quần thể con được tiến hóa bằng DEAL trong một số vòng lặp xác định trước (ký hiệu là Evolution_Cycle). Sau mỗi Evolu- tion_Cycle, mỗi slave lựa chọn một cá thể con tốt nhất làm đại diện cho
Hình 3.3: Mô hình song song PCCDEAL
nó (Representative) và gửi về cho master nhằm tham gia quá trình cập nhật cá thể toàn cục tốt nhất.
Quá trình cập nhật được diễn ra như sau:
Mỗi đại diện (Representative i) sẽ thay thế phần tương ứng của nó trong cá thể toàn cục tốt nhất hiện thời (Current best) để được một cá thể mới.
Giả sử có m slaves, khi đó sẽ có được m cá thể mới. Tất cả các đại diện cũng kết hợp với nhau để tạo thành một cá thể mới trong đó mỗi thành phần là một đại diện. Như vậy sẽ có m+ 1 cá thể, các cá thể này so sánh với nhau và so sánh với cá thể toàn cục tốt nhất hiện thời để lựa chọn một cá thể toàn cục tốt nhất mới. Chi tiết được biểu diễn trong Hình 3.4.
Hình 3.4: Mô hình cập nhật cá thể tối ưu toàn cục
Master luôn luôn kiểm tra điều kiện kết thúc thuật toán. Nếu điều kiện kết thúc thỏa mãn thì quá trình tìm kiếm cá thể toàn cục tốt nhất sẽ kết thúc. Cá thể toàn cục tốt nhất hiện thời là nghiệm của bài toán. Ngược lại master sẽ phân phối lại cá thể toàn cục tốt nhất mới và yêu cầu các slave tiếp tục các quá trình tiến hóa.
3.3.2. Thuật toán song song
Thuật toán song song hóa DEAL theo mô hình 3.3 được gọi tắt là PC- CDEAL (Parallel Cooperative Coevolution for DEAL). PCCDEAL gồm 2 phần được vận hành tại master và tại các slave.
PCCDEAL tại master
Các bước của PCCDEAL tại master được mô tả như sau:
Bước 1: Khởi tạo quần thể chính mainP OP kích thước N.
Bước 2: Đánh giá quần thể chính và xác định cá thể toàn cục tốt nhất globalBEST.
Bước 3: Phân chia quần thể chính thành m quần thể con subP OP có số chiều bằng nhau.
Bước 4: Phân phối các quần thể con subP OP cho các slaves.
for i:=1 to m do
sendToSlave(subP OP) end for
Bước 5: Vòng lặp chính
while (termination criteria = false) do for i:=1 to m do
sendToSlaves(globalBEST) (waiting for slaves)
receiveFromSlaves(bestCOM P ON EN T) end for
Update(globalBEST) end while
Trong bước 3, quần thể chính mainP OP được chia đều thành m quần thể con với số chiều bằng nhau. Điều đó nghĩa là mỗi quần thể consubP OP vẫn có kích thước bằng kích thước của quần thể chính, chỉ có số chiều là bé hơn. Bởi vậy, chi phí dành cho quá trình tiến hóa một quần thể con chắc chắn sẽ nhỏ hơn chi phí dành cho quá trình tiến hóa của quần thể chính.