2.3.Thủ tục tìm một đường đi cho một con kiến

Một phần của tài liệu Tiểu luận môn LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization (Trang 28)

Thủ tục này cũng áp dụng kỹ thuật quay lui, khác với thuật toán ở trên là mỗi khi ta tìm được một đường đi cho người bán hàng thì ta sẽ thoát khỏi thủ tục không tìm tiếp nữa. Một điểm khác biệt nữa là khi ta chọn một thành phố (đỉnh) tiếp theo để đi thì được dựa trên vệt mùi của tập thành phố láng giềng như công thức đã giới thiệu ở phần trước là

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. 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.

Xác suất của mỗi thành phố được chọn tiếp theo để đi được tính như công thức trên. Ta có thể hiểu công thức trên đơn giản như sau : quyết định lựa chọn đỉnh tiếp theo để đi của con kiến được lựa chọn ngẫu nhiên theo xác suất (tức là đỉnh nào có xác suất cao hơn sẽ có khả năng được chọn cao hơn, nhưng không có nghĩa là các đỉnh có xác suất thấp hơn không được chọn mà nó được chọn với cơ hội thấp hơn mà thôi). Ý tưởng này được thể hiện qua kỹ thuật Bánh xe xố số. Và xác suất này (hay khả năng chọn đỉnh tiếp theo của con kiến) tỷ lệ thuận với nồng độ vết mùi trên cạnh được chọn (theo đặc tính của con kiến tự nhiên) và tỷ lệ nghịch với độ dài cạnh, là những hệ số điểu khiển việc lựa chọn của con kiến nghiêng về phía nào.

Kỹ thuật bánh xe xổ số

Đây là kỹ thuật phổ biến hay sử dụng trong các phương pháp tìm kiếm dựa vào xác suất, đặc biệt trong phép toán Chọn lọc (Selection) của thuật toán di truyền (Genetic Algorithm). Cụ thể kỹ thuật như sau :

Giả sử V={v1,v2 , …, vn} là tập các láng giềng của u, p1, p2, …, pn là xác suất lựa chọn đỉnh tiếp theo từ u của tương ứng v1,v2, …, vn

tức là chắc chắn chọn 1 trong các đỉnh trên để đi tiếp. Để đảm bảo ưu thế của những đỉnh có xác suất lớn, nhưng vẫn đảm bảo cơ hội của các đỉnh có xác suất thấp hơn người ta sinh ra một số ngẫu nhiên k (0, sum] rồi chọn i nhỏ nhất

sao cho

Cách làm này mô phỏng hoạt động của một vòng quay xổ số (vòng được chia làm nhiều phần không bằng nhau), rõ ràng khi quay ta không biết kim của bánh quay sẽ chỉ vào phần nào nhưng ta cũng có thể nhận thấy ngay là phần lớn hơn sẽ nhiều khả năng kim rơi vào đó hơn. Chính vì vậy kỹ thuật này được gọi là Bánh xe xổ số.

Sau đây là mã giả của thuật toán

startVertex:=1; selectedVertex:=1; path:=[];

proc FindAPathOfTravelingSalesman(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) return path:

endif

# duyệt các đỉnh kề trong tập đỉnh kề của đỉnh selectedVertex

while neighbor_vertices(selectedVertex) > 0 do

neighbor_vertex := PickAVertex (áp dụng kỹ thuật bánh xe xổ số) neighbor_vertices:= neighbor_vertices minus neighbor_vertex; path:=FindAPathOfTravelingSalesman( startVertex, neighbor_vertex); if path is valid return path: endif enddo return paths; end proc

Một phần của tài liệu Tiểu luận môn LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization (Trang 28)

Tải bản đầy đủ (DOCX)

(40 trang)
w