Tải bản đầy đủ (.docx) (40 trang)

Tiểu luận môn LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (836.69 KB, 40 trang )

Ant Colony Optimization
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
LẬP TRÌNH SYMBOLIC
VÀ ỨNG DỤNG
Tìm hiểu Ant Colony Optimization
và hiện thực với Maple
Giảng viên hướng dẫn
PGS.TS. Đỗ Văn Nhơn
Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158
Ant Colony Optimization
01 – 2013
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
LẬP TRÌNH SYMBOLIC
VÀ ỨNG DỤNG
Tìm hiểu Ant Colony Optimization
và hiện thực với Maple
Giảng viên hướng dẫn
PGS.TS. Đỗ Văn Nhơn
Ant Colony Optimization
Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158
02 – 2013
MỤC LỤC
Ant Colony Optimization
MỞ ĐẦU
Bài toán tối ưu hóa tổ hợp là bài toán hấp dẫn và thú vị bởi vì phần lớn
chúng đều dễ để hình dung nhưng khó mà tìm ra lời giải cho chúng. Nhiều bài
toán tối ưu tổ hợp là các bài toán NP-khó và chúng không thể giải được trong
thời gian đa thức. Trên thực tế người ta thường giải quyết các bài toán này
bằng các phương pháp xấp xỉ, chúng có nghiệm gần tối ưu và thời gian chạy


khá ngắn. Các thuật toán thuộc loại này tạm gọi là các thuật toán heuristic,
chúng được sử dụng để giải quyết các bài toán cụ thể. Mở rộng của chúng là
các thuật toán metaheuristic có thể giải quyết được cả một lớp các bài toán
rộng lớn. ACO (Ant Colony Optimization) là một phương pháp theo hướng
tiếp cận như thế. Bài thu hoạch này sẽ trình bày về phương pháp ACO, cụ thể
là hai thuật toán Ant System và Max-Min Ant System cho bài toán Traveling
Salesman Problem. Cài đặt các thuật toán này thường thao tác trên các đối
tượng toán học như tập hợp, danh sách, hình học, đồ thị, yêu cầu cần phải
đáp ứng việc tính toán nhanh với khối lượng lớn, với thời gian nhanh và độ
chính xác cao. Thường thì các ngôn ngữ lập trình cấp thấp mới đáp ứng những
yêu cầu này, nhưng lập trình với chúng đòi hỏi mất rất nhiều thời gian. Và
Maple đã giải quyết được việc này. Maple rất “mạnh” (mạnh, ở đây có thể hiểu
theo hai nghĩa là tốc độ xử lý nhanh, chính xác và thời gian lập trình phải bỏ ra
là ít) trong việc tính toán symbolic, numeric, … và các đối tượng toán học
khác. Bài thu hoạch này sẽ sử dụng Maple để cài đặt các thuật toán tìm tất cả
đường đi, đường đi ngắn nhất, Ant System và Max-Min Ant System cho bài
toán Traveling Salesman Problem.
Lời cảm ơn, em chân thành xin dành cho thầy Nhơn vì những kiến thức của
Thầy mang lại để giúp em có được cũng như hoàn thành tốt bài thu hoạch này.
Ant Colony Optimization
I. PHƯƠNG PHÁP ANT COLONY OPTIMIZATION
1. Giới thiệu
Phương pháp tối ưu hóa đàn kiến (Ant Colony Optimization - ACO) là một
mô hình để thiết kế các thuật toán metaheuristic cho việc giải quyết bài toán tối
ưu hóa tổ hợp (Combinatorial optimization problems).
1.1. Bài toán tối ưu hóa tổ hợp
Bài toán tối ưu hóa tổ hợp được định nghĩa như sau:
Cho một tập C = {c
1
, c

2
, c
n
}.
Một tập con S của C là một phương án để giải quyết bài toán.
Tập là tập tất cả các phương án có thể, vì thế S là một phương án khả thi
nếu
Một hàm giá trị z xác định như sau, z : , mục tiêu là tìm phương án khả thi
S* có giá trị nhỏ nhất: S* và z(S*) z(S), S F.
Nhiều bài toán tối ưu quan trọng trong lý thuyết và thực tế là các bài toán
thuộc loại tối ưu hóa tổ hợp. Ví dụ, bài toán tìm đường đi ngắn nhất, cũng như
nhiều bài toán có ý nghĩa quan trọng khác trên thực tế như bài toán người chào
hàng, bài toán phân công lao động, bài toán định tuyến mạng, bài toán lập lịch
công việc, bài toán lập lịch bay cho các hãng hàng không, và nhiều bài toán
khác nữa.
Một bài toán tối ưu hóa tổ hợp hoặc thuộc loại tìm giá trị nhỏ nhất hoặc là
thuộc loại bài toán tìm giá trị lớn nhất. Các phương pháp giải loại bài toán này
Ant Colony Optimization
phần lớn là các phương pháp tìm kiếm heuristic (các thuật toán metaheuristic).
Sau đây là các thuật toán đã được sử dụng:
• Thuật toán tìm kiếm cục bộ (Local search)
• Thuật toán mô phỏng luyện kim (Simulated annealing)
• Thuật toán GRASP(Greedy Randomized Adaptive Search Procedure)
• Thuật toán bầy đàn (Swarm intelligence)
• Thuật toán tìm kiếm theo bảng(Tabu search)
• Thuật toán di truyền (Genetic algorithms)
• Thuật toán tối ưu hóa đàn kiến (Ant colony optimization)
Metaheuristic là một tập các lý thuyết thuật toán được dùng để xác định các
phương pháp heuristic sao cho nó phù hợp với một lớp bài toán rộng lớn. Nói
cách khác metaheuristic có thể được xem như là một phương pháp heuristic có

