THUẬT TOÁN HEURISTIC GIẢI BÀI TOÁN PHỦ TẬP HỢP

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 36 - 76)

2.3.1. Thuật toán Heuristic

Meta – RaPS là một meta-heuristic đƣợc phát triển bởi DePuy (2002). Nó phát triển từ một máy tính heuristic đƣợc thiết kế bởi Arcus (1966) để giải quyết bài toán cân bằng dây chuyền lắp ráp – COMSOAL (Computer Method of Sequencing Operations for Assembly Lines). Nền tảng của Meta-RaPS là việc sử dụng ngẫu nhiên nhƣ là một cơ chế nhằm tránh việc tối ƣu cục bộ. Meta-RaPS là một thủ tục tìm kiếm lặp lại. Với mỗi bƣớc lặp, nó xây dựng một giải pháp khả thi thông qua việc sử dụng một heuristic cơ sở một cách ngẫu nhiên, sau đó áp dụng một cải tiến heuristic để cải thiện các giải pháp khả thi. Giải pháp tốt nhất đƣợc trả về sau một số các bƣớc lặp.

Heuristic cơ sở tạo ra một giải pháp khả thi bằng cách thêm vào những phần tử cơ bản theo từng bƣớc. Những phần tử cơ bản trong một giải pháp cho bài toán tổ hợp, bài toán du lịch, bài toán phủ tập hợp SCP, đƣợc mô tả là một tập

BE={1,2,…,n}, và những phần tử cơ bản khả thi (FE BE) là những phần tử thích

hợp để lựa chọn tại mỗi bƣớc của giải pháp cơ sở. Mỗi phần tử cơ bản khả thi đƣợc biểu thị bởi một giá trị tham lam (Pi với i FE) liên quan đến một vài ràng buộc về độ ƣu tiên. Phụ thuộc vào định nghĩa của các ràng buộc về độ ƣu tiên, phần tử khả thi nhất có thể giả định là chi phí cao nhất hoặc thấp nhất. Thay vì luôn chọn phần tử khả thi tốt nhất nhƣ trong thuật toán heuristics tham lam, thuật toán Meta-RaPS giới thiệu tính ngẫu nhiên thông qua hai tham số: %priority và %restriction. %priority đƣợc xác định bằng tỉ lệ phần trăm của thời gian mà các phần tử cơ bản

khả thi tốt nhất sẽ đƣợc chọn. Thời gian còn lại, phần tử đƣợc thêm vào giải pháp sẽ đƣợc lựa chọn ngẫu nhiên từ danh sách ứng cử, danh sách này bao gồm tất cả các phần tử đƣợc xem xét có thể chấp nhận. Một phần tử có thể chấp nhận là một trong số những phần tử có giá trị tham lam gần bằng với giá trị phần tử khả thi tốt nhất.

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

Tham số thứ hai, %restriction đƣợc sử dụng để xác định liệu một phần tử cơ bản

khả thi là chấp nhận đƣợc hay không và nó sẽ xuất hiện trên danh sách ứng cử viên (CL). CL đƣợc tạo bằng những cách sau đây:

Nếu phần tử khả thi tốt nhất (k) đƣợc xác định giống nhƣ là một phần tử có giá trị tham lam nhỏ nhất thì:

E

min

k j F j

P P khi đó CL j j: FE và Pj Pk (1 % esr tricti no /100)

Ngƣợc lại, nếu phần tử khả thi tốt nhất (k) là phần tử có giá trị tham lam cao nhất thì: E m ax k j j F P P khi đó CL j j: FE và Pj Pk (1 % esr tricti no /100)

Các phần tử sẽ đƣợc thêm vào giải pháp cho đến khi một giải pháp khả thi đƣợc sinh ra.

Sau khi giải pháp khả thi đƣợc xây dựng, một thuật toán cải tiến (thƣờng sử dụng một thuật toán tìm lân cận) có thể đƣợc áp dụng để cải tiến giải pháp. Tham số

%improverment đƣợc sử dụng để xác định có bao nhiêu giải pháp khả thi sẽ đƣợc

cải tiến. Giả sử *

efor improveme

b e nt

Z là giá trị hàm đối tƣợng tốt nhất đƣợc tìm thấy trƣớc khi áp dụng thủ tục cải tiến, một cấu trúc giải pháp sẽ đƣợc cải tiến nếu giá trị hàm đối tƣợng của nó là Z thỏa mãn yêu cầu sau:

