Tiểu luận môn LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization

40 1.1K 2
Tiểu luận môn LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization

Đ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

Ant Colony Optimization ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization và hiện thực với Maple Giảng viên hướng dẫn PGS.TS. Đỗ Văn Nhơn Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158 Ant Colony Optimization 01 – 2013 ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization và hiện thực với Maple Giảng viên hướng dẫn PGS.TS. Đỗ Văn Nhơn Ant Colony Optimization Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158 02 – 2013 MỤC LỤC Ant Colony Optimization MỞ ĐẦU Bài toán tối ưu hóa tổ hợp là bài toán hấp dẫn và thú vị bởi vì phần lớn chúng đều dễ để hình dung nhưng khó mà tìm ra lời giải cho chúng. Nhiều bài toán tối ưu tổ hợp là các bài toán NP-khó và chúng không thể giải được trong thời gian đa thức. Trên thực tế người ta thường giải quyết các bài toán này bằng các phương pháp xấp xỉ, chúng có nghiệm gần tối ưu và thời gian chạy khá ngắn. Các thuật toán thuộc loại này tạm gọi là các thuật toán heuristic, chúng được sử dụng để giải quyết các bài toán cụ thể. Mở rộng của chúng là các thuật toán metaheuristic có thể giải quyết được cả một lớp các bài toán rộng lớn. ACO (Ant Colony Optimization) là một phương pháp theo hướng tiếp cận như thế. Bài thu hoạch này sẽ trình bày về phương pháp ACO, cụ thể là hai thuật toán Ant System và Max-Min Ant System cho bài toán Traveling Salesman Problem. Cài đặt các thuật toán này thường thao tác trên các đối tượng toán học như tập hợp, danh sách, hình học, đồ thị, yêu cầu cần phải đáp ứng việc tính toán nhanh với khối lượng lớn, với thời gian nhanh và độ chính xác cao. Thường thì các ngôn ngữ lập trình cấp thấp mới đáp ứng những yêu cầu này, nhưng lập trình với chúng đòi hỏi mất rất nhiều thời gian. Và Maple đã giải quyết được việc này. Maple rất “mạnh” (mạnh, ở đây có thể hiểu theo hai nghĩa là tốc độ xử lý nhanh, chính xác và thời gian lập trình phải bỏ ra là ít) trong việc tính toán symbolic, numeric, … và các đối tượng toán học khác. Bài thu hoạch này sẽ sử dụng Maple để cài đặt các thuật toán tìm tất cả đường đi, đường đi ngắn nhất, Ant System và Max-Min Ant System cho bài toán Traveling Salesman Problem. Lời cảm ơn, em chân thành xin dành cho thầy Nhơn vì những kiến thức của Thầy mang lại để giúp em có được cũng như hoàn thành tốt bài thu hoạch này. Ant Colony Optimization I. PHƯƠNG PHÁP ANT COLONY OPTIMIZATION 1. Giới thiệu Phương pháp tối ưu hóa đàn kiến (Ant Colony Optimization - ACO) là một mô hình để thiết kế các thuật toán metaheuristic cho việc giải quyết bài toán tối ưu hóa tổ hợp (Combinatorial optimization problems). 1.1. Bài toán tối ưu hóa tổ hợp Bài toán tối ưu hóa tổ hợp được định nghĩa như sau: Cho một tập C = {c 1 , c 2 , c n }. Một tập con S của C là một phương án để giải quyết bài toán. Tập là tập tất cả các phương án có thể, vì thế S là một phương án khả thi nếu Một hàm giá trị z xác định như sau, z : , mục tiêu là tìm phương án khả thi S* có giá trị nhỏ nhất: S* và z(S*) z(S), S F. Nhiều bài toán tối ưu quan trọng trong lý thuyết và thực tế là các bài toán thuộc loại tối ưu hóa tổ hợp. Ví dụ, bài toán tìm đường đi ngắn nhất, cũng như nhiều bài toán có ý nghĩa quan trọng khác trên thực tế như bài toán người chào hàng, bài toán phân công lao động, bài toán định tuyến mạng, bài toán lập lịch công việc, bài toán lập lịch bay cho các hãng hàng không, và nhiều bài toán khác nữa. Một bài toán tối ưu hóa tổ hợp hoặc thuộc loại tìm giá trị nhỏ nhất hoặc là thuộc loại bài toán tìm giá trị lớn nhất. Các phương pháp giải loại bài toán này Ant Colony Optimization phần lớn là các phương pháp tìm kiếm heuristic (các thuật toán metaheuristic). Sau đây là các thuật toán đã được sử dụng: • Thuật toán tìm kiếm cục bộ (Local search) • Thuật toán mô phỏng luyện kim (Simulated annealing) • Thuật toán GRASP(Greedy Randomized Adaptive Search Procedure) • Thuật toán bầy đàn (Swarm intelligence) • Thuật toán tìm kiếm theo bảng(Tabu search) • Thuật toán di truyền (Genetic algorithms) • Thuật toán tối ưu hóa đàn kiến (Ant colony optimization) Metaheuristic là một tập các lý thuyết thuật toán được dùng để xác định các phương pháp heuristic sao cho nó phù hợp với một lớp bài toán rộng lớn. Nói cách khác metaheuristic có thể được xem như là một phương pháp heuristic có tính tổng quát, nó được thiết kế để hướng dẫn các heuristic trong các bài toán cơ bản hướng về những miền hứa hẹn trong không gian tìm kiếm các phương án tối ưu. Một metaheuristic là khung thuật toán tổng quát có thể áp dụng cho nhiều loại bài toán tối ưu khác nhau tất nhiên là cùng với những điều chỉnh nho nhỏ để làm cho chúng trở nên phù hợp với các bài toán cụ thể. 1.2. Tối Ưu Hóa Đàn Kiến (ACO) ACO là một metaheuristic có thể áp dụng để giải quyết rất nhiều bài toán tối ưu tổ hợp, thuật toán đầu tiên đã được phân loại trong lớp các thuật toán ACO được đưa ra năm 1991 và kể từ đó nguyên tắc căn bản đã có nhiều thay đổi khác nhau. Đặc điểm cơ bản của các thuật toán ACO là sự kết hợp giữa thông tin heuristic dựa vào đặc điểm của phương án có nhiều hứa hẹn và thông tin nhận được qua các phương án tốt đã tìm được ở bước trước. Các thuật toán metaheuristic là các thuật toán để tránh hiện tượng tối ưu cục bộ, nó điều chỉnh Ant Colony Optimization các heuristic: hoặc là heuristic tạo ra bắt đầu từ một phương án trống sau đó thêm các thành phần để nó trở thành phương án hoàn chỉnh và tốt, hoặc là heuristic tìm kiếm cục bộ bắt đầu từ một phương án hoàn chỉnh sau đó thay đổi lại một số thành phần để đạt được một phương án tốt hơn. ACO bao gồm một lớp các thuật toán trong đó thuật toán đầu tiên là Ant System (AS) được đề xuất bởi Colorni, Dorigo và Maniezzo. Ý tưởng chính làm cơ sở của thuật toán là lấy cảm hứng từ hành vi của đàn kiến trong tự nhiên, đó là quá trình tìm kiếm các lời giải song song dựa vào các dữ liệu cục bộ và dựa vào cấu trúc động chứa các thông tin thu được qua các bược giải trước. Sự tổng hợp các hành vi nổi trội từ quá trình giao tiếp giữa các phần tử trong quá trình tìm kiếm của chúng thực sự là có hiệu quả trong việc giải quyết các bài toán tối ưu hóa tổ hợp. Các con kiến đã giao tiếp với nhau như thế nào và làm sao để chúng lựa chọn được con đường tốt hơn để đi. Qua các nghiên cứu người ta biết được rằng các con kiến trong tự nhiên để lại một vết hóa chất (pheromone trail), chúng có khả năng ứ đọng, bay hơi và có thể nhận biết bởi các con kiến khác, các vệt mùi chính là phương tiện giao tiếp báo cho các con kiến khác thông tin về đường đi đó một cách gián tiếp. Các con kiến sẽ lựa chọn đường đi nào có cường độ mùi lớn nhất tại thời điểm lựa chọn để đi, nhờ cách giao tiếp mang tính gián tiếp và cộng đồng này mà đàn kiến trong tự nhiên tìm được đường đi ngắn nhất. Dựa vào ý tưởng trên, các thuật toán ACO sử dụng thông tin heuristic (chính là thông tin có được do các dữ liệu đầu vào của bài toán) kết hợp thông tin từ các vết mùi của các con kiến nhân tạo (artificial ant) để giải các bài toán tối ưu tổ hợp khó bằng cách đưa về bài toán tìm đường đi tối ưu trên đồ thị cấu trúc tương ứng được xây dựng từ đặc điểm của từng bài toán. Mỗi con kiến Ant Colony Optimization nhân tạo xây dựng lời giải của chúng dựa vào luật phân phối xác suất của các vết mùi nhân tạo và các thông tin heuristic. Lược đồ thuật toán ACO tổng quát áp dụng cho bài toán tối ưu tổ hợp: Procedure ACOMetaheuristic Set parameters, initialize pheromone trails while (termination condition not met) do ConstructAntsSolutions ApplyLocalSearch (optional) UpdatePheromones end-while end-procedure Như đã nhận định ở trên ACO thực chất là tìm kiếm ngẫu nhiên dựa vào thông tin heuristic kết hợp với thông tin học tăng cường. So với các thuật toán heuristic cổ điển ACO mở rộng thêm quá trình học tăng cường, các con kiến tỏ ra thích nghi hơn với môi trường dựa vào các vệt mùi tích lũy trên các cạnh đồ thị. Thuật toán Ant System (AS) là thuật toán đầu tiên trong lớp các thuật toán ACO được đề xuất bởi Dorigo trong luận án tiến sỹ của ông năm 1991. Thuật toán AS hướng đến giải quyết bài toán tìm đường đi tối ưu trong đồ thị. Mặc dù thuật toán AS vẫn còn thua kém các thuật toán tốt nhất trong việc giải quyết bài toán trên, tuy nhiên ý tưởng của nó thực sự là mới mẻ và tỏ ra có triển vọng. Về sau đã có rất nhiều cải tiến của thuật toán này do chính Dorigo đề xuất, cũng như rất nhiều các thuật toán ACO khác đều dựa trên ý tưởng của thuật toán AS song đã khắc phục được một số nhược điểm của thuật toán này. Ant Colony Optimization • Ant System - Dorigo Maniezzo, & Colorni (1991) • Elitist AS - Dorigo (1992); Dorigo, Maniezzo & Colorni (1996) • Ant-Q - Gambardella & Dorigo (1995); Dorigo & Gambardella (1996) • Ant Colony System - Dorigo & Gambardella (1996) • Max-Min AS - Stutzle & Hoos (1996, 2000); Stutzle (1999) • Rank-based AS - Bullnheimer, Hartl, & Strauss (1997, 1999) • ANTS - Maniezzo (1999) • Hyper-cube AS - Blum, Roli, & Dorigo (2001); Blum & Dorigo (2004) 1.3. Thí Nghiệm Cầu Đôi Hành vi tìm thức ăn của các con kiến là dựa trên giao tiếp gián tiếp qua các vết mùi (chất pheromone). Khi di chuyển từ nguồn thức ăn trở về tổ các con kiến để lại mùi trên mặt đất, các con kiến có thể cảm nhận được mùi và chúng có khuynh hướng chọn theo xác suất các con đường mà được đánh dấu tập trung nhiều mùi nhất. Một số nghiên cứu để tìm hiểu hành vi của loài kiến đã được tiến hành mà một trong những thí nghiệm nổi tiếng nhất là thí nghiệm của Deneubourg và các cộng sự của ông năm 1989, thí nghiệm này là cơ sở lý thuyết đầu tiên và cũng tạo ra ý tưởng cho thuật toán ACO mà Dorigo đưa ra sau này. Ông sử dụng một cầu đôi nối giữa một cái tổ của loài kiến Argentine là I. humilis với nguồn thức ăn. Ông đã thực hiện thí nghiệm nhiều lần và thay đổi tỉ số r giữa độ dài của 2 nhánh cầu. Ant Colony Optimization Trong thí nghiệm đầu tiên hai nhánh cầu có chiều dài bằng nhau. Khi bắt đầu các con kiến di chuyển tự dâo giữa tổ và nguồn thức ăn, người ta quan sát tỉ lệ phần trăm các con kiến chọn các nhánh trong 2 nhánh qua thời gian. Kết quả thu được như sau, cho dù giai đoạn khởi đầu các lựa chọn ngẫu nhiên xảy ra, song cuối cùng thì các con kiến đều hầu như chỉ đi qua một nhánh. Kết quả này có thể được giải thích như sau. Khi bắt đầu một lần thử không có vệt mùi nào trên cả 2 nhánh cầu, sau đó các con kiến sẽ không có cái gì đề làm căn cứ lựa chọn và chúng sẽ chọn ngẫu nhiên với cùng một xác suất bất kì nhánh nào trong 2 nhánh. Còn nữa, vì các con kiến để lại mùi khi di chuyển, nên nhánh [...]... yêu cầu cần phải đáp ứng việc tính toán nhanh với khối lượng lớn, với thời gian nhanh và độ chính xác cao Thường thì các ngôn ngữ lập trình cấp thấp mới đáp ứng những yêu cầu này, nhưng lập trình với chúng đòi hỏi mất rất nhiều thời gian Và Maple đã giải quyết được việc này Maple rất “mạnh” (mạnh, ở đây có thể hiểu theo hai nghĩa là tốc độ xử lý nhanh, chính xác và thời gian lập trình phải bỏ ra là... 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: end if end do return paths; end proc Ant Colony Optimization Dưới đây là mã trong Maple Ant Colony Optimization Ant Colony Optimization 2.4.Thủ tục thuật toán Ant System Khi ta đã có thủ tục tìm một đường... hoạch với công cụ Maple như tìm tất cả đường đi, tìm đường đi ngắn nhất, thuật toán ant system, thuật toán max-min ant system, … cho bài toán TSP 2.1.Xây dựng các thành phố và đường đi Thành phố và đường đi ở đây tương ứng lần lượt với các đỉnh và các cạnh trong đồ thị Để sử dụng đối tượng đồ thị trong Maple ta phải khai báo package ‘GraphTheory’ Ở trong chương trình, ta sử dụng thêm package ‘RandomGraphs’... Ant Colony Optimization Với thủ tục trên thì thủ tục tìm đường đi ngắn nhất cho bài toán TSP đơn giản chỉ là việc so sánh độ dài giữa các đường đi được tìm thấy Kết quả thực nghiệm cho thấy chỉ cần khoảng 20 đỉnh với một đồ thị đầy đủ thì thủ tục trên mất khoảng 1 tiếng để tìm ra lời giải trên cấu hình máy (Core Dual 2.8 Ghz, 4GB RAM, WIN 7, thiết lập chương trình ở mức chiếm 50% CPU) Ant Colony Optimization. .. tin heuristic và sử dụng tìm kết hợp kiếm địa phương … 3.1 Số lượng kiến Số lượng kiến trong các bài toán khác nhau cần có những điều chỉnh khác nhau Nếu số lượng kiến quá nhiều thì quá trình tìm kiếm sẽ mất nhiều thời gian tính toán, đồng thời chưa chắc đã tăng hiệu quả tìm kiếm lên Tất nhiên là nếu số lượng kiến quá ít thì quá trình tìm kiếm sẽ rất khó khăn bởi vì với số ít Ant Colony Optimization. .. được tận dụng triệt để, còn các cường độ mùi sẽ bị giảm nhanh và không có tác dụng mấy Còn nếu chọn lớn thì thuật toán sẽ gần với tìm kiếm ngẫu nhiên và ít phụ thuộc vào các thông tin heuristic đồng thời khả năng học tăng cường cũng giảm theo 3 Các chú ý khi áp dụng Các chú ý sau đây làm tăng khả năng cho thuật toán ACO khi áp dụng vào các bài toán khác nhau Có nhiều vấn đề cần quan tâm khi ta áp dụng. .. gian tìm kiếm trong ACO chính là các thủ tục xây dựng lời giải ngẫu nhiên của các con kiến Xem xét khi thuật toán ACO không sử dụng thông tin Ant Colony Optimization heuristic (bằng cách đặt tham số) Trong trường hợp này, quá trình cập nhật mùi sẽ gây ra sự thay đổi từ không gian tìm kiếm mẫu cố định ban đầu thành một không gian mẫu khác và ở không gian này sự lựa chọn các phương án chỉ phụ thuộc vào... ưu tổ hợp điển hình và để áp dụng các thuật toán ACO bởi vì nó là một bài toán NP-khó và thường nảy sinh nhiều trong các ứng dụng, dễ dàng áp dụng các thuật toán ACO Nó cũng là một bài toán rất trực quan, dễ hiểu không như nhiều bài toán NP-khó khác Các bước thực thi của thuật toán ACO trên bài toán TSP là dễ hình dung, không có nhiều khó khăn về mặt kỹ thuật Phần này ta sẽ tìm hiểu chi tiết về các... đến hiện tại Còn khi sử dụng update iteration-best thì số lượng các cạnh được tăng cường mùi là nhiều hơn và sự tìm kiếm cũng phân tán hơn Các kết quả thực nghiệm cho thấy rằng, với những bài toán TSP nhỏ thì tốt nhất là chỉ sử dụng update iteration-best Trong khi đó với những bài toán TSP lớn khoảng vài trăm đỉnh thì hiệu suất tốt nhất đạt được với việc sử dụng chú Ant Colony Optimization trọng đến... là xấu Với phần nhiều các bài toán ứng dụng của ACO các lựa chọn dựa trên trực quan mà người ta nhận thấy ngay thường đưa lại hiệu quả tốt Ant Colony Optimization 3.3 Điều chính giữa sự học tăng cường và khám phá Các thuật toán metaheuristic muốn có hiệu quả tốt thì cần có sự điều chỉnh phù hợp giữa việc sử dụng kinh nghiệm tìm kiếm với việc khám phá các không gian tìm kiếm mới Các thuật toán ACO điều . Ant Colony Optimization ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization và hiện thực với. MHV: CH1101158 Ant Colony Optimization 01 – 2013 ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG Tìm hiểu Ant Colony Optimization và hiện thực. như hoàn thành tốt bài thu hoạch này. Ant Colony Optimization I. PHƯƠNG PHÁP ANT COLONY OPTIMIZATION 1. Giới thiệu Phương pháp tối ưu hóa đàn kiến (Ant Colony Optimization - ACO) là một mô hình

Ngày đăng: 10/04/2015, 01:31

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

  • I. PHƯƠNG PHÁP ANT COLONY OPTIMIZATION

    • 1. Giới thiệu

    • 1.1. Bài toán tối ưu hóa tổ hợp

    • 1.2. Tối Ưu Hóa Đàn Kiến (ACO)

    • 1.3. Thí Nghiệm Cầu Đôi

    • 2. Bài Toán TSP và Thuật Toán áp dụng

    • 2.1. Bài toán TSP

    • 2.2. Thuật toán Ant System

    • 2.3. Thuật toán Max-Min Ant System

    • 3. Các chú ý khi áp dụng

    • 3.1. Số lượng kiến

    • 3.2. Xác định các vệt mùi

    • 3.3. Điều chính giữa sự học tăng cường và khám phá

    • 3.4. Giới hạn danh sách láng giềng

    • II. CÀI ĐẶT VỚI MAPLE

      • 1. Tại sao là Maple

      • 2. Cài Đặt Thuật Toán

        • 2.1. Xây dựng các thành phố và đường đi

        • 2.2. Thủ tục tìm tất cả đường đi cho bài toán TSP

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

        • 2.4. Thủ tục thuật toán Ant System

        • 2.5. Thủ tục thuật toán Max-MinAntSystem

Tài liệu cùng người dùng

Tài liệu liên quan