tính tổng quát, nó được thiết kế để hướng dẫn các heuristic trong các bài toán
cơ bản hướng về những miền hứa hẹn trong không gian tìm kiếm các phương
án tối ưu. Một metaheuristic là khung thuật toán tổng quát có thể áp dụng cho
nhiều loại bài toán tối ưu khác nhau tất nhiên là cùng với những điều chỉnh nho
nhỏ để làm cho chúng trở nên phù hợp với các bài toán cụ thể.
1.2. Tối Ưu Hóa Đàn Kiến (ACO)
ACO là một metaheuristic có thể áp dụng để giải quyết rất nhiều bài toán
tối ưu tổ hợp, thuật toán đầu tiên đã được phân loại trong lớp các thuật toán
ACO được đưa ra năm 1991 và kể từ đó nguyên tắc căn bản đã có nhiều thay
đổi khác nhau. Đặc điểm cơ bản của các thuật toán ACO là sự kết hợp giữa
thông tin heuristic dựa vào đặc điểm của phương án có nhiều hứa hẹn và thông
tin nhận được qua các phương án tốt đã tìm được ở bước trước. Các thuật toán
metaheuristic là các thuật toán để tránh hiện tượng tối ưu cục bộ, nó điều chỉnh
Ant Colony Optimization
các heuristic: hoặc là heuristic tạo ra bắt đầu từ một phương án trống sau đó
thêm các thành phần để nó trở thành phương án hoàn chỉnh và tốt, hoặc là
heuristic tìm kiếm cục bộ bắt đầu từ một phương án hoàn chỉnh sau đó thay đổi
lại một số thành phần để đạt được một phương án tốt hơn.
ACO bao gồm một lớp các thuật toán trong đó thuật toán đầu tiên là Ant
System (AS) được đề xuất bởi Colorni, Dorigo và Maniezzo. Ý tưởng chính
làm cơ sở của thuật toán là lấy cảm hứng từ hành vi của đàn kiến trong tự
nhiên, đó là quá trình tìm kiếm các lời giải song song dựa vào các dữ liệu cục
bộ và dựa vào cấu trúc động chứa các thông tin thu được qua các bược giải
trước. Sự tổng hợp các hành vi nổi trội từ quá trình giao tiếp giữa các phần tử
trong quá trình tìm kiếm của chúng thực sự là có hiệu quả trong việc giải quyết
các bài toán tối ưu hóa tổ hợp. Các con kiến đã giao tiếp với nhau như thế nào
và làm sao để chúng lựa chọn được con đường tốt hơn để đi. Qua các nghiên
cứu người ta biết được rằng các con kiến trong tự nhiên để lại một vết hóa chất
(pheromone trail), chúng có khả năng ứ đọng, bay hơi và có thể nhận biết bởi
các con kiến khác, các vệt mùi chính là phương tiện giao tiếp báo cho các con

kiến khác thông tin về đường đi đó một cách gián tiếp. Các con kiến sẽ lựa
chọn đường đi nào có cường độ mùi lớn nhất tại thời điểm lựa chọn để đi, nhờ
cách giao tiếp mang tính gián tiếp và cộng đồng này mà đàn kiến trong tự
nhiên tìm được đường đi ngắn nhất.
Dựa vào ý tưởng trên, các thuật toán ACO sử dụng thông tin heuristic
(chính là thông tin có được do các dữ liệu đầu vào của bài toán) kết hợp thông
tin từ các vết mùi của các con kiến nhân tạo (artificial ant) để giải các bài toán
tối ưu tổ hợp khó bằng cách đưa về bài toán tìm đường đi tối ưu trên đồ thị cấu
trúc tương ứng được xây dựng từ đặc điểm của từng bài toán. Mỗi con kiến
Ant Colony Optimization
nhân tạo xây dựng lời giải của chúng dựa vào luật phân phối xác suất của các
vết mùi nhân tạo và các thông tin heuristic. Lược đồ thuật toán ACO tổng quát
áp dụng cho bài toán tối ưu tổ hợp:
Procedure ACOMetaheuristic
Set parameters, initialize pheromone trails
while (termination condition not met) do
ConstructAntsSolutions
ApplyLocalSearch (optional)
UpdatePheromones
end-while
end-procedure
Như đã nhận định ở trên ACO thực chất là tìm kiếm ngẫu nhiên dựa vào
thông tin heuristic kết hợp với thông tin học tăng cường. So với các thuật toán
heuristic cổ điển ACO mở rộng thêm quá trình học tăng cường, các con kiến tỏ
ra thích nghi hơn với môi trường dựa vào các vệt mùi tích lũy trên các cạnh đồ
thị.
Thuật toán Ant System (AS) là thuật toán đầu tiên trong lớp các thuật toán
ACO được đề xuất bởi Dorigo trong luận án tiến sỹ của ông năm 1991. Thuật
toán AS hướng đến giải quyết bài toán tìm đường đi tối ưu trong đồ thị. Mặc
dù thuật toán AS vẫn còn thua kém các thuật toán tốt nhất trong việc giải quyết