*

efor impr eme

1 % r /100 b e ov

Z imp ovent Z cho bài toán tối thiểu hoặc

*

efor impr eme

1 % r /100 b e ov

Z imp ovent Z cho bài toán tối đa

Ý tƣởng cơ bản của thuật toán này là kỳ vọng rằng các giải pháp chƣa đƣợc cải thiện tốt để dẫn đến giải pháp láng giềng tốthơn.

2.3.2. Ứng dụng thuật toán Heuristics giải bài toán SCP

Các bƣớc cần thiết để áp dụng thành công thuật toán Meta-RaPS là thiết kế giải pháp cơ sở Heuristics và cải tiến nó một cách hiệu quả. Để giải quyết bài toán SCP, một giải pháp heuristic cơ sở sẽ đƣợc sử dụng ở bƣớc đầu và biểu diễn nó nhƣ thế nào để phát triển thành một thuật toán hiệu quả phối hợp với thuật toán Meta-RaPS.

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

Nỗ lực đầu tiên của nghiên cứu này là để sửa đổi thuật toán heuristic tham lam của Chvatal‟s (1979). Thuật toán heuristic tham lam đánh giá lại một cột j bằng một hàm f c k( ,j j) cj /kj, trong đó cjlà trọng số của cột j, và kj là số dòng không phủ hiện thời cái mà có thể đƣợc phủ bởi cột j, ta có kj i i: Ij \ n XIn , và luôn luôn thêm một giải pháp tập (X) những cột có giá trị cj /kj nhỏ nhất. Trong thuật toán Meta-RaPS, chúng ta sẽ chọn f c k( ,j j) cj/kj nhƣ là ràng buộc ƣu tiên, vì thế giá trị tham lam cho mỗi cột j(Pj) là cj /kj. Trong suốt thời gian %priority, cột có giá trị Pj nhỏ nhất sẽ đƣợc lựa chọn, trong khi đó thời gian yêu cầu, một cột từ tập CL sẽ đƣợc lựa chọn ngẫu nhiên. Sau khi một giải pháp khả thi đƣợc xây dựng, tất cả các cột dƣ thừa (cột j là dƣ thừa nếu X \ j vẫn còn là một tập phủ) sẽ đƣợc loại khỏi giải pháp giống nhƣ là cột dƣ thừa có giá trị lớn nhất sẽ đƣợc loại bỏ trƣớc tiên nhất. Hình 2.1 mô tả việc xác định của thuật toán heuristic greedy.

Mỗi cột trong giải pháp có một biến liên quan j để biết nó có phải là cột dƣ thừa hay không. Chúng ta định nghĩa min 1

j

j i I i , trong đó i là số cột đƣợc chọn mà có thể phủ dòng i. Do đó, cột j là dƣ thừa nếu và chỉ nếu j 0. Theo điều kiện đó biến kji có thể dễ dàng cập nhật trong suốt bƣớc lặp để thêm một cột cho giải pháp nhƣ trong Hình 2.2. Giá trị khởi tạo của kj Ij ,j J và giá trị khởi tạo của i 0,i I. Theo cách này, độ phức tạp để thực hiện việc thêm một cột và cập nhật giá trị kjiO q( ), trong đó thời gian cần thiết cho mỗi lần thực hiện dòng 4 là O n( ). Vì vậy, thời gian cần thiết để xây dựng thủ tục này là

( )

O rn q , trong đó r m là số lƣợng các giải pháp đƣợc tìm thấy. Vì thế số lƣợng trung bình của các giải pháp là m d q n/ , thời gian hoàn thành trung bình trong trƣờng hợp này là O q( ).

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

Hình 2.1. Thuật toán Meta-RaPS tìm giải pháp cơ sở

Hình 2.2. Thủ tục cập nhật

Để cải tiến giải pháp chất lƣợng hơn, một thủ tục tìm kiếm giải pháp láng giềng có thể đƣợc áp dụng sau khi có giải pháp cơ sở. Thủ tục tìm kiếm này sẽ xác định những giải pháp láng giềng nhƣ sau: nếu hai giải pháp chia sẻ ít nhất một cột, hai giải pháp này đƣợc gọi là giải pháp láng giềng, nghĩa là cho 2 giải pháp X1 và X2, nếu X1 X2 thì X1 và X2 là giải pháp láng giềng, ngƣợc lại chúng là giải pháp tách rời.

