Giới thiệu tổng quan về các hệ thống phỏng sinh học, các phương pháp tính toán phỏng sinh học, nguyên lý cơ bản của một hệ thống thuật toán phỏng sinh học. Thuật toán phỏng bầy kiến. Tổng quan bài toán kmedian và một số phương pháp giải được áp dụng. Trình bày giải thuật phỏng bầy kiến giải bài toán kmedian. Kết quả thực nghiệm, đánh giá về giải thuật
Trần Trung hiếu giáo dục đào tạo trường đại học bách khoa hà nội - luận văn thạc sĩ khoa học công nghệ hothông tin ngành : công nghệ Thông tin Thuật toán bầy kiến giải toán k-median Trần Trung Hiếu 2005-2007 Hà Nội 2007 Hà Nội 2007 Lời cảm ơn Với tất lịng kính trọng biết ơn sâu sắc, em xin gửi lời cảm ơn chân thành tới thầy giáo PGS TS Nguyễn Đức Nghĩa, người tận tình dạy dỗ hướng dẫn em q trình hồn thành luận văn Em xin gửi lời cảm ơn chân thành tới Thầy Cô Khoa Công nghệ Thông tin, Trường Đại học Bách Khoa Hà nội, người tận tình giảng dạy, truyền cho chúng em kiến thức suốt trình học tập trường để tạo sở hoàn thành luận văn MỤC LỤC Trang CÁC THUẬT NGỮ VIẾT TẮT LỜI NÓI ĐẦU _ Chương Tổng quan hệ thống tính tốn sinh học 1.1 Giới thiệu 1.2 Di truyền tiến hoá _ 1.3 Các khơng gian tìm kiếm, đặc tả hàm phù hợp 12 1.3.1 Khơng gian tìm kiếm 12 1.3.2 Các đặc tả di truyền _ 12 1.3.3 Các hàm phù hợp 13 1.4 Phân loại thuật toán sinh học _ 13 1.4.1 Các ứng dụng quy hoạch 14 1.4.2 Các ứng dụng thiết kế 16 1.4.3 Các ứng dụng mô nhận dạng _ 17 1.4.4 Các ứng dụng điều khiển 17 1.5 Nguyên lý thuật toán sinh học _ 19 Chương Thuật toán bầy kiến _ 21 2.1 Giới thiệu 21 2.2 Mơ hình mơ thuật toán _ 23 2.3 Trình bày giải thuật _ 25 2.3.1 Một số định nghĩa ban đầu _ 25 2.3.2 Trình bày thuật tốn 26 2.4 Một số ứng dụng _ 29 2.4.1 Giải thuật ACO cho toán TSP 29 2.4.2 Bài toán SMTWTP _ 31 2.4.3 Bài toán GAP _ 32 2.4.4 Bài toán SCP 34 2.4.5 Bài toán định tuyến mạng 35 2.5 Đánh giá ảnh hưởng tham số 38 2.5.1 Xác định vệt mật độ mùi 38 2.5.2 Cân nhắc thăm dò khai thác _ 39 2.5.3 ACO tìm kiếm cục _ 40 2.5.4 Tầm quan trọng thông tin tri thức _ 41 2.5.5 Số lượng kiến _ 42 2.5.6 Danh sách ứng cử viên _ 42 2.6 Kết luận 43 Chương Bài toán k-median 44 3.1 Phát biểu toán 44 3.2 Các ứng dụng thực tế _ 46 3.3 Tổng quan phương pháp giải _ 46 3.3.1 Thuật toán vét cạn 48 3.3.2 Thuật toán Local Search _ 49 3.3.3 Thuật toán Tabu Search _ 50 3.3.4 Thuật toán GRASP _ 51 Chương Giải thuật bầy kiến giải toán k-median 53 4.1 Một số định nghĩa 53 4.2 Xây dựng tham số _ 54 4.3 Lưu đồ thuật toán 55 4.3.1 Thủ tục InitData _ 55 4.3.2 Thủ tục AntSystemInitialize 56 4.3.3 Thủ tục SimulateAnts _ 57 4.3.4 Thủ tục UpdateTrails _ 57 4.3.5 Nguyên tắc chung thuật toán 58 4.3.6 Điều kiện dừng thuật toán 59 4.4 Đánh giá độ phức tạp tính tốn 59 Chương Kết thực nghiệm 61 5.1 Mô tả thực nghiệm _ 61 5.1.1 Đặc điểm liệu _ 61 5.1.2 Thiết kế chương trình _ 62 5.2 Kết thực nghiệm 64 5.2.1 Xác định tham số _ 64 5.2.2 Các kết tính toán 68 5.3 Đánh giá kết thực nghiệm 75 5.3.1 Đánh giá chất lượng thuật toán _ 75 5.3.2 Đánh giá thời gian thực _ 76 5.3.3 Đánh giá độ ổn định 77 Kết luận hướng phát triển _ 78 Tài liệu tham khảo _ 79 Phụ lục: Cấu trúc liệu modul chương trình 81 CÁC THUẬT NGỮ VIẾT TẮT Các tính tốn sinh học EA Evolutionary Algorithm Các thuật toán sinh học ACO Ant Colony Optimize Bài toán tối ưu bầy kiến AS Ant System Hệ thống bầy kiến GA Genetic Algorithms Thuật toán di truyền TSP Traveling Salesman Problem Bài toán người bán hàng di động QAP Quadratic Assignment Problem Bài tốn phương trình bậc hai JSP Job-shop Scheduling Problem Bài toán lập lịch bán hàng GBAS Graph-Based Ant System Hệ thống Ant dựa đồ thị SMTWTP Single Machine Total Weighted Bài toán lập lịch sản xuất Tardiness Scheduling Problem máy đơn GAP Generalized Assignment Problem Bài toán lập lịch tổng quát SCP Set Covering Problem Bài tốn phủ đỉnh EC Evolutionary Computation LỜI NĨI ĐẦU Các hệ thống công nghệ thông tin ngày phát triển, lối tư duy, chế tính tốn, suy diễn ngày tiến gần với kiểu tư logic người Cùng với nó, hệ thống tính tốn mơ theo chế hoạt động sinh học thực thể sống ngày nghiên cứu sâu hơn, chi tiết Các toán thực tế nhà nghiên cứu nắm bắt giải dễ dàng thông qua mối liên hệ tồn không ngừng phát triển thực thể sinh học Các hệ thống tính tốn nghiên cứu tên gọi hệ thống tính tốn sinh học Một hệ thống tính tốn sinh học vận dụng tốt lối tư vào tốn tối ưu tổ hợp, mơ hình giải thuật bầy kiến, mơ lối di chuyển đời sống thực tế bầy đàn kiến Các vấn đề phục vụ lực phục vụ trạm dịch vụ yêu cầu khách hàng ngày trở thành mảng đề tài nóng Do phải tiếp nhận số lượng lớn yêu cầu từ khách hàng tiếp tục tăng lên mà trạm dịch vụ nhiều tải lực phục vụ khơng đáp ứng Đặc biệt, số loại hình dịch vụ mang tính khẩn cấp, yêu cầu cần phục vụ với thời gian nhanh nhất, vấn đề cài đặt trạm dịch vụ cách hợp lý cho khả đáp ứng tốt lại trở nên quan trọng Bài tốn k-median, tốn điển hình đáp ứng kiểu mơ hình triển khai với nhiều nghiên cứu chuyên sâu Với mục tiêu sâu nghiên cứu hệ thống giải thuật bầy kiến, ứng dụng để giải lớp tốn tối ưu tổ hợp tốn kmedian, luận văn cố gắng tìm hiểu mơ hình hệ thống giải thuật bầy kiến, toán k-median ứng dụng giải thuật bầy kiến để giải toán Luận văn gồm chương: • Chương Giới thiệu tổng quan hệ thống sinh học, phương pháp tính tốn sinh học, ngun lý hệ thống thuật toán sinh học • Chương Giới thiệu tổng quan thuật toán bầy kiến • Chương Giới thiệu tổng quan toán k-median số phương pháp giải áp dụng toán • Chương Trình bày giải thuật bầy kiến giải tốn kmedian • Chương Trình bày số kết thực nghiệm đạt được, số đánh giá giải thuật Thuật toán bầy kiến toán k-median thực tế nghiên cứu nhiều Tuy nhiên việc áp dụng thuật toán bầy kiến vào giải tốn k-median cịn chưa nghiên cứu sâu sắc Chính vậy, q trình nghiên cứu, tìm hiều, chắn vấn đề tơi đề cập cịn có nhiều thiếu sót, khiếm khuyết Do mong nhận đóng góp, dạy thầy cơ, bạn học có quan tâm tới vấn đề CHƯƠNG I TỔNG QUAN VỀ CÁC HỆ THỐNG TÍNH TỐN PHỎNG SINH HỌC 1.1 Giới thiệu Các kỹ thuật tính tốn sinh học (EC) [10] nghiên cứu cho thấy chúng hoàn tồn phù hợp với phương pháp tính, giải toán tổ hợp Nguyên lý chung kỹ thuật dựa tượng sinh học tự nhiên Các tính tốn bao gồm lớp thuật tốn sinh học (EA), chứa giải thuật tìm kiếm dựa tri thức kinh nghiệm Các tri thức sử dụng để tìm kiếm lời giải tốt cho tốn khó (chứ khơng phải lời giải tối ưu) Các tính tốn ln tìm cách để suy diễn lời giải tốt từ lời giải trước đặc biệt phù hợp với dạng tốn khơng tồn giải thuật hiệu (là giải thuật có thời gian tính tốn đa thức) Các giải thuật thường đơn giản, mang tính tổng quát ứng dụng lớp tốn tìm kiếm tối ưu Tất nhiên, để có đánh giá việc làm thuật tốn làm việc, cần có hiểu biết di truyền tiến hoá 1.2 Di truyền tiến hoá Trong sinh học, khác biệt tạo kiểu gen kiểu hình sinh vật Kiểu gen tổ hợp gen mã hóa sinh vật, đặc biệt phân tử DNA có tế bào thể sinh vật (cho dù vi khuẩn, nấm, 10 thực vật hay động vật) Các phân tử DNA có chứa gen, đoạn nhỏ phân tử DNA mã hóa cho đặc điểm riêng sinh vật (cịn gọi tính trạng), ví dụ da màu lơng, số lượng chi, kích thước sọ, … Một cách xác hơn, gen (hoặc đoạn DNA) dịch mã thành protein tạo nên phần thể, tạo nên chức cần thiết cho tồn (chuyển hóa, vận động cơ, bảo vệ chống lại bệnh tật, …) Sự hình thành sinh vật với chức hành vi tạo nên kiển hình, hay sinh vật thực thể sống giới thực Nói tóm lại, có q trình chiều mà thơng tin gen (kiểu gen) xác định (cùng với tác động mơi trường) hình dạng chức (kiểu hình) sinh vật Khi hai sinh vật loài sống sinh con, thay đổi mức gen sau: lại phân tử DNA bố lẫn mẹ kết hợp với nhau, kiểu gen nhận phần gen từ bố, phần gen từ mẹ Nói cách khác, kiểu gen cá thể tổ hợp (một cách ngẫu nhiên) kiểu gen bố mẹ, cá thể có tổ hợp gen khác Q trình gọi lai Hơn nữa, trình chép thông tin gen từ bố mẹ cho có lỗi chép, gọi đột biến Hiện tượng xảy ra, (có thể) tạo thay đổi gen Kết tượng lai đột biến cá thể (thế hệ tiếp theo) có thay đổi so với bố mẹ chúng Một số tính trạng hệ có từ bố, số từ mẹ Hơn nữa, đột biến ngẫu nhiên biểu hồn tồn số tính trạng định Tóm lại, thay đổi có nguồn gốc, xuất phát từ mức độ kiểu gen (qua lai đột biến) biểu mức độ kiểu hình Trong giới sinh vật, tất cá thể sinh tồn tiếp tục sinh sản Ví quần thể chuột, đa số chuột chết 73 Dưới đồ thị biểu diễn biến đổi số điểm median cần tìm kiếm (k) tỷ lệ sai lệch giá trị tối ưu giá trị mà thuật tốn Ant tìm kiếm % sai lệch 120.00% 100.00% Bộ liệu số 80.00% Bộ liệu số 60.00% 40.00% 20.00% 0.00% k 10 11 12 13 Hình 5.6 Đồ thị mơ tả biến thiên % sai số theo k (đối với liệu K1 K2) % sai lệch 140.00% 120.00% Bộ liệu số 100.00% Bộ liệu số 80.00% Bộ liệu số Bộ liệu số 60.00% 40.00% 20.00% 0.00% k 10 11 12 13 Hình 5.7 Đồ thị mơ tả biến thiên % sai số theo k (đối với liệu K3 đến K6) 74 T.gian 4000 3500 3000 2500 Bộ liệu số 2000 Bộ liệu số 1500 1000 500 k Hình 5.8 Đồ thị mơ tả biến thiên thời gian theo k (đối với liệu K1 K2) T.gian 2500 2000 Bộ liệu số Bộ liệu số 1500 Bộ liệu số Bộ liệu số 1000 500 k Hình 5.9 Đồ thị mô tả biến thiên thời gian theo k (đối với liệu K3 đến K6) 75 5.3 Đánh giá kết thực nghiệm Từ kết tính tốn so sánh trên, đưa số nhận xét sau: 5.3.1 Đánh giá chất lượng thuật tốn Các kết tính tốn lời giải tối ưu chấp nhận Việc kiểm chứng thực rõ nét liệu nhỏ Khi không gian tìm kiếm nhỏ liệu Galvão, việc tìm kiếm giá trị tốt thực nhanh chóng, đồng thời % sai số so với giá trị tối ưu không đáng kể (tham khảo bảng 5.6 bảng 5.7) Khi không gian tìm kiếm tăng lên, chẳng hạn liệu Koerkel có số nút lên đến 1000 điểm, sai số giá trị tìm giá trị tối ưu tăng lên đáng kể số median tăng lên Tuy nhiên trường hợp này, so sánh với khơng gian tìm kiếm sai số chấp nhận Chẳng hạn với liệu Koerkel thứ thứ hai: - Khi số median điểm, khơng gian tìm kiếm 499500 liệu, thuật tốn Ant thực tìm kiếm khoảng 100 liệu cho kết tính tốn với sai số xấp xỉ 0.1% - Khi số median tăng lên đến 25 điểm, khơng gian tìm kiếm tăng lên đến 4.76x1049 liệu tức lớn, thuật tốn Ant thực tìm kiếm khoảng 100 liệu (chú ý số nhỏ so với khơng gian tìm kiếm tốn) đạt kết tính tốn với sai số xấp xỉ 7% 76 Kết nhận liệu Koerkel thứ đến thứ cho nhận xét tương tự Từ kết luận mặt giá trị thu sau tính tốn thuật toán Ant, kết đạt tương đối hiệu 5.3.2 Đánh giá thời gian thực hiện: Theo kết thống kê chạy thuật toán Ant liệu Koerkel thứ nhất, trường hợp số median điểm, để đạt kết tính tốn cần thời gian khoảng phút, tăng số median lên 25 điểm cần khoảng giờ, tăng số median lên 333 điểm chạy vịng lặp (duyệt qua liệu khơng gian tìm kiếm khoảng 5.8x10274 liệu) phải cần tới khoảng 100500 giây ≈ 28 tức ngày cho kết tính tốn với sai lệch so với giá trị tối ưu khoảng 77% Qua nghiên cứu thuật tốn, nhận thấy thời gian tính tốn lâu tập trung giải thuật tính hàm giá trị tốt liệu tìm (Hàm Cost) Đây khiếm khuyết mà thuật toán chưa giải triệt để Từ kết luận số median tăng, tốc độ tính tốn lời giải tối ưu thuật tốn chậm Như mặt thời gian tính tốn giải thuật chưa đáp ứng yêu cầu tính thời gian thực Chất lượng lời giải tốt nhận thuật toán tỷ lệ thuận với thời gian thực trung bình để tìm lời giải tốt 77 5.3.3 Đánh giá độ ổn định Từ biểu đồ so sánh hiệu thuật toán liệu Koerkel khác (tham khảo biểu đồ 5.6 5.7), nhận thấy tỷ lệ % sai lệch thuật toán tương đối đồng liệu khác thực điều kiện (cùng số median, không gian tìm kiếm, số vịng lặp) So sánh thay đổi thời gian theo k cho kết luận tương tự (tham khảo biểu đồ 5.8 5.9) Từ đưa nhận xét thuật toán Ant hoạt động tương đối ổn định cho kết tương đương số điều kiện khác Điều quan trọng, làm cho thuật tốn có khả ứng dụng nhiều lĩnh vực hơn, mang tính phổ biến so với số thuật tốn khác có hiệu số điều kiện ràng buộc định 78 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Ứng dụng giải thuật bầy kiến vào giải toán k-median, dạng toán tối ưu tổ hợp, đề tài Tuy nhiên với nỗ lực nghiên cứu, tìm hiểu, kế thừa nghiên cứu số mơ hình bầy kiến giải toán tối ưu khác toán TSP, số dạng giải thuật có giải thuật LocalSearch, tơi hồn thành luận văn mục tiêu đề ban đầu Các kết đạt nhìn chung khả quan, mang lại hướng nghiên cứu sâu sau chủ đề Tất nhiên kết đạt chấp nhận nhiều khiếm khuyết chưa khắc phục Đầu tiên, luận văn chưa đánh giá mức độ ảnh hưởng tham số bầy kiến lên thuật toán Các tham số α, β, ρ số lượng kiến nên chọn để tối ưu hố thời gian tìm kiếm lời giải tối ưu câu hỏi bỏ ngỏ Tiếp đến, thời gian hạn chế, phần kết thực nghiệm viết thuật toán chưa gọn, chưa trình bày giải thuật tính tốn chi phí với thời gian tối ưu, thời gian tính tốn giải thuật mức độ nghiên cứu Các kết đánh giá so sánh với số giải thuật có cịn nhiền hạn chế Đây số hướng gợi mở để tiếp tục nghiên cứu, hồn chỉnh luận văn 79 TÀI LIỆU THAM KHẢO J.Cheryan, R.Ravi Approximation algorithms for network problems, September 1998 Eva Gómez Ballester, Luisa Mico, Jose Oncina - A Fast Approximated k-Median Algorithm Mauricio G.C.Resende, Renato F.Werneck - A Fast Swap-based Local Search Procedure for Location Problem Sudipto Guha - Approximation Algorithms for facility location problems, for the degree of doctor of philosophy, August 2000 Mauricio G.C.Resende, Renato F.Werneck - A grasp with pathrelinking for the p-median problem Edson L.F.Senne, Luizi A.N.Lorena - Lagrangean/Surrogate heuristic for p-median problems K.Jain, M.Mahdian, A.Saberi - A new greedy for facility location problem, Proceedings of the 34th Annual ACM Symposium on the Theory of computing, p731-741, 2002 Dipl.-Wirtschaftsing.Thomas G.Stuttzle – Local Search Algorithms for Combinatorial Problems Marco Dorigo, Luca Maria Gambardella – Ant colonies for traveling saleman problem 10 Wim Hordijk - An Introduction to Evolutionary Computation, Karunya Institute of Technology and Sciences Deemed University 11 Patrice Cal’ Egari, Giovanni Coray, Alain Hertz, Daniel Kobler and Pierre Kuonen – A taxonomy of Evolutionary Algorithms in Combinatorial Optimization 12 David Beasley – Handbook of Evolutionary Computing, IOP Publishing Ltd and Oxford University Press, 1997 80 13 Marco Dorigo, Thomas Stutzle – The Ant Colony Optimization Metaheuristic: Algorithms, Applications and Advances 14 Mauricio G.C Resende, Renato F.Werneck – A GRASP with pathrelinking for the p-median 15 Nguyễn Xuân Tùng - Giải thuật kiến áp dụng việc xác định ma trận trọng số mạng Neuron 16 M Dorigo and G Di Caro - The Ant Colony Optimization metaheuristic, McGraw Hill, London, UK, 1999 17 M Dorigo, G Di Caro, and L M Gambardella - Ant algorithms for discrete optimiization Artificial Life, 5(2):137 – 172, 1999 18 M Dorigo and L M Gambardella - Ant Colony System: A cooperative learning approach to the travelling salesman problem IEEE Transactions on Evolutionary Computation, 1997 19 W Gutjahr - ACO algorithms with guaranteedconvergence to the optimal solution Information Processing Letters, 82(3):145-153, 2002 20 W J.Gutjahr - A generalized convergence result fot the graph-based Ant System metaheuristic Technical Report 99-09, Department of Statistics and Decision Support Systems, University of Vienna, Austria, 1999 21 T Stützle and M Dorigo - A Short convergence proof for a class of ant colony Optimization Algorithms IEEE Transactions on Evolutionary Computation, 2002 22 Marco Dorigo - The Ant System: Optimization by a colony of cooperating agents 23 OSMAN ALP and ERHAN ERKUT - An Efficient Genetic Algorithm for the p-Median Problem Kluwer Academic Publishers, 2003 24 http://www.business.ualberta.ca/eerkut/testproblems/ 81 Phụ lục Cấu trúc liệu module chương trình Các cấu trúc liệu xây dựng bao gồm: • Lớp CAnt mơ tả liệu kiến chu trình di chuyển chúng Type CAnt currentCity As Integer nextCity As Integer visitedCities() As Boolean path() As Integer pathIndex As Integer tourLength As Double End Type Trong đó: - currentCity lưu vị trí kiến - nextCity lưu vị trí mà kiến chuyển đến - visitedCity() đánh dấu điểm mà kiến qua - path() lưu đường dẫn qua đỉnh mà kiến qua - pathIndex lưu vị trí đường dẫn - tourLenght lưu độ dài hành trình mà kiến qua • Lớp CSolution mô tả liệu tập lời giải khả thi Type CSolution Medians() As Integer Index As Double bestCost As Double bestIndex As Double 82 End Type Trong đó: - Medians() tập median khả thi, median gồm k_median điểm - Index lưu số lượng vị duyệt thời điểm - bestCost lưu giá trị chi phí tốt tính đến thời điểm - bestIndex lưu trữ vị trí median đạt giá trị tốt Các module chương trình chủ yếu bao gồm: ‘ Thủ tục xác định hàm đánh giá xác suất Function AntProduct(from As Integer, t_o As Integer) As Double AntProduct = ((pow(pheromone(from, distance(from, t_o)), BETA))) t_o), End Function 'Thủ tục tính tốn điểm mà kiến thứ ant chuyển tới Function GetNextCity(ant As Integer) As Integer Dim denom As Double Dim p As Double Dim q As Double Dim Pos As Integer Dim stamp As Integer denom = from = Ants(ant).currentCity For t_o = To MAX_CITIES If (Ants(ant).visitedCities(t_o) = 0) Then denom = denom + AntProduct(from, t_o) End If Next stamp = For t_o = To MAX_CITIES ALPHA) * pow((1 / 83 If (Ants(ant).visitedCities(t_o) = 0) Then stamp = stamp + Next If stamp = Then GetNextCity = -1 Exit Function End If Do While (1) t_o = t_o + If (t_o > MAX_CITIES) Then t_o = If (Ants(ant).visitedCities(t_o) = 0) Then p = AntProduct(from, t_o) / denom If (Threshold < p) Then Exit Do End If Loop GetNextCity = t_o End Function 'Thủ tục tính tốn điểm thay tập lời giải khả thi Function ChangeWorstCity(ant As Integer, NewCity As Integer) As Integer Dim OldCity As Integer Dim best As Double Dim city As Integer Dim index As Integer Dim from As Integer Dim Temp As Double best = MAX_DOUBLE OldCity = -1 For from = To k_MEDIAN city = Ants(ant).Solution(from) Ants(ant).Solution(from) = NewCity Temp = Cost(ant) If best > Temp Then best = Temp OldCity = city index = from End If Ants(ant).Solution(from) = city Next Ants(ant).Solution(index) = NewCity ChangeWorstCity = OldCity End Function 84 'Thủ tục tính tốn tập lời giải khởi tạo cho đàn kiến Public Function InitializeSolution() As Integer Dim moving As Integer moving = For ant = To MAX_ANTS With Ants(ant) If pathIndex < MAX_CITIES) Then nextCity = GetNextCity(ant) If nextCity = -1 Then Exit Function visitedCities(.nextCity) = path(.pathIndex + 1) = nextCity If pathIndex < k_MEDIAN) Then Solution(.pathIndex + 1) = nextCity End If pathIndex = pathIndex + tourLength = tourLength + distance(.currentCity, nextCity) If (.pathIndex = MAX_CITIES) Then tourLength = tourLength + distance(.path(MAX_CITIES - 1),.path(0)) End If currentCity = nextCity moving = moving + End If End with Next InitializeSolution = moving End Function 'Thủ tục tính tốn lời giải cho đàn kiến Public Function SimulateAnts() As Integer Dim moving As Integer Dim city As Integer moving = For ant = To MAX_ANTS With Ants(ant) If moving < MAX_CITIES Then nextCity = GetNextCity(ant) If nextCity = -1 Then moving = -1 Exit For End If city = ChangeWorstCity(ant, nextCity) If city = -1 Then moving = -1 85 Exit For End If visitedCities(.nextCity) = path(.pathIndex + 1) = nextCity pathIndex = pathIndex + tourLength = tourLength + distance(.currentCity, nextCity) currentCity = nextCity moving = moving + Else moving = -1 Exit For End If End with Next SimulateAnts = moving End Function 'Thủ tục cập nhật vệt đàn kiến Public Sub UpdateTrails() Dim from, t_o, i, ant As Integer ' _pheromone Evaporation For from = To MAX_CITIES For t_o = To MAX_CITIES If (from t_o) Then pheromone(from, t_o) = pheromone(from, t_o) * (1 - RHO) If (pheromone(from, t_o) < 0) Then pheromone(from, t_o) = End If Next Next For ant = To MAX_ANTS For i = To MAX_CITIES If (i < MAX_CITIES - 1) Then from = Ants(ant).path(i) t_o = Ants(ant).path(i + 1) Else from = Ants(ant).path(i) t_o = Ants(ant).path(0) End If If (from >= 0) And (t_o >= 0) Then pheromone(from, t_o) = pheromone(from, t_o) + (QVAL Ants(ant).tourLength) pheromone(t_o, from) = pheromone(from, t_o) End If Next / 86 Next For from = To MAX_CITIES For t_o = To MAX_CITIES pheromone(from, t_o) = pheromone(from, t_o) * RHO Next Next End Sub 'Thủ tục tính tốn chi phí đạt lời giải kiến thứ ant Public Function Cost(ant As Integer) As Double Dim disTemp As Double Dim Temp As Double Dim CalCost As Double CalCost = For from = To MAX_CITIES disTemp = MAX_DOUBLE For t_o = To k_MEDIAN With Ants(ant) If distance(from, Solution(t_o)) = Then disTemp = Exit For ElseIf disTemp > distance(from,.Solution(t_o)) Then ' disTemp = distance(from, Solution(t_o)) End If Next CalCost = CalCost + disTemp Next Cost = CalCost End Function 'Thủ tục thuật tốn Public Sub ACO_Algorithm() For i = To 10000 If SimulateAnts = -1 Then MsgBox "Finish search!" Exit Sub End If UpdateTrails For ant = To MAX_ANTS If bestPossible > Cost(ant) Then bestPossible = Cost(ant) bestAntPosition = ant End If Next 87 ShowResult DoEvents Next End Sub ... thuật bầy kiến, ứng dụng để giải lớp tốn tối ưu tổ hợp tốn kmedian, luận văn cố gắng tìm hiểu mơ hình hệ thống giải thuật bầy kiến, toán k- median ứng dụng giải thuật bầy kiến để giải toán Luận... tốn kmedian • Chương Trình bày số k? ??t thực nghiệm đạt được, số đánh giá giải thuật Thuật toán bầy kiến toán k- median thực tế nghiên cứu nhiều Tuy nhiên việc áp dụng thuật toán bầy kiến vào giải. .. End; / /K? ??t thúc thủ tục 21 CHƯƠNG II THUẬT TOÁN PHỎNG BẦY KIẾN 2.1 Giới thiệu ACO - Thuật toán bầy kiến [16, 17, 18] mô hành vi bầy kiến tự nhiên nhằm tìm kiếm