bài toán trên, tuy nhiên ý tưởng của nó thực sự là mới mẻ và tỏ ra có triển
vọng. Về sau đã có rất nhiều cải tiến của thuật toán này do chính Dorigo đề
xuất, cũng như rất nhiều các thuật toán ACO khác đều dựa trên ý tưởng của
thuật toán AS song đã khắc phục được một số nhược điểm của thuật toán này.
Ant Colony Optimization
• Ant System - Dorigo Maniezzo, & Colorni (1991)
• Elitist AS - Dorigo (1992); Dorigo, Maniezzo & Colorni (1996)
• Ant-Q - Gambardella & Dorigo (1995); Dorigo & Gambardella (1996)
• Ant Colony System - Dorigo & Gambardella (1996)
• Max-Min AS - Stutzle & Hoos (1996, 2000); Stutzle (1999)
• Rank-based AS - Bullnheimer, Hartl, & Strauss (1997, 1999)
• ANTS - Maniezzo (1999)
• Hyper-cube AS - Blum, Roli, & Dorigo (2001); Blum & Dorigo (2004)
1.3. Thí Nghiệm Cầu Đôi
Hành vi tìm thức ăn của các con kiến là dựa trên giao tiếp gián tiếp qua các
vết mùi (chất pheromone). Khi di chuyển từ nguồn thức ăn trở về tổ các con
kiến để lại mùi trên mặt đất, các con kiến có thể cảm nhận được mùi và chúng
có khuynh hướng chọn theo xác suất các con đường mà được đánh dấu tập
trung nhiều mùi nhất. Một số nghiên cứu để tìm hiểu hành vi của loài kiến đã
được tiến hành mà một trong những thí nghiệm nổi tiếng nhất là thí nghiệm
của Deneubourg và các cộng sự của ông năm 1989, thí nghiệm này là cơ sở lý
thuyết đầu tiên và cũng tạo ra ý tưởng cho thuật toán ACO mà Dorigo đưa ra
sau này. Ông sử dụng một cầu đôi nối giữa một cái tổ của loài kiến Argentine
là I. humilis với nguồn thức ăn. Ông đã thực hiện thí nghiệm nhiều lần và thay
đổi tỉ số r giữa độ dài của 2 nhánh cầu.
Ant Colony Optimization
Trong thí nghiệm đầu tiên hai nhánh cầu có chiều dài bằng nhau. Khi bắt
đầu các con kiến di chuyển tự dâo giữa tổ và nguồn thức ăn, người ta quan sát
tỉ lệ phần trăm các con kiến chọn các nhánh trong 2 nhánh qua thời gian. Kết
quả thu được như sau, cho dù giai đoạn khởi đầu các lựa chọn ngẫu nhiên xảy

ra, song cuối cùng thì các con kiến đều hầu như chỉ đi qua một nhánh. Kết quả
này có thể được giải thích như sau. Khi bắt đầu một lần thử không có vệt mùi
nào trên cả 2 nhánh cầu, sau đó các con kiến sẽ không có cái gì đề làm căn cứ
lựa chọn và chúng sẽ chọn ngẫu nhiên với cùng một xác suất bất kì nhánh nào
trong 2 nhánh. Còn nữa, vì các con kiến để lại mùi khi di chuyển, nên nhánh
Ant Colony Optimization
nào có số lượng lớn hơn các con kiến thì sẽ có lượng mùi để lại lớn hơn. Đồng
thời với lượng mùi lớn hơn thì nhánh đó cũng thu hút nhiều hơn các con kiến
chọn nó. Và cuối cùng các con kiến sẽ gần như chỉ kéo về một nhánh duy nhất.
Quá trình trên là một quá trình nội bộ, tự vận động là một ví dụ của hành vi
tự tổ chức (self-organizing) của loài kiến. Quá trình lựa chọn một đường đi
duy nhất của loài kiến thể hiện hành vi mang tính tập thể của chúng dựa trên cơ
sở các tương tác cục bộ giữa các con kiến đơn lẻ trong đàn. Đây cũng là một ví
dụ của loại giao tiếp stigmergy: các con kiến thay đổi hành động của chúng sử
dụng giao tiếp gián tiếp bằng cách thay đổi môi trường trong khi di chuyển.
Thuật ngữ stigmergy được đưa ra bởi Grasse để mô tả hình thức giao tiếp gián
tiếp bằng cách thay đổi môi trường cái mà ông đã quan sát được trong khi
nghiên cứu sự phân cấp trong xã hội của 2 loài mối.
Trong thí nghiệm thứ 2 tỉ số giữa độ dài của 2 nhánh được thay đổi, một
nhánh dài gấp đôi nhánh kia. Trong trường hợp này, ở phần lớn các lần thử thì
sau 1 thời gian tất cả các con kiến chỉ chọn nhánh ngắn hơn. Cũng như trong
thí nghiệm đầu các con kiến sẽ phải lựa chọn một trong 2 nhánh để đi. Khi bắt
đầu thì cả 2 nhánh đối với các con kiến là như nhau và chúng sẽ chọn ngẫu
nhiên. Vì thế xét trung bình thì một nửa số kiến sẽ chọn nhánh ngắn và nửa còn
lại chọn nhánh dài. Ở thí nghiệm này ta sẽ thấy một sự khác biệt lớn so với thí
nghiệm trước. Vì một nhánh ngắn hơn nhánh kia do đó các con kiến chọn
nhánh ngắn hơn sẽ đến nguồn thức ăn trước và chúng sẽ bắt đầu trở về tổ. Tuy
nhiên chúng sẽ phải chọn giữa nhánh ngắn và nhánh dài, mức nồng độ mùi cao
hơn ở nhánh ngắn sẽ làm cho quyết định của kiến lệch về phía chúng. Vì thế
mùi sẽ bắt đầu tích lũy nhanh hơn trên nhánh ngắn, cuối cùng hầu hết các con