Một giải pháp láng giềng thu đƣợc qua hai bƣớc của một thủ tục. Bƣớc đầu tiên, một số cột đƣợc xác định bởi tham số ngƣời sử dụng định nghĩa, đƣợc loại bỏ ngẫu

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

nhiên từ giải pháp khả thi, vì thế những giải pháp này sẽ trở thành giải pháp không khả thi bởi vì chúng có những dòng không bị phủ. Sau đó từng phần giải pháp (giải pháp cục bộ) đƣợc làm khả thi bằng cách giải quyết bài toán SCP đã đƣợc giảm kích thƣớc đƣợc tạo thành từ các dòng không phủ và các cột có thể phủ các dòng này. Mã giả của thủ tục tìm kiếm láng giềng đƣợc thể hiện ở Hình 2.3. Tham số

search_magnitude đƣợc sử dụng để điều khiển việc loại bỏ một số cột từ giải pháp

hiện thời. Số cột đƣợc loại bỏ bằng X search_magnitude. Sau khi các cột đƣợc

loại bỏ, bài toán SCP giảm kích thƣớc đƣợc xác định ở Hình 2.4

' ' ' ij ' ' min j j: j 1, '; j 0 or 1, ' j J j J c x a x i I x j J Hình 2.3. Thủ tục tìm giải pháp láng giềng

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

Hình 2.4. Thuật toán Meta-RaPS giải bài toán SCP

Trong đó ' \ m m X I II và ' ' i i I JJ

Một thuật toán heuristic đơn giản, giống nhƣ là một thuật toán heuristic tham lam, có thể đƣợc sử dụng để giải quyết bài toán SCP giảm kích thƣớc trong trƣờng hợp này. Tuy nhiên, từ kinh nghiệm tính toán của chúng ta, việc áp dụng một cách ngẫu nhiên thuật toán heuristic cơ sở tham lam, Meta-RaPS SCP cơ sở, để làm giảm kích thƣớc bài toán SCP luôn luôn sinh ra giải pháp láng giềng tốt hơn. Sau khi kích thƣớc của bài toán SCP đƣợc làm giảm, một giải pháp láng giềng đƣợc thu đƣợc

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

bằng cách kết hợp các giải pháp của bài toán SCP nhỏ (X‟) và giải pháp thành phần (X) và việc loại bỏ các cột dƣ thừa. Số lƣợng giải pháp láng giềng để nghiên cứu đƣợc điều khiển bởi tham số imp_iteration.

Lƣu ý trong Hình 2.3 cho thấy rằng một khi các thủ tục cải tiến tìm thấy một giải pháp tốt hơn, việc tìm kiếm láng giềng kế tiếp sẽ đƣợc thực hiện xung quanh giải pháp tốt hơn này. Một chiến lƣợc tìm kiếm giải pháp láng giềng khác, trong đó việc tìm kiếm giải pháp láng giềng sẽ luôn đƣợc thực hiện quanh giải pháp khởi tạo, cũng đƣợc xem xét nhƣng thông thƣờng chúng cho kết quả kém.

