Hình 3.2: Lựa chọn quần thể mới bằng giải thuật Tournement
Cụ thể, mỗi lần chọn ngẫu nhiên 5 phần tử trong quần thể, chọn ra phần tử có fitness score cao nhất. Sau 20 lần lặp sẽ chọn được một quần thể mới gồm tập hợp những cá thể có điểm cao nhất. Như vậy chỉ cần sau vài lần lặp, những cá thể có điểm cao sẽ xuất hiện ngày càng nhiều.
3.1.5 Hoán vị (Lai ghép)
Trong bài toán này, phương pháp lai ghép lựa chọn là phương pháp thông dụng nhất-lai ghép 1 điểm. Nghĩa là chọn ngẫu nhiên 1 điểm trên một NST, tráo đầu và đuôi của 2 NST cho nhau tại vị trí điểm chọn. Từ bước này, các giá trị góc được dịch mã để đưa về dạng các bit 0,1.
LUẬN VĂN THẠC SĨ HVTH: Nguyễn Thanh Hằng
GVHD: PGS.TS Phan Quốc Dũng Các bước tiến hành hoán vị như sau:
B1. Khởi tạo ngẫu nhiên 20 phần tử có giá trị trong khoảng [1,20]
B2. Tính lượng NST hoán vị trong mỗi lần lặp như sau: N = pc*size(Positions)= 0.5*20 =10
Với size(Positions) chính là số lượng quần thể và bằng 20. Như vậy mỗi lần lặp sẽ có N/2 cặp NST được hoán vị cho nhau, tạo ra N/2 cặp cá thể con tương ứng.
B3. Giả sử tại vị trí thứ i trong tập ngẫu nhiên ở bước 1 có giá trị là x, cặp bố mẹ có giá trị x và x+1 sẽ được hoán vị với nhau tại vị trí ngẫu nhiên trong khoảng [2,69]. Cặp NST con thay thế vào vị trí x và x+1 tương ứng của cặp bố mẹ. Sau khi lặp N/2 lần ta có một quần thể mới gồm các cá thể con từ các cặp bố mẹ có fitness score tốt lai ghép với nhau.
3.1.6 Đột biến
Báo cáo áp dụng phương pháp đảo bit cho bài toán tìm giá trị góc đóng cắt tối ưu.
Số lượng bit được lựa chọn trong mỗi lần lặp là nbit = 70*SearchAgents*pm, với pm là xác suất đột biến (rất nhỏ so với pc), giá trị này được chọn là 0.005. Đầu vào của bước này là quần thể sau khi đã được tiến hành lai ghép.
Khi tiến hành đột biến,
B1. Khởi tạo ngẫu nhiên một vector có kích thước là (1, 20*70) với giá trị trong khoảng [0,pi/2].
B2. Lặp 20*70 vòng lặp, so sánh giá trị của vector ngẫu nhiên tại bước 1 tại vị trí thứ i với pm, nếu giá trị thỏa mãn điều kiện là nhỏ hơn pm, vị trí đó được lựa chọn đột biến. sau khi hoàn tất quá trình ta có được vector vị trí (indexArray) có kích thước là count phần tử.
B3. Số lượng bit đột biến là giá trị nhỏ nhất giữa nbit và số lượng phần tử được chọn ở B2. mutationNum = min(nbit, count).
B4. Lặp mutationNum lần, tại vị trí thứ i trong indexArray, tiến hành đảo bit, các bit có giá trị 0 được đảo thành 1 và ngược lại.
Quá trình lặp hoàn tất, quần thể mới thu được gồm các phần tử có fitness score cao đã được lai ghép và đột biến.
LUẬN VĂN THẠC SĨ HVTH: Nguyễn Thanh Hằng
GVHD: PGS.TS Phan Quốc Dũng Giá trị của vị trí sau khi tính toán được đưa vào kiểm tra và áp dụng các điều kiện biên để không bị vượt ra khỏi không gian tìm kiếm. Các điều kiện này sẽ được lấy từ bảng tham chiếu từ hình 3 ứng với các khoảng giá trị của tỉ số điều biên m.
Các giá trị được giải mã để đưa về dạng số thực và đưa về bước 2 để tính fitness score.
Bài toán có điều kiện dừng là khi đạt số vòng lặp tối đa, với max_iteration được chọn là 200, 250 và 300.
3.2 Xây dựng giải thuật GWO
Tương tự như GA, thuật toán bắt chước tập tính săn mồi của bầy sói GWO cũng cần các bước là khởi tạo quần thể, tính fitness score, cập nhật lại vị trí (tương đương với bước tạo quần thể mới), và điều kiện dừng cũng là khi đạt được số vòng lặp tối đa. Để ứng dụng vào bài toán tìm góc kích tối ưu cho bộ nghịch lưu đa bậc ghép tầng (cụ thể là 5 bậc), các bước thực hiện thuật toán GWO được trình bày như sau:
LUẬN VĂN THẠC SĨ HVTH: Nguyễn Thanh Hằng
GVHD: PGS.TS Phan Quốc Dũng