kiến sẽ chọn nhánh này theo như sự tương tác giữa các con kiến được mô tả ở
thí nghiệm trước.
Ant Colony Optimization
Điều thú vị quan sát được là thậm chí khi một nhánh dài gấp đôi nhánh kia
thì không phải tất cả các con kiến sử dụng nhánh ngắn hơn mà có một lượng
nhỏ kiến chọn nhánh dài hơn. Đây là cách để kiến có thể khám phá được
những con đường mới.
2. Bài Toán TSP và Thuật Toán áp dụng
Bài toán Travelling Salesman Problem (TSP) là bài toán tối ưu tổ hợp kinh
điển và nổi tiếng. Bài toán này đóng một vai trò quan trọng trong nghiên cứu
các thuật toán ACO. TSP được chọn làm bài toán tối ưu tổ hợp điển hình và để
áp dụng các thuật toán ACO bởi vì nó là một bài toán NP-khó và thường nảy
sinh nhiều trong các ứng dụng, dễ dàng áp dụng các thuật toán ACO. Nó cũng
là một bài toán rất trực quan, dễ hiểu không như nhiều bài toán NP-khó khác.
Các bước thực thi của thuật toán ACO trên bài toán TSP là dễ hình dung,
không có nhiều khó khăn về mặt kỹ thuật. Phần này ta sẽ tìm hiểu chi tiết về
các thuật toán AS, MMAS thông qua việc ứng dụng nó vào giải quyết bài toán
TSP và để phục vụ cho việc cài đặt trên Maple.
2.1. Bài toán TSP
Nội dung bài toán như sau: Một người chào hàng xuất phát từ thành phố
của anh ta, anh ta muốn tìm một đường đi ngắn nhất đi qua tất cả các thành phố
của khách hàng mỗi thành phố đúng một lần sau đó trở về thành phố ban đầu.
TSP được phát biểu vào thế kỷ 17 bởi hai nhà toán học vương quốc Anh là Sir
William Rowan Hamilton và Thomas Penyngton Kirkman, và được ghi trong
cuốn gsiáo trình Lý thuyết đồ thị nổi tiếng của Oxford. Nó nhanh chóng trở
thành bài toán khó thách thức toàn thế giới bởi độ phức tạp thuật toán tăng theo
hàm số mũ (trong chuyên ngành thuật toán người ta còn gọi chúng là những
bài toán NP-khó). Người ta bắt đầu thử và công bố các kết quả giải bài toán
Ant Colony Optimization
này trên máy tính từ năm 1954 (49 đỉnh), cho đến năm 2004 bài toán giải được

với số đỉnh lên tới 24.978, và dự báo sẽ còn tiếp tục tăng cao nữa.
Bài toán TSP có thể phát biểu dưới dạng đồ thị như sau: Cho G = (N, A) là
đồ thị có hướng đầy đủ có trọng số, trong đó N là tập hợp của n = |N| nút
(thành phố), A = {(i, j)| (i, j) VV} là tập tất cả các cung của đồ thị. Mỗi cung (i,
j) được gán một trọng số d
ij
để biểu diễn khoảng cách giữa 2 thành phố i và j.
Bài toán TSP trở thành bài toán tìm chu trình Hamilton có độ dài ngắn nhất
trên đồ thị G. Ta cần phân biệt hai loại TSP, symmetric TSP có khoảng cách
giữa các thành phố không phụ thuộc vào hướng d
ij
= d
ji
với mọi thành phố i, j
và asymmetric TSP tồn tại ít nhất một cặp cạnh sao cho dij ≠ dji. Đối với đồ thị
không đối xứng có (n-1)! đường đi chấp nhận được còn đối với đồ thị đối xứng
có (n-1)!/2 đường đi có khả năng. Khi n lớn ta không thể tìm được lời giải tối
ưu bằng các thuật toán vét cạn, hướng đi giải quyết bài toán là tìm các lời giải
xấp xỉ tối ưu bằng các thuật toán heuristic, hoặc các thuật toán tiến hóa.
Hình sau đây đưa ra 2 ví dụ về bài toán TSP, được lấy từ TSPLIB website
Ant Colony Optimization
2.2. Thuật toán Ant System
Thuật toán Ant System (AS) như đã giới thiệu là thuật toán đầu tiên trong
lớp các thuật toán ACO được đề xuất bởi Dorigo trong luận án tiến sỹ của ông
năm 1991. AS và cũng như nhiều thuật toán ACO cải tiến từ AS đều chọn TSP
làm bài toán thực nghiệm đầu tiên.
Phương pháp giải TSP bằng AS
Đầu tiên là xây dựng đồ thị, n đỉnh biểu diễn cho n thành phố. Vệt mùi: mỗi
cạnh được (i, j) được gắn một vệt mùi . Thông tin heuristic: là nghịch đảo
khoảng cách giữa hai thành phố (i, j) = 1/ d

