Chúng ta có thể thấy rằng việc cập nhật lượng mùi bay hơi trong hai thuật toán AS và MMAS sau mỗi lần lặp được tiến hành trên tất cả các cung, điều này làm tăng khối lượng tính toán của thuật toán lên rất nhiều từ đó làm giảm hiệu quả của thuật toán. Thực tế trong một lần lặp lượng mùi trên một cung chỉ được dùng đến khi cung đó kề với ít nhất một đỉnh trên đường đi của các chú kiến. Khi kích thước đồ thị lớn và đồ thị thưa hoặc khi các chú kiến đã dần đi cùng một đường thì số cung không thỏa mãn điều kiện vừa nêu là rất lớn, việc cập nhật lượng mùi bay hơi cho các cung này là chưa cần thiết vì vậy ta có thể trì hoãn việc làm này khi có thể để giảm bớt các phép tính toán.
Cụ thể ta có thể cải tiến việc cập nhật mùi như sau:
- Với mỗi cung (i,j) ta dùng một biến CNM(i,j) ghi nhận lần lặp mới
nhất mà nó được cập nhật lượng mùi bay hơi.
CNM(i,j) = q1, nghĩa là lần lặp mới nhất mà cung (i,j) được cập nhật
mùi là lần lặp thứ q1.
- Sau mỗi lần lặp ta không cập nhật lại lượng mùi bay hơi ở các cung. - Trong một vòng lặp, giả sử đó là vòng lặp thứ q2, nếu kiến k đang ở
đỉnh i và cần tìm đỉnh để đi tiếp, khi đó ta mới tiến hành cập nhật lượng mùi cho các cung (i, j) k
i
T(i,j) := (1-p)q2 –q1T(i,j) (2.7) Trong công thức (2.7) ta có thể hiểu đơn giản q2- q1 là số lần cập nhật lượng mùi bay hơi cho cung (i,j) đã bị trì hoãn trước đó. Việc tính lũy thừa
của (1-p)k ta sẽ tính sẵn trong một mảng để giảm tính toán.
2.5. Kết luận chương
Thuật toán ACO là một thuật toán metaheuristic được sử dụng rộng rãi để giải các bài toán tối ưu tổ hợp khó, tính hiệu quả của nó đã được minh chứng qua thực nghiệm. Thuật toán này mô phỏng cách tìm đường đi của kiến tự nhiên, trong đó lời giải chấp nhận được của bài toán được các con kiến xây dựng nhờ thủ tục chọn ngẫu nhiên trên đồ thị có trọng số. Việc tìm kiếm đỉnh mới của đường đi dựa trên kết hợp thông tin heuristic và thông tin học tăng cường biểu thị bởi vết mùi.
Khi áp dụng thuật toán ACO, ba yếu tố sau đây có vai trò quan trọng: (1) Xây dựng đồ thị trọng số;
(2) Xác định thông tin heuristic; (3) Chọn quy tắc cập nhật mùi.
Trong đó hai yếu tố đầu phụ thuộc vào từng bài toán cụ thể, còn yếu tố thứ ba có nhiều đề xuất và nghiên cứu cải tiến, tuy nhiên chúng ta vẫn còn có thể nghiên cứu sâu hơn nhằm đưa ra các cải tiến hiệu quả.
CHƯƠNG 3
ỨNG DỤNG THUẬT TOÁN DIJKSTRA FIBONACCI HEAP, THUẬT TOÁN ACO GIẢI CÁC BÀI TOÁN TÌM ĐƯỜNG ĐI
TRÊN MẠNG GIAO THÔNG
Trong chương này chúng ta sẽ ứng dụng thuật toán Dijkstra Fibonacci heap, thuật toán ACO để giải 2 bài toán tìm đường đi tối ưu trên mạng giao thông. Nội dung các bài toán và các sơ đồ thuật toán giải các bài toán này được trình bày dưới đây