Với mỗi cá thểp, tính toán hai giá trị : (1) số trộinp hay số lượng các cá thể mà p bị trội, p = 1,2, ..., N, (2) tập Dp các cá thể mà p trội. Các cá thể trong biên không trội đầu tiên sẽ có np = 0. Từ bảng 1.1, các cá thể trong biên không trội đầu tiên được kí hiệu là P F1 = {1,2,4,8}. Với mỗi cá thể thứ i trong biên đầu tiên, phần tử trong tập Di sẽ được duyệt và giảm số trội của các cá thể này đi 1. Ví dụ, xét cá thể thứ hai của tập P F1, có D2={3,5,6,7,9,10}. Giá trị này sẽ được tính lại n3 = 3−1 = 2, n5 = 1, n7 = 4, n9 = 2 và n10= 6. Sau quá trình này, sẽ tìm được tập P F2 là tập các cá thể có các giá trị np thấp nhất. Trong ví dụ này, các cá thể 5 và 6 sẽ thuộc biên P F2. Quá trình lặp lại chúng ta sẽ tìm được P F3={7}. Có một vài cá thể sẽ không được xem xét trong quá trình này, ví dụ như các cá thể 3, 7 và 10, do các cá thể này bị trội.
Bảng 1.1: Giá trị cp và Dp được tính từ ma trận trội.Cá thể Cá thể màp trội (Dp) Cá thể mà p bị trội cp Cá thể Cá thể màp trội (Dp) Cá thể mà p bị trội cp 1 3, 7, 10 Không 0 2 3, 5, 6, 7, 9, 10 Không 0 3 Không 1, 2, 4 3 4 5, 6, 7, 9, 10 Không 0 5 7, 10 2, 4 2 6 7, 10 2, 4 2 7 Không 1, 2, 4, 5, 6 5 8 9, 10 Không 0 9 10 2, 4, 8 3 10 Không 1, 2, 4, 5, 6, 8, 9 7 1.3.1.2 Khoảng cách quy tụ
NSGA-II sử dụng một kỹ thuật gọi là khoảng cách quy tụ (crowding distance) cho phép xác định mật độ của các cá thể trong quần thể. Khoảng cách quy tụ
của cá thể thứ i là chu vi một hình chữ nhật (cuboid) được tạo ra từ hai cá thể láng giềng của nó trên biên không trội. Giá trị chu vi này sẽ đại diện cho ước lượng khoảng cách của cá thể thứ i với các cá thể xung quanh nó. Cá thể nằm càng xa các cá thể khác thì có khoảng cách quy tụ càng lớn. Các cá thể nằm trên cùng một biên nếu có khoảng cách quy tụ lớn sẽ được ưu tiên lựa chọn hơn các cá thể có khoảng cách quy tụ nhỏ hơn. Điều này giúp duy trì sự đa dạng của quần thể.
Quá trình tính toán khoảng cách quy tụ yêu cầu phải sắp xếp các cá thể trong quần thể theo chiều tăng dần của từng giá trị trong hàm mục tiêu. Sau đó, đối với từng mục tiêu, các cá thể ứng với giá trị hàm mục tiêu nhỏ nhất và lớn nhất sẽ được gán một khoảng cách vô cùng lớn. Tất cả các giá trị trung gian khác được tính bằng giá trị tuyệt đối của độ chênh lệch giá trị hàm mục tiêu chia cho hiệu giá trị lớn nhất và nhỏ nhất với mục tiêu đó (phương trình (1.16)). Khoảng cách quy tụ, được tính bằng tổng giá trị các khoảng cách tương ứng đến từng mục tiêu như trong phương trình (1.17) [20]. Cụ thể các bước được mô tả chi tiết như sau:
Với hàm mục tiêu fk, ta sắp xếp các nghiệm trên biên P F theo thứ tự tăng dần. Kí hiệu Ik là tập các cá thể sau khi sắp xếp các nghiệm theo giá trị tăng dần của fk. Giả sử xki là nghiệm thứ i trong Ik.
Gán dk(xk
1) =dk(xk
l =∞), với dk(xk
1) là nghiệm thứ 1 trong Ik và dk(xk l) là nghiệm cuối cùng trong Ik.
Với mỗi cá thể thứ i= 2,3, ...,|P F|, tính:
dk(xki) = |fk(xik+1)−fk(xki−1)|
fkmax−fkmin . (1.16)
Tính tổng khoảng cách quy tụ ương ứng với mỗi hàm mục tiêu
d(xi) =
m
X
k=1
Hình 1.7: Ví dụ về khoảng cách quy tụ. Các điểm màu đen là các cá thể nằm trên cùng một biên Pareto. Các điểm hình tròn là các điểm không nằm trên biên Pareto.
Mỗi cá thểxtrong quần thể đều có hai thuộc tính: (1) hạng không trội xrank (nondomination rank) và khoảng cách quy tụ xdistance. Một thứ tự bộ phận sẽ được định nghĩa như sau:
y≺x nếu xrank <yrank hoặc nếu xrank =yrank và xdistance >ydistance
Điều này có nghĩa là nếu hai cá thể có hạng khác nhau, những cá thể có hạng thấp hơn sẽ được lựa chọn. Ngược lại, nếu cả hai cá thể có cùng hạng (tức là nằm trên cùng 1 biên), các cá thể có khoảng cách quy tụ lớn hơn sẽ được ưu tiên lựa chọn. Những cá thể có khoảng cách quy tụ nhỏ, đồng nghĩa với việc các cá thể nằm gần nhau trên biên nghiệm vào tạo thành một vùng gọi là vùng quy tụ. Các cá thể nằm cùng một vùng quy tụ thường có kiểu gen tương tự nhau. Nếu ưu tiên lựa chọn các cá thể ở vùng này thì quần thể sẽ không đa dạng về kiểu gen. Ví dụ về việc lựa chọn các cá thể đưa vào quần thể ở thế hệ sau được cho trong hình 1.7.
1.3.1.3 Các bước của thuật toán
Khởi tạo quần thể P ban đầu gồm N cá thể. Với mỗi cá thể x trong quần thể, kí hiệu Sx là tập các cá thể trội hơn x. Thuật toán 1.4 mô tả các bước của
thuật toán di truyền sắp xếp không trội. Thuật toán 1.4: Thuật toán NSGA-II
1 t= 0;
2 Khởi tạo quần thể ban đầu Pt gồm N cá thể;
3 while điều kiện lặp chưa thỏa mãn do
4 Áp dụng các phép toán di truyền tạo quần thể Qt;
5 Tạo quần thể trung gian Rt =Pt∪Qt;
6 Sắp xếp các cá thể trong Rt thành các tập không trội P F1, P F2, ..., P Fk theo thuật toán 1.5;
7 Tính khoảng cách quy tụ cho các cá thể trong P Fj;
8 if |Pt+1|+|P Fj| ≤N then
9 Pt+1=Pt+1∪P Fj;
10 end
11 else
12 Bổ sung N - |Pt+1| các cá thể từ P Fj vào Pt+1 các cá thể dựa vào khoảng cách quy tụ của chúng. Các cá thể có khoảng cách quy tụ lớn sẽ được ưu tiên lựa chọn. Minh họa việc lựa chọn được đưa ra trong hình 1.8 ;
13 end
14 t=t+ 1;
15 end
Thuật toán 1.5: Thuật toán sắp xếp không trội Đầu vào: Quần thể P gồm N cá thể;
Đầu ra : P F1, P F2, ...., P Fk là các tập không trội;
1 Sx =∅ ∀x∈P . Sx là tập các cá thể mà x trội hơn x;
2 while P 6=∅ do
3 ∀x∈P và ∀y∈P \ {x}, nếu xtrội hơn ythì gán Sx =Sx∪ {x};
4 for x∈P do 5 if Sx =∅then 6 P Fj =P Fj ∪ {x}; 7 end 8 end 9 P =P \P Fj; 10 end
Hình 1.8: Minh họa việc lựa chọn các cá thể để đưa vào quần thể Pt+1.
1.3.2 Thuật toán tiến hóa đa mục tiêu dựa trên phân rã
Hầu hết các bài toán MOO có nhiều hoặc thậm chí có vô số các điểm Pareto tối ưu. Do đó, để tìm kiếm một biên Pareto hoàn chỉnh là rất khó thậm chí là không thể. Mặt khác, người quyết định (decision maker) có thể chỉ quan tâm đến một vài mục tiêu tối ưu mà không quan tâm đến tất cả các lời giải trên biên. Nhiều thuật toán tiến hóa đa mục tiêu cố gắng tìm kiếm một cách phân bố đều các cá thể dọc biên Pareto, và lấy các cá thể này làm đại diện cho biên Pareto. Một lời giải tối ưu Pareto cho bài toán MOO, trong một điều kiện nhẹ có thể là một lời giải tối ưu cho bài toán tối ưu hóa đơn mục tiêu, trong đó mục tiêu là tổng hợp của các mục tiêu trong bài toán MOO. Do đó, xấp xỉ biên Pareto có thể tìm được bằng cách tìm lời giải của các bài toán đơn mục tiêu. Đây là ý tưởng cơ bản đằng sau nhiều phương pháp toán học để tìm xấp xỉ biên Pareto. Các phương pháp tổng hợp phổ biến nhất gồm phương pháp tổng trọng số và phương pháp Tchebycheff. MOEAD là thuật toán tiến hóa đầu tiên vào năm 2007 bởi Zang và Li dựa trên ý tưởng tổng hợp các hàm mục tiêu [21]. Phần này sẽ trình bày tổng quan về MOEAD.
1.3.2.1 Sự phân rã của tối ưu đa mục tiêu Cách tiếp cận tổng trọng số
Cách tiếp cận này xem xét một tổ hợp lồi của các mục tiêu khác nhau. Đặt λ = (λ1, ..., λm)T là véc tơ trọng số, λi ≤ 0 với i = 1,2, ..., m và Pm
đó, bài toán 1.5 có thể được chuyển về bài toán tối ưu hóa vô hướng như sau [21]: Minimize gws(x|λ) = m X i=1 λifi(x) (1.18) ràng buộc x∈Ω (1.19) Cách tiếp cận Tchebycheff
Trong cách tiếp cận này, bài toán tối ưu mở rộng được cho như sau [21]:
Minimize gte(x|λ,z∗) = max
1≤i≤m{λi|fi(x)−zi∗|} (1.20)
ràng buộc x∈Ω (1.21)
trong đó, z∗ = (z1∗, z2∗, ..., zm∗)T là các điểm tham chiếu, tức là zi∗ = min{fi(x)|x∈ Ω}.
Với mỗi điểm tối ưu Pareto x∗ tồn tại một véc tơ trọng số λ mà x∗ là lời giải tối ưu của bài toán mở rộng 1.20 và mỗi lời giải tối ưu của bài toán mở rộng 1.20 cũng là một lời giải tối ưu Pareto cho bài toán ban đầu. Do đó, với mỗi véc tơ trọng sốλ khác nhau có thể nhận được những lời giải tối ưu Pareto khác nhau cho cùng một bài toán. Một điểm hạn chế của cách tiếp cận này là hàm tổng hợp không trơn cho bài toán tối ưu đa mục tiêu liên tục.
Cách tiếp cận biên
Các thuật toán phân rã đa mục tiêu gần đây như phương pháp giao biên (Normal-Boundary Intersection Method) và phương pháp ràng buộc (Normalized Normal Constraint Method) đều sử dụng cách tiếp cận biên. Họ thường dùng cách tiếp cận này cho các bài toán đa mục tiêu liên tục. Về mặt hình học, cách tiệp cận này tìm kiếm các giao điểm nằm ở biên trên cùng và tập các đường thẳng. Nếu các đường thẳng phân bố đồng đều theo một nghĩa nào đó, người ta hi vọng rằng các điểm giao nhau sẽ tìm ra một xấp xỉ tốt cho biên Pareto.
Hình 1.9: Minh họa cách tiếp cận dựa trên biên
1.3.2.2 Sơ đồ của thuật toán tiến hóa đa mục tiêu dựa trên phân rã Thuật toán tiến hóa đa mục tiêu dựa trên phân rã (MOEAD) sử dụng cách phân rã bài toán của Tchebycheff được trình bày ở trên. Giả sử rằng λ1, ...., λN là tập hợp các véc tơ trọng số,z∗ là điểm tham chiếu. Bài toán đa mục tiêu ban đầu có thể được phân tách thành N bài toán tối ưu con. Hàm mục tiêu cho bài toán thứ j như sau [21]:
gte(x|λj,z∗) = max
1≤k≤m{λjk|fk(x)−zk∗|} (1.22) trong đó λj = (λj1, λ2j, ..., λjm)T. MOEAD cực tiểu hóa N hàm mục tiêu một cách đồng thời trong một lần chạy. Chú ý rằng gte là liên tục của λ, do đó, lời giải tối ưu của gte(x|λi,z∗) gần với lời giải tối ưu của gte(x|λj,z∗) nếu λi và λj là gần nhau. Do đó, với bất cứ thông tin nào về giá trị củagte với véc tơ trọng số gần với λi đều giúp ích cho việc tối ưu gte(x|λi,z∗). Đây chính là ý tưởng chính của MOEAD.
Trong MOEAD, một láng giềng của bài toán con thứ i bao gồm tất cả các bài toán con mà có véc tơ trọng số gần vớiλi. Do đó, chỉ các lời giải của các bài toán con lân cận của bài toán i mới được khám phá để tối ưu bài toán này. Chi tiết các bước được đưa ra trong thuật toán 1.6.
Trong mỗi thế hệ t, MOEAD duy trì các thành phần sau:
Một quần thể gồm N cá thể x1,x2, ...,xN ∈ Ω, trong đó xi là lời giải hiện tại của bài toán con thứ i. (xi là véc tơ).
F V1, F V2, ..., F VN, trong đó F Vi là giá trị của hàm mục tiêu của bài toán con thứ i, tức là F Vi=F(xi).
z∗ = (z∗1, z2∗, ..., zm∗)T, trong đó zk∗ là giá trị tốt nhất được tìm thấy của mục tiêu fk.
Một quần thể ngoài EP được sử dụng để lưu trữ các lời giải không trội được tìm thấy trong quá trình tìm kiếm.
Ở bước khởi tạo, B(i) chứa chỉ số của T véc tơ gần vớiλi nhất. Khoảng cách Euclid được sử dụng để đo khoảng cách giữa hai véc tơ. Véc tơ λi gần nhất với chính nó, và do đó,i∈B(i). Nếu j ∈B(i), bài toán con thứ j được gọi là gần với bài toán con thứ i. Trong bước thứ 2 của thuật toán, các bài toán lân cận với bài toán con thứ i được xem xét. Cụ thể, xk và xl trong bước 2.1 là các lời giải tốt nhất của các bài toán con lân cận với bài toán con thứ i. Do đó, con yđược tạo ra từ 2 bài toán con này được hi vọng sẽ là lời giải tốt cho bài toán con i. Bước 2.2, một thuật toán tham lam được sử dụng để sửa lạiytrong trường hợp y không hợp lệ. Do đó, kết quả là y0 sẽ khả thi và có thể có giá trị hàm mục tiêu tốt hơn. Bước 2.4 xem xét tất cả các láng giềng của bài toán con thứ i, nó thay thế xj bởi y0 nếu y0 tốt hơn xj.
Thuật toán 1.6: Thuật toán MOEAD Đầu vào:
N: số bài toán con;
λ1, λ2, ..., λN: các véc tơ trọng số ;
T: số lượng véc tơ trọng số là láng giềng của mỗi véc tơ; Đầu ra :
EP: quần thể ngoài
1 Bước 1) Khởi tạo quần thể
Bước 1.1) Khởi tạo EP =∅ ;
Bước 1.2) Tính khoảng cách Euclid giữa 2 véc tơ trọng số bất kì. Sau đó tìm raT véc tơ trọng số gần nhất với mỗi véc tơ trọng số. Với mỗi i= 1,2, ..., N, đặt B(i) ={i1, i2, ..., iT},trong đó, λi1, ..., λiT là T véc tơ trọng số gần với véc tơ
λi nhất. ;
Bước 1.3) Khởi tạo quần thể ban đầu gồm các cá thể x1, ...,xN. Tính
F Vi =F(xi);
Bước 1.4) Khởi tạo z∗ = (z1∗, z2∗, ..., zm∗)T (có thể khởi tạo ngẫu nhiên hoặc heuristic);
while Điều kiện dừng chưa thỏa mãndo Bước 2) Cập nhật;
for i = 1,...,N do
Bước 2.1) Tái tạo:
Lựa chọn ngẫu nhiên 2 chỉ sốk và l từ B(i), sau đó tạo ra một cá thể mới y từ
xk và xl bằng các phép toán di truyền ;
Bước 2.2) Cải thiện:
Áp dụng các phép heuristic hoặc một phép sửa đổi nào đó trên yđể tạo ra y0;
Bước 2.3) Cập nhật z∗.
Với mỗi j = 1,2, ..., m. Nếu zj > fj(y0), đặt zj∗ =fj(y0);
Bước 2.4) Cập nhật các lời giải láng giềng:
Với mỗi j ∈B(i), nếu gte(y0|λj,z∗)≤gte(xj|λj,z∗), đặt xj =y0 và F Vj =F(y0).
Bước 2.5) Cập nhật quần thể ngoài EP ; Loại bỏ khỏiEP những cá thể mà bị trội bởi y0;
Thêmy0 vào EP nếu không có véc tơ trong EP trội hơn y0; end
1.3.3 Các độ đo đa mục tiêu
Trong tối ưu hóa đa mục tiêu, lời giải thu được sẽ bao gồm một tập các lời giải thay vì một lời giải như trong tối ưu hóa đơn mục tiêu. Để so sánh tập các lời giải thu được giữa các thuật toán đa mục tiêu khác nhau, người ta thường sử dụng một số độ đo. Phần này trình bày một số độ đo phổ biến thường được sử dụng trong các bài toán tối ưu đa mục tiêu.
C-metric [22]
Giả sử A và B là hai thuật toán xấp xỉ biên Pareto của một bài toán tối ưu đa mục tiêu. C(A, B) được định nghĩa là tỉ lệ các lời giải trong thuật toán B bị trội bởi ít nhất một lời giải của A, tức là:
C(A, B) = |{x∈B|∃y∈A:yx}|
|B| . (1.23)
Chú ý rằng C(A, B) không nhất thiết phải bằng 1− C(B, A). C(A, B) = 1 có nghĩa là tất cả các lời giải trong B bị trội bởi một số lời giải trongA, trong khi đó C(A, B) = 0 có nghĩa là không lời giải nào trong B bị trội bởi một lời giải trong A.
Để thuận tiện cho việc so sánh, đôi khi sự khác biệt về độ đoC giữa hai thuật toán thường hay được sử dụng.