Một cài đặt thành công của metaheuristic trong một bài toán tổ hợp phải cânbằng giữa sự khai thác được kinh nghiệm thu thập được trong quá trình tìm kiếm đểxác định được những vùng với n
Trang 1MSHV: CH1301016 KHÓA: CH08
TP HCM, 01/2014
Trang 2M c l c ục lục ục lục
Giới thiệu 2
Danh mục hình vẽ 3
Phần 1:Thuật toán bầy kiến 4
1.1 Giới thiệu 4
1.2 Hệ thống Ant Colony - Đàn kiến nhân tạo 7
1.3 Các sơ đồ thuật toán 11
1.3.1 Thuật toán Ant System (AS) 11
1.3.2 Thuật toán Ant Colony System (ACS) 13
1.3.3 Thuật toán Max-Min Ant System (MMAS) 15
1.3.4 Thuật toán Rank-Based Ant System (RBAS) 16
1.3.5 Thuật toán Best-Worst Ant System (BWAS) 17
Phần 2: Bài toán người đưa thư 20
2.1 Giới thiệu 20
2.2 Phát biểu bài toán 21
2.3 Mục tiêu bài toán 21
2.4 Các bước tiến hành 22
2.5 Sử dụng nguyên lý tham lam cho bài toán người du lịch 22
2.6 Giải thuật ACO cho bài toán người du lịch 23
Phần 3: Demo Ứng dụng 25
3.1 Giao diện chương trình 25
3.2 Một số hàm trong chương trình 26
Kết luận 31
Tài liệu tham khảo 32
Trang 3Gi i thi u ới thiệu ệu
Metaheuristic là một cách gọi chung cho các giải thuật heuristic trong việc giảiquyết các bài toán tổ hợp khó Metaheuristic bao gồm những chiến lược khác nhautrong việc khám phá không gian tìm kiếm bằng cách sử dụng những phương thức khácnhau và phải đạt được sự cân bằng giữa tính đa dạng và chuyên sâu của không giantìm kiếm Một cài đặt thành công của metaheuristic trong một bài toán tổ hợp phải cânbằng giữa sự khai thác được kinh nghiệm thu thập được trong quá trình tìm kiếm đểxác định được những vùng với những lời giải có chất lượng cao gần tối ưu Những ví dụcủa metaheuristic bao gồm giải thuật luyện thép (SA) , giải thuật di truyền (GA) , giảithuật đàn kiến (ACO) ,…Trong đó giải thuật đàn kiến là metaheuristic dùng chiến lượccủa kiến trong thế giới thực để giải bài toán tối ưu SA xuất phát từ phương thức xácsuất và kỹ thuật luyện bao gồm việc nung và điều khiển làm nguội các kim loại để đạtđược trạng thái năng lượng nhỏ nhất Trong khi đó giải thuật di truyền dựa trên ýtưởng từ cơ chế di truyền trong sinh học và tiến trình tiến hóa trong cộng đồng các cáthể của 1 loài
Bài toán tìm kiếm được xem là bài toán được nhiều người quan tâm, đặc biệt làtìm kiếm tối ưu toàn cục Một thuật toán được xem là lý thuyết vững chắc trong việcgiải các bài toán tìm kiếm tối ưu toàn cục đã có nhiều ứng dụng thực tế như: tìm kiếmcác trang web cần tìm trên mạng, sắp xếp thời khóa biểu, tìm kiếm đường đi tối ưu …Các bài toán này đều có thể áp dụng thuật toán đàn kiến
Nội dung đồ án này chỉ đề cập đến giải thuật metaheutistic và đặc biệt là thuậttoán đàn kiến để thực hiện bài toán tìm kiếm đường đi tối ưu, cụ thể là bài toán người
du lịch (TSP) (một bài toán cổ điển thuộc lớp NP-Khó được nghiên cứu sâu trong lĩnhvực tối ưu tổ hợp)
Trang 4Danh m c hình vẽ ục lục
Hình 1.1: Luồng đi của đàn kiến thực tế 4
Hình 1.2: Sơ đồ giải thích tình huống bầy 5
Hình 1.3: Sơ đồ chung của thuật toán bầy kiến 7
Hình 2.1: Mô hình ví dụ về bài toán TSP 21
Hình 2.2: Sơ đồ thuật toán ACO cho bài toán TSP 24
Hình 3.1 Giao diện chương trình 25
Hình 3.2 Giao diện chức năng 25
Hình 3.3 Giao diện form cài đặt 25
Trang 5Ph n 1:Thu t toán b y ki n ần 1:Thuật toán bầy kiến ật toán bầy kiến ần 1:Thuật toán bầy kiến ến
1.1 Gi i thi u ới thiệu ệu
Vào đầu thập niên 90, một thuật toán với tên gọi Tối ưu đàn kiến (Ant ColonyOptimization – ACO) được đề xuất như là một phương pháp mới trong việc tìm kiếm lờigiải tối ưu cho những bài toán tìm kiếm tối ưu ACO lần đầu tiên được ứng dụng để giảiquyết bài toán người đưa thư (TSP) và gần đây nó đã được mở rộng và cải tiến để ápdụng cho nhiều bài toán khác nhau
Giải thuật ACO đã thu hút được rất nhiều sự chú ý nhờ vào khả năng tối ưu của
nó trong nhiều lĩnh vực khác nhau Thuật toán lấy cảm hứng từ việc quan sát hành vicủa đàn kiến trong quá trình tìm kiếm nguồn thức ăn Người ta đã khám phá ra rằng,đàn kiến luôn tìm được đường đi ngắn nhất từ tổ của chúng đến nguồn thức ăn.Phương tiện truyền đạt tín hiệu được kiến sử dụng để thông báo đến cho những conkhác trong việc tìm đường đi hiệu quả nhất chính là mùi của chúng (pheromone) Kiến
để lại vệt mùi trên mặt đất khi chúng di chuyển với mục đích đánh dấu đường đi chocác con theo sau Vệt mùi này sẽ bay hơi dần và mất đi theo thời gian, nhưng nó cũng
có thể được củng cố nếu những con kiến khác tiếp tục đi trên con đường đó lần nữa.Dần dần, các con kiến theo sau sẽ lựa chọn đường đi với lượng mùi dày đặc hơn, vàchúng sẽ làm gia tăng nồng độ mùi hơn nữa trên những đường đi nhiều Các đường đivới nồng độ mùi ít hơn sẽ bị loại bỏ và cuối cùng, tất cả đàn kiến sẽ cùng kéo về mộtđường đi có khuynh hướng trở thành đường đi ngắn nhất từ tổ đến nguồn thức ăn củachúng
Hình 1.1: Luồng đi của đàn kiến thực tếa) Đường đi từ tổ đến nguồn thức ăn
Trang 6b) Khi có vật cản kiến sẽ chọn 2 đường đi
c) Đường đi ngắn hơn thì sẽ có nhiều mùi hơn
Hình 1.2 bên dưới giải thích tình huống bầy kiến trong hình 1.1 b) như sau
A
B
C D
1, 2… Giả định rằng 30 con kiến mới đi từ A đến B, 30 con từ E đến D, mỗi kiến dichuyển với tốc độ một đơn vị thời gian và khi di chuyển kiến để tại thời điểm t một vệtpheromone với nồng độ là 1 Để đơn giản chúng ta xét lượng pheromone bay hơi hoàntoàn và liên tục trong khoảng thời gian (t+1, t+2)
Tại thời điểm t=0, thì không có vệt mùi nào trên cạnh và có 30 kiến ở B, 30 ở D.Việc lựa chọn đường đi của chúng ta ngẫu nhiên do đó, trung bình từ mỗi nút có 15con kiến sẽ đi đến F và 15 con sẽ đi đến C (hình 1.2 b)
Tại thời điểm t=1, 30 con kiến mới đi từ A đến B, lúc này nó sẽ chọn hướng đến
C hoặc hướng đến F Tại hướng đến F có vệt mùi 15 do 15 con kiến đi từ B đến F, tạihướng đến C có vệt mùi 30 do 15 kiến đi từ B đến D và 15 con đi từ D đến B thông qua
C (hình 1.2 c) Do đó khả năng kiến hướng đến chọn đường đến C, do đó số kiến mongmuốn đi đến C sẽ gấp đôi số kiến đi đến F (20 con đến C và 10 con đến F) Tương tựnhư vậy cho 30 con kiến mới đi từ D đến B
Quá trình sẽ liên tục cho đến khi tất cả kiến sẽ chọn đường đi ngắn nhất
Sơ đồ chung của thuật toán bầy kiến
Trang 7Trong đó:
ĐK dừng (tức là điều kiện dừng) là điều kiện đạt được khi thuật toán ở trạng tháikết thúc Với bài toán người đưa thư thì ĐK dừng là điều kiện đạt được khi số vòng lặpcủa thuật toán = số vòng lặp lớn nhất do người dùng tự định nghĩa hoặc là tất cả đànkiến đều đi theo một đường (tức là đường đi ngắn nhất)
ConstrucSolutions() là hàm xây dựng một giải pháp có thể theo phương phápsiêu tìm kiếm(meta-heuristic), với bài toán người đưa thư thì đó là hàm xây dựng chutrình cho mỗi kiến
UpdateTrails() là hàm cập nhật mùi cho hành trình mà kiến đã đi qua
LocalSearch() là hàm tìm kiếm địa phương, giúp tìm ra tối ưu cục bộ
Trang 8Hình 1.3: Sơ đồ chung của thuật toán bầy kiến
1.2 H th ng Ant Colony - Đàn ki n nhân t o ệu ống Ant Colony - Đàn kiến nhân tạo ến ạo
Để bắt chước hành vi của các con kiến thực, Dorigo xây dựng các con kiến nhântạo cũng có đặc trưng sản sinh ra vết mùi để lại trên đường đi và khả năng lần vết theonồng độ mùi để lựa chọn con đường có nồng độ mùi cao hơn để đi Gắn với mỗi cạnh
(i,j) nồng độ vết mùi τ ij và thông số heuristic μ ij trên cạnh đó
Ban đầu, nồng độ mùi trên mỗi cạnh (i,j) được khởi tạo bằng một hằng số c,hoặc được xác định theo công thức:
Trang 9 C nn: chiều dài hành trình cho bởi phương pháp tìm kiếm gần nhất
Tại đỉnh i, một con kiến k sẽ chọn đỉnh j chưa được đi qua trong tập láng giềngcủa i theo quy luật phân bố xác suất được xác định theo công thức sau:
P i j k
Trong đó:
P ij k: xác xuất con kiến k lựa chọn cạnh i,j
α : hệ số điều chỉnh ảnh hưởng của τ ij
μ ij: thông tin heuristic giúp đánh giá chính xác sự lựa chọn của con kiến khiquyết định đi từ đỉnh i đến j; được xác định theo công thức:
o d ij: Khoảng cách giữa đỉnh i và đỉnh j
β : Hệ số điều chỉnh ảnh hưởng của μ ij
N k j: Tập các đỉnh láng giềng của i và con kiến k chưa đi qua
Quy luật này mô phỏng hoạt động của một vòng quay xổ số nên được gọi là kỹthuật bánh xe xổ số
Cho một hằng số 0 ' ' q0' ' 1 và một số 0 ' ' q ' ' 1 được tạo ra một cách ngẫu nhiên.
Con kiến k ở đỉnh i sẽ lựa chọn đỉnh j kế tiếp để đi theo một quy tắc lựa chọn được mô
tả bởi công thức sau:
Sau mỗi vòng lập, vết mùi trên mỗi cạnh được cập nhật lại theo công thức sau:
Trang 10 0<q ' ' 1: Tỷ lệ bay hơi của vệt mùi
∅ τ ij k(t): lượng mùi mà con kiến k để lại trên cạnh i,j được xác định như sau:
∅ τ ij k={f (k) Q Nếu con kiến k đi qua cạnh(i , j)
0 Ngược lại
(6)
o Q: là một hằng số
o f (k ): giá trị mục tiêu trong mỗi vòng lặp
Qua thực nghiệm trên cho thấy rõ ràng có khả năng xây dựng được tối ưu hóađàn kiến: Thông tin để tìm ra con đường ngắn nhất giữa 2 điểm có thể dữa vào quy tắcxác xuất Có 2 khía cạnh bất đồng quan trọng sau:
Phạm vi xem xét các hành vi của hệ thống là trung bình, và không phải nhữnghành vi ứng xử tuân theo biến thiên ngẫu nhiên của đàn kiến là duy nhất
Thực nghiệm trên những thời gian không liên tục, trong khi trước đó mô hình xéttrong một thời gian liên tục
Mã giả cho thuật toán Ant Colony
Đối với thuật toán ACO, sự hội tụ được đảm bảo tuy nhiên tốc độ và thời gian thìkhông biết trước, thường sử dụng để giải quyết các vấn đề tối thiểu về giá thành
Thường các bài toán trước khi được giải bằng thuật toán ACO phải được biến đổiđưa về dạng đồ thị đầy đủ có trọng số Bao gồm các nút và các cung không địnhhướng Sau khi đi biến đổi bài toán về dạng phù hợp mới áp dụng thuật toán ACO đểgiải Trên đồ thị này các con kiến sẽ đi xây dựng các lời giải cho bài toán
Sau đây là mô hình cụ thể hơn về thuật toán ACO Mô tả về thuật toán ACO vớiviệc thực hiện song song hoạt động của các con kiến
Procedure AntColonyAlgorithm
Khởi tạo các thông tin Pheromone cho các đường đi
Cập nhật thông tin pheromone cục bộ (Local trail update)
End Do
Phân tích các lời giải thu được (Analyze solution)
Cập nhật thông tin pheromone toàn cục (Global trail update)
End Do
End Procedure
Trang 12Trong đó thủ tục ants_generation_and_activity() là thủ tục chính, cơ bản
của giải thuật Thủ tục này công việc chính gồm: Tạo và khởi tạo các thông số cho đànkiến Với mỗi con kiến trong đàn sẽ tiến hành xây dựng một lời giải cho bài toán khichưa thỏa mãn điều kiện dừng
Ngoài ra có hai thủ tục phụ thêm vào là:
Pheromone_evaporation(): Là tác động của môi trường để làm giảm thông
tin pheromone theo thời gian Thủ tục này để tránh bế tắc trong tìm kiếm và cho phépđàn kiến mở rộng không gian tìm kiếm
Daemon_action(): Là thủ tục hỗ trợ thêm và không gặp trong thực tế (không
có ở đàn kiến tự nhiên) Là một thủ tục để điều chỉnh các thông số khi cần thiết làmtăng tính hiệu quả của thuật toán Ví dụ: Thủ tục tìm kiếm cục bộ, thủ tục khởi tạo lạicác thông tin pheromone khi gặp bế tắc trong tìm kiếm
1.3 Các s đ thu t toán ơ đồ thuật toán ồ thuật toán ật toán bầy kiến
Nhiều thuật toán đã được đưa ra dựa trên mô hình thuật toán metaheuristicACO Trong các mô hình đưa ra để giải quyết các bài toán tổ hợp tối ưu NP-khó Các
mô hình này là phát triển dựa trên mô hình thuật toán ACO cụ thể được trình bày bêntrên Theo các nghiên cứu cho thấy khi sử dụng thuật toán bầy kiến nói chung cácthông tin pheromone và heuristic có thể áp dụng cho các nút hoặc cạnh nối Trong cácthuật toán đưa ra sau đây thì thông tin pheromone và heuristic chỉ gắn với các cạnh màthôi Phần này chỉ đưa ra 5 mô hình thuật toán ACO phát triển từ hệ thống AntSystem Nhưng đó chỉ là một số các dạng tiêu biểu của thuật toán ACO, còn tồn tại rấtnhiều các biến thể khác
1.3.1.Thu t toán Ant System (AS) ật toán bầy kiến
Được phát triển bởi Dorigo, Maniezzo và Colorni năm 1991, là thuật toán ACOđầu tiên Ban đầu có 3 biến thể khác nhau là: AS-Density, AS-Quantity và AS-Cyclekhác nhau bởi cách thức cập nhật thông tin Pheromone
Trong đó:
AS-Density: Thì đàn kiến sẽ đặt thêm pheromone trong quá trình xây dựnglời giải (online step-by-step pheromone update), lượng pheromone để cập nhật là mộthằng số
Trang 13 AS-Quantity: Thì đàn kiến sẽ đặt thêm pheromone trong quá trình xây dựnglời giải (online step-by-step pheromone update), lượng pheromone để cập nhật là phụthuộc vào độ mong muốn (thông tin heuristic) với đoạn đường đi qua ηij.ij.
AS-Cycle: Thông tin pheromone sẽ được cập nhật khi lời giải đã hoàn thành(online delayed pheromone update) Đây là mô hình cho kết quả tốt nhất và được coinhư là thuật toán AS
Như vậy theo mô hình của AS-cycle thì pheromone sẽ cập nhật khi tất cả conkiến hoàn thành lời giải của mình.Việc cập nhật pheromone được tiến hành như sau:
Đầu tiên tất cả pheromone trên các cung sẽ được giảm đi bởi một hằng số(pheromone evaporation)
τ ij ←(1− p)τ rs
Với p trong khoảng (0,1) là tốc độ bay hơi của pherromone
Tiếp theo mỗi con kiến trong đàn sẽ đặt thêm một lượng thông tinpheromone, lượng pheromone này là hàm của chất lượng lời giải mà con kiến xâydựng
Thuật toán này được tóm tắt như sau:
Procedure new_ant (ant_id)
Trang 14r = next_state ; S k=¿S k ,r >¿
-L k=L k ∪r
end while{
the pheromone_evaporation ( ) procedure triggers and
evaporates pheromone in every edge a rs :τ rs=(1− p)τrs}
for each edge a rs ∈ S k do
τ rs=τ rs+f (C(S k))
end for
release_ant_resources (ant_id)
end Procedure.
1.3.2.Thu t toán Ant Colony System (ACS) ật toán bầy kiến
Phát triển từ thuật toán AS với một số cải thiện như sau:
Sử dụng một luật khác cho việc di chuyển, gọi là pseudo-random proportional
rule Gọi k là con kiến đang đứng tại nút r q0 là một tham số, và một giá trị ngẫu nhiên
q Trong đó giá trị của q và q0 là trong khoảng (0,1) Nút s tiếp theo được chọn để dichuyển kiến k tới được chọn như sau:
Có Daemon action, thực hiện việc cập nhật pheromone chỉ duy nhất với
lời giải S global−best Cập nhật theo công thức như sau:
τ rs ←(1−p ) τ rs ∀ a rs ∈ S global−best
Trang 15 Áp dụng online step-by-step pheromone update
τ rs ←(1−φ) τ rs+φ τ0
Trong đó φ là một tham số để giảm pheromone thứ hai sau p Còn τ0 được chọn
là một tham số rất bé (như là ngưỡng dưới của pheromone)
Thuật giải được tóm tắt như sau:
Procedure new_ant (ant_id)
k = ant_id ; r = generate_initial_state;S k=r; Lk=r
while (current-state ≠ target_state)
for each s∈ N k(r) do compute b rs=τ rs μ rs β
Trang 16S current −best=¿ best_solution (S k)
if (better (S current −best , S global−best))
S global−best=S current −best
end if
for each edge a rs ∈ S global−best do
{ the pheromone_evaporation ( ) procedure triggers and
evaporates pheromone in every edge a r s :τ rs=(1− p)τrs}
τ rs=τ rs+p f (C(S global−best))
end for
end Procedure.
1.3.3.Thu t toán Max-Min Ant System (MMAS) ật toán bầy kiến
Được phát triển bởi Stutzle và Hooss vào năm 1996, được mở rộng lên từ hệthống AS Một số đặc điểm được mở rộng từ hệ thống AS như sau
Giống như ACS, MMAS thực hiện offline pheromone trail update, tức làsau khi toàn bộ kiến trong đàn hoàn thành lời giải thì việc cập nhật được tiến hành cholời giải tối ưu Đầu tiên thực hiện bay hơi bớt thông tin pheromone (pheromoneevaporation) trên tất cả các cạnh
Một cải tiến quan trọng trong hệ thống MMAS là việc thêm vào giới hạn
cận trên và dưới của thông tin Pheromone (τ max và τ min), điều đó giúp tránh hội tụ tạiđiểm tối ưu cục bộ Khởi tạo tất cả thông số Pheromone giá trị cận trên để ưu tiên việc
khai phá không gian tìm kiếm Cận trên τ max thường được chọn là giá trị lớn nhất màPheromone có thể đạt được ở vòng lặp cuối cùng
τ max=1 /¿
Trong đó S là lời giải tối ưu, bởi vì lời giải tối ưu không biết trước nên thông
thường được thay thế bởi S global−best trong tính toán