Thuật toán ACO tổng quát giải bài toán TSP

Một phần của tài liệu (LUẬN văn THẠC sĩ) thuật toán dijkstra fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng (Trang 43 - 44)

Thuật toán sẽ sử dụng một điều kiện kết thúc nào đó (có thể theo số bước lặp hoặc/và giới hạn thời gian chạy), ta dùng đàn kiến có m con, tiến hành thực hiện một vòng lặp quá trình xây dựng lời giải trên đồ thị có trọng số như sau: Tại mỗi lần lặp, mỗi chú kiến k sẽ chọn đỉnh s nào đó làm thành phần khởi tạo: s := u0và thực hiện xây dựng đường đi bằng thủ tục chọn ngẫu nhiên. Dựa trên các lời giải tìm được, đàn kiến sẽ thực hiện cập nhật mùi theo cách một quy tắc nào đó.

Thủ tục chọn ngẫu nhiên [5]: Giả sử kiến k đã tìm được phần đầu của

đường đi từ s là s = uo, u1,.., uq= i. Gọi k i

V là tập tất cả các đỉnh mà kiến k

chưa đi qua và thỏa mãn (i, v)  E  v  k i

V , khi đó khả năng đỉnh v được chọn làm đỉnh tiếp theo trên đường đi có xác suất sẽ là:

p(v) = [(T(i, v))x (h(i,v))y ]/[   x y (i, p) (i, ) T h k i p p V ] (Dĩ nhiên các đỉnh u không thuộc k i V thì xác suất p(u) = 0) [5].

Trong đó ta ký hiệu: T(v1,v2) là giá trị số thực chỉ nồng độ mùi trên cung

(v1.v2) (v1.v2)E, h(v1, v2) = C v v( 11, 2)  (v1.v2)E là một số thực gọi là

thông tin heurtistic giúp kiến lựa chọn đường một cách chính xác hơn khi quyết định chọn đi từ một đỉnh u sang một đỉnh v nào đó (c(v1,v2) là độ dài

cung (v1,v2)).

Quá trình mở rộng tiếp tục cho tới khi kiến k tìm được lời giải chấp nhận được (một chu trình Hamilton).

Thủ tục cập nhật mùi[5]: Sau mỗi bước lặp (tức là m chú kiến đã kết thúc việc tìm lời giải) chương trình sẽ cập nhật lại vết mùi trên các cạnh. Điều này mô phỏng trong thực tế nồng độ mùi trên các cạnh mà kiến đi qua sẽ tăng lên một lượng nào đó do kiến tiết ra, đồng thời theo thời gian nồng độ mùi

trên các cạnh cũng bị giảm đi do sự bay hơi của mùi. Tuy nhiên có nhiều quy tắc cập nhật mùi khác nhau, từ đó cũng sinh ra các thuật toán khác nhau và người ta thường đặt tên thuật toán theo tên của quy tắc cập nhật mùi. Trong phần tiếp theo sẽ trình bày một số quy tắc thông dụng, chủ yếu chúng đều có dạng:

Ti,j = (1- p)Ti,j + (i,j) [5] đối với những cạnh được cập nhật, trong đó p

là hằng số biểu thị tỉ lệ lượng mùi bị bay hơi, (i,j) là lượng mùi được thêm

vào (bớt đi) khi kiến đi qua một cạnh.

Lược đồ tổng quát của thuật toán ACO như sau [1]:

Procedure ACO; Begin

Khởi tạo tham số, mùi, khởi tạo m con kiến; repeat

for k = 1 to m do Kiến k xây dựng lời giải; Cập nhật mùi;

Cập nhật lời giải tốt nhất; until (Điều kiện kết thúc); Đưa ra lời giải tốt nhất; End;

Một phần của tài liệu (LUẬN văn THẠC sĩ) thuật toán dijkstra fibonacci heap, thuật toán ACO tìm đường đi tối ưu và ứng dụng (Trang 43 - 44)

Tải bản đầy đủ (PDF)

(74 trang)