nhất
Đánh giá thuật toán GA của Ketan Kotecha và Huo Hongwei
Thuật toán GA của các tác giả Ketan Kotecha và Huo Hongwei đã có rất nhiều cải tiến so với thuật toán GA gốc của Holland. Tuy nhiên, mỗi thuật toán tồn tại một số bước có thể cải tiến thêm để nâng cao chất lượng lời giải cho bài toán MVCP.
Thuật toán GA của Ketan Kotecha
Trong thuật toán GA của Ketan Kotecha, tác giả đã thực hiện khởi tạo quần thể ngẫu nhiên. Như vậy sau khi khởi tạo, thuật toán phải thực hiện việc hiệu chỉnh lại toàn bộ quần thể, do đó thời gian chạy sẽ tăng lên. Mặt khác, quần thể được khởi tạo ngẫu nhiên sẽ không tận dụng được những kết quả của một số thuật toán xấp xỉ đã biết và trong một số trường hợp những lời giải này rất gần với lời giải tối ưu.
Thuật toán GA của Huo Hongwei
Tương tự thuật toán GA của Huo Hongwei cũng khởi tạo quần thể ngẫu nhiên nên không tận dụng được lời giải thu được từ các thuật toán heuristic khác. Trong thủ tục Scan – And – Repair, tác giả thực hiện duyệt lần lượt các bit 1 tương ứng với đỉnh thuộc phủ và xóa bỏ các cạnh liên quan tới đỉnh đó. Sau đó, với những cạnh chưa được phủ, thủ tục xem xét và đưa đỉnh có bậc lớn hơn vào lời giải. Các đỉnh được đưa ra
xem xét theo thứ tự xuất hiện trong lời giải mà không quan tâm tới bậc của chúng, do đó thủ tục không tận dụng được những đỉnh có bậc cao. Nếu đỉnh có bậc cao hơn được xem xét trước thì số cạnh được loại bỏ sau mỗi bước có thể tăng lên hay số cạnh còn phải hiệu chỉnh để được phủ sẽ giảm đi. Do đó, thủ tục sẽ chạy nhanh hơn và hi vọng sẽ đem lại lời giải có chất lượng cao hơn. Tương tự với thủ tục Local – Improvement, tác giả cũng thực hiện xem xét các xâu theo thứ tự xuất hiện của chúng nên số lượng đỉnh giảm bớt không cao trong trường hợp những bit 1 nằm ở cuối xâu nhị phân lời giải. Thuật toán GA của Huo Hongwei sử dụng các toán tử di truyền trong thuật toán di truyền gốc nên không tận dụng được những gen tốt trong các cá thể tham gia vào quá trình lai ghép, đột biến. Đây cũng là một bước có thể cải tiến tốt hơn để nâng cao chất lượng của lời giải.
Từ những phân tích trên, tác giả đã đề xuất một thuật toán GA cải tiến thực hiện kết hợp hai thuật toán GA của tác giả Ketan Kotecha, tác giả Huo Hongwei và cải tiến một số bước để nâng cao chất lượng lời giải. Dưới đây là sơ đồ mô tả các bước trong thuật toán GA cải tiến.
Hình 4.2. Sơ đồ mô tả các bước của thuật toán GA cải tiến
Khởi tạo quần thể
(40% ngẫu nhiên + 60% tham lam)
Lựa chọn cặp cha mẹ theo phương pháp bánh xe Roullet
Lai ghép cặp cha mẹ bằng toán tử HVX Giữ lại 50% cá thể cha mẹ tốt nhất
+ Lưu lại cá thể tốt nhất
Đột biến cá thể con (đột biến 1 bit)
Thay thế cá thể cha mẹ bằng con cháu
Cập nhật cá thể tốt nhất
Thỏa mãn điều kiện dừng
Tìm kiếm địa phương Đúng
Lời giải của bài toán
Ở đây, thay vì khởi tạo quần thể ngẫu nhiên ta thực hiện kết hợp 40 % cá thể khởi tạo ngẫu nhiên và 30% cá thể được lấy từ lời giải của thuật toán xấp xỉ tham lam greedy1 và 30% cá thể được lấy từ lời giải của thuật toán xấp xỉ tham lam greedy2. Với việc khởi tạo quần thể tận dụng được những kết quả đã có sẵn của các thuật toán heuristic đã biết đồng thời có yếu tố ngẫu nhiên, ta hi vọng có thể đem lại một quần thể khởi tạo với những cá thể có chất lượng tốt làm hạt nhân cho các thế hệ tiếp theo.
Các cá thể được hiệu chỉnh để trở thành lời giải hợp lệ bằng thủ tục Scan_And_Repair_CaiTien. Thay vì xem xét các đỉnh trong lời giải không hợp lệ theo thứ tự bit 1 xuất hiện trong lời giải thì trong thủ tục hiệu chỉnh cải tiến ta thực hiện xem xét các đỉnh theo cơ chế tham lam. Đỉnh có bậc cao nhất sẽ được xem xét trước để đưa vào lời giải hiệu chỉnh. Có như vậy, số cạnh được xóa sau mỗi bước đưa đỉnh vào lời giải hiệu chỉnh sẽ lớn hơn và số đỉnh phải thêm vào để hiệu chỉnh lời giải sẽ nhỏ đi. Do đó, với cách xem xét này ta hi vọng sẽ thu được một phủ đỉnh có kích thước nhỏ hơn so với áp dụng thủ tục Scan – And – Repair của tác giả Huo Hongwei.
Khác với thuật toán di truyền do tác giả Huo Hongwei đề xuất, ở đây ta không thực hiện thủ tục Local_Improvement cho các cá thể tốt nhất sau mỗi thế hệ mà ta chỉ áp dụng thủ tục này với cá thể tốt nhất tìm được sau khi chạy thuật toán trong quá trình tìm kiếm các lân cận của lời giải tốt nhất đó. Trong thuật toán GA cải tiến, tác giả đã đưa thêm cơ chế tham lam vào thủ tục Local_Improvement tạo thành thủ tục Local_Improvement_CaiTien và đưa thủ tục này vào LocalSearch. Thủ tục LocalSearch tìm kiếm các lân cận của lời giải tốt nhất tìm được. Mỗi lân cận được áp dụng thủ tục Local_Improvement_CaiTien để loại bỏ các đỉnh dư thừa trong lời giải. Sau thủ tục LocalSearch, ta hi vọng sẽ tìm được lân cận tốt nhất của lời giải tốt nhất tìm được bởi thuật toán. Lời giải này chính là lời giải cuối cùng được trả về bởi thuật toán.
Mô tả thuật toán: Begin
0
t
Khởi tạo P(t) dựa trên xác suất cho trước
(40% ngẫu nhiên và 30% tham lam greedy1 và 30% tham lam greedy2)
for mỗi xâu trong quần thể khởi tạo do
Call Scan – and – Repair_CaiTien;
While (t < số thế hệ) do
Đánh giá P(t) sử dụng hàm thích nghi Elitism(best_found_so_far)
// giữ lại cá thể tốt nhất
Lựa chọn 50% cá thể tốt từ P(t) và đưa thẳng vào P(t+1)
While (chưa_đủ_số_cá_thể) do
Lựa chọn hai cá thể cha mẹ để lai ghép
P1 = RouletteSelection(P(t)) P2 = RouletteSelection(P(t)) ( 1, 2) CHVX P P ' C đột biến (C)
Scan _And _Repair _CaiTien(C’) Đưa C’ vào P(t +1) end while 1 t t end while LocalSearch(best_found_so_far) // Tìm kiếm địa phương Trả về best_found_so_far từ P(no_of_generation) end
Chương 5
MỘT SỐ KẾT QUẢ THỰC NGHIỆM