ij
.Trong phần lớn các thuật toán
ACO cho bài toán TSP người ta đều sử dụng thông tin heuristic như trên.
Có hai quá trình chính trong thuật toán AS là quá trình xây dựng lời giải và
quá trình cập nhật các vệt mùi.
Xây dựng lời giải
Có m con kiến nhân tạo được đặt khởi tạo ngẫu nhiên tại các đỉnh, và tại
mỗi bước lặp của thuật toán, mỗi con kiến sẽ xây dựng lời giải riêng của nó
bằng cách chọn một đỉnh mà chúng chưa thăm để đi.
Ban đầu các vệt mùi được khởi tạo bởi giá trị , mỗi con kiến được đặt ngẫu
nhiên tại một đỉnh xuất phát và lần lượt đi thăm các đỉnh còn lại để xây dựng
đường đi với theo quy tắc như sau (gọi là quy tắc random proportional), con
kiến thứ k đang ở đỉnh i sẽ chọn đỉnh j tiếp theo với xác suất:
Ant Colony Optimization
trong đó cường độ vệt mùi (t) và thông tin heuristic ta đã giới thiệu ở trên.
Hai tham số α và β là hai tham số xác định sự ảnh hưởng của vệt mùi và
thông tin heuristic : nếu α = 0 các thành phố gần nhất có nhiều khả năng được
chọn, thuật toán trở nên giống với thuật toán heuristic thông thường, nếu β = 0
chỉ có thông tin về cường độ vệt mùi được sử dụng mà không hề có bất kỳ một
thông tin heuristic nào làm cho kết quả tìm kiếm được nghèo nàn và bài toán
đễ rơi vào trường hợp cực tiểu địa phương.
là các láng giềng có thể đi của con kiến k khi nó ở đỉnh i, đó là tập các đỉnh
chưa được con kiến thứ k đi qua (xác suất chọn một đỉnh nằm ngoài là 0). Với
luật xác suất này, thì xác suất để chọn một cạnh (i, j) tăng lên khi mà mùi và
thông tin heuristic tương ứng của cạnh đó tăng.
Mỗi con kiến có một bộ nhớ chứa danh sách các thành phố mà chúng đã
đến thăm theo thứ tự. Nó được dùng để tính toán tập các láng giềng chưa thăm
trong công thức xác suất ở trên. cũng cho phép các con kiến tính toán quãng
đường mà nó đã đi được và giúp kiến xác định được cạnh nó đi qua để cập nhật
mùi.

Cập nhật mùi
Sau khi tất cả các con kiến xây dựng xong các lời giải của chúng, các vệt
mùi sẽ được cập nhật. Đầu tiên tất cả các cạnh sẽ bị mất đi một lượng mùi (do
bị bay hơi), sau đó những cạnh mà có các con kiến đi qua sẽ được tăng cường
thêm một lượng mùi.
Công thức thức bay hơi mùi:
trong đó 0 < ρ <= 1 là tỉ lệ bay hơi mùi, tham số ρ được dùng để tránh sự
tích lũy không có giới hạn của các vết mùi và nó làm cho thuật toán quên đi
Ant Colony Optimization
những quyết định tồi ở bước trước. Nếu một cạnh không được chọn bởi bất kì
con kiến nào thì cường độ mùi của nó sẽ bị giảm theo hàm mũ của số vòng lặp.
Sau khi bay hơi mùi tất cả các con kiến sẽ tăng cường mùi cho những cạnh
mà chúng đã đi qua theo công thức:
là độ dài của tuyến đường được xây dựng bởi con kiến k. Tuyến đường
của những con kiến nào mà càng tốt hơn thì nó càng được tăng cường thêm
nhiều mùi. Nói tóm lại thì những cạnh mà được nhiều con kiến lựa chọn thì sẽ
nhận được nhiều mùi hơn và có nhiều khả năng hơn sẽ được lựa chọn bởi các
con kiến trong các vòng lặp tiếp theo của thuật toán.
Ưu điểm của AS
Việc tìm kiếm ngẫu nhiên dựa vào trên các thông tin heuristic làm cho phép
tìm kiếm linh hoạt và mềm dẻo trên không gian rộng hơn phương pháp
heuristic sẵn có, do đó cho ta lời giải tốt hơn và có thể tìm được lời giải tối ưu.
Sự kết hợp với học tăng cường (reinforcement learning) trong đó những lời
giải tốt hơn sẽ được sự tăng cường hơn thông qua thông tin về cường độ vết
mùi cho phép ta từng bước thu hẹp không gian tìm kiếm và vẫn không loại bỏ
các lời giải tốt, do đó nâng cao chất lượng thuật toán.
Nhược điểm của AS
Ant Colony Optimization
Hiệu suất của nó giảm đột ngộ so với nhiều thuật toán metaheuristic khác
khi mà kích thước của bài toán tăng lên. Bởi vì khi số đỉnh của đồ thị lớn thì

