2.2.4.1. Thuật toán NSGA
Thuật toán NSGA được đề nghị bởi Srinivas và Deb [10]. Hướng tiếp cận của thuật toán này là phân quần thể lớn thành nhiều quần thể con bằng cách sắp xếp các lời giải không bị trội. Tức là, lấy trong quần thể lớn N/p phần tử không bị trội với tất cả các cá thể còn lại, xếp vào nhóm 1. Sau đó tiếp tục lấy như trên và xếp vào các nhóm tiếp theo cho đến khi lấy hết cá thể trong quần thể. Vì vậy ta sẽ có p quần thể con và quần thể con đầu tiên (nhóm 1) sẽ là quần thể không bị trội(tốt nhất) hiện tại [2,10].
a. Biên chứa các nghiệm không trội và thứ hạng.
Để gán độ thích nghi của các cá thể trong quần thể ta thường gán cho các cá thể các thứ hạng tương ứng bằng cách đưa các xếp cá thể phù hợp vào các biên chứa các nghiệm không trội[2,10].
Hình 2.4:Minh họa biên chứa các nghiệm không trội và thứ hạng tƣơng ứng
Tính chất:
i. Nghiệm hay cá thể nào nằm trên biên thứ nhất R1 thì có độ thích nghi cao nhất và tất cả các nghiệm này được gán là hạng thứ 1.
ii. Tất cả các nghiệm nằm trên cùng một biên chứa các nghiệm không trội thì có cùng độ thích nghi và chúng có cùng thứ hạng.
b. Kí hiệu và thuật toán NSGA:
Các kí hiệu :
nu : Số nghiệm trội hơn nghiệm u Su : Tập nghiệm trội bởi nghiệm u P : Quần thể ban đầu.
Fj : Biên chứa các nghiệm không trội thứ j, j =1,…,R
Thuật toán NSGA Begin
Khởi tạo quần thể
Tính toán các giá trị mục tiêu
Gán hạng cho các biên chứa nghiệm không trội Gán giá trị fitness
Foreach u in P
If (u trội hơn v) then
Su =Su U { v }
Elseif (v trội hơn u) then
nu = nu + 1
Foreach u in P
If (nu= 0) then
Giữ u trong biên chứa các nghiệm không trội thứ nhất
Else Begin j = 1 While (Fj ≠ ∅) do Begin Q = ∅ Foreach u inFj Foreach v in Su If (nv = 0) then Q = Q U { v } j = j + 1 Fj = Q End End End
2.2.4.2. Thuật toán NSGA2
Thuật giải này là một phiên bản cải tiến t NSGA. Trong phiên bản này, mỗi lời giải phải xác định xem có bao nhiêu lời giải trội hơn và tập các lời giải trội hơn đó. NSGA2 sẽ ước tính mật độ của các lời giải xung quanh một lời giải cụ thể trong quần thể bằng cách tính khoảng cách trung bình giữa hai điểm theo mỗi mục tiêu của bài toán. Khoảng cách này gọi là khoảng cách quy tụ (crowding distance) [1,3].
Các bước thuật toán được mô tả chi tiết trong bài báo A fast and elitist multi-objective genetic algorithm: NSGA-II của Aravind Seshadri [3].
Các kí hiệu và thuật toán trong thuật toán NSGA2 cải tiến t thuật toán NSGA
Các kí hiệu:
Pt Quần thể cha.
Qt Quần thể con tạo thành t các cá thể trong Pt
Fj Biên chứa các nghiện không trội thứ j, {j=1,…,R}
N Số lượng cá thể trong quần thể Pt Thuật toán NSGA2
Begin
Tạo ngẫu nhiên quần thể cha P0
t = 0
Foreach x in P
Áp dụng phép lai ghép và đột biến tạo quần thể con Q0 Repeat
Rt = Pt U Qt
Nhận diện các biên chứa các nghiệm không trội F1,F2,…,Fktrong Rt For i:=1 to k do
Begin
Tính khoảng cách quy tụ của các nghiệm trong Fi
If (| Pt+1|+| Fi | ≤ N) then
Pt+1 = PtU Fi
Else
bổ sung N - | Pt+1| nghiệm vào Pt+1 End
Lựa chọn các cá thể cha t quần thể Pt+1
Áp dụng phép lai ghép và đột biến Qt+1
t:=t+1
Until (điều kiện d ng thỏa mãn)
End
2.2.4.3. Khoảng cách quy tụ - Crowding Distance
Định nghĩa : Khoảng cách quy tụ của cá thể hay nghiệm x nằm trên một biên là chiều dài trung bình các cạnh của một hình hộp [1,3].
Hình 2.5: Minh họa khoảng cách quy tụ quanh nghiệm i
Tính chất [1,3]:
a. Cho 2 nghiệm x và y, nghiệm x được thích hơn nghiệm y nếu Rs < Ry hoặc (Rs = Ry và ds > dy )
Trong đó: Rs , Ry là các biên thứ x và thứ y và ds và dy là khoảng cách quy tụ của nghiệm x và y tương ứng.
b. Giữa 2 nghiệm không trội nếu nghiệm có thứ hạn thấp hơn thì nghiệm đó được ưu tiên lựa chọn hơn nghiệm còn lại.
Hình 2.6: Minh họa các biên và thứ hạng
Khi 2 nghiệm không trội có cùng thứ hạng nghĩa là 2 nghiệm này nằm trên cùng một biên, nghiệm nào nằm trong vùng có sự quy tụ thấp nhất thì sẽ được ưu tiên lựa chọn hơn nghiệm còn lại.
Hình 2.7: Minh họa sự quy tụ của các nghiệm quanh một nghiệm