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

Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư

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 (2.25 MB, 32 trang )

ĐỒ ÁN MÔN HỌC:
THUẬT TOÁN VÀ PHƯƠNG PHÁP
GIẢI QUYẾT VẤN ĐỀ
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
o0o
GVHD: PGS. TS. ĐỖ VĂN NHƠN
HVTH: VŨ QUỐC HƯNG
MSHV: CH1301016
KHÓA: CH08

TP. HCM, 01/2014
Mục lục
CH1301016 - Vũ Quốc Hưng
Giới thiệu
Metaheuristic là một cách gọi chung cho các giải thuật heuristic trong việc giải
quyết các bài toán tổ hợp khó. Metaheuristic bao gồm những chiến lược khác nhau
trong 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ác
nhau 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 gian
tì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ân
bằ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ải
thuật đàn kiến (ACO) ,…Trong đó giải thuật đàn kiến là metaheuristic dùng chiến lược
củ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ác
suấ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ệc


giả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ếm
cá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ật
toá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ĩnh
vực tối ưu tổ hợp).
Tr 3
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Danh mục hình vẽ
Tr 4
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Phần 1:Thuật toán bầy kiến
1.1. Giới thiệ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 Colony
Optimization – ACO) được đề xuất như là một phương pháp mới trong việc tìm kiếm lời
giả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ải
quyết bài toán người đưa thư (TSP) và gần đây nó đã được mở rộng và cải tiến để áp
dụ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 vi
củ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 con
khá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 cho
cá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 đi
vớ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ủa
chú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
Tr 5
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
b) 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
Hình 1.2: Sơ đồ giải thích tình huống bầy
Giả sử khoảng cách DF=BF=DB qua C và = 1, C là điểm nằm giữa B và D(hình
1.2 a). 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 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ạ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 1.2 c). 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 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
Tr 6
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
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ộ.
Tr 7
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Hì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
Để 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ân
tạ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 theo
nồ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 và thông số heuristic 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:
(1)
Tr 8
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Trong đó:
• : nồng độ vết mùi trên cạnh i,j
• : số lượng kiến
• : 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ềng
của i theo quy luật phân bố xác suất được xác định theo công thức sau:
(2)
Trong đó:
• : 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
• : thông tin heuristic giúp đánh giá chính xác sự lựa chọn của con kiến khi quyết
định đi từ đỉnh i đến j; được xác định theo công thức:
(3)
o : Khoảng cách giữa đỉnh i và đỉnh j
• : Hệ số điều chỉnh ảnh hưởng của
• : 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ố và một số đượ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:
(4)
Trong đó:

• : giá trị được lựa chọn một cách ngẫu nhiên với một xác suất không thay đổi
trong khoảng [0,1]
• : là một hằng số cho trước
• : là một biến số ngẫu nhiên được lựa chọn theo sự phân bố xác suất cho bởi quy
luật phân bố xác suất theo công thức (2)
Sau khi cũng như trong quá trình các con kiến tìm đường đi, các vết mùi trên
mỗi cạnh sẽ được cập nhật lại, vì chúng bị biến đổi do quá trình bay hơi cũng như quá
trình tích lũy mùi khi các con kiến đi trên cạnh đó.
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:
(5)
Trong đó:
• : Tỷ lệ bay hơi của vệt mùi
• : lượng mùi mà con kiến k để lại trên cạnh i,j được xác định như sau:
Tr 9
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
(6)
o : là một hằng số
o : 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ắc
xá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ững hà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ét trong
một thời gian liên tục
Mã giả cho thuật toán Ant Colony
Procedure AntColonyAlgorithm
Khởi tạo các thông tin Pheromone cho các đường đi
Do while (

Chưa thỏa mãn điều kiện dừng
)
Do until (
Mỗi Ant hoàn thành một đườ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
Đố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.
Procedure ACO_Metaheuristic
parameter_initialization
while (termination_criterion_not_satisfied)
schedule_activities
ants_generation_and_activity ( )
Tr 10
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
pheromone_evaporation ( )
daemon_actions ( ) {optional}
end schedule_activities

end while
end Procedure
Procedure ants_generation_and_activity ( )
repeat in parallel for k=1 to m (number_of_ants)
new_ant (k)
end repeat in parallel
end Procedure
Procedure new_ant (ant_id)
initialize_ant (ant_id)
L = update_ant_memory ( )
While (current_state

target_state)
P = compute_transition_probabilities (A , L ,

)
next_state = apply_ant_decision_policy (P ,

)
move_to_next_state (next_state)
If (on_line_step-by-step-pheromone_update)
deposit_pheromone_on_the_visited_edge ( )
end if
L = update-internal_state ( )
end while
if (online_delayed_pheromone_update)
for each visited edge
deposit_pheromone_on_the_visited_edge ( )
end for
end if

release_ant_resources (ant_id)
end Procedure
Tr 11
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
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.
1.3. Các sơ đồ thuật toán
Nhiều thuật toán đã được đưa ra dựa trên mô hình thuật toán metaheuristic
ACO. 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ên
trê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ác
thông tin pheromone và heuristic có thể áp dụng cho các nút hoặc cạnh nối. Trong các
thuậ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 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.
1.3.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 đó:
 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:
Tr 12
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
 Đầ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:
Thuật toán này được tóm tắt như sau:
Procedure new_ant (ant_id)
k = ant_id ; r = generate_initial_state ; ;
while (current-state


target_state)
for each do
next_state = apply_ant_decision_policy ( , )
r = next_state ;


end while
{
the pheromone_evaporation ( ) procedure triggers and
evaporates pheromone in every edge
}
for each edge do

end for
Tr 13
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
release_ant_resources (ant_id)
end Procedure.
1.3.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. là một tham số, và một giá trị ngẫu nhiên .
Trong đó giá trị của

và 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 () :

 Có Daemon action, thực hiện việc cập nhật pheromone chỉ duy nhất với lời giải . 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).
