Tính hiệu quả của thuật toán Heuristic

Một phần của tài liệu một số thuật toán giải bài toán phủ tập hợp và ứng dụng (Trang 46 - 51)

Trong phần này chúng ta sẽ thảo luận tính hiệu quả thuật toán heuristic cho bài toán SCP với những kết quả đã đƣợc kiểm nghiệm qua các dữ liệu mẫu trong thƣ viện OR. Phần lớn các thuật toán heuristics này dựa trên sự quan sát để đánh giá. Nhƣ dựa trên vectơ nhân tử Lagrangian gần tối ƣu u, giá trị Lagrangian c uj( )nhằm cung cấp những thông tin đáng tin cậy cho việc lựa chọn cột j. Dựa trên thuộc tính

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

này, giá trị Lagrangian đƣợc sử dụng để tính toán, với mỗi j N một trọng số j đƣợc sắp hạn theo khả năng xảy ra của chúng để lựa chọn cho một giải pháp tối ƣu. Những trọng số này đƣợc cho bởi đầu vào của một thuật toán Heuristic đơn giản đƣợc tìm thấy bằng phƣơng pháp tham lam mà chúng ta hy vọng nó là giải pháp tốt để giải quyết bài toán SCP. Dựa vào kinh nghiệm tính toán, chúng ta thấy rằng hầu hết các nhân tử Lagrangian gần tối ƣu gần tƣơng đƣơng có thể đƣa ra các giải pháp cho bài toán SCP với chất lƣợng khác nhau không đáng kể. Ngoài ra, một số vector nhân tử u không thể tìm thấy đƣợc mối liên hệ giữa giá trị cận dƣới L u( ) và hiệu quả giải quyết bài toán SCP. Do đó chúng ta nên sử dụng các thuật toán heuristic để tìm vectơ nhân tử Lagrangian gần tối ƣu.

Trƣớc hết chúng tôi sẽ trình bày cách tiếp cận tham lam cho tất cả các thuật toán dƣới đây. Một giải pháp S đƣợc khởi tạo rỗng, gọi M’ là tập hợp của những

dòng không phủ bằng với M. Thực hiện các bƣớc lặp trong đó cột j với trọng số j tốt nhất sẽ đƣợc thêm vào S và cập nhật lại M‟. Trọng số j thƣờng là một hàm ứng với giá trị ban đầu cj, số dòng trong M’ đƣợc phủ bằng các cột j và những nhân tử liên quan đến những dòng này. Vào cuối thủ tục, tập S thƣờng bao gồm một tập R là tập các cột dƣ thừa, ví dụ nhƣ cột j là cột dƣ thừa nếu nhƣ S\{ }j vẫn là một giải pháp khả thi cho bài toán SCP. Giải pháp khả thi để giải quyết bài toán SCP đƣợc định nghĩa bởi các cột R và các dòng M \ j S R\ Ij là loại bỏ tối ƣu những cột dƣ thừa.

Beasley đã đƣa ra thuật toán khả thi giải quyết bài toán SCP trong [5] với mỗi bƣớc lặp là một thủ tục thực hiện sự tối ƣu hóa dƣới gradient. Tập S đƣợc khởi tạo

với tất các các cột đƣợc chọn trong giải pháp cho bài toán Lagrangian. Sau đó với mỗi dòng i không bị phủ bởi S chúng ta sẽ tìm cột có giá trị nguyên thủy nhỏ nhất trong Ji để thêm vào S. Cuối cùng những cột trong S sẽ đƣợc xem xét theo thứ tự

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

nhƣ S\ j vẫn còn là một giải pháp khả thi của bài toán SCP. Ứng với mỗi bƣớc lặp, việc cố định giá trị hàm Lagradient đƣợc thực hiện trong những lần thử loại bỏ các cột.