cường độ vệt mùi trên những cạnh không thuộc lời giải tốt (hoặc ít được con
kiến lựa chọn) sẽ nhanh chóng giảm dần về 0, làm cho cơ hội khám phá hay
tìm kiếm ngẫu nhiên của thuật toán sẽ giảm mà đây là một trong những điểm
mạnh của các thuật toán mô phỏng tiến hóa tự nhiên nên thuật toán hệ kiến AS
kém hiệu quả. Vì thế, thực tế là các nghiên cứu về ACO ngày nay tập trung vào
việc làm thế nào để cải tiến AS.
2.3. Thuật toán Max-Min Ant System
MMAS và một số thuật toán khác như Elitist AS, Rank-Based AS là các
thuật toán có được hiệu suất cao hơn nhiều so với thuật toán AS nhờ vào
những thay đổi nhỏ trong thuật toán AS, đây được coi là các thuật toán kế thừa
trực tiếp từ thuật toán AS vì chúng về cơ bản là không khác gì nhiều so với AS.
MMAS đưa ra bốn thay đổi chính đối với AS.
Thứ nhất, nó chú trọng nhiều vào những tuyến đường tốt nhất được tìm
thấy. MMAS chỉ cho phép con kiến tốt nhất hoặc là tại vòng lặp hiện tại
iteration-best , hoặc tính từ thời điểm bắt đầu best-so-far được phép cập nhật
mùi. Tuy nhiên việc này sẽ dẫn đến hiện tượng ứ đọng, tập trung (stagnation)
quá nhiều khi mà tất cả các con kiến đều cùng chọn một tuyến đường đi, do sự
tăng lên quá thừa của cường độ các vết mùi trên các cạnh tốt.
Để tránh hiện tượng trên một cải tiến thứ hai là MMAS giới hạn cường độ
mùi trong một khoảng cố định []. Tất cả vệt mùi trên các cạnh đều nằm trong
khoảng này.
Ant Colony Optimization
Thứ ba, các vệt mùi được khởi tạo là cận trên của vệt mùi , cùng với việc
một tỉ lệ bay hơi mùi nhỏ sẽ làm tăng khả năng khám phá cho các con kiến
ngay từ khi bắt đầu.
Cuối cùng, trong thuật toán MMAS các vệt mùi sẽ được khởi tạo lại nếu
như hệ thống rơi vào trạng thái ứ đọng, hoặc không thể cải thiện được tuyến
đường đã tạo ra sau một số lượng các vòng lặp liên tiếp.
Cập nhật mùi
Cũng như thuật toán AS, sau khi tất cả các con kiến xây dựng xong lời giải

của chúng tất cả các vết mùi đều bay hơi một lượng phụ thuộc vào tham số
bay hơi mùi.
Sau đó cường độ mùi trên mỗi cạnh có con kiến tốt nhất đi qua được cập
nhật một lượng theo công thức :
với hoặc là độ dài của tuyến đường tốt nhất tại vòng lặp hiện tại, hoặc là độ
dài của tuyến đường tốt nhất từ khi bắt đầu thuật toán.
Khi ta sử dụng luật update best-so-far thì quá trình tìm kiếm sẽ tập trung
nhanh chóng vào tuyến đường tốt nhất từ đầu đến hiện tại. Còn khi sử dụng
update iteration-best thì số lượng các cạnh được tăng cường mùi là nhiều hơn
và sự tìm kiếm cũng phân tán hơn.
Các kết quả thực nghiệm cho thấy rằng, với những bài toán TSP nhỏ thì tốt
nhất là chỉ sử dụng update iteration-best . Trong khi đó với những bài toán TSP
lớn khoảng vài trăm đỉnh thì hiệu suất tốt nhất đạt được với việc sử dụng chú
Ant Colony Optimization
trọng đến update best-so-far.
Giới hạn vết mùi
MMAS sử dụng hai cận trên () và cận dưới () để khống chế nồng độ mỗi
mùi trên mỗi cạnh với mục đích tránh cho thuật toán khỏi hiện tượng tắc nghẽn
tìm kiếm. Cụ thể hơn, giới hạn của vệt mùi sẽ làm cho xác suất pij của việc
chọn thành phố j khi kiến ở thành phố i bị giới hạn trong khoảng [, ]. Nhược
điểm của thuật toán này là sẽ tập trung tìm kiếm vào các cạnh thuộc lời giải tốt
nhất tìm được, vì vậy hạn chế khả năng khám phá nếu chọn bé. Ngoài ra khi
chọn bé thì gần như các thông tin heuristic được tận dụng triệt để, còn các
cường độ mùi sẽ bị giảm nhanh và không có tác dụng mấy. Còn nếu chọn lớn
thì thuật toán sẽ gần với tìm kiếm ngẫu nhiên và ít phụ thuộc vào các thông tin
heuristic đồng thời khả năng học tăng cường cũng giảm theo.
3. Các chú ý khi áp dụng
Các chú ý sau đây làm tăng khả năng cho thuật toán ACO khi áp dụng vào
các bài toán khác nhau. Có nhiều vấn đề cần quan tâm khi ta áp dụng các thuật
toán ACO để giải quyết một bài toán, chẳng hạn lựa chọn số lượng kiến, lựa