Thời gian để hoàn thành thủ tục tìm kiếm giải pháp láng giềng là O r n( ' ' q'), trong đó r' m' là số các yếu tố của tập giải pháp để làm giảm kích thƣớc bài toán SCP, m' I' , 'n J' và ij

' '

'

i I j J

q a . Thời gian hoàn thành trong trƣờng hợp trung bình là O q( '). Khi phƣơng thức tìm kiếm giải pháp láng giềng đƣợc nhúng vào trong thuật toán Meta-RaPS, thời gian hoàn thành của tất cả các thủ tục là

[( ) ( ' ' ')]

O rm q r n q và thời gian trong trƣờng hợp trung bình là O q( q'), trong đó imp it ati n_ er o .

Ví dụ 2.3. Sử dụng thuật toán Heuristic tham lam giải bài toán phủ tập hợp với

yêu cầu chọn một số tối thiểu (của tập có kích thƣớc bất kỳ) của những tập sao cho những tập mà bạn chọn phải bao gồm tất cả các phần tử đƣợc chứa trong một tập bất kỳ của dữ liệu đầu vào. Ngoài ra bạn muốn giảm thiểu chi phí của các tập này.

Đầu vào:

- Các phần tử cơ sở, hoặc tập tổng quát U { ,u u1 2,..., }un

- Tập con S S1, 2,...,Sk U

- Giá trị tƣơng ứng c c1, 2,...,ck

Đầu ra:

tìm một tập I 1, 2,...,m nhằm giảm tổi thiểu i

i I

c sao cho i

i I

S U

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

Hƣớng giải quyết

Gọi C là tập các phần tử phủ hiện tại.

Gọi là chi phí trung bình cho mỗi nút mới đƣợc phủ. Thuật toán

1. C 0

2. While C Udo

Tìm tập có hiệu quả chi phí là nhỏ nhất ta gọi là S Cho c S( ) S C Với mỗi e S C, đặt p ic er e( ) C C S 3. Trả về tập đóng gói Ví dụ 2.4. Ví dụ về bài toán SCP Hình 2.5. Ví dụ bài toán SCP Chọn Z: ( ) 7 1 7 Z c Z S C Chọn X: ( ) 6 2 3 X c X S C

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Chọn Y: ( ) 15 7.5 2 Y c Y S C

Hình 2.6. Kết quả sau khi thực hiện thuật toán tham lam

Tổng giá trị = 6 + 15 + 7 = 28

Ví dụ 2.5. cho U 1, 2,..., 6 và S' S S1, 2,...,S10 . Phần tử và chi phí của mỗi tập đƣợc cho nhƣ sau: 1 1, 2 S c S( )1 3 2 3, 4 S c S( 2) 3 3 5, 6 S c S( 3) 3 4 1, 2,3, 4,5, 6 S c S( 4) 14 5 1 S c S( 5) 1 6 2 S c S( 5) 1 7 3 S c S( 7) 1 8 4 S c S( 8) 1 9 5 S c S( 9) 1 10 6 S c S( 10) 1

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

Hình ví dụ thuật toán tham lam

Chúng ta có một vài tập khả thi cho ví dụ này nhƣ là S S S1, 2, 3 và 2, 5, 6, 9, 10

S S S S S . Tuy nhiên tập phủ với chi phí nhỏ nhất là S S S S S S5, 6, 7, 8, 9, 10 có

chi phí là 6. Ví dụ nếu C S S S1, 2, 9 trong ví dụ này, ta có thể tính giá trị ứng với tập con S3nhƣ sau:

3 3 ( ) 3 3 | | 1 c S S C

Chúng ta gọi Hn in11 /i là số Harmonic n-th và ta có logn Hn logn 1.

Mệnh đề 2.1. Thuật toán tham lam là một thuật toán xấp xỉ Hn cho tập tối thiểu của bài toán phủ tập hợp, trong đó 1 1 ... 1 log

2 n H n n Chứng minh: i) Chúng ta biết r e( ) e U

p ic e = giá trị của thuật toán tam lam =

1 2

( ) ( ) ... ( m)

c S c S c S vì bản chất là cái chúng tôi phân chia giá trị của các phần tử. ii) Chúng ta thấy r e( ) 1 k OPT p ic e n k , trong đó eklà k-th phần tử đƣợc phủ. Ta nói tập tối ƣu là O O1, 2,...,Op

Vì thế, ( 1) ( 2) ... ( )

a

p

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

Bây giờ, giải sử thuật toán tham lam có các phần tử đƣợc phủ hiện tại trong C. Sau đó chúng tôi biết đƣợc các phần tử không phủ là U C là nhiều điểm giao nhau nhất của tất cả các tập tối ƣu giao nhau với những phần tử không phủ.

1 ( ) 2 ( ) ... ( )

b

p

U C O U C O U C O U C

Trong thuật toán tham lam, chúng ta chọn một tập có hiệu quả giá trị , trong

đó ( ) , 1.. ( ) c i i c O i p

O U C chúng ta biết điều này bởi vì thuật toán tham lam luôn chọn tập với giá trị hiệu quả là nhỏ nhất, cái này sẽ nhỏ hơn hoặc bằng với tập mà thuật toán tối ƣu chọn.

Công thức đại số: ( ) . ( ) c i i c O O U C ( ) . ( ) . a c b i i i i OPT c O O U C U C OPT U C Vì thế, giá của k-th phần tử là: ( 1) 1 OPT OPT n k n k

Từ (i) và (ii), chúng ta có đƣợc tổng giá trị của tập phủ:

1 1 1 1 r e( ) . 1 ... . 1 2 n n k n k k OPT p ic e OPT OPT H n k n

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

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

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 36 - 76)

Tải bản đầy đủ (PDF)

(76 trang)