Trong đề xuất của Balas và Carera [3] thuật toán đƣợc đƣa ra dựa trên thủ tục dƣới gradient động. Trong thuật toán này, việc mở rộng không chỉ trong một hàm Lagrangian mà còn trong các thủ tục dƣới gradient làm việc với các vectơ nhân tử. Cho nên, giải pháp cho bài toán mở rộng bao gồm tất cả các cột có giá trị Lagrangian là 0 và những cột có giá trị nhỏ nhất phủ những dòng không mở rộng. Trong giải pháp này, ta gọi S là đƣợc hoàn thành bằng cách thêm các cột có giá trị Lagrangian nhỏ nhất phủ những dòng mà không bị phủ bởi S, hoặc thêm vào những cột trong dãy giảm dần giá trị của cj /kj với kj là số các dòng không phủ bởi cột j.

Cuối cùng các cột dƣ thừa sẽ đƣợc loại bỏ khỏi dãy sắp xếp.

Thuật toán heuristic của Lorena và Lopes [14] đã sử dụng phƣơng pháp đại diện nới lỏng và đƣa vào trong thủ tục tối ƣu hóa dƣới gradient một thuật toán heuristic tham lam giống nhƣ Beasley [5] đã đề xuất.

Trong bài báo của Ceria, Nobili và Sassano [10] đã đề xuất về ý tƣởng chính để mở rộng bài toán SCP. Đầu tiên là áp dụng thủ tục tối ƣu hóa dƣới gradient cho cả vấn đề giống nhƣ việc định nghĩa một bài toán lõi tốt. Khác với Caprara, Fisohetti và Toth [9] thay vì chọn việc khởi tạo bài toán lõi phải đƣa ra một miền giới hạn để từ đó cập nhật một cách tự động, Ceria, Nobili và Sassano đã xác định bài toán lõi bắt đầu với những tính toán cẩn thận và những thay đổi trong từng bƣớc của thuật toán. Thuật toán heuristic đƣợc thực hiện trên bài toán lõi ứng dụng để tối ƣu hóa dƣới gradient đối ngẫu nguyên thủy. Cố định 1 một biến lựa chọn sao cho phù hợp với giá trị hàm Lagrangian và giá trị trong vectơ nhân tử nguyên thủy của nó, sử dụng phƣơng pháp tham lam cho một giải pháp khả thi bắt đầu từ những giải pháp có chƣa những biến đƣợc cố định là 1 và lặp lại. Khi các cột tƣơng ứng với các biến cố định là 1 cho một giải pháp khả thi, thì việc xử lý đƣợc bắt đầu lại, mà không

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

định nghĩa lại bài toán lõi, bằng cách thay đổi một vài biến lựa chọn và thành phần heuristic tham lam.

Thuật toán heuristic đƣợc đƣa ra bởi Haddadi [12] là một biến mà Beasley đƣa ra [5]. Trong thực tế, mỗi bƣớc lặp của thủ tục tối ƣu hóa dƣới gragradient, giải pháp của bài toán Lagrangian đƣợc làm khả thi bằng một hàm heurictic tham lam dựa trên giá trị nguyên thủy.

Phần trình bày của CapraraFischetti và Toth [9] gồm 3 bƣớc chính. Đầu tiên là dựa vào bƣớc dƣới gradient. Mục đích là tìm một vectơ nhân tử Lagrangian gần tối ƣu theo nghĩa là một phƣơng pháp giải quyết linh hoạt. Bƣớc thứ hai là bƣớc heuristic, trong đó một dãy các vectơ nhân tử gần tối ƣu đƣợc xác định và mỗi vectơ các giá trị Lagrangian ràng buộc trở thành đầu vào của thủ thục heuristic tham lam. Trong bƣớc thứ ba, ta gọi cột cố định là những cột nhận giá trị 1 cho tất cả các biến liên quan đến k cột đầu tiên đƣợc lựa chọn bằng thuật toán heuristic tham lam. Thực hiện việc lặp lại ba bƣớc trên chúng ta có thể giảm đƣợc một lƣợng đáng kể số dòng và cột của bài toán SCP. Ba bƣớc trên sẽ dừng khi không tìm đƣợc giải pháp nào tốt hơn giải pháp đã có. Sau khi áp dụng ba bƣớc trên chúng ta sẽ sử dụng hàm sơ chế để tạo ra những giải pháp khả thi. Thuật toán này luôn làm việc với một bài toán lõi đƣợc định nghĩa bằng một tập con các cột nhỏ theo mỗi chu kỳ.

