Hệ kiến Max-Min (Max-Min Ant System-MMAS) đƣợc cải tiến từ AS bằng cách chỉ cho phép một con kiến tốt nhất cập nhật mùi (con kiến có hành trình tốt nhất w(t) kể từ khi bắt đầu thuật toán hoặc con kiến có hành trình tốt nhất w(t) tại bƣớc lặp hiện tại). Để tránh hiện tƣợng tắc nghẽn (stagnation): do nồng độ mùi tập trung ở một số cung quá cao nên các con kiến lựa chọn đi lựa chọn lại các cung đó, MMAS đƣa vào hai
-31-
cận, cận trên (max) và cận dƣới (min) để khống chế nồng độ các vết mùi trên mỗi cung. Chính vì vậy thuật toán đƣợc gọi là hệ kiến Max-Min về sau các thuật toán ACO có tính chất này cũng gọi là thuật toán Max-Min. MMAS khống chế nồng độ các vết mùi bằng cách sử dụng cận dƣới min
có giá trị nhỏ nhất và cận trên có giá trị lớn nhất là max, nghĩa là tất cả các cạnh ít đƣợc con kiến đi qua có xác suất nhỏ nhƣng vẫn lớn hơn 0 nhiều lần và hạn chế lựa chọn đi lựa chọn lại một cạnh tốt của các con kiến (cạnh này tập trung mùi mạnh). Điều này làm cho thuật toán tránh đƣợc tình trạng tắc nghẽn trong quá trình tìm kiếm, đặc biệt khi số vòng lặp lớn nó sẽ tăng khả năng khám phá cho những con kiến. Các vết mùi khi khởi tạo luôn có giá trị lớn nhất cho tất cả các cạnh làm cho luôn đạt đƣợc sự bốc mùi mạnh, hấp dẫn các con kiến. Sau mỗi lần lặp trên tất cả các cạnh, lƣợng mùi đều bị bốc hơi theo một tỷ lệ nhƣ nhau.
Chỉ các cạnh thuộc lời giải tốt nhất toàn cục w*(t) mới đƣợc rải thêm một lƣợng mùi do chính con kiến tìm ra lời giải đó thực hiện (trong thực nghiệm lời giải tốt trong vòng lặp hiện tại đƣợc rải thêm mùi sẽ tốt hơn vì nó tăng khả năng khám phá cho các con kiến). Nồng độ mùi trên các cạnh ít đƣợc sử dụng sẽ giảm chậm nhƣng trên các cạnh thuộc lời giải tốt vẫn đƣợc gia tăng nên các con kiến vẫn ƣa chọn nhiều hơn.
Trong hệ kiến Max-Min thủ tục xây dựng lời giải giống nhƣ trong AS còn quy tắc cập nhật mùi thực hiện nhƣ sau:
Cập nhật mùi: ij ij ij (1 ) (2.7) trong đó } 0 , ) 1 ( max{ )) ( ( min 1 ij ij t w L (2.8) ngƣợc lại (i,j)w(t)
-32-
Nhƣợc điểm của thuật toán này là sẽ tập trung vào khai thác các lời giải tốt tìm đƣợc mà không phân biệt đƣợc các cạnh không dùng đƣợc với các cạnh dùng đƣợc nhƣng không thuộc lời giải tốt. Do đó sẽ hạn chế khả năng khám phá nếu chọn minbé, còn nếu chọn min lớn thì thuật toán sẽ gần với tìm kiếm ngẫu nhiên dựa trên thông tin heuristic, nhƣng điều này lại giảm khả năng học tăng cƣờng-một ƣu điểm trong các thuật toán kiến. Vì vậy chọn tỷ lệ giữa minvà maxảnh hƣởng rất nhiều đến hiệu suất của thuật toán.
-33-
CHƢƠNG 3
PHƢƠNG PHÁP TỐI ƢU HOÁ ĐÀN KIẾN: ACO 3.1. Một số heuristic ACO
Trƣớc khi đi vào chi tiết là phần trình bày sơ qua về sự hình thành tên gọi của một số heuristic ACO. Năm 1991 Marco Dorigo trong luận án tiến sĩ của ông đã đề xuất thuật toán hệ kiến giải bài toán ngƣời chào hàng. Hầu hết các thuật toán ACO sau này đều phát triển từ hệ kiến. Tuy nhiên, trong AS có một số nhƣợc điểm nhƣ: không có sự hợp tác giữa các con kiến, sau một thời gian chạy nồng độ mùi trên các cạnh dần về 0. Để khắc phục các nhƣợc điểm của AS, năm 1996 Dorigo cùng với V.Maniezzo và A. Colorni đã đề xuất thuật toán ACS cũng cho bài toán TSP trên cơ sở mở rộng AS bằng cách thay đổi luật chuyển trạng thái và cách cập nhật mùi, các cải tiến này đã cải thiện đáng kể hiệu suất của AS và với các kết quả thực nghiệm đã cho thấy ACS tốt hơn hẳn các thuật toán khác nhƣ luyện kim, di truyền, tiến hóa…tuy nhiên các vết mùi trong ACS vẫn dần về 0 mặc dù khả năng hội tụ cao. Năm 1997, Thomas Stutzle và Holger H. Hoos đề xuất hệ kiến Max-Min, là thuật toán đầu tiên sử dụng cận trên và cận dƣới để khống chế vết mùi, các vết mùi không bị dần về 0 do đã bị chặn dƣới. Khi thử nghiệm hệ kiến MAX-MIN các tác giả vẫn thu đƣợc các kết quả khả quan tƣơng đƣơng ACS, hệ MMAS đƣợc ƣa dùng hơn vì nó đơn giản, dễ sử dụng.
Nhằm mục đích đƣa ra một lƣợc đồ làm việc tổng quát cho các thuật toán kiến, năm 1999 Marco Dorigo, Luca M. Gambardella và Gianni Di Cao đã đề xuất phƣơng pháp tối ƣu hoá đàn kiến: ACO. ACO là một meta-heuristic, sẽ trình bày ở phần tiếp theo. Trong ACO, hệ kiến, hệ đàn kiến, hệ kiến Max-Min có những đặc điểm hoàn toàn khớp với ACO nên có thể xem chúng là những ứng dụng cụ thể của ACO.
-34-
Ở phần tiếp theo sẽ trình bày phƣơng pháp tối ƣu hóa đàn kiến cho lớp bài toán ACOmin, sau đó là cơ sở lý thuyết cho vết mùi của hệ Max- Min và đặc tính hội tụ của vết mùi theo quan điểm Max-Min trên hai thuật toán có hiệu suất tốt trong các thuật toán ACO đó là: Hệ đàn kiến và hệ kiến Max-Min.
3.2. Meta-heuristic tối ƣu hoá đàn kiến (ACO metaheuristic)
Các con kiến nhân tạo đƣợc sử dụng trong ACO hợp tác với nhau trong việc tìm các lời giải tốt cho các bài toán tối ƣu tổ hợp khó. Sự hợp tác là một thành phần quan trọng của ACO: đó là sự chọn lựa để phân phối các tài nguyên tính toán cho các con kiến nhân tạo. Các con kiến này truyền thông một cách gián tiếp bởi stigmergy. Các lời giải tốt là một đặc tính nổi bật của sự tƣơng tác (bằng cách hợp tác) này.
Các con kiến nhân tạo có đặc tính 2 mặt: Mặt thứ nhất, chúng trừu tƣợng các đặc điểm cách tìm đƣờng của các con kiến mà gần nhƣ là mấu chốt của cách thức tìm đƣờng đi ngắn nhất đƣợc thấy trong các đàn kiến thực. Mặt kia, là những khả năng mà không thể có ở các con kiến thực nhƣ có bộ nhớ, rải mùi theo tỷ lệ có thể điều khiển đƣợc, các khả năng này đƣợc đƣa thêm vào tùy thuộc đặc trƣng của bài toán áp dụng nhằm mục đích là để ACO trở thành một cách tiếp cận kỹ thuật (engineering) cho việc thiết kế và thực hiện các hệ thống phần mềm cho các bài toán tối ƣu tổ hợp khó.
3.2.1. Bài toán tổng quát
Các thuật toán ACO đƣợc áp dụng để giải các bài toán tối ƣu tổ hợp, các đặc trƣng của lớp các bài toán tối ƣu tổ hợp đƣợc phát biểu nhƣ sau:
Xét bài toán cực tiểu hóa (S, f,), trong đó S là tập hợp hữu hạn
trạng thái, f là hàm mục tiêu xác định trên S (với sS có giá trị hàm mục tiêu là f(s)), còn là một tập các ràng buộc để xác định S qua các thành
-35-
phần của tập hữu hạn C và các liên kết của tập này. Mục tiêu của bài toán cực tiểu hoá là tìm ra một trạng thái tối ƣu s*, một trạng thái có giá trị cực tiểu.
Bài toán tối ƣu tổ hợp (S,f,) đƣợc ánh xạ thành một bài toán có các đặc tính sau :
1) Cho một tập hữu hạn gồm n thành phần C = {c1, c2, …, cn}. Ta ký hiệu X là tập các dãy trong C độ dài không quá h:
X={<u0,...,uk>/ uiC i k h}.
2) Tồn tại tập con X* X và ánh xạ từ X* lên S sao cho 1( )
s
không rỗng với mọi sS. X* có thể xây dựng đƣợc từ tập con C0
nào đó của C và X*
theo đặc tính 3.
3) Từ C0 mở rộng đƣợc thành X* theo thủ tục tuần tự: a. X0=<u0> là mở rộng đƣợc u1C0.
b. Nếu xk=<u1,...,uk> là mở rộng đƣợc thì tồn tại từ xác định đƣợc tập con J(xk) của C sao cho với mọi uk+1 J(xk) thì xk+1=<u0,...,uk, uk+1> là mở rộng đƣợc và xkX* khi J(xk) là rỗng.
c. Với mọi u0 C0, thủ tục mở rộng nêu trên xây dựng đƣợc mọi phần tử của X*. Không giảm tổng quát, ta giả thiết rằng có tƣơng ứng 1-1 giữa các phần tử trong X* đƣợc mở rộng từ mỗi u0 trong C0.
Ví dụ: Với bài toán TSP thì S là các chu trình trên đồ thị đầy, f là độ dài đƣờng đi, là ràng buộc các chu trình qua mọi đỉnh (và mỗi đỉnh đúng một lần) còn C0 là tập các đỉnh của đồ thị.
-36-
Với các bài toán nhƣ vậy ta xây dựng đồ thị đầy với tập đỉnh V mà mỗi đỉnh của nó tƣơng ứng với mỗi thành phần của C và có thể dùng các thuật toán theo lƣợc đồ ở mục 3.2.2 để giải.
3.2.2. Thuật toán ACO tổng quát
Với bài toán tối ƣu tổ hợp ở trên ta có thể áp dụng thủ tục mở rộng để xây dựng X*
và tìm đƣợc lời giải tốt nhờ phƣơng pháp vét cạn, nhƣng trên thực tế khi số thành phần n của C lớn, trong TSP là khi số đỉnh nhiều thì phƣơng pháp vét cạn không giải quyết đƣợc.
Nói chung, bài toán thuộc lớp NP-khó, thông thƣờng ta sẽ có các phƣơng pháp heuristic để tìm lời giải đủ tốt cho bài toán. Các thuật toán ACO kết hợp thông tin heuristic này với phƣơng pháp học tăng cƣờng nhờ mô phỏng hành vi của đàn kiến để tìm lời giải tốt hơn.
Giả sử với mỗi cạnh nối các đỉnh i, j C có trọng số heuristic hi,j để định hƣớng chọn thành phần mở rộng là j khi thành phần cuối của xk là i theo thủ tục nêu trên (hi,j>0 (i,j)). Đàn kiến m con sẽ xây dựng lời giải trên đồ thị đầy có trọng số G=(V,E,H,), trong đó V là tập đỉnh của đồ thị tƣơng ứng với tập thành phần C đã nêu ở trên, E là tập các cạnh (nối các thành phần của C), H là vectơ các trọng số heuristic của cạnh tƣơng ứng (trong bài toán TSP nó là vectơ mà mỗi thành phần =1 dij, dij là độ dài của cạnh nối đỉnh i với đỉnh j) còn là vectơ vết mùi tích luỹ đƣợc, ban đầu đƣợc khởi tạo bằng 0. Các vết mùi có thể đƣợc gắn ở đỉnh, ở cạnh hoặc cả hai, trong bài toán TSP thì các vết mùi đƣợc gắn ở cạnh còn trong một số bài toán khác, chẳng hạn bài toán thời khóa biểu (trình bày ở chƣơng 4) thì lƣợng mùi đƣợc gắn ở đỉnh của đồ thị G. Đồ thị G đƣợc gọi là đồ thị xây dựng.
-37-
Với điều kiện kết thúc đã chọn (với số lần lặp Nc định trƣớc) thuật toán ACO tổng quát cho các bài toán tối ƣu tổ hợp tĩnh đƣợc mô tả hình thức nhƣ sau:
Các bài toán tối ƣu tổ hợp tĩnh là những bài toán mà các đặc trƣng của nó đƣợc cho trƣớc và không thay đổi khi bài toán đƣợc giải. Một trong những bài toán nhƣ vậy là bài toán TSP, trong đó vị trí các thành phố và khoảng cách tƣơng ứng giữa chúng là các giá trị ban đầu của bài toán và không bị thay đổi khi chạy.
Procedure ACO_meta_heuristic()
Whilenot (Điều kiện dừng) do
Procedure Thuật toán ACO cho bài toán tối ưu tổ hợp tĩnh
- Khởi tạo vết mùi và đặt giá trị cho các tham số.
While not (điều kiện dừng) do
- Các con kiến xây dựng lời giải và chọn lời giải tốt nhất.
- Áp dụng tìm kiếm địa phương (có hoặc không).
Cập nhật vết mùi.
End While End Procedure
-38-
Schedule_activities
Ants_generation_and_activity(); Pheromone_evaporation(); Daemon_actions(); {tùy chọn}
End schedule _activities End while
End procedure
Procedure Ansts_generation_and activity()
While (các tài nguyên khả dụng) do
Schedule_the creation_of a_new_ant(); New_active_and();
End while End procedure
Procedure New_active_ant() {chu kì sống của kiến) Initialize_ant();
M = Update_ant_memory();
While (trạng thái hiện tại trạng thái đích) do
A = Read_local ant_routing_table(); P=Compute_transition_probabilities(A,M,problem_constraints); Next_state=Apply_ant_decision_policy(P,problem_constraints); Move_to_next_state(next_state); If(online_step_by_step_pheromone_update) Deposit_pheromone_on_the_visited_arc(); Update_ant routing_table(); End if M = Update_intemal_state(); End While
-39- If (online_delayed_pheromone_update) Evaluate_solution(); Deposit_pheromone_on_all_visited_arcs(); Update_ant_routing_table(); End if Die(); End procedure
Thuật toán ACO ở dạng giả mã
Các thủ tục xây dựng lời giải và cập nhật mùi đƣợc trình bày ở mục tiếp theo.
3.2.3. Xây dựng lời giải
Sau khi khởi tạo các tham số và lƣợng mùi ban đầu, các con kiến đƣợc đặt ngẫu nhiên lên các đỉnh của đồ thị để xuất phát và sau đó chúng xây dựng đƣờng đi bằng cách dịch chuyển từ đỉnh này sang đỉnh khác trên đồ thị sau mỗi bƣớc lặp, đỉnh đƣợc chọn để dịch chuyển dựa vào nồng độ mùi trên cung nối đỉnh hiện tại đến đỉnh đó và kết hợp thông tin heuristic. Trong khi di chuyển sang các đỉnh khác, ràng buộc đƣợc sử dụng để tránh cho kiến xây dựng lời giải không khả thi. Sau khi các con kiến xây dựng xong hành trình của chúng, mùi đƣợc cập nhật trên các cung.
Các con kiến xây dựng lời giải ngẫu nhiên theo thủ tục mở rộng tuần tự nêu trên với xác suất chọn đỉnh tiếp theo nhƣ sau:
Quy tắc chuyển trạng thái:
Giả sử kiến s đã xây dựng xk=<u0...,uk>, nó chọn đỉnh y thuộc J(xk) để xk+1=<u0,..., uk, y> với xác suất:
-40- 0 ) , | ( ) ( , , , , k x J j j u j u y u y u k h h x y P (3.1)
Quá trình này tiếp tục cho tới khi mỗi con kiến r đều tìm đƣợc một lời giải chấp nhận đƣợc x(r)X* và do dó s(r) =(x(r)) S. Để tiện trình bày, về sau ta sẽ xem x(r) và s(r) nhƣ nhau và không phân biệt X*
với S. Ký hiệu w(t) là lời giải tốt nhất các con kiến tìm đƣợc cho tới lúc này và wi(t) là lời giải tốt nhất tại bƣớc lặp t. Trong lý thuyết để tiện cho việc chứng minh, các tác giả đã chọn w(t) còn trong thực nghiệm wi(t) lại tỏ ra hiệu quả hơn do việc này tăng cƣờng tính khám phá của thuật toán. Do giả thiết (3-c) của bài toán và để tiện trình bày, về sau ta sẽ không phân biệt mỗi xX* với trạng thái sS tƣơng ứng.
3.2.4. Cập nhật mùi
Sau khi các con kiến kết thúc thủ tục xây dựng lời giải, mùi bắt đầu đƣợc cập nhật. Gọi s* là lời giải tốt vừa đƣợc tìm thấy và st là lời giải ở bƣớc lặp t, f(st) và f(s*) là 2 hàm mục tiêu. Lƣợng mùi trên các cung bị giảm do thừa số , nó đƣợc gọi là hệ số bay hơi mùi, chỉ có các cung thuộc s* lƣợng mùi mới đƣợc tăng lên. Khi đó ở mỗi bƣớc lặp cƣờng độ vết mùi sẽ thay đổi theo quy tắc sau:
ij ij
j
i, ) (1 ).
(
:Bay hơi mùi
Nếu f(st)<f(s*), s*st :Lấy lời giải tốt nhất *) ( : * ) , (i j s ij ij g s
:Thêm lƣợng mùi vào s*
ij ij j i, ): max , ( min : Các vết mùi không dần về 0 ) (xk J y ngƣợc lại
-41-
Trong đó (0, 1), min>0 là một tham số, giả sử g là một hàm giá trị thực xác định trên S sao cho 0 g(s), sS nếu
) ' ( ) (s f s f g(s) g(s').
Khởi tạo vết mùi
Đặt s*=s’, s’ là một lời giải khả thi đƣợc sinh ra tại bƣớc lặp đầu tiên.
(i, j), đặt (i, j)=0
Trong đó 0 là một tham số, min 0 +
Sau khi khởi tạo vết mùi, thuật toán lặp thủ tục xây dựng lời giải và cập nhật mùi cho đến khi gặp điều kiện dừng. Kí hiệu lớp các thuật toán ACO sử dụng quy tắc cập nhật mùi ở trên là ACOgb,min , trong đó gb là quy tắc cập nhật mùi toàn cục đƣợc dùng, còn min là cận dƣới của vết mùi trong phạm vi bị khống chế.
3.3. Đặc tính hội tụ của vết mùi
Sau khi đƣợc khởi tạo, các thủ tục xây dựng đƣờng đi, bay hơi mùi và thêm lƣợng mùi đƣợc lặp cho đến khi gặp điều kiện dừng. Gọi w(t) là lời giải tốt nhất tìm đƣợc tại bƣớc lặp t, đặt max là giá trị lớn nhất và min