1.4 Thuật toán tối ưu đàn kiến
1.4.2 Thuật toán ACO cho bài toán tối ưu tổ hợp
Các bài toán tối ưu tổ hợp cần phải chuyển về dạng đồ thị cấu trúc đầy đủ có trọng số khi áp dụng thuật tốn ACO. Khi đó, đàn kiến sẽ tìm các lời giải cho bài tốn bằng cách di chuyển qua các đỉnh của đồ thị. Xét bài toán tối ưu tổ hợp tổng quát như Định nghĩa1.1, thuật toán ACO tổng quát được thực hiện với các
thành phần quy ước sau:
C ={C1,C2, ...,Cn}là tập hữu hạn các đỉnh cần duyệt khi tìm kiếm.
X là tập hữu hạn các trạng thái có thể tìm được của bài tốn.
x ∈X =<Ci,Cj, ...,Ck, ... > là một phương án của bài toán.
S ⊆X là tập các lời giải ứng viên.
X∗ ∈X là tập các trạng thái thỏa mãn ràng buộc Ω.
S∗ 6=∅là tập các lời giải tối ưu sao cho S∗ ⊆X∗ vàS∗ ⊆S
Đàn kiến sẽ xây dựng lời giải bằng cách di chuyển qua các đỉnh của đồ thị G = (C,L,T) với C là tập các đỉnh, L là tập các cạnh (khơng có đỉnh cơ lập), T là tập giá trị mật độ mùi trên L. Ban đầu, kiến được phân bố ngẫu nhiên trên các đỉnh của G, sau đó chọn một đỉnh nào đó làm đỉnh kế tiếp trong quá trình dịch chuyển. Quá trình tìm kiếm sẽ dừng khi mọi đỉnh đều được duyệt qua, việc lựa chọn đỉnh kế tiếp trong quá trình di chuyển của kiến phụ thuộc vào mật độ mùi trên các cạnh tương ứng. Điều kiện Ω được áp dụng để đảm bảo các lời giải ứng cử viên được xây dựng thỏa mãn các điều kiện ban đầu. Sau khi hồn thành q trình di chuyển, mật độ mùi được cập nhật lại trên các cạnh của đồ thị. Quá trình trên được lặp lại đến khi tìm được phương án tối ưu hoặc thỏa mãn điều kiện dừng cho trước.
Thuật toán ACO [84] được mơ tả như sau:
Thuật tốn 1.1 ACO với Meta-heuristic
Begin
Khởi tạo vết vùi cho các đường đi (Initialize); While(Điều kiện dừng chưa thỏa mãn)do
Xây dựng tập các phương án (ConstrustAntSolutions); Tìm kiếm lời giải cục bộ (ApplyLocalSearch);
Cập nhật lại vết mùi (UpdatePheromones); Endwhile
End
Ban đầu, các tham số được khởi tạo gồm thông tin vết mùi cho các cạnh dựa trên một lời giải bất kỳ s0 ∈ S (Thuật tốn 1.2). Giả sử có k kiến, chúng ta sẽ xây dựng tập lời giải cho con kiến thứi bằng cách lựa chọn các đỉnh Ci+1 dựa vào đỉnh Ci hiện thời và xác suất ngẫu nhiên (Thuật toán 1.3).
Thuật toán 1.2 Khởi tạo (Initialize)
Begin
Tạo một lời giải bất kìs0∈X∗;S∗=s0;
∀(i,j), τ(i,j) =τ0 (τmin≤τ0≤+∞)
Đối với mỗi con kiến, chọn đỉnh bất kỳc1 làm đỉnh xuất phát
k= 1;xk={c1};
End
Thuật toán 1.3 Xây dựng các phương án (ConstructAntSolutions)
Begin
For(duyệt quak con kiến) do
While(xi ∈X∗ andxi ∈S) //xây dựng tập lời giải cho con kiến thứ i;
Chọn đỉnh tiếp theoCi+1 theo xác suất ngẫu nhiênP(Ci+1=C |T,xi)
Bổ sungCi+1 vào tậpxi;
Endwhile Endfor End
Thuật toán 1.4 Cập nhật vết mùi (UpdatePheromones)
Begin
τ(i,j) = (1−ρ)·τ(i,j), ∀(i,j)
If f(st)<f(S∗)thenS∗=st;
∀(i,j)∈S∗:τ(i,j) =τ(i,j) +g(S∗);τ(i,j) =max τmin, τ(i,j)
∀(i,j);
End
Sau khi tìm được các phương án cho mỗi con kiến. Ta sẽ cập nhật lại vết mùi trên các cạnh của đồ thị bằng cách đánh giá lời giải triển vọng nhất được sinh ra trong tồn bộ khơng gian lời giải (Thuật tốn 1.4). Thủ tục tìm kiếm cục bộ là một tùy chọn được sử dụng để chọn ra lời giải có triển vọng từ tập các lời giải do đàn kiến sinh ra trước đó.