Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 1
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC MÁY TÍNH
TIẾU LUẬN MÔN HỌC
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ:
THUẬT TOÁN TỐI ƯU HÓA ĐÀN KIẾN VÀ BÀI
TOÁN NGƯỜI ĐƯA THƯ
Giảng viên hướng dẫn: PGS TS. ĐỖ VĂN NHƠN
Học viên thực hiện: LÊ DUY ĐẮC NHÂN
MSHV: CH1301045
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 2
TP. Hồ Chí Minh, tháng 01 năm 2014
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 3
LỜI CẢM ƠN
Em xin bày tỏ lòng biết ơn sâu sắc đến PGS TS. Đỗ Văn Nhơn, trường Đại học Công
Nghệ Thông Tin, ĐHQG TP.HCM đã tận tình hướng dẫn, cung cấp kiến thức, truyền đạt
những kinh nghiệm quí báu giúp em hoàn thành tốt bài thu hoạch này.
Xin cám ơn cha, mẹ, các anh, chị em trong gia đình đã hỗ trợ, lo lắng và động viên.
Đồng thời, xin cám ơn tất cả các bạn lớp cao học khóa 08 đã ủng hộ, giúp đỡ tôi trong
quá trình thực hiện bài tiểu luận này.
Dù đã có nhiều cố gắng nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, em
rất mong nhận được sự đóng góp ý kiến của các Thầy giáo, Cô giáo và các bạn để đề tài
này được hoàn thiện hơn.
Em xin chân thành cảm ơn!
Tp Hồ Chí Minh, tháng 01 năm 2014
Học viên
Lê Duy Đắc Nhân
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 4
NHẬN XÉT
(Của giảng viên hướng dẫn)
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 5
MỤC LỤC
CHƯƠNG 1: TỔNG QUAN
1.1 Đặt vấn đề
Hiện nay có rất nhiều bài báo, luận văn, cũng như các công trình nghiên cứu đề cập
đến vấn đề tối ưu tổ hợp. Nhiều phương pháp mới mẻ đã được đưa ra và đạt hiệu quả
cao. Tuy nhiên phần lớn các bài toán tối ưu tổ hợp được giải từ trước tới nay đều là các
bài toán tĩnh. So với bài toán tĩnh thì bài toán động phức tạp hơn và ứng dụng của nó
trong thực tế là nhiều hơn. Chẳng hạn các ứng dụng trong định tuyến các gói tin trên
mạng internet, trong các tổng đài điện thoại. Một trong những cách tiếp cận có hiệu
quả đối với bài toán tối ưu tổ hợp tĩnh đó là phương pháp tối ưu hóa đàn kiến (Ant
Colony Optimization- ACO). ACO là một phương pháp metaheuristic mới và đang được
nhiều người quan tâm. Thuật toán ACO đầu tiên (1991) đã mang lại nhiều ý tưởng và
cảm hứng với mục đích cải tiến các thuật toán ACO để có thể áp dụng nó cho nhiều bài
toán khác nhau.
Luận văn này trình bày một cách khái quát về các thuật toán ACO và kiểm chứng
một phương pháp áp dụng ACO việc giải quyết bài toán người đưa thư một dạng bài
toán tối ưu tổ hợp động. Bài toán Người Đưa Thư thực chất là tên gọi khác của bài
toán người chào hàng (Travelling Salesman Problem - TSP) nổi tiếng.
1.2 Ý nghĩa
Qua việc thực hiện bài tiểu luận, giúp cho tác giả hiểu rõ hơn về về bài toán “Người
đưa thư” và các phương pháp tiếp cận giải bài toán “Người đưa thư”, qua đó có sự so
sánh đánh giá các thuật toán.
Tìm hiểu sâu về thuật toán đàn kiến và các biến thể, ứng dụng vào giải bài toán
“Người đưa thư” nh8a2m có những cải tiến trong các buốc của thuật giải đàn kiến với
bài toán cụ thể như biểu diễn tìm đường đi, các xây dựng các hàm đánh giá
TSP có một vài ứng dụng thậm chí trong dạng thức nguyên thuỷ của nó như lập kế
hoạch , logistic , và sản xuất các microchip. Thay đổi đi chút ít nó xuất hiện như một bài
toán con trong rất nhiều lĩnh vực như việc phân tích gen trong sinh học. Trong những ứng
dụng này, khái niệm thành phố có thể thay đổi thành khách hàng, các điểm hàn trên bảng
mạch, các mảnh DNA trong gen, và khái niệm khoảng cách có thể biểu diễn bởi thời gian
du lịch hay giá thành , hay giống như sự so sánh giữa các mảnh DNA với nhau. Trong
nhiều ứng dụng, các hạn chế truyền thống như giới hạn tài nguyên hay giới hạn thời gian
thậm chí còn làm cho bài toán trở nên khó hơn
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 6
1.3 Nội dung thực hiện
Bài tiểu luận sẽ tìm hiểu và trình bày về các vấn đề chính sau:
a) Tìm hiểu về một số định nghĩa trong lý thuyết mật mã như:
Khát quát về mật mã, khái niệm về hệ mật mã khoá bí mật và hệ mật mã
khoá công khai
Lý thuyết chung về các phương pháp mã hoá: phương pháp mã hoá khóa bí
mật và phương pháp mã hoá khóa công khai, nêu được các ưu điểm và
nhược điểm của hai phương pháp này. Trình bày chi tiết hệ mật mã khóa
công khai RSA…
b) Cơ sở lý thuyết toán học của lý thuyết mật mã:
Số nguyên tố và phân tích ra thừa số nguyên tố.
Tính toán đồng dư và tính logarit rời rạc.
Ước chung của hai số và những vấn đề liên quan
c) Hệ mật mã công khai RSA:
o Phương pháp mã hóa RSA
o Ưu khuyết điểm
o Độ an toàn khi mã hóa dữ liệu bằng phương pháp RSA
-
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 7
CHƯƠNG 2: TỔNG QUAN VỀ BÀI TOÁN NGƯỜI ĐƯA THƯ
2.1 Giới thiệu bài toán Người đưa thư
Một người đưa thư xuất phát từ bưu điện là nơi làm việc 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 địa chỉ của khách hang để giao
thư mỗi địa điểm đúng một lần sau đó trở về địa điểm ban đầu là bưu điện khởi đầu.
Bài toán Người đưa thư hay còn gọi là 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 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.
2.2 Bài toán Người đưa thư
2.2.1 Giới thiệu bài toán
3
4 Hình 1
TSP có thể được mô hình như một đồ thị , các đỉnh của đồ thị tương ứng với các thành
phố và các cạnh thì tương ứng với đường nối giữa các thành phố, chiều dài của một
cạnh tương ứng với khoang cách giữa 2 thành phố. Một đường đi trong bài toán TSP là
một chu trình Hamilton trên đồ thị và một lời giải tối ưu của bài toán là chu trình
Hamilton ngắn nhất.
Thường thì đồ thị là đồ thị đầy đủ , vì vậy mọi cặp cạnh đều được nối bởi các cạnh.
Đây là bước đơn giản hóa bài toán vì việc tìm chu trình Hamilton trong một đồ thị đầy
đủ là dễ. Các bài toán mà không phải 2 thành phố nào cũng được nối với nhau có thể
được chuyển đổi thành đồ thị đầy đủ bằng cách thêm những cạnh có độ dài lớn giữa
cách thành phố này , những cạnh sẽ không xuất hiện trong chu trình tối ưu.
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) є VxV} 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ố dij để 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
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 8
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 dij = dji với mọi thành phố i, j và asymmetric TSP – ATSP 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 2.a – Thể hiện các đỉnh trong thư viện TSP att532, tương ứng với 532 thành
phố của Mỹ. Hình 2.b – Thể hiện các đỉnh trong TSPLIB pcb1173 biểu diễn 1173 lỗ
trên một bảng mạch in.
2.2.2 Dữ liệu bài toán
Phần này tìm hiểu khảo sát các thành phần, đối tượng thông tin có tác động trực
tiếp hoặc gián tiếp đến bài toán người đưa thư: Địa chỉ giao thư, Khoảng cách giữa
các địa điểm giao thư
2.2.3 Ràng buộc của bài toán
- Hai địa điểm giao thư chỉ có 1 đường đi duy nhất
- Trọng số giữa hai địa điểm giao thư phải là trọng số dương
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 9
CHƯƠNG 3: GIẢI THUẬT ĐÀN KIẾN
3.1Tổng quan về thuật giải đàn kiến
3.1.1 Nguồn gốc
Loài kiến là loài sâu bọ có tính chất xã hội, chúng sống thành từng đàn, bởi vậy có
sự tác động lẫn nhau, chúng thành thạo tìm kiếm thức ăn và hoàn thành nhiệm vụ từ
kiến chỉ huy. Một điều thú vị torng tìm kiềm thức ăn của vài con kiến đặc biệt là khả
năng của chúng để tìm kiếm đường đi ngắn nhất giữa tổ kiến và nguồn thức ăn. Trên
thực tế, điề dễ nhận thấy có trong suy nghĩ nhưng nhiều con kiến hầu hết không nhận
ra vì chúng không dùng thị giác để tìm kiếm những đầu mối thức ăn.
Tất cả mọi con kiến hầu như là mù, chúng chỉ có thể tương tác với nhau và với môi
trường bằng cách sử dụng pheromone: đi đền đâu chúng xịt pheromone ra đến đấy.
Mỗi một con kiến tại mỗi vị trí quyết định hướng đi tiếp theo dựa vào nồng độ
phernomone của các hướng. Tại vị trí mà nồng độ pheromone xung quanh đều bằng
nhau hoặc không có pheromone thì chúng sẽ quyết định hướng đi một cách ngẫu
nhiên. Cứ như vậy thì các con kiến cứ đi theo bước chân của nhau và tạo thành một
đường đi.
Giả sử tại thời điếm ban đầu có 2 con kiến ra đi tìm thức ăn. Vì ban đầu chưa có
pheromone nên chung chọn 2 hướng đi khác nhau một cách ngẫu nhiên. Một hướng có
đường đi đến nguồn thức ăn dài hơn hướng kia. Trong giai đoạn đầu các con kiến đi
sau sẽ cảm nhận thấy nồng độ pheromone của cả 2 hướng là như nhau nên cũng chọn
đi theo một trong 2 hướng một cách ngẫu nhiên. Tuy nhiên đương đi ngắn hơn làm cho
khoảng cách di chuyển từ tổ đến nguồn thức ăn rồi quay trở lại của mỗi con kiến theo
đường đo cũng ngắn hơn và do đó mật độ di chuyển qua lại của đàn kiến tại mỗi vị trí
của con đường ngắn sẽ cao hơn con đường dài. Do mật độ qua lại lớn hơn dẫn đến kết
quả là nồng độ pheromone trên con đường ngắn càng ngày càng cao hơn con đường
dài. Kết quả là đàn kiến ngày càng từ bỏ con đường dài và đi theo con đường ngắn.
Đến một lúc nào đó sẽ không còn con kiến nào đi theo con đường dài nữa mà tất cả
đều đi theo con đường ngắn.
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 10
Thuật toán ACO lấy ý tưởng từ việc kiếm thức ăn của đàn kiến ngoài thực tế để
giải quyết các bài toán tố ưu tổ hợp. Chúng dựa trên cơ sở một đàn kiến nhân tạo,
chúng được tính toán tìm kiếm thức ăn nhờ mùi lạ nhân tạo
Các thuật toán kiến lần đầu tiên được giới thiệu bởi Dorigo và các cộng sự như là
cách tiếp cận đa tác tử tới các vấn đề về tối ưu tổ hợp khó, như bài toán người du lịch
(TSP), bài toán người đưa thư. Hiện nay số lượng các ứng dụng càng ngày càng tăng
và các nhà khoa học đã ứng dụng nó vào rất nhiều các vấn đề tối ưu rời rạc. Các ứng
dụng gần đây có thể kể đến như các bài toán lập lịch, tô màu đồ thị, định hướng trong
mạng truyền thông, v.v…
3.1.2 Giới thiệu về thuật toán
Sau đây là ví dụ về luồng đi của đàn kiến thực tế
a. Kiến đi theo đường thẳng giữa A và E
b. Khi có chướng ngại vật kiến sẽ chọn hướng đi, có hai hướng với khả năng kiến sẽ
chọn là như nhau.
c. Trên đường ngắn hơn thì nhiều mùi (pheromone) hơn
Hình 1
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 11
Hình 2
Xem hình 2a là giải thích rõ tình huống trong hình trên
Giả sử khoảng cách DH=BH=DB qua C và =1, C là điểm nằm giữa B và D(hình
2a). Bây giờ chúng ta xem xét điều gì xảy ra tại những khoảng thời gian rời rạc: t=0, 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 di
chuyể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ệt
pheromone với nồng độ là 1. Để đơn giản chúng ta xét lượng pheromone bay hơi hoàn
toà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ó 15
con kiến sẽ đi đến H và 15 con sẽ đi đến C (hình 2b)
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 H. Tại hướng đến H có vệt mùi 15 do 15 con kiến đi từ B đến H, tại
hướ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 2c). Do đó khả năng kiến hướng đến chọn đường đến C, do đó số kiến
mong muốn đi đến C sẽ gấp đôi số kiến đi đến H (20 con đến C và 10 con đến H).
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.
Trên đây chúng ta mô tả hành vi tìm kiếm của bầy kiến thực.Sau đây , chúng ta sẽ
tìm hiểu sâu hơn về các thuật toán kiến.
Thuật toán tối ưu bầy kiến (ACO) nghiên cứu các hệ thống nhân tạo dựa vào hành
vi tìm kiếm của bầy kiến thực và được sử dụng để giải quyết các vấn đề về tối ưu rời
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 12
rạc.Thuật toán bầy kiến siêu tìm kiếm(ACO meta_heuristic) lần đầu tiên được Dorigo,
Di Caro và Gambardella đề xuất vào năm 1999.
Metaheuristic là một tập các khái niệm về thuật toán được sử dụng để xác định các
phương thức tìm kiếm thích hợp cho một tập các vấn đề khác nhau. Hay nói cách
khác, một siêu tìm kiếm ( meta-heuristic) có thể coi là một phương thức tìm kiếm đa
năng.
ACO là một meta-heuristic, trong đó một tập các con kiến nhân tạo phối hợp tìm
kiếm các giải pháp tốt cho các vấn đề về tối ưu rời rạc. Sự phối hợp là yếu tố cối lõi
của các thuật toán ACO. Các con kiến nhân tạo liên lạc với nhau thông qua trung gian
mà ta thường gọi là mùi.
Các thuật toán ACO được sử dụng để giải quyết các vấn đề về tối ưu tổ hợp tĩnh và
động. Các vấn đề tĩnh là các vấn đề mà ở đó các đặc tính của vấn đề là không thay đổi
trong suốt quá trình giải quyết vấn đề. Còn các vấn đề động thì ngược lại là một hàm
các tham số mà giá trị của nó là động hay thay đổi trong quá trình giải quyết vấn đề, ví
dụ bài toán người đưa thư là một vấn đề dynamic problem.
3.1.3 Sơ đồ chung thuật toán đàn kiế
Procedure ACO
Initial();
While (!ĐK dừng) do
ConstructSolutions();
LocalSearch(); /*Tuỳ ý, có thể có hoặc không
UpdateTrails();
End;
End;
trong đó:
Đ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ái
kế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ặp củ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ả
đàn kiế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áp siê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 chu trì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ộ.
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 13
Hình 3. Sơ đồ chung của thuật toán bầy kiến
Đó là sơ đồ chung của thuật toán bầy kiến, mục tiếp theo sẽ đi sâu vào mô tả thuật
toán bầy kiến đơn giản cho bài toán người đưa thư Trung Hoa trên đồ thị hỗn hợp.
3.1.4 Nội dung thuật toán
Trước khi nói về nội dung thuật toán bầy kiến ta đi tìm hiểu về đàn kiến trong tự
nhiên, xem các đặc điểm và cách hoạt động của đàn kiến tự nhiên. Từ đó có thể đưa ra
các đặc điểm cần thiết, tác động tới thuật toán bầy kiến.
Đàn kiến tự nhiên: Là một loài có tổ chức cao, mỗi con kiến khi di chuyển sẽ để
lại một lượng thông tin pheromone trên mặt đất. Đây là phương tiện để đánh dấu và để
đàn kiến trao đổi thông tin khi tìm kiếm thức ăn. Khi đi tìm kiếm thức ăn: Sau khi tìm
thấy nguồn thức ăn, thì mỗi con kiến sẽ tìm ra đường đi của nó để đi từ tổ tới nguồn
thức ăn. Chúng sẽ giao tiếp trao đổi thông tin với nhau, sau một thời gian cả đàn kiến
gần như tìm ra và đi theo con đường ngắn nhất từ tổ tới nguồn thức ăn.
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 14
Sau khi nghiên cứu cho thấy cơ chế hoạt động của đàn kiến tự nhiên trong quá trình
tìm đuờng đi ngắn nhất từ tổ tới nguồn thức ăn dựa trên các nguyên tắc sau:
Đường đi ngắn nhất được xác định thông qua các thông tin về Pheromone, là
một loại hóa chất mà các con kiến dùng để trao đổi thông tin với nhau.
Khi di chuyển thì mỗi con kiến sẽ để lại một lượng Pheromone trên đường đi
mà nó đã đi qua.
Trong quá trình di chuyển tìm đường đi, các con kiến sẽ được định hướng bởi
các thông tin pheromone đã được để lại trên đường đi.
Mỗi con kiến di chuyển một cách ngẫu nhiên khi không có thông tin về
pheromone trên đoạn đường đi.
Các đường đi có lượng pheromone lớn thì xác suất được chọn càng cao, ngược
lại các đoạn đường có lượng pheromone thấp thì xác suất được chọn là bé.
Từ việc nghiên cứu cơ chế hoạt động của đàn kiến tự nhiên đã cho ra đời thuật toán
bầy kiến. Một cách không chính thức có thể nói thuật toán bầy kiến là một bầy kiến
nhân tạo để giải bài toán đưa ra.
Hệ thống Ant Colony – Thuật toán bầy kiến: Là một đàn kiến nhân tạo
(Artificial Ants) mô phỏng các hoạt động của đàn kiến tự nhiên. Tất nhiên là có một số
thay đổi, điều chỉnh so với đàn kiến tự nhiên để tăng tính hiệu quả của thuật toán.
Trong đó hoạt động chính của các con kiến nhân tạo là tìm đường đi dựa vào lượng
thông tin Pheromone đã để lại trên mỗi đoạn đường. Chi tiết về hoạt động của đàn kiến
nhân tạo:
Bài toán cần giải sẽ được đưa về dạng một đồ thị đầy đủ với các ràng buộc của bài
toán được thể hiện bằng các công thức toán học. Việc giải bài toán đặt ta có sẽ đưa về
là tìm một đường đi (hoặc tập các đỉnh) thỏa mãn các ràng buộc của bài toán. Các
nguyên tắc sau được đưa ra:
Thông tin pheromone được tính toán và đặt trên mỗi đoạn đường.
Nút ban đầu cho đường đi của mỗi con kiến được chọn một cách ngẫu nhiên.
Đường đi được lựa chọn dựa trên các nguyên tắc sau:
Dựa vào thông tin pheromone có trên các đoạn đường để tính xác suất
của các đoạn tiếp theo được chọn vào làm đường đi của con kiến.
Xác suất lớn hơn cho đoạn đường đi có nhiều lượng pheromone được đặt
hơn. Và các đường đi có lượng thông tin pheromone bé sẽ có xác suất được
chọn thấp hơn.
Con kiến tiếp tục việc tìm đường đi cho tới khi hoàn thành một đường đi của nó
(thỏa mãn điều kiện dừng của con kiến).
Một đường đi hoàn chỉnh được gọi là một lời giải (solution) cho bài toán đặt ra.
Các lời giải sẽ được phân tích, so sánh và đánh giá để tìm phương án tối ưu nhất
có thể. Đó là lời giải tối ưu của bài toán.
Sau khi con tất cả kiến trong đàn hoàn thành lời giải của nó thì sẽ tiến hành cập
nhật thông tin pheromone cho các cung. Số lượng của pheromone sẽ được tính
toán và điều chỉnh để tìm được phương án tối ưu tốt hơn.
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 15
Các lời giải tốt hơn sẽ có khối lượng pheromone lớn hơn để đặt trên các cung đã
được đi qua. Ngược lại các lời giải tồi hơn sẽ có khối lượng pheromone bé hơn.
Xác suất cao hơn cho một con kiến chọn đường đi có pheromone lớn.
Quá trình lặp cho đến khi phần lớn kiến trong đàn kiến chọn cùng một đường đi
(phương án hội tụ của lời giải).
Mã giả cho thuật toán Ant colony:
Procedure AntColonyAlgorithm
B1: Khởi tạo các thông tin Pheromone cho các đường đi
B2: Do while (Chưa thỏa mãn điều kiện dừng)
B3: Do until (Mỗi Ant hoàn thành một đường đi)
B4: Cập nhật thông tin pheromone cục bộ (Local trail update)
B5: End Do
B6: Phân tích các lời giải thu được (Analyze solution)
B7: Cập nhật thông tin pheromone toàn cục (Global trail update)
B8: End Do
End Procedure
Đố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 định
hướ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ới
việc thực hiện song song hoạt động của các con kiến.
1 Procedure ACO_Metaheuristic
2 parameter_initialization
3 while (termination_criterion_not_satisfied)
4 schedule_activities
5 ants_generation_and_activity ( )
6 pheromone_evaporation ( )
7 daemon_actions ( ) {optional}
8 end schedule_activities
9 end while
10 end Procedure
1 Procedure ants_generation_and_activity ( )
2 repeat in parallel for k=1 to m (number_of_ants)
3 new_ant (k)
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 16
4 end repeat in parallel
5 end Procedure
1 Procedure new_ant (ant_id)
2 initialize_ant (ant_id)
3 L = update_ant_memory ( )
4 While (current_state target_state)
5 P = compute_transition_probabilities (A , L , )
6 next_state = apply_ant_decision_policy (P , )
7 move_to_next_state (next_state)
If (on_line_step-by-step-pheromone_update)
8 deposit_pheromone_on_the_visited_edge ( )
end if
9 L = update-internal_state ( )
10 end while
if (online_delayed_pheromone_update)
11 for each visited edge
12 deposit_pheromone_on_the_visited_edge ( )
13 end for
end if
14 release_ant_resources (ant_id)
15 end Procedure
Trong đó 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 đàn kiế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 khi chư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àm tă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ại các
thông tin pheromone khi gặp bế tắc trong tìm kiếm.
3.2 Các sơ đồ thuật toán phát triển dựa trên ACO
3.2.1 Thuật toán Ant System (AS)
Đượ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-Cycle khác
nhau bởi cách thức cập nhật thông tin Pheromone.
Trong đó:
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 17
AS-Density: Thì đàn kiến sẽ đặt thêm pheromone trong quá trình xây dựng lời
giải (online step-by-step pheromone update), lượng pheromone để cập nhật là
một hằng số.
AS-Quantity: Thì đàn kiến sẽ đặt thêm pheromone trong quá trình xây dựng lờ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
.
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 coi như 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ả con kiế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).
Với ρ 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 tin pheromone,
lượng pheromone này là hàm của chất lượng lời giải mà con kiến xây dựng.
Trong đó:
Ban đầu AS không sử dụng daemon action, tuy nhiên sẽ càng tốt hơn nếu thêm
vào đó một thủ tục tìm kiếm cục bộ để làm tăng chất lượng của lời giải. Còn phương
trình để xác định nút tiếp theo trong quá trình xây dựng lời giải của con kiến như sau:
Tóm tắt về thuật toán này như sau:
1 Procedure new_ant (ant_id)
2 k = ant_id ; r = generate_initial_state ;
3
4 while (current-state target_state)
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 18
5 for each s (r) do
6 next_state = apply_ant_decision_policy (P , )
7 r = next_state ;
8
9
10 end while
{ the pheromone_evaporation ( ) procedure triggers and
evaporates pheromone in every edge }
11 for each edge do
12
13 end for
14 release_ant_resources (ant_id)
15 end Procedure.
3.2.2 Thuật toán Ant Colony System(ACS)
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. q
0
là một tham số, và
một giá trị ngẫu nhiên q. Trong đó giá trị của q và q
0
là trong khoảng (0,1). Nút
s tiếp theo được chọn để di chuyển kiến k tới được chọn như sau:
If :
else ( ) :
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 19
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:
Áp dụng online step-by-step pheromone update
Trong đó φ là một tham số để giảm pheromone thứ hai sau ρ. Còn được chọn là
một tham số rất bé (như là ngưỡng dưới của pheromone).
Tóm tắt về thuật toán này như sau:
1 Procedure new_ant (ant_id)
2 k = ant_id ; r = generate_initial_state ;
3
4 while (current-state target_state)
5 for each do compute
6 q = generate_random_value_in_[0 , 1]
If ( )
Next_state = max )
else
for each do
next_state = apply_ant_decision_policy (P , )
end if
7 r = next_state ;
8
9
10 end while
11
12 release_ant_resources (ant_id)
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 20
13 end Procedure.
Và thủ tục cập nhật:
1 Procedure daemon_actions
2 for each do local_search ( ) {optional}
3 best_solution ( )
4 if (better ( , ))
5 =
6 end if
7 for each edge do
{ the pheromone_evaporation ( ) procedure triggers and
evaporates pheromone in every edge }
8
9 end for
10 end Procedure.
3.2.3 Thuật toán Max–Min Ant System(MMAS)
Đượ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
cho lời giải tối ưu. Đầu tiên thực hiện bay hơi bớt thông tin pheromone
(pheromone evaporation) trên tất cả các cạnh.
Sau đó chỉ có các cạnh thuộc lời giải tốt nhất được cập nhật thông tin pheromone
Thông thường trong MMAS các lời giải được tinh chỉnh bằng cách tối ưu cục bộ
(local optimizer) trước khi cập nhật thông tin pheromone.
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 ( và ), đ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 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.
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 21
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.
Cách chọn cận dưới , thông thường người ta chọn để thỏa mãn theo tỷ lệ
giữa cận trên và cận dưới / = 2n.
Do đó tính = / 2n. Tỉ lệ này phải chọn không nên quá cao, bởi vì khi đó
xác suất để chọn đường đi có mức độ Pheromone thấp là quá nhỏ. Mặt khác nếu
chọn tỉ lệ này quá lớn thì xác suất chọn đường đi co Pheromone cao là gần với
xác suất chọn đường đi có mức độ Pheromone thấp.
Khi khởi tạo thông tin pheromone cho các thành phần thì tất cả nhận giá trị
lớn nhất có thể của Pheromone là nhằm tăng cường việc khai phá không
gian tìm kiếm. Một chú ý trong hệ thống MMAS là khi xảy ra hội tụ cục bộ thì
có cơ chế khởi tạo lại thông tin pheromone cho các nút và giá trị để khởi tạo lại
là .
Hàm cập nhật Daemon action của thuật toán MMAS như sau:
1 Procedure daemon_actions
2 for each do local_search ( )
3 best_solution ( )
4 if (best ( , ))
5 =
6 end if
7 = decision ( , )
8 for each edge do
9
10 if (
11 end for
12 if (stagnation_condition)
13 for each edge do
14 end if
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 22
15 end Procedure.
3.2.4 Thuật toán Rank-Based Ant System(RBAS)
Đây cũng là một thuật toán được mở rộng phát triển từ hệ thống AS đưa ra bởi
Bullnheimer, Hartl và Strauss vào năm 1997. Thuật toán này đưa vào ý tưởng xếp hạng
cho các lời giải khi thực hiện cập nhật pheromone. Cụ thể như sau:
Đầu tiên, m con kiến được xếp hạng theo thứ tự giảm dần dựa theo chất lượng
lời giải mà nó thu được. Ví dụ: (S
1
, S
2
, … S
m-1
, S
m
) trong đó S
1
là phương án tốt
nhất.
Pheromone chỉ được đặt thêm trên các cung của б -1 con kiến có lời giải tốt
nhất. Lượng pheromone cũng phụ thuộc trực tiếp vào thứ hạng sắp xếp của con
kiến.
Các đoạn đường đi của lời giải tốt nhất được nhận thêm một lượng pheromone
phụ thuộc vào chất lượng lời giải.
Các công thức như sau:
Trong đó
Và
Tóm tắt thủ tục cập nhật pheromone của thuật toán này:
1 Procedure daemon_actions
2 for each do local_search ( ) {optional}
3 rank in decreasing order of solution
quality into
4 if (best ( , ))
5 =
6 end if
7 for to do
8 for each edge do
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 23
9
10 end for
11 end for
12 for each edge do
13
14 end for
15 end Procedure
3.2.5 Thuật toán Best-Worst Ant System(BWAS)
Thuật toán được đưa ra bởi Cordon vào năm 1999. Thuật toán này bao gồm một
thuật toán mở rộng khác của AS là MMAS (về luật di chuyển và việc bay hơi của
pheromone). Bên cạnh đó trong thuật toán này còn quan tâm tới của việc tối ưu cục bộ
một cách hệ thống để nâng cao chất lượng lời giải của con kiến. Trong thuật toán
BWAS có 3 daemon action thêm vào gồm có:
Đầu tiên, áp dụng luật có tên best-worst pheromone update để tăng cường
pheromone trên các đoạn đường đi qua bởi lời giải tốt nhất toàn cục (global best
solution). Thêm vào đó luật này sẽ phạt những cạnh của lời giải tồi nhất trong
lần lặp S
current-worst
.
Áp dụng Pheromone trail mutation để đi theo các hướng khác nhau trong
quá trình tìm kiếm.
BWAS có cơ chế khởi tạo lại thông tin pheromone khi thuật toán bị đình trệ,
bằng cách thiết lập pheromone trail cho tất cả các thành phần bằng .
Mô hình thủ tục Daemon action của thuật toán BWAS như sau:
1 Procedure daemon_actions
2 for each do local_search ( )
3 best_solution ( )
4 if (best ( , ))
5 =
6 end if
7 for each edge do
8
9
10 end for
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 24
11
12
13 for each edge and do
14
15 end for
16
17 for each nút / component do
18 z = generate_random_value_in_[0,1]
19 if ( )
20 s = generate_random_value_in_[1,…, 1]
21 a = generate_random_value_in_[0,1]
22 if
23 else
24 end if
25 end for
26 if (stagnation_condition)
27 for each do
28 end if
29 end Procedure
Mục này chỉ đưa ra 5 mô hình thuật toán ACO phát triển từ hệ thống Ant System.
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ất nhiều
các biến thể khác. Và trong đồ án sẽ áp dụng thuật toán theo mô hình hệ thống
MMAS để giải bài toán CPMP. Mô hình thuật toán MMAS là một trong các thuật toán
hiệu quả nhất của các thuật toán bầy kiến.
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân
Tiểu luận Thuật toán & PPGQVD: TT Tối Ưu Hóa Đàn Kiến và Người Đưa Thư Trang 25
CHƯƠNG 4: ỨNG DỤNG THUẬT GIẢI ĐÀN KIẾN VÀO BÀI TOÁN
NGƯỜI ĐƯA THƯ
4.1 Phát biểu bài toán
Một người đưa thư đi giao thư qua n địa điểm T
1
T
n
. Xuất phát từ bưu điện, người
đưa thư muốn giao thư qua tất cả địa điểm cần giao, mỗi địa điểm chỉ đi đúng một lần
rồi trở lại bưu điện xuất phát. Gọi C
ij
là chi phí từ T
I
đến T
j
. Tìm hành trình với tổng chi
phí là nhỏ nhất
Định nghĩa bài toán:
- Một tập các địa điểm giao thư: V={V
1
, V
2
, ,V
n
}.
- Một tập các giá trị chi phí khi đi từ địa điểm i đến j: V={V
1
, V
2
, ,V
n
}
4.2 Các ràng buộc của bài toán
Bài toán người đưa thư đi giao thư qua các địa điểm trong thành phố phải thỏa
mãn các điều kiện sau:
- (C1): Không có 2 đường đi ở trên cùng một cặp địa điểm giao thư
- (C2): Chi phí để di chuyển phải mang giá trị dương
- (C3): Tổng số địa điểm giao thư không quá 100
4.3 Phát biểu bài toán theo hướng tiếp cận thuật giải đàn kiến
Kiến đi sau sử dụng vết mùi lạ (lớp Trail) và kinh nghiệm (lớp Heuristics) của kiến đi
trước để tìm kiếm con đường đi cho mình, sau đó con đường tốt hơn sẽ được cập nhật
lại.
Cứ như vậy sẽ cho ta kết quả con đường đi ngắn nhất cần tìm
4.4 Thuật toán đàn kiến giải bài toán người đưa thư
m: số lượng kiến
t
ij
: nồng độ vết mùi trên cạnh (i, j)
p: tham số bay hơi nằm trong khoảng (0, 1)
p
ij
k
: xác suất con kiến k lựa chọn cạnh (i, j)
α: hệ số điều chỉnh ảnh hưởng của t
ij
η
ij
: thông tin heuristic giúp đánh giá chính xác sự lựa chọn của kiến đi từ đỉnh I đến
đỉnh j
β: hệ số điều chỉnh ảnh hường η
ij
N
j
k
: tập các đỉnh láng giềng của I mà con kiến k chưa đi qua
∆ t
ij
: là lượng pheromone mà con kiền k đặt lên cạnh mà nó đã đi qua
NC: là số bước lặp của thuật toán
S
k
: đường đi của kiến k (tập các đỉnh mà kiến k đi qua)
GVHD: PGS TS. Đỗ Văn Nhơn Học viên: Lê Duy Đắc Nhân