chọn các tham số khác, xác định các vết mùi, xác định các thông tin heuristic
và sử dụng tìm kết hợp kiếm địa phương …
3.1. Số lượng kiến
Số lượng kiến trong các bài toán khác nhau cần có những điều chỉnh khác
nhau. Nếu số lượng kiến quá nhiều thì quá trình tìm kiếm sẽ mất nhiều thời
gian tính toán, đồng thời chưa chắc đã tăng hiệu quả tìm kiếm lên. Tất nhiên là
nếu số lượng kiến quá ít thì quá trình tìm kiếm sẽ rất khó khăn bởi vì với số ít
Ant Colony Optimization
các con kiến thì ít các đường đi được chọn tại mỗi vòng lặp và do đó, sự tích
lũy các thông tin mùi là mất nhiều thời gian và số tuyến đường mà các con
kiến lựa chọn cũng trở nên đơn điệu vì có quá ít các con kiến.
Số lượng kiến phụ thuộc vào thuật toán cài đặt và phụ thuộc vào kích thước
của bài toán cần giải quyết. Chẳng hạn với thuật toán AS người ta thường chọn
số kiến là bằng số đỉnh. Với thuật toán MMAS thì với những bài toán nhỏ thì
người ta chỉ chọn từ 2 – 10 con kiến, còn với những bài toán có kích thước
khoảng vài trăm đỉnh trở lên thì người ta tăng dần số đỉnh lên.
3.2. Xác định các vệt mùi
Quá trình học tăng cường có tác dụng nâng cao hiệu quả của thuật toán
trong quá trình các con kiến tìm kiếm lời giải. Một trong những điều quan
trọng đầu tiên trong việc áp dụng các thuật toán ACO là công việc xác định
thông tin học tăng cường qua các vệt mùi, nói cách khác là xác định thông tin
mà vệt mùi biểu diễn.
Chẳng hạn, với bài toán TSP, vệt mùi giữa các cạnh có tác dụng biểu diễn
sự thích hợp của việc chọn thành phố j sau khi đã thăm thành phố i, nói cách
khác nó là một thông tin để thể hiện mối quan hệ giữa thành phố i và thành phố
j. Cụ thể ở bài toán này ta chọn định nghĩa các vệt mùi là khả năng đường đi từ
thành phố i đến thành phố j có thuộc đường đi các con kiến lựa chọn hay
không, tức là mức độ ưu tiên của đoạn đường này.
Việc định nghĩa các vệt mùi ảnh hưởng rất nhiều đến hiệu quả của thuật
toán, nếu đưa ra một lựa chọn không tốt thì thuật toán có thể trở nên rất là xấu.

Với phần nhiều các bài toán ứng dụng của ACO các lựa chọn dựa trên trực
quan mà người ta nhận thấy ngay thường đưa lại hiệu quả tốt.
Ant Colony Optimization
3.3. Điều chính giữa sự học tăng cường và khám phá
Các thuật toán metaheuristic muốn có hiệu quả tốt thì cần có sự điều chỉnh
phù hợp giữa việc sử dụng kinh nghiệm tìm kiếm với việc khám phá các
không gian tìm kiếm mới. Các thuật toán ACO điều chỉnh được sự cân bằng
giữa chúng thông qua qua việc điều chỉnh cập nhật các vệt mùi sao cho phù
hợp.
Tác dụng của các vệt mùi là đưa ra một sự phân bố xác suất lựa chọn trên
không gian tìm kiếm, nó cho phép ta xác định được các phần nào trong không
gian tìm kiếm mà tập trung nhiều giải hơn, cũng tức là có nhiều khả năng cho
lời giải tối ưu ở đó. Khi đó nếu tập trung tìm kiếm trên các phần không gian
này thì ta có quá trình học tăng cường tức là chỉ tập trung tìm kiếm trên các lời
giải tốt hay nói cách khác là trên các cạnh có nhiều thông tin vệt mùi.
Để sử dụng kinh nghiệm tìm kiếm của các con kiến ta có thể sử dụng một
thủ tục kiểm tra hiệu suất của mỗi lời giải trong suốt quá trình cập nhật mùi.
Một cách để tăng khả năng học tăng cường trong quá trình xây dựng lời giải
bằng cách áp dụng luật chuyển trạng thái như trong thuật toán ACS, khi đó các
con kiến sẽ tập trung nhiều hơn vào các lời giải tốt ở bước trước hơn so với
thuật toán AS. Mặt trái của quá trình này là khả năng khám phá của các con
kiến giảm đi vì chúng chỉ tập trung vào một phần nhỏ của không gian tìm
kiếm.
Để tăng khả năng khám phá cho các con kiến thì rõ ràng là ta cần mở rộng
không gian tìm kiếm lên bằng các phương pháp khác nhau. Quá trình này vừa
có tác dụng giảm bớt sự tập trung quá nhiều vào các lời giải được cho là tốt,
vừa có tác dụng đưa ra nhiều khả năng tìm kiếm cho các con kiến. Mở rộng
không gian tìm kiếm trong ACO chính là các thủ tục xây dựng lời giải ngẫu
nhiên của các con kiến. Xem xét khi thuật toán ACO không sử dụng thông tin
Ant Colony Optimization

heuristic (bằng cách đặt tham số). Trong trường hợp này, quá trình cập nhật
mùi sẽ gây ra sự thay đổi từ không gian tìm kiếm mẫu cố định ban đầu thành
một không gian mẫu khác và ở không gian này sự lựa chọn các phương án chỉ
phụ thuộc vào cường độ các vết mùi. Việc mở rộng không gian tìm kiếm sẽ tốt
hơn trong các vòng lặp ban đầu của thuật toán và sẽ giảm thiểu được sự tính
toán.
Để điều chỉnh sự tăng cường và khám phá người ta thường điều chỉnh các
tham số và , ảnh hưởng đến các vết mùi còn ảnh hưởng đến các thông tin
heuristic. MMAS sử dụng một phương pháp đó là giới hạn cận dưới của các
cường độ vệt mùi sao khi đó không gian tìm kiếm được điều chỉnh không trở
nên thu hẹp quá mức. Khi mà bài toán đi vào bế tắc MMAS tức là với không
gian tìm kiếm hiện tại không thể phát triển thêm lời giải thi nó khởi tạo lại các
vệt mùi đồng nghĩa với việc tăng trở lại không gian tìm kiếm. Việc khởi tạo lại
các vệt mùi kết hợp với các cải tiến lựa chọn cập nhật vệt mùi giúp MMAS tìm
kiếm trên nhiều vùng không gian khác nhau.
3.4. Giới hạn danh sách láng giềng
Khi mà bài toán phải giải quyết có kích thước lớn thì đồng thời tại mỗi đỉnh
các con kiến cũng phải lựa chọn giữa một tập rất lớn các láng giềng của nó.
Đây là vấn đề lớn của thuật toán ACO vì nó làm tăng thời gian, và không gian
tìm kiếm. Các con kiến phải tìm kiếm trên một không gian khổng lồ các
phương án. Mong muốn của ta là giảm được không gian tìm kiếm này xuống
càng nhỏ càng tốt nhưng vẫn đảm bảo cho hiệu suất của thuật toán ở mức cao.
Để có thể giải quyết vấn đề nêu ta có thể giới hạn lại danh sách các đỉnh có
thể lựa chọn tạm gọi là danh sách các láng giềng gần nhất (nearest neighbour).
Danh sách các láng giềng gần nhất là tập con của tập các láng giềng của lời
Ant Colony Optimization
giải hiện tại. Danh sách này được tạo ra dựa trên các thông tin tri thức có sẵn
của bài toán(các thông tin heuristic) nếu có hoặc các thông tin động được sinh
ra. Đối với các bài toán tĩnh danh sách này được tính toán ngay từ đầu .Việc sử
dụng danh sách này cho phép các thuật toán ACO tập trung vào các những con