Thuật giải được tóm tắt như sau:
Procedure new_ant (ant_id)
k = ant_id ; r = generate_initial_state;;
while (current-state target_state)
for each do compute
q = generate_random_value_in_[0, 1]
If ()
Next_state = max
else
for each do
Tr 14
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng

next_state = apply_ant_decision_policy ()
end if
r = next_state ;


end while

release_ant_resources (ant_id)

end Procedure.
Và thủ tục cập nhật:
Procedure daemon_actions
for each do local_search () {optional}
best_solution ()
if (better ())

end if
for each edge do
{
the pheromone_evaporation ( ) procedure triggers and
evaporates pheromone in every edge
}

end for
end Procedure.
1.3.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.
Tr 15
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Đầ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.
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 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 .
Do đó tính . 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:
Procedure daemon_actions
for each do local_search ()
best_solution ()
if (best (,))
=
end if
= decision (,)
for each edge do
Tr 16
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng


if ()

end for
end for
if (stagnation_condition)
for each edge
rs
a
do
maxrs
τ τ
=
end if
end Procedure
1.3.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 đó

Thuật giải được tóm tắt như sau:
Procedure daemon_actions
for each do local_search () {optional}
rank () in decreasing order of solution quality into
if (best ())
Tr 17
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
=
end if
for to do
for each edge do

end for
end for
for each edge do

end for
end Procedure
1.3.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 .
 Á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:
Procedure daemon_actions
for each do local_search ()
()
if (best ())

end if
for each edge do
Tr 18
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng


end for


for each edge and do
(1 ).

rs rs
p
τ τ
= −
end for

for each nút / component do
z = generate_random_value_in_[0,1]
if ()
s = generate_random_value_in_[1,…, 1]
a = generate_random_value_in_[0,1]
if ()

else

end if
end if
end for
if (stagnation_condition)
for each do
end if
end Procedure
Tr 19
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Phần 2: Bài toán người đưa thư
2.1. Giới thiệu
Bài toán người đưa thư (Travelling Salesman problem (TSP)) là một bài toán
khá nổi tiếng trong lĩnh vực tối ưu tổ hợp được nghiên cứu trong lý thuyết khoa học
máy tính. Nội dung của nó khá đơn giản , nó được phát biểu như sau : Cho một danh

sách các điểm và khoảng cách giữa chúng , nhiệm vụ là phải tìm đường đi ngắn nhất
có thể mà chỉ thăm mỗi điểm đúng 1 lần.
Bài toán được lần đầu tiên đưa ra như một vấn đề toán học vào năm 1930 và là
một trong số những bài toán được nghiên cứu chuyên sâu trong lĩnh vực tổ hợp thời
đó. Nó được sử dụng như một sự đánh giá cho nhiều phương thức tối ưu khác nhau.
Thậm chí bài toán là thuộc lớp NP khó , một lượng rất lớn các heuristic và phương thức
tìm kiếm cụ thể đã được biết đến vì vậy một vài trường hợp của bài toán với khoảng
chục nghìn điểm đã được giải quyết.
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.
Trong lý thuyết của độ phức tạp tính toán, phiên bản quyết định của bài toán
TSP thuộc lớp NP-complete. Vì vậy không có gỉai thuật hiệu quả nào cho việc giải bài
toán TSP. Hay nói cách khác, giống như thời gian chạy tồi nhất cho bất ký giải thuật
nào cho bài toán TSP tăng theo hàm mũ với số lượng thành phố, vì vậy thậm chí nhiều
trường hợp với vài trăm thành phố cũng đã mất vài năm CPU để giải một cách chính
xác.
Bài toán người đưa thư (TSP) là một trong những bài toán kinh điển và được đầu
tư nghiên cứu trong một thời gian dài. Nó góp phần quan trọng vào việc nghiên cứu
giải thuật ACO: các giải thuật ACO nguyên thủy và những cải tiến của giải thuật này về
sau đều được áp dụng mô phỏng bởi bài toán người du lịch.
Tr 20
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
2.2. Phát biểu bài toán

