1. Trang chủ
  2. » Cao đẳng - Đại học

Tìm hiểu và nghiên cứu thuật toán hệ kiến Max - Min

82 292 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 82
Dung lượng 435,19 KB

Nội dung

TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN PHÙNG CƠNG TUẤN TÌM HIỂU VÀ NGHIÊN CỨU THUẬT TỐN HỆ KIẾN MAX-MIN KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN Ngƣời hƣớng dẫn khoa học Th.S Lƣu Thị Bích Hƣơng Hà Nội – 2012 -1- LỜI CẢM ƠN Trong suốt trình học tập làm khóa luận, em nhận đƣợc giúp đỡ, tạo điều kiện Khoa CNTT, thầy giáo Khoa CNTT Bên cạnh giúp đỡ nhiều ngƣời thân, bạn bè để em có đƣợc kết ngày hơm Trƣớc hết em xin tỏ lòng kính trọng cảm ơn giáo Th.S Lƣu Thị Bích Hƣơng, tận tình bảo, hƣớng dẫn cho em hồn thành đƣợc khóa luận Xin cảm ơn thầy, cô giáo Khoa Công nghệ thông tin – Đại học sƣ phạm Hà Nội 2, bạn lớp K34 – CNTT tận tình giúp đỡ, giới thiệu tài liệu, sách tham khảo để khóa luận đƣợc hồn thành hạn Cuối lòng biết ơn đến quan tâm, chăm sóc tạo điều kiện gia đình để tập trung vào việc học tập hoàn thành khóa luận Do thời gian thực khơng nhiều nên khóa luận khơng tránh khỏi thiếu sót Rất mong nhận đƣợc đóng góp thầy giáo bạn để khóa luận đƣợc hồn thiện Xin chân thành cảm ơn! Hà Nội, tháng năm 2012 PHÙNG CÔNG TUẤN LỜI CAM ĐOAN Tên em là: PHÙNG CÔNG TUẤN Sinh viên lớp: K34 – CNTT, trƣờng đại học sƣ phạm Hà Nội Em xin cam đoan: Đề tài: “Tìm hiểu nghiên cứu thuật toán hệ kiến Max – Min” nghiên cứu riêng em, dƣới hƣớng dẫn giáo Th.S Lƣu Thị Bích Hƣơng Khóa luận hồn tồn khơng chép tác giả khác Nếu sai em xin hoàn toàn chịu trách nhiệm Hà Nội tháng 5/2012 Ngƣời cam đoan Phùng Công Tuấn MỤC LỤC Trang LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC .3 MỞ ĐẦU .5 Chƣơng – CƠ SỞ LÝ THUYẾT 1.1 Các khái niệm 1.1.1 Định nghĩa đồ thị .9 1.1.2 Các khái niệm 10 1.2 Biểu diễn đồ thị máy tính .13 1.2.1 Ma trận kề (ADJACENCY MATRIX) 13 1.2.2 Danh sách cạnh (EDGE LIST) 14 1.2.3 Danh sách kề (ADJACENCY LIST) 15 Chƣơng – LƢỢC SỬ PHÁT TRIỂN CỦA CÁC THUẬT TOÁN ACO 18 2.1 Nguồn gốc sinh học thuật toán kiến .18 2.2 Truyền thông gián tiếp – stigmergy .22 2.3 Quá trình phát triển thuật tốn ACO .23 2.3.1 Hệ kiến 23 2.3.2 Hệ đàn kiến .26 2.3.3 Thuật toán hệ kiến Max-Min .29 Chƣơng – PHƢƠNG PHÁP TỐI ƢU HÓA ĐÀN KIẾN: ACO .32 3.1 Một số heuristic ACO 32 3.2 Meta – Heuristic tối ƣu hóa đàn kiến 33 3.2.1 Bài toán tổng quát .33 3.2.2 Thuật toán ACO tổng quát 35 3.2.3 Xây dựng lời giải .38 3.2.4 Cập nhật mùi .39 3.3 Đặc tính hội tụ vết mùi 40 3.4 Các thuật toán ACOmin .43 Chƣơng – THUẬT TOÁN HỆ KIẾN MAX-MIN 46 4.1 Giới thiệu hệ kiến Max-Min .46 4.2 Cập nhật vết mùi 46 4.3 Giới hạn vết mùi 47 4.4 Một số nguyên lý ứng dụng thuật toán hệ kiến Max-Min 49 4.5 Xây dựng ứng dụng .53 4.5.1 Phát biểu toán 53 4.5.2 Giải toán .54 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO .58 PHỤ LỤC 61 MỞ ĐẦU Mục đích lý chọn đề tài 1.1 Lý chọn đề tài Các toán tối ƣu tổ hợp (Combinatorial Optimization Problems COP) đóng góp vai trò quan trọng thực tế, có nhiều ứng dụng lĩnh vực kinh tế, sản xuất Khi giải toán tối ƣu tổ hợp khó thƣờng gặp trở ngại lớn, thuật tốn truyền thống thƣờng khó giải quyết, thuật tốn mơ tự nhiên nhƣ luyện kim, di truyền, tiến hóa, hệ kiến tỏ có ƣu Trong thập kỷ qua thuật toán ACO tỏ phƣơng pháp trội để giải tốn tối ƣu tổ hợp khó Tối ƣu hóa đàn kiế n (Ant Colony Optimization - ACO) cách tiế p cận meta - heuristic tƣơng đố i đƣợc đề xuất Marco Dorigo đồng nghiệp năm 1991 Một thành cơng lớp thuật tốn ACO giải tốt toán tiếng Ngƣời chào hàng (Traveling Salesman Problem-TSP) với số thành phố lớn, 2000 Từ đến ACO ngày thu hút đƣợc quan tâm nghiên cứu giới khoa học hiệu trội đƣợc chứng minh thực nghiệm nhƣ giải tối ƣu tổ hợp điển hình: Bài tốn phân cơng bậc hai (Quadratic Assignment Problem-QAP), Bài tốn lập lịch cơng việc (Job-shop Scheduling Problem-JSP), Bài toán định đƣờng xe tải (Vehicle Rouling Problem -VRP), Bài tốn tơ màu đồ thị (Graph Coloring Problem-GCP), Bài toán siêu dãy chung ngắn (Shortest Colnmon Supersequence Poblem-SCS)… Trong ACO, hệ kiến Max-Min (Max-Min Ant System-MMAS) tỏ đơn giản, thông dụng đƣợc nhiều ngƣời ƣa dùng so với thuật toán kiến trƣớc nhƣ hệ kiến (Ant System-AS), hệ đàn kiến (Ant Conoly System-ACS) Hệ kiến Max-Min thuật toán đề xuất cập nhật mùi theo tƣ tƣởng Max-Min Năm 1999, nhằm mục đích đƣa lƣợc đồ làm việc chung cho thuật toán kiến, Marco Dorigo, Luca M Gambardella Gianni Di Cao khái quát hóa thành lớp ACO ứng dụng cách phong phú để giải toán tối ƣu tổ hợp tĩnh động Xuất phát từ tính thực tiễn thiết thực em xin chọn đề tài : “Nghiên cứu tìm hiểu thuật tốn hệ kiến Max –Min” 1.2 Mục đích Mục đích nghiên cứu đề tài tìm hiểu thêm thuật tốn có lời giải tốt cho toán tối ƣu tổ hợp tạo nguồn tài liệu sở cho nghiên cứu thuật toán tối ƣu hóa đàn kiến Nhiệm vụ, yêu cầu 2.1 Nhiệm vụ - Nghiên cứu lý thuyết đồ thị để phục vụ cài đặt giải toán Người giao hàng thuật toán hệ kiến Max – Min - Nghiên cứu tìm hiểu thuật tốn hệ kiến Max – Min thuật tốn liên quan - Tìm hiều ngơn ngữ lập trình C# để tiến hành cài đặt giải toán Người giao hàng thuật toán hệ kiến Max – Min 2.2 Yêu cầu Xây dựng cài đặt chƣơng trình giải tốn Người giao hàng ứng dụng thuật toán hệ kiến Max – Min Phƣơng pháp nghiên cứu: - Phƣơng pháp nghiên cứu chủ yếu tham khảo tài liệu, viết liên quan tới đồ thị, thuật tốn hệ kiến - Tìm nguồn tài liệu Internet, sách báo liên quan - Phƣơng pháp thực nghiệm Phạm vi nghiên cứu Nội dung nghiên cứu thuật tốn nói chung nhƣ thuật tốn kiến nói riêng đa dạng phong phú Do thời gian có hạn em khơng hy vọng tìm hiểu đƣợc hết nội dung liên quan tới đề tài, xin giới hạn phạm vi nghiên cứu nhƣ sau: - Tìm hiểu sở lý thuyết đồ thị, để giải toán Người giao hàng - Tìm hiểu nội dung thuật tốn Hệ kiến, nghiên cứu thuật toán ACO theo quy tắc cập nhật mùi Max-Min - Xây dựng thuật toán hệ kiến Max-Min sở toán Người giao hàng Ý nghĩa khoa học thực tiễn đề tài Nếu đề tài đƣợc áp dụng vào thực tiễn việc giải tốn tối ƣu tổ hợp trở nên khơng nhiều phức tạp tốn thời gian so với thuật toán truyền thống nhƣ: quy hoạch động, vét cạn… nghiên cứu khoa học đề tài sở vững để em nghiên cứu thuật tốn hệ kiến khác Cấu trúc khóa luận Ngồi phần mở đầu phần kết luận, khóa luận đƣợc tổ chức nhƣ sau: Chƣơng 1: Giới thiệu khái niệm đồ thị số cách biểu diễn đồ thị máy tính Chƣơng 2: Giới thiệu nguồn gốc sinh học thuật toán kiến, cách truyền thông gián tiếp lƣợc sử phát triển thuật tốn ACO Chƣơng 3: Trình bày phƣơng pháp tối ƣu hoá đàn kiến:ACO Chƣơng4: Giới thiệu thuật toán hệ kiến Max-Min áp dụng vàoxây dựng ứng dụng giải toán Người giao hàng CHƢƠNG CƠ SỞ LÝ THUYẾT 1.1 Các khái niệm 1.1.1 Định nghĩa đồ thị Là cấu trúc gồm đỉnh cạnh nối với đỉnh Đƣợc mơ tả hình thức: G = (V,E) V gọi tập đỉnh (Vertices) E gọi tập cạnh (Edges) Có thể coi E tập cặp (u,v) với u v hai đỉnh V Một số hình ảnh đồ thị: Sơ đồ giao thơng, mạng máy tính, cấu trúc phân tử… Có thể phân loại đồ thị theo đặc tính số lƣợng tập cạnh E: Cho đồ thị G = (V,E), đƣợc định nghĩa cách hình thức thì: G đƣợc gọi đơn đồ thị hai đỉnh u,v V có nhiều cạnh E nối từ u tới v G đƣợc gọi đa đồ thị hai đỉnh u,v V có nhiều cạnh E nối từ u tới v (Hiển nhiên đơn đồ thị đa đồ thị) G đƣợc gọi đồ thị vô hướng (undirected graph) cạnh E không định hƣớng, tức cạnh nối hai đỉnh u,v cạnh nối hai đỉnh v,u Hay nói cách khác, tập E gồm cặp (u,v) khơng tính thứ tự G đƣợc gọi đồ thị có hướng (directed graph) cạnh E có định hƣớng, có cạnh nối từ đỉnh u tới đỉnh v nhƣng chƣa Sau lần chọn đỉnh hành trình kiến thì, mảng đánh dấu đỉnh chƣa thăm, tổng xác suất, xác xuất lựa chọn đỉnh tiếp theo… đƣợc tính lại phƣơng thức CalcP() Đỉnh kiến đƣợc chọn dựa nguyên lý bánh xe sổ xố với phƣơng thức Lottery_Wheel() Sự cập nhật mùi đƣợc thực nhờ Pheromone_Update() Mã nguồn tham khảo thuật toán đƣợc cho phụ lục phƣơng thức Giao diện chƣơng trình Form tạo file test Form tìm đường KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Các nghiên cứu gần thuật toán ACO tập trung nhiều vào cải tiến hiệu suất thuật toán Trong thuật toán ACO nhƣ hệ kiến, hệ đàn kiến, hệ kiến MAX-MINthì hệ kiến MAX-MIN đƣợc ƣa dùng tính đơn giản, dễ cài đặt Sau thời gian tìm hiểu nghiên cứu em đạt đƣợc kết sau: - Tìm hiểu đƣợc lý thuyết đồ thị số nguyên lý áp dụng sử dụng giải toán TSP - Hiểu đƣợc thuật toán hệ kiến, thuật toán hệ kiến cập nhật mùi theo tƣ tƣởng Max – Min - Nghiên cứu áp dụng đƣợc thuật toán hệ kiến Max – Min xây dựng chƣơng trình giải tốn TSP Trong khóa luận này, trình bày cách hệ thống thuật toán hệ kiến giới thiệu thuật toán hệ kiến MAX-MIN nhằm mục đích tạo cho độc giả quan tâm đến thuật tốn ACO có nhìn tổng quan thuật tốn hệ kiến-thuật tốn trội so với thuật tốn mơ tự nhiên giải toán tối ƣu tổ hợp Hiện nay, thuật toán ACO cho thấy có hiệu suất triển vọng tốn tối ƣu tổ hợp Trong tƣơng lai em nghiên cứu hệ kiến MAX-MIN nhằm cải tiến hiệu xuất cho thuật toán để giải toán tối ƣu tổ hợp khả ứng dụng ACO TÀI LIỆU THAM KHẢO [1] Krzysztof Socha, Joshua Knowles and Michael Sampels (2002), “A MAX-MIN Ant System for the University Course Timetabling Problem”, ANTS 2002, LNCS (2463), pp 1-13 [2] Krzysztof Socha, Michael Sampels and Max Manfrin, “Ant Algorithms for the Univerrsity Course Timetabling Problem with Regard to the State-of-the-Art” [3] Hoang Xuan Huan & Dinh Trung Hoang, “On the ant colony system for the postman problem”, Journal of Science, Natural Sciences and Technology, Viet Nam National Univeristy,Ha Noi, vol.18, no 1, 2002, pp 29-37 [4] Hoang Xuan Huan (2003), Convergence Analysis of ACO Algorithms and New Perpectives, manuscript [5] Hoang Xuan Huan, Do Duc Dong and Dinh Quang Huy (2004), “Multilevel Ant System and Typical Combanatorial Optimization Problems”, 2nd Optimization and Scientific Computation Conference, Institue of Mathematics, Ha Noi, Viet Nam, p 15 [6] M.Dorigo, V.Maniezzo and A.Corloni (1991), Positive feedback as a search strategy, Technical Report 91-109, Departimento di electronica e informatica, Poletico di Milano, IT [7] M.Dorigo (1992), Optimization, learning and natural algorithms, PhD.dissertation, Milan Polytechnique, Italy [8] M.Dorigo, V.Maniezzo and A.Corloni (1996), “The Ant System : Optimization by a colony of cooperating agents”, IEEE, Trans.Syst., Man, Cybern.B, vol.26, no.2, pp 29-41 [9] M Dorigo and L.M Gambardella (1997), “Ant Colony System : A cooperative learning approach to the travelling salesman problem”, IEEE Trans, on Evolutionary Computation, vol.1, no.1, pp 53-66 [10] M.Dorigo and M.D.Caro (1999), “The Ant Conoly Optimization metaheuristic, A New Idea in Optimization”, D.Corne, M.Dorigo and F.Glover, Eds London, U.K, McGraw-Hill, pp.11-32 [11] M.Dorigo and Thomas Stutzle (2000), The Ant Colony Optimization Metaheuristic : Algorithms, Applications and Advances [12] Marco Dorigo and Thomas Stutzle (2002), A short Convergence Proof for a class of Ant Colony Optimization Algorithms, IEEE [13] Marco Dorigo, Eric Bonabeau, Guy Theraulaz Future Generation Computer Systems Ant System and Stigmergy, 16 (2000) 851–871 [14] Thomas Stutzle and Holger Hoos (1997), MAX-MIN Ant System and Local Search for the Traveling Salesman Problem, IEEE [15] Stutzle, Hoos (2000), “MAX-MIN Ant System”, Future Generation Computer System, pp 889-914 [16] T Stutzle (July 1997), “MAX-MIN Ant System for the quadratic assignment problem”, Technical Report AIDA–97–4, FG Intellektik, TU Darmstadt, Germany [17] T Stutzle and M Dorigo (1999), “ACO algorithms for the quadratic assignment problem”, New Ideas in Optimization, McGraw-Hill, London, UK, pp 33–50 [18] T Stutzle and H H Hoos (1999), “MAX-MIN Ant System and local search for combinatorial optimization problems”, Meta-Heuristics: Advances and Trends in Local Search Paradigms for Optimization, Kluwer Academic Publishers, Boston, pp 313–329 [19] J.-L Deneubourg, S Goss, J.M Pasteels, D Fresneau, J.-P Lachaud (1987), Self-organization mechanisms in ant societies II:Learning in foraging and division of labour, Experientia Suppl [20] P.P Grassé (1959), “La reconstruction du nid et les coordinations interindividuelles chez bellicositermes natalensis et cubitermes sp”, La théorie de la stigmergie: essai d’interprétation du comportement des termites constructeurs, Insectes Sociaux 6, pp 41–81 PHỤ LỤC Mã nguồn tham khảo thuật toán hệ kiến Max-Min giải tốn TSP  Các thuộc tính lớp MMAS public const int max = 20; public const int a = 2; /* a va b la tham so neu len moi quan he qua lai giua nong mui va thong tin heuristic*/ public const int b = 5; /* a va b la tham so neu len moi quan he qua lai giua nong mui va thong tin heuristic*/ public const float tmax = 0.5f; //Nong mui max public const float tmin = 0.2f; //Nong mui public const float maxreal = 50000; //Chi phi toi da public const float rho = 0.8f; //He so bay hoi public const int m = 25; //So kien public const int n_c = 500; //So vong lap static public float[,] d;/*mang luu dai cac canh tren thi.*/ static public float[,] t;/*mang luu nong vet mui tren cac canh.*/ static public double[] p;/*mang luu xac xuat lua chon dinh tiep theo tu dinh i.*/ static public float[,] delta;/*mang so thuc chieu luu su cap nhat mui*/ static public float l_best; //Chi phi chu trinh tot nhat static public int n; // So dinh tren thi static int n_loop; static double sum; // Tong cac xac suat static int dem; static int s; // So cung tren thi static float l; static int[] w; //Luu hanh trinh moi kien static public int[] ldd; //Mang luu ket qua static int[] uv; static bool[] mark; static public string filePath=""; static public int[,] chutrinhtotnhat; /*Mang danh dau chu trinh tot nhat de cap nhat mui*/  Lấy đồ thị từ file (.tsp) vào ma trận kề static public void LoadGraph() { string line; string[] fields; if (File.Exists(filePath)) { StreamReader file = null; try { file = new StreamReader(filePath); if ((line = file.ReadLine()) != null) { fields = line.Split(' '); n = int.Parse(fields[0]); s = int.Parse(fields[1]); } d = new float[max, max]; while ((line = file.ReadLine()) != null) { fields = line.Split(' '); d[int.Parse(fields[0]),int.Parse(fields[1])] = float.Parse(fields[2]); d[int.Parse(fields[1]),int.Parse(fields[0])] } } finally = float.Parse(fields[2]); { if (file != null) file.Close(); } } else { MessageBox.Show("Khong tim thay file du lieu!"); } }  Phƣơng thức khởi tạo static public void Init() { t = new float[max, max]; delta = new float[max, max]; w = new int[max]; mark = new bool[max]; p = new double[max]; uv = new int[max]; ldd = new int[max]; chutrinhtotnhat = new int[max, max]; for (int i = 1; i < n; i++) for (int j = i + 1; j

Ngày đăng: 06/01/2018, 10:18

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w