Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề Thuật toán người đưa thư

34 482 0
Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề Thuật toán người đưa thư

Đ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

Thuật toán người đưa thư ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Họ và tên: Lê Đăng Anh MSHV: CH1301003 GVHD: PGS.TS Đỗ Văn Nhơn 10 - 2014 Mục lục Thuật toán người đưa thư Thuật toán người đưa thư Giới thiệu Metaheuristic là một cách gọi chung cho các giải thuật heuristic trong việc giải quyết các bài toán tổ hợp khó. Metaheuristic bao gồm những chiến lược khác nhau trong việc khám phá không gian tìm kiếm bằng cách sử dụng những phương thức khác nhau và phải đạt được sự cân bằng giữa tính đa dạng và chuyên sâu của không gian tìm kiếm. Một cài đặt thành công của metaheuristic trong một bài toán tổ hợp phải cân bằng giữa sự khai thác được kinh nghiệm thu thập được trong quá trình tìm kiếm để xác định được những vùng với những lời giải có chất lượng cao gần tối ưu. Những ví dụ của metaheuristic bao gồm giải thuật luyện thép (SA) , giải thuật di truyền (GA) , giải thuật đàn kiến (ACO) ,…Trong đó giải thuật đàn kiến là metaheuristic dùng chiến lược của kiến trong thế giới thực để giải bài toán tối ưu. SA xuất phát từ phương thức xác suất và kỹ thuật luyện bao gồm việc nung và điều khiển làm nguội các kim loại để đạt được trạng thái năng lượng nhỏ nhất .Trong khi đó giải thuật di truyền dựa trên ý tưởng từ cơ chế di truyền trong sinh học và tiến trình tiến hóa trong cộng đồng các cá thể của 1 loài. Bài toán tìm kiếm được xem là bài toán được nhiều người quan tâm, đặc biệt là tìm kiếm tối ưu toàn cục. Một thuật toán được xem là lý thuyết vững chắc trong việc giải các bài toán tìm kiếm tối ưu toàn cục đã có nhiều ứng dụng thực tế như: tìm kiếm các trang web cần tìm trên mạng, sắp xếp thời khóa biểu, tìm kiếm đường đi tối ưu … Các bài toán này đều có thể áp dụng thuật toán đàn kiến. Nội dung đồ án này chỉ đề cập đến giải thuật metaheutistic và đặc biệt là thuật toán đàn kiến để thực hiện bài toán tìm kiếm đường đi tối ưu, cụ thể là bài toán người du lịch (TSP) (một bài toán cổ điển thuộc lớp NP-Khó được nghiên cứu sâu trong lĩnh vực tối ưu tổ hợp). 3 Thuật toán người đưa thư Danh mục hình vẽ 4 Thuật toán người đưa thư Phần 1:Thuật toán bầy kiến 1.1. Giới thiệu Vào đầu thập niên 90, một thuật toán 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 đưa thư (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 toán 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. 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 5 Thuật toán người đưa thư 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 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 toán bầy kiến 6 Thuật toán người đưa thư 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 toán ở trạng thái kết thúc. Với bài toán người đưa thư thì ĐK dừng là điều kiện đạt được khi số vòng lặp của thuật toán = 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 đưa thư 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ộ. 7 Thuật toán người đưa thư Hình 1.3: Sơ đồ chung của thuật toán 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) 8 Thuật toán người đưa thư Trong đó: • : nồng độ vết mùi trên cạnh i,j • : 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: 9 Thuật toán người đưa thư (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 toán 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 toán 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 toán ACO. Mô tả về thuật toán 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 while (termination_criterion_not_satisfied) schedule_activities 10 [...]... ant.GiaTriVong - 1)) ^ 2 End Function 31 Thuật toán người đưa thư 32 Thuật toán người đưa thư Kết luận Đồ án này tập trung đi sâu vào nghiên cứu giải thuật đàn kiến và các phương pháp cải tiến nó, giúp hiểu rõ hơn về quá trình hình thành, phát triển cũng như bản chất, cách thức mà giải thuật đàn kiến hoạt động, đồng thời áp dụng giải thuật này vào bài toán người đưa thư, một bài toán thuộc thể loại NP-Khó kinh... vài năm CPU để giải một cách chính xác Bài toán người đưa thư (TSP) là một trong những bài toán kinh điển và được đầu tư nghiên cứu trong một thời gian dài Nó góp phần quan trọng vào việc nghiên cứu giải thuật ACO: các giải thuật ACO nguyên thủy và những cải tiến của giải thuật này về sau đều được áp dụng mô phỏng bởi bài toán người du lịch 21 Thuật toán người đưa thư 2.2 Phát biểu bài toán Bất cứ một... kinh điển Tuy nhiên đồ án này vẫn chưa đi sâu vào phân tích các giải thuật khác cho bài toán người đưa thư để có thể so sánh, tìm ra điểm mạnh yếu của giải thuật này so với các giải thuật metaheuristic khác như giải thuật di truyền, luyện thép 33 Thuật toán người đưa thư Tài liệu tham khảo [1] Đoàn Duy Bình, Ứng dụng giải thuật Meta-Heuristic trong bài toán tìm đường đi ngắn nhất, 2010 [2] Geoyar,... từng đôi điểm nút có thể được tính toán một cách dễ dàng Hiện nay, có một số phần mềm như Maple, Matlab, Mathematica và một số phần mềm nghiên cứu hoạt động được thiết kế để giải quyết vấn đề hành trình thu gom và chuyển phát bưu phẩm và các vấn đề bưu chính khác Giải pháp mà gần đây các nhà toán học và các chuyên gia khoa học máy tính đã nghiên cứu đưa ra là giải pháp người bán hàng luôn phải di chuyển... Procedure 1.3.5 Thuật toán Best-Worst Ant System (BWAS) Thuật toán được đưa ra bởi Cordon vào năm 1999 Thuật toán này bao gồm một thuật toán 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 toán 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 toán BWAS có 3 daemon action thêm vào gồm... đường sẽ bay hơi 24 Thuật toán người đưa thư Hình 2.2: Sơ đồ thuật toán ACO cho bài toán TSP b) Thuật toán 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 toán Với n thành phố thì có độ phức tạp 25 Thuật toán người đưa thư Phần 3: Demo... () 18 Thuật toán người đưa thư () if (best ()) end if for each edge do end for for each edge and do end for for each nút / component do 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 19 Thuật toán người đưa thư 20 Thuật toán người đưa thư Phần... ra dựa trên mô hình thuật toán 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 toán 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 toán 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 toán đưa ra sau đây thì... cả các cạnh còn lại kề với x Duy trì tính liên thông và bảo đảm bậc mỗi đỉnh luôn lơn hơn hay bằng 2 Mô tả thuật toán 23 Thuật toán người đưa thư Tìm kiếm danh sách thứ tự các điểm mà người đưa thư có thể di chuyển đến từ điểm hiện tại, rở lại điểm xuất phát sau khi đi qua tất cả các điểm còn lại mỗi điểm một lần với khoảng cách ít nhất c) Thuật toán While (Chưa đi hết các đỉnh) { Khi đã đi đến một... được lần đầu tiên đưa ra như một vấn đề toán học vào năm 1930 và là một trong số những bài toán được nghiên cứu chuyên sâu trong lĩnh vực tổ hợp thời đó Nó được sử dụng như một sự đánh giá cho nhiều phương thức tối ưu khác nhau Thậm chí bài toán là thuộc lớp NP khó , một lượng rất lớn các heuristic và phương thức tìm kiếm cụ thể đã được biết đến vì vậy một vài trường hợp của bài toán với khoảng chục . bài toán người du lịch (TSP) (một bài toán cổ điển thuộc lớp NP-Khó được nghiên cứu sâu trong lĩnh vực tối ưu tổ hợp). 3 Thuật toán người đưa thư Danh mục hình vẽ 4 Thuật toán người đưa thư Phần. tối ưu … Các bài toán này đều có thể áp dụng thuật toán đàn kiến. Nội dung đồ án này chỉ đề cập đến giải thuật metaheutistic và đặc biệt là thuật toán đàn kiến để thực hiện bài toán tìm kiếm đường. Thuật toán người đưa thư ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN Họ và tên: Lê Đăng Anh MSHV: CH1301003 GVHD: PGS.TS Đỗ Văn Nhơn 10 - 2014 Mục lục Thuật toán người đưa thư Thuật

Ngày đăng: 24/05/2015, 09:21

Từ khóa liên quan

Mục lục

  • Giới thiệu

  • Danh mục hình vẽ

  • Phần 1:Thuật toán bầy kiến

    • 1.1. Giới thiệu

    • 1.2. Hệ thống Ant Colony - Đàn kiến nhân tạo

    • 1.3. Các sơ đồ thuật toán

      • 1.3.1. Thuật toán Ant System (AS)

      • 1.3.2. Thuật toán Ant Colony System (ACS)

      • 1.3.3. Thuật toán Max-Min Ant System (MMAS)

      • 1.3.4. Thuật toán Rank-Based Ant System (RBAS)

      • 1.3.5. Thuật toán Best-Worst Ant System (BWAS)

      • Phần 2: Bài toán người đưa thư

        • 2.1. Giới thiệu

        • 2.2. Phát biểu bài toán

        • 2.3. Mục tiêu bài toán

        • 2.4. Các bước tiến hành

        • 2.5. Sử dụng nguyên lý tham lam cho bài toán người du lịch

        • 2.6. Giải thuật ACO cho bài toán người du lịch

        • Phần 3: Demo Ứng dụng

          • 3.1. Giao diện chương trình

          • 3.2. Một số hàm trong chương trình

          • Kết luận

          • Tài liệu tham khảo

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

Tài liệu liên quan