ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÀI THU HOẠCH MÔN
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN
ĐỀ
ĐỀ TÀI
GIẢI THUẬT TỐI ƯU HÓA ĐÀN KIẾN VÀ
ỨNG DỤNG TRONG BÀI TOÁN NGƯỜI
DU LỊCH
GVHD: PGS.TS. Đỗ Văn Nhơn
HVTH: Võ Tấn Lực
MSSV: CH1301098
TP. Hồ Chí Minh, ngày 10 tháng 10 năm 2014
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
LỜI MỞ ĐẦU
Bài toán Người du lịch, tìm đường đi ngắn nhất cho người du
lịch xuất phát từ một thành phố, đi qua lần lượt tất cả các thành phố
duy nhất một lần và quay về thành phố ban đầu với chi phí rẻ nhất,
đượ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 giá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 giải tăng theo hàm số mũ (trong chuyên ngành
thuật giải người ta còn gọi chúng là những bài toán NP-khó). Các nhà
khoa học đã tìm rất nhiều thuật giải để cho ra kết quả của bài toán
như thuật giải tham lam, thuật toán nhánh cận, thuật giải Heuristic,
Meta-Heuristic,…
Trong nội dung đồ án này chỉ xin đề cập đến một thuật giải
metaheutistic – tối ưu hóa đàn kiến (Ant Colony System Algorithm)
và chương trình trực quan hóa các bước thực hiện của thuật giải.
Tôi xin cảm ơn PGS.TS. Đỗ Văn Nhơn, người đã tận tình truyền
đạt kiến thức và có những định hướng giúp tôi hoàn thành môn học
“Thuật toán & Phương pháp giải quyết vấn đề”.
Mặc dù đã rất cố gắng nhưng bài thu hoạch của tôi khó tránh
khỏi thiếu sót, mong Thầy góp ý nhận xét để bài thu hoạch hoàn
thiện hơn.
HVTH : CH1301098 – Võ Tấn Lực
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
NỘI DUNG
HVTH : CH1301098 – Võ Tấn Lực
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
I. GIỚI THIỆU VỀ THUẬT GIẢI TỐI ƯU HÓA ĐÀN
KIẾN
1.1. Giới thiệu
Vào đầu thập niên 90, một thuật giải 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 du lịch (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 giải 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.
HVTH : CH1301098 – Võ Tấn Lực Trang 5/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
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
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
HVTH : CH1301098 – Võ Tấn Lực Trang 6/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
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 giải bầy kiến
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 giải ở
trạng thái kết thúc. Với bài toán người du lịch thì ĐK dừng là điều
kiện đạt được khi số vòng lặp của thuật giải = 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 du
lịch 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ộ.
HVTH : CH1301098 – Võ Tấn Lực Trang 7/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
Hình 1.3: Sơ đồ chung của thuật giải 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)
Trong đó:
• : nồng độ vết mùi trên cạnh i,j
HVTH : CH1301098 – Võ Tấn Lực Trang 8/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
• : 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:
HVTH : CH1301098 – Võ Tấn Lực Trang 9/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
(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 giải 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 giải 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 giải ACO. Mô tả về
thuật giải 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
HVTH : CH1301098 – Võ Tấn Lực Trang 10/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
while (termination_criterion_not_satis‡ed)
schedule_activities
ants_generation_and_activity (
)
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_visit
ed_edge ( )
HVTH : CH1301098 – Võ Tấn Lực Trang 11/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
end if
L = update-internal_state ( )
end while
if (online_delayed_pheromone_update)
for each visited edge
deposit_pheromone_on_the_visited_e
dge ( )
end for
end if
release_ant_resources (ant_id)
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 giải. 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 giải
Nhiều thuật giải đã được đưa ra dựa trên mô hình thuật giải
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 giải 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 giải 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 giải đư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 giải 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 giải ACO, còn
tồn tại rất nhiều các biến thể khác.
HVTH : CH1301098 – Võ Tấn Lực Trang 12/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
1.3.1. Thuật giải Ant System (AS)
Được phát triển bởi Dorigo, Maniezzo và Colorni năm 1991, là
thuật giải 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 giải 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:
Thuật giải này được tóm tắt như sau:
Procedure new_ant (ant_id)
HVTH : CH1301098 – Võ Tấn Lực Trang 13/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
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
release_ant_resources (ant_id)
end Procedure.
1.3.2. Thuật giải Ant Colony System (ACS)
Phát triển từ thuật giải 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:
HVTH : CH1301098 – Võ Tấn Lực Trang 14/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
Á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
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 ())
HVTH : CH1301098 – Võ Tấn Lực Trang 15/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
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 giải 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 oŽine 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.
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.
HVTH : CH1301098 – Võ Tấn Lực Trang 16/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơ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 giải MMAS như sau:
Procedure daemon_actions
for each do local_search ()
best_solution ()
if (best (,))
=
end if
= decision (,)
for each edge do
if ()
end for
end for
if (stagnation_condition)
for each edge
rs
a
do
maxrs
τ τ
=
end if
end Procedure
1.3.4. Thuật giải Rank-Based Ant System (RBAS)
Đây cũng là một thuật giải đượ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.
HVTH : CH1301098 – Võ Tấn Lực Trang 17/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
Thuật giải 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à
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 ())
=
end if
for to do
for each edge do
end for
end for
for each edge do
end for
end Procedure
HVTH : CH1301098 – Võ Tấn Lực Trang 18/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
1.3.5. Thuật giải Best-Worst Ant System (BWAS)
Thuật giải được đưa ra bởi Cordon vào năm 1999. Thuật giải
này bao gồm một thuật giải 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
giải 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 giải 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 giải 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 giải BWAS như sau:
Procedure daemon_actions
for each do local_search ()
()
if (best ())
end if
for each edge do
end for
for each edge and do
(1 ).
rs rs
p
τ τ
= −
end for
for each nút / component do
HVTH : CH1301098 – Võ Tấn Lực Trang 19/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
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
HVTH : CH1301098 – Võ Tấn Lực Trang 20/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
II. ỨNG DỤNG CỦA THUẬT GIẢI ĐÀN KIẾN
TRONG GIẢI BÀI TOÁN NGƯỜI DU LỊCH
II.1.Nhắc lại bài toán Người du lịch
Bài toán Người du lịch, tìm đường đi ngắn nhất cho người du
lịch xuất phát từ một thành phố, đi qua lần lượt tất cả các thành phố
duy nhất một lần và quay về thành phố ban đầu với chi phí rẻ nhất,
đượ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 giá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 giải tăng theo hàm số mũ (trong chuyên ngành
thuật giải 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.
II.2.Mô hình hóa bài toán
Cho G = (V, E)
W: E → R
+
Với V = tập đỉnh = { V
1
, V
2
,…,V
n
} = tập các địa chỉ cần đi
(mỗi đỉnh của đồ thỉ là một số nguyên Đỉnh 1, Đỉnh 2,…, Đỉnh n )
E = tập cạnh = { e1,e2,…,en} ei > 0 ∀i∈[1, n]
Input : Đỉnh xuất phát x ∈ V
Output: Chu trình hamilton ngắn nhất xuất phát từ x
Độ dài đường đi Sum = ?
Đường đi theo thứ tự các đỉnh như thế nào ? ( x, …., x)
// Mảng các đỉnh đi qua\
II.3.Thiết kế thuật giải
Chúng ta sẽ áp dụng 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
HVTH : CH1301098 – Võ Tấn Lực Trang 21/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
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
Hình 2.2: Sơ đồ thuật giải ACO cho bài toán TSP
b) Thuật giải
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 giải
HVTH : CH1301098 – Võ Tấn Lực Trang 22/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
Với n thành phố thì có độ phức tạp
HVTH : CH1301098 – Võ Tấn Lực Trang 23/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
III. CHƯƠNG TRÌNH MINH HỌA THUẬT GIẢI
TỐI ƯU HÓA ĐÀN KIẾN
Chương trình được thực hiện theo thuật giải AS (Ant System),
chu trình khởi tạo ban đầu (để xác định ma trận nồng độ mùi cho
các cạnh ban đầu) được tìm kiếm theo thuật giải Nearest Neighbor
Algorithm.
III.1. Giao diện của chương trình
Trong đó:
- Number Ant: Số con kiến trong đàn
- Number eval: Số bước lặp
- City: Chọn đất nước/thành phố cần đi du lịch (trong mỗi đất
nước/thành phố sẽ có nhiều điểm đến)
- Optimal Path: Đường đi tối ưu được thể hiện sau khi chương
trình tính toán
- Length of Path: Chiều dài của đường đi tối ưu này.
III.2. Thử nghiệm chương trình
Chọn đất nước Qatar là điểm cần du lịch. Với bộ dữ liệu được
lưu sẵn trong hệ thống, chúng ta sẽ đi qua 20 địa điểm trong đất
nước Qatar. Sau khi tính toán hệ thống sẽ cho ra kết quả và trực
HVTH : CH1301098 – Võ Tấn Lực Trang 24/20
Thuật toán & PP giải quyết vấn đề PGS.TS Đỗ Văn Nhơn
quan hóa đường đi tối ưu này với các địa điểm được biểu diễn trên
hệ trục tọa độ 2D.
Hình 3.1. Thử nghiệm chương trình với thành phố Qatar có 20 điểm
cần đến
Hình 3.2. Thử nghiệm chương trình với đất nước Uruguay với 734
điểm cần đến
IV. TÀI LIỆU THAM KHẢO
HVTH : CH1301098 – Võ Tấn Lực Trang 25/20