Bất cứ một mạng lưới phức tạp nào cũng bao gồm các điểm nú. Từ điểm nút này
tới điểm nút khác ta có thể gọi là một cung hoặc một tuyến hành trình. Tuyến ngắn
nhất giữa từng đôi điểm nút có thể được tính toán một cách dễ dàng. Hiện nay, có một
số phần mềm như Maple, Matlab, Mathematica và một số phần mềm nghiên cứu hoạt
động được thiết kế để giải quyết vấn đề hành trình thu gom và chuyển phát bưu phẩm
và các vấn đề bưu chính khác.
Giải pháp mà gần đây các nhà toán học và các chuyên gia khoa học máy tính đã nghiên
cứu đưa ra là giải pháp người bán hàng luôn phải di chuyển (Travelling Salesman
Problem - TSP). Giải pháp này đã được áp dụng vào chuyển phát và thu gom bưu
phẩm.
Về cơ bản, một người bán hàng luôn luôn phải di chuyển qua một số địa điểm và sau
đó lại quay trở lại điểm xuất phát. Căn cứ vào số lần đi lại giữa các thành phố, người
bán hàng thường lên kế hoạch hành trình như làm thế nào để mỗi thành phố anh ta
đến chính xác một lần và đi với thời gian ngắn nhất có thể? TSP có thể coi là một phiên
bản cụ thể hơn của Chu trình mở rộng tối thiểu (Minimum Spaning Cycle - MSC). Hành
trình trong bất cứ một mạng lưới nào cũng bao gồm: một khoảng thời gian tối thiểu, tất
cả các điểm nút, quay trở lại điểm xuất phát.
Thời gian để thu gom hoặc chuyển phát thư là một thông số cố định và không phải là
vấn đề của chu trình bưu chính. Một hành trình mới được dựa trên thực tế di chuyển
của đàn kiến (Ant Colony System - ACS). Dọc tất cả các thành phố là các thùng thư và
bạn có thể thấy được tuyến hành trình bưu chính thuận lợi và tối ưu trải dọc khắp đất
nước.
2.3. Mục tiêu bài toán
Hình 2.1: Mô hình ví dụ về bài toán TSP
Bài toán người đưa thư có thể được biểu diễn khái quát bằng một đồ thị có trọng
số G(N, A) với N là tập hợp các nút mô tả cho các thành phố, A là tập hợp các cung mô
tả đoạn đường giữa hai thành phố.
Tr 21
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng

Mỗi cung (i,j) thuộc A được gán một giá trị mô tả chiều dài của đường đi giữa
hai đỉnh i, j với i, j thuộc N. Mục đính cuối cùng của bài toán người đưa thư là tìm ra
chu trình Hamilton ngắn nhất của đồ thị G có n đỉnh với n là số điểm mà người đưa thư
phải đi qua. Như vậy kết quả tốt nhất của bài toán chính là một hoán vị của các đỉnh
{1, 2, …, n}, sao cho chiều dài ( ) là nhỏ nhất, được tính theo công thức sau:
2.4. Các bước tiến hành
Để thiết lập hành trình chuyển phát, phải tiến hành theo 3 bước:
 Bước 1: Sơ đồ thành phố hoặc một phạm vi thành phố được quét với tất cả các
thùng thư và các tuyến giữa các điểm phải được đánh dấu
 Xác định các tuyến hành trình ngắn nhất giữa tất cả các cặp đỉnh sẽ được đưa
ra. Một ma trận hai hướng có khoảng cách ngắn nhất giữa bất kỳ điểm nút này
tới các điển nút khác sẽ được tạo ra
 Bước 3: Sau khi hoàn thành bước 2 sử dụng thuật toán tối ưu để ghi lại hành