đường có hứa hẹn đồng thời giảm không gian tìm kiếm đi rất nhiều.
Hiện nay việc sử dụng các danh sách các láng giềng gần nhất đã được nhiều
thực nghiệm chứng minh là có kết quả tốt hơn nhiều so với việc không sử dụng
danh sách này.
II. CÀI ĐẶT VỚI MAPLE
1. Tại sao là Maple
Hiện nay có nhiều ngôn ngữ hỗ trợ cho việc lập trình rất nhanh chóng, tiện lợi,
đặc biệt là các ngôn ngữ lập trình cấp cao như C#, Java, Scala, Groovy,… Nhưng
với việc cài đặt các thuật toán cho các thử nghiệm, nghiên cứu liên quan đến đối
tượng toán học như tập hợp, danh sách, hình học, đồ thị, yêu cầu cần phải đáp
ứng việc tính toán nhanh với khối lượng lớn, với thời gian nhanh và độ chính xác
cao. Thường thì các ngôn ngữ lập trình cấp thấp mới đáp ứng những yêu cầu này,
nhưng lập trình với chúng đòi hỏi mất rất nhiều thời gian. Và Maple đã giải quyết
được việc này. Maple rất “mạnh” (mạnh, ở đây có thể hiểu theo hai nghĩa là tốc độ
xử lý nhanh, chính xác và thời gian lập trình phải bỏ ra là ít) trong việc tính toán
symbolic, numeric, … có thể xem thêm tại
/>Ant Colony Optimization
Ngoài ra, đối với yêu cầu là cài đặt các thuật toán ACO cho bài toán Traveling
Salesman problem thì Maple đã hỗ trợ sẵn cho ta cấu trúc dữ liệu đồ thị và các
thao tác căn bản trên đó như tìm danh sách các đỉnh kề.
2. Cài Đặt Thuật Toán
Phần này sẽ giới thiệu và mô tả các thủ tục chính được cài đặt trong bài thu
hoạch với công cụ Maple như tìm tất cả đường đi, tìm đường đi ngắn nhất,
thuật toán ant system, thuật toán max-min ant system, … cho bài toán TSP.
2.1.Xây dựng các thành phố và đường đi
Thành phố và đường đi ở đây tương ứng lần lượt với các đỉnh và các cạnh
trong đồ thị. Để sử dụng đối tượng đồ thị trong Maple ta phải khai báo package
‘GraphTheory’. Ở trong chương trình, ta sử dụng thêm package
‘RandomGraphs’ cho việc phát sinh một đồ thị ngẫu nhiên với các giới hạn
như số cạnh, số đỉnh, trọng số các cạnh do ta chỉ định. Dưới đây là mã tạo một

đồ thị trong Maple Phần này sẽ giới thiệu và mô tả các thủ tục chính được cài
đặt trong bài thu hoạch.
Đoạn mã trên tạo ra một đồ thị có 10 đỉnh, 45 cạnh, là một đồ thị đầy đủ và
trọng số mỗi cạnh sẽ từ 1 đến 1000.
Ant Colony Optimization
Sau khi có được các thành phố và đường đi giữa chúng, ta sẽ xây dựng một
thủ tục tìm tất cả các đường đi cho bài toán TSP.
2.2.Thủ tục tìm tất cả đường đi cho bài toán TSP
Lý do ta xây dựng thủ tục này là để sử dụng cho thủ tục tìm đường đi ngắn
nhất cho bài toán TSP, để có thể so sánh với thuật toán Ant System hay Max-
min Ant System. Kỹ thuật quay lui (backtracking) được dùng ở đây để tìm tất
cả đường đi phù hợp (như mô tả của bài toán TSP) cho người bán hàng.
Sau đây là mã giả của thuật toán
startVertex:=1;
selectedVertex:=1;
paths:=[]; (danh sách các đường đi)
path:=[];
proc FindAllPathsOfTravelingSalesman(startVertex, selectedVertex, path)
path := path + selectedVertex (thêm đỉnh vào đường đi)
if path is valid (path là 1 đường đi đúng yêu cầu người bán hàng)
paths := paths + path (thêm 1 đường đi được tìm thấy vào list)
return paths:
end if
# duyệt các đỉnh kề trong tập đỉnh kề của đỉnh selectedVertex

×