Ngay cả những thuật toán heristic thành công nhất đƣợc đƣa ra để giải quyết bài toán SCP dựa trên hàm Lagrangian nới lỏng cũng có những kinh nghiệm hữu quan.

Beasly and Chu [6] giải quyết bài toán theo phƣơng pháp tiếp cận di truyền. Thuật toán của họ luôn di trì một số lƣợng các giải pháp cho bài toán SCB đƣợc mã hóa bằng các vectơ x có giá trị 0 hoặc 1. Ban đầu, một số lƣợng ngẫu nhiên các giải pháp p đƣợc tạo ra. Sau đó với mỗi bƣớc lặp hai giải pháp x1 và x2 đƣợc lựa chọn ngẫu nhiên từ các giải pháp đã có và đƣợc kết hợp với giải pháp thứ ba x3

theo cách cho 3 1 j j x x khi mà 1 2 j j x x , và cho 3 1 j j x x với xác suất là 2 1 2 ( ) / ( ( ) ( )) c x c x c x nếu

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

nhƣ 1 2

j j

x x , với c x( ) biểu thị cho giá trị tƣơng ứng của x. Sau khi định nghĩa x3 từ

x1x2, một số thành phần đƣợc lựa chọn ngẫu nhiên của x3 đƣợc thay đổi, và x3

đƣợc đƣa vào trong một giải pháp nhỏ khả thi theo cách tham lam tƣơng tự nhƣ Beasley [4] đã sử dụng. Cuối cùng, giải pháp mới x3 đƣợc thêm vào dãy các giải pháp đƣợc chọn lựa ngẫu nhiên trƣớc đây. Quá trình xử lý sẽ dừng sau một số hữu hạn các bƣớc lặp.

Trong cả hai phần trình bày của Jacobs và Brusco [13] và Brusco, Jacobs và Thompson [8] đều dựa trên giải thuật luyện thép. Trong trang đầu [13], một giải pháp S đƣợc sinh ra bởi một thuật toán tham lam, với mỗi bƣớc lặp lựa chọn ngẫu nhiên một dòng không phủ để thêm vào giải pháp những cột có chỉ số nhỏ nhất mà phủ dòng đó. Sau khi thêm, những cột dƣ thừa khả thi trong giải pháp này sẽ đƣợc loại bỏ, quá trình xử lý đƣợc lặp lại cho đến khi một giải pháp khả thi đƣợc xác định. Sau một số bƣớc lặp đƣợc thực hiện, giả sử trong đó có d cột chọn ngẫu nhiên đƣợc loại bỏ khỏi giải pháp S tƣơng ứng, cái mà sau khi hoàn thành bằng cách tối ƣu một giải pháp S’ bằng phƣơng pháp tham lam, S’ trở thành giải pháp hiện thời tốt hơn S, mặc khác S đƣợc thay thế bởi S’ với xác suất giảm theo hàm mũ của

những giá trị khác nhau của S và S’ và với một số bƣớc lặp đƣợc thực hiện. Hai cải tiến chính của Brusco, Jacobs và Thompson [8] dựa trên thuật toán mà Jacobs và Brusco [13] đề xuất. Thứ nhất, việc lựa chọn những cột để loại bỏ từ giải pháp hiện thời S là ngẫu nhiên trong mỗi lần lặp của bƣớc ba, trong khi yêu cầu của lần lặp trƣớc đó phải loại bỏ những cột sao cho việc loại bỏ đó làm cho số lƣợng những dòng không phủ là nhỏ nhất. Thứ hai, với mỗi cột j trong mỗi giải pháp có một danh sách cái gọi là sự biến hình hay những cột “tương tự” với j. Sau khi loại bỏ các cột ra khỏi giải pháp cục bộ chúng ta sẽ bổ sung mỗi cột thứ tƣ để hoàn thành giải pháp cục bộ, mỗi cột trong giải pháp này sẽ đƣợc thay thế bằng một trong số những biến hình của nó nếu nhƣ điều đó nó làm tăng tỉ lệ giữa giá trị của giải pháp cục bộ và số dòng phủ trong giải pháp cục bộ.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Một phần của tài liệu một số thuật toán giải bài toán phủ tập hợp và ứng dụng (Trang 46 - 51)