trình đi qua tất cả các điểm nút và phải mất thời gian tối thiểu để người đưa thư
quay trở lại điểm xuất phát
2.5. Sử dụng nguyên lý tham lam cho bài toán người du
lịch
Giả sử G=(X,E) là đồ thị vô hướng gồm n đỉnh với tập đỉnh X = {x
1
, x
2
, …, x
n
},
Nếu G là đồ thị Hamilton thì sẽ có chu trình Hamilton có dạng x
1
x
i1
x
i2

x
i3

x
in-1
– x
1
(với {i
1
, i
2
, …, i
n-1
} là một hoán vị của tập hợp {2, 3, …, n}.
Từ đó, ta có một thuật toán hiển nhiên là: Đặt Z = {xi1, xi2, xi3, …} là dãy đỉnh
tương ứng trong bài hoán vị của tập {2,3,…n}ta kiểm tra xem Z có tạo nên chu trình
hay không, tức là phải kiểm tra (n-1)! tập (Z) khác nhau.
a) Quy tắc để tìm chu trình Hamilton
Hiện nay, dù chưa tìm ra thuật toán tổng quát, nhưng có một số qui tắc khá tốt
để sử dụng trong quá trình tìm chu trình Hamilton trong đồ thị. Những qui tắc này có
thể phối hợp với với nhận xét về các tính chất đối xứng hay về tính chất nào đó của
một đồ thị cụ thể để khỏi phải xét nhiều trường hợp khác nhau.
Xét đồ thị G=(X,E) gồm n đỉnh, trong quá trình tìm chu trình Hamilton chúng ta có thể
vận dụng 4 qui tắc sau đây
 Lấy hết các cạnh kề với đỉnh bậc 2
 Không cho phát sinh chu trình ít hơn n cạnh
 Nếu đã lấy 2 cạnh kề với đỉnh x thì có thể bỏ tất cả các cạnh còn lại kề với x
 Duy trì tính liên thông và bảo đảm bậc mỗi đỉnh luôn lơn hơn hay bằng 2
b) Mô tả thuật toán
Tr 22

Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Tìm kiếm danh sách thứ tự các điểm mà người đưa thư có thể di chuyển đến từ điểm
hiện tại, rở lại điểm xuất phát sau khi đi qua tất cả các điểm còn lại mỗi điểm một lần
với khoảng cách ít nhất
c) Thuật toán
While (Chưa đi hết các đỉnh)
{
Khi đã đi đến một đỉnh, chọn đi đến đỉnh kế tiếp theo nguyên tắc, liệt
kê tất cả con đường từ đỉnh hiện tại đến những đỉnh chưa đi đến,chọn
con đường ngắn nhất.
}
d) Độ phức tạp thuật toán
Với n thành phố thì có độ phức tạp
2.6. Giải thuật ACO cho bài toán người du lịch
Việc xây dựng một đồ thị G=(C,L) tương ứng với việc xây dựng đồ thị G(N, A) ở
trên với C= N và L = A. Trong đó tập hợp các đường đi của đồ thị tương ứng với tập
hợp các hành trình từng phần có thể có và giá trị nhằm ràng buộc rằng con kiến chỉ
tìm những đường đi tương ứng với các hoán vị của thành phố. Ở đây bài toán tìm
đường đi ngắn nhất qua tất cả các đỉnh của đồ thị mỗi đỉnh một lần có mối liên hệ mật
thiết với bài toán tìm đường đi ngắn nhất của con kiến.
a) Một số quy tắc của giải thuật ACO cho bài toán TSP
 Phải đến mỗi điểm đúng một lần
 Một điểm xa xôi có ít cơ hội được lựa chọn
 Đường đi đến điểm nào có độ pheromone cao hơn sẽ được
 Sau mỗi hành trình thì gắn pheromone trên đoạn đường đã đi qua
 Sau mỗi lần lặp, cường độ pheromone trên những con đường sẽ bay hơi
Tr 23
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng

Hình 2.2: Sơ đồ thuật toán ACO cho bài toán TSP
b) Thuật toán
Procedure ACOMetaheuristicStatic
Set parameters, initialize pheromone trails
While (termination condition not met) do
ConstructAntsSolutions
ApplyLocalSearch % tùy chọn
UpdatePheromones
END
END
c) Độ phức tạp của thuật toán
Với n thành phố thì có độ phức tạp
Tr 24
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư
CH1301016 - Vũ Quốc Hưng
Phần 3: Demo Ứng dụng
3.1. Giao diện chương trình
Màn hình chính
Hình 3.1 Giao diện chương trình
Danh mục Menu
Hình 3.2 Giao diện chức năng
Giao diện cài đặt
Hình 3.3 Giao diện form cài đặt
Tr 25
Nghiên cứu thuật giải đàn kiến và ứng dụng giải quyết bài toán người đưa thư

×