Đối với các thuật toán tiến hóa đơn mục tiêu, việc chọn lọc các cá thể diễn ra khá dễ dàng nhờ vào việc so sánh độ thích nghi của các cá thể. Ví dụ như, đối với bài toán cực tiểu hóa, những cá thể nào có độ thích nghi nhỏ thì tốt hơn các cá thể có độ thích nghi lớn. Tuy nhiên, đối với các thuật toán tiến hóa đa mục tiêu, việc so sánh các cá thể trong quần thể khá phức tạp. Để biết một cá thể có phải là tốt nhất trong quần thể hay không, chúng ta cần phải kiểm tra cá thể đó có bị trội bởi các cá thể khác trong quần thể không (khái niệm trội, bị trội được đưa ra trong định nghĩa 1.6). Ý tưởng của NSGA-II dựa trên việc sắp xếp các cá thể thành các tập không trội (xem định nghĩa 1.7) và tính toán dựa trên việc phân bố của các cá thể để tiến hành quá trình chọn lọc tự nhiên. 1.3.1.1 Sắp xếp không trội
Một thách thức lớn khi thực hiện sắp xếp các cá thể không trội liên quan đến việc so sánh các cá thể. Mỗi cá thể có thể được so sánh với mọi cá thể khác trong quần thể để xem nó có trội hay không? Điều này yêu cầu m×(N −1)
Hình 1.5: Minh họa việc sắp xếp không trộiđó, trong lần sắp xếp đầu tiên cần PN−1 đó, trong lần sắp xếp đầu tiên cần PN−1
i=1 m∗(N −i)) = 21m∗N ∗(N −1) phép so sánh. Kết quả của quá trình sắp xếp thường được lưu trữ trong một ma trận donM at kích thước N×N, trong đó mỗi phần tử của ma trận cho biết mối quan hệ trội giữa hai cá thể trong quần thể. Các trường hợp có thể xảy ra với hai cá thể x và y.
Nếu x và y là những lời giải khả thi và xy thì donM at(y,x) = 1; ngược lại, nếu yx thì donM at(y,x) = −1;
Nếu x và y là những lời giải khả thi và không so sánh được với nhau (có nghĩa là không biết cá thể nào trội hơn cá thể nào) thì donM at(y,x) = 0;
Nếuxlà một lời giải khả thi,ykhông phải là lời giải khả thi thìdonM at(y,x) = 1;
Nếuxkhông phải là một lời giải khả thi,ylà lời giải khả thi thìdonM at(y,x) = −1;
Nếu x và y đều không phải là những lời giải khả thi, thì mức độ vi phạm ràng buộc của x và y sẽ được so sánh. Nếu x vi phạm ràng buộc ít hơn y, donM at(y,x) = 1; ngược lại donM at(y,x) =−1;
Để minh họa ý tưởng này, chúng ta sẽ sử dụng ví dụ của một quần thể với kích thước N = 10 được đưa ra trong hình 1.5. Giả sử rằng, bài toán đang được xem xét là bài toán tối ưu không có ràng buộc. Ma trận trội trong hình 1.6 có thể tìm được bằng việc so sánh các cá thể trong quần thể. Ví dụ, khi so sánh cá thể 1 và cá thể 10, thấy rằng 1 10, nên donM at(1,10) = −1 và donM at(10,1) = 1. Nhược điểm của cách sắp xếp này là chúng ta độ phức tạp lớn do mỗi cá thể
Hình 1.6: Ma trận trội cho ví dụ được đưa ra trong hình 1.5
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.