Phương pháp Rotate

Một phần của tài liệu Luận án Tiến sĩ Toán học: Một số phương pháp gần đúng giải bài toán lập lịch với tài nguyên giới hạn (Trang 125 - 134)

Các tác vụ trong dự án được thực hiện theo một thứ tự ưu tiên cho trước, đây là một ràng buộc của bài toán MS-RCPSP và Real-RCPSP. Khi xây dựng lịch biểu, các tác vụ sẽ được thiết lập tài nguyên thực hiện, số lượng tài nguyên thực hiện các tác vụ là hạn chế. Nói cách khác, để hoàn thành dự án, một tài nguyên sẽ phải thực hiện nhiều tác vụ theo thứ tự ưu tiên nhất định. Có 02 trường hợp có thể xảy ra:

- Các tác vụ ràng buộc thứ tự ưu tiên được thực hiện bởi cùng 01 tài nguyên, ví dụ như trong hình 4.14.a. Khi đó tài nguyên sẽ được sử dụng liên tục không có thời gian trống.

- Các tác vụ ràng buộc thứ tự ưu tiên được thực hiện bởi các tài nguyên khác nhau, ví dụ hình 4.14.b Trong trường hợp này, có thể xảy ra tình trạng tài nguyên rỗi do phải chờ tác vụ trước hoàn thành trên tài nguyên khác.

Ví dụ 4.5:

Xét 02 dự án, mỗi dự án có 10 tác vụ, với đồ thị ưu tiên của các tác vụ được thể hiện lần lượng trong hình 4.12 và hình 4.13.

Hình 4.12. Đồ thị ưu tiên của dự án 1 Hình 4.13. Đồ thị ưu tiên của dự án 2 Thời gian thực hiện của các tác vụ được thể hiện trong bảng 3.11 dưới đây.

Bảng 4.11: Thời gian thực hiện các tác vụ

Tác vụ 1 2 3 4 5 6 7 8 9 10

Thời gian 2 3 5 2 4 3 6 2 4 2

Để thực hiện mỗi dự án, sử dụng tập tài nguyên L = {L1, L2}, với năng lực 1 2 6 3 4 7 8 9 10 5 1 2 7 3 4 8 9 6 10 5

của các tài nguyên như sau:

L1 = {W1,W2,W4,W5,W7,W8,W9,W10} L2 = {W1,W3,W6,W7,W8,W9}

Căn cứ trên đồ thị ưu tiên của 02 dự án, ta có thể xây dựng 02 lịch biểu cho mỗi dự án với biểu đồ Gantt của lịch biểu lần lượt trong hình 4.14.a và hình 4.14.b.

(a). Các tài nguyên sử dụng liên tục

(b). Các tài nguyên có khoản thời gian trống

Hình 4.14. Các tài nguyên sử dụng liên tục (a) và có thời gian trống (b) Theo thứ tự ưu tiên như trong hình 4.13, tác vụ W6 chỉ được thực hiện sau khi tác vụ W5 hoàn thành trên tài nguyên L1. Do W6 được thực hiện bởi L2, nên thời gian bắt đầu thực hiện W6 cần lùi lại đến giờ thứ 12 (sau khi W5 kết thúc trên L1), điều này tạo ra khoảng thời gian rỗi của L2 từ giờ thứ 8 đến hết giờ thứ 11.

4.4.1.1. Ý tưởng của phương pháp Rotate

Phương pháp Rotate nhằm hạn chế tối đa khoảng thời gian rỗi của tài nguyên, dẫn đến giảm tổng thời gian thực hiện dự án. Các bước thực hiện cụ thể như sau:

- Bước 1: Tìm tài nguyên sử dụng nhiều nhất trong Cbest, gọi làLb. Đây là tài nguyên kết thúc công việc sau cùng trong các tài nguyên sử dụng để thực hiện dự án.

Time

- Bước 2: Duyệt các tác vụ được thực hiện bởi Lb theo thứ tự ngược với thứ tự thực hiện từ phải qua trái trên tài nguyên, tức là tác vụ nào thực hiện sau sẽ xem xét trước.

WRb: tập tác vụ vụ đang được thực hiện bởi Lb

- Bước 3: Với mỗi tác vụ Wi ∈ WRb (i= sizeof(WRb) downto 1), thực hiện: • Bước 3.1: Tìm khoảng thời gian rỗi trên tài nguyên

• Bước 3.2: Chuyển thứ tự thực hiện của tác vụ hiện tại về vị trí của tài nguyên rỗi nếu không vi phạm ràng buộc về thứ tự ưu tiên.

• Bước 3.3: Điều chỉnh thời gian bắt đầu và kết thúc thực hiện của các tác vụ có vị trí thực hiện sau vị trí mới của tác vụ hiện tại

• Bước 3.4: Tính toán lại makespan của dự án, nếu tạo ra cá thể tốt hơn thì dừng thuật toán.

Về bản chất, phương pháp Rotate là cách tái sắp xếp thứ tự thực hiện các tác vụ trên tài nguyên hoàn thành công việc sau cùng mà không vi phạm các ràng buộc về thứ tự ưu tiên giữa các tác vụ, đồng thời hạn chế tối đa thời gian tài nguyên rỗi. Việc này giúp giảm tổng thời gian thực hiện dự án đáng kể.

Ví dụ 4.6:

Xem xét lịch biểu được biểu diễn trong hình 4.14.b, lịch biểu này có makespan là 20. Trong lịch biểu thể hiện:

Lb: là tài nguyên L2 WR2 = {W3, W6, W8, W9}

Áp dụng phương pháp Rotate, ta có thể chuyển thứ tự thực hiện của W9 từ vị trí thực hiện cuối cùng, thời gian bắt đầu ở vị trí giờ thứ 16 chuyển lên vị trí thực hiện mới sau W3 với thời gian thực hiện bắt đầu ở vị trí giờ thứ 7. Phép dịch chuyển vị trí này vẫn đảm bảo được ràng buộc ưu tiên như trong hình 4.12.

Sau phép dịch chuyển, makespan của lịch biểu giảm từ 20 còn 19. Chi tiết quá trình này được thể hiện trong hình 4.15.

Hình 4.15. Biểu đồ Gantt khi áp dụng phương pháp Rotate

4.4.1.2. Hàm Rotate

Phương pháp Rotate áp dụng cho các cá thể trong bài toán Real-RCPSP được trình bày chi tiết trong Algorithm 4.4 sau đây.

Algorithm 4.4. Rotate

Input: currentBest (các thể tốt nhất sau mỗi thế hệ) Output: lịch biểu sau khi được hiệu chỉnh

1. makespan = f(currentBest)

2. newbest = currentBest;

3. Lb ← lastResource (newbest) //tài nguyên hoàn thành sau cùng

4. Wb ← {các task vụ được thực hiện bởi Lb}

5. For i = size(WRb) downto 1// duyệt lần lượt từng task

6. freepos ← Vị trí tài nguyên rỗi 7. If (freepos >0)

8. Begin

9. newbest = {

10. Wi thực hiện tại vị trí freepos

11. Tính toán lại vị trí thực hiện của các task khác

12. }

13. newmakespan = f(newbest) // tính toán lại makespan

14. If newmakespan < makespan

15. makespan = newmakespan

16. Return newbest; // dịch chuyển thành công, trả

về kết quả và dừng hàm Time Trước Rotate Sau Rotate

17. End if 18. End 19. End for // i 20. Return newbest; End Function Với:

- f: hàm tính makespan của một lịch biểu

- size: hàm tính số phần tử của một tập/mảng

- lastResource: hàm trả về tài nguyên kết thúc thực hiện sau cùng

4.4.2. Thuật toán

Cuckoo Search [60],[61] là thuật toán tiến hóa áp dụng cho việc giải các bài toán thuộc lớp NP-Khó và mang lại hiệu quả tốt. CS dịch chuyển quần thể bằng phép nhảy Lévy Flight với 02 kỹ thuật tìm kiếm: tìm kiếm cục bộ (Local Search) và tìm kiếm toàn cục (Global Search), hai phép tìm kiếm này giúp CS mở rộng được không gian tìm kiếm, thoát khỏi được cực trị địa phương.

Thuật toán RR-CSM xây dựng trên nền tảng của CS và áp dụng trong việc giải bài toán Real-RCPCP. RR-CSM thực hiện qua các bước như sau:

- Bước 1: Khởi tạo quần thể với n cá thể: Pall

- Bước 2: Tính toán các giá trị trong quần thể: cá thể tốt nhất bestnest, giá trị tốt nhất của mỗi cá thể trong quần thể qua các thế hệ (fitness), … - Bước 3: Thực hiện các tiến hóa qua các thế hệ

- Bước 4: Với mỗi thế hệ, thực hiện

- Bước 4.1: Tạo ra 01 cá thể mới bằng kỹ thuật GS, cá thể mới là: Pnew

- Bước 4.2: Chọn Pi ngẫu nhiên từ quần thể

𝑃𝑖 = { 𝑃𝑃𝑛𝑒𝑤 𝑖𝑓 𝑓(𝑃𝑛𝑒𝑤) < 𝑓(𝑃𝑖)

𝑖 𝑖𝑓 𝑓(𝑃𝑛𝑒𝑤) ≥ 𝑓(𝑃𝑖)

- Bước 4.4: Thay thế pa% cá thể kém nhất bằng các cá thể mới được tạo

ra bởi kỹ thuật Local Search.

- Bước 4.5: Áp dụng hàm Rotate đối với cá thể tốt nhất (bestnest)

- Bước 5: Lặp lại từ bước 2 cho đến khi kết thúc

Cải tiến chính của thuật RR-CSM toán nằm trong bước 4.5 khi áp dụng các phương pháp Reallocate và Rotate với cá thể tốt nhất.

Thuật toán RR-CSM được trình bày trong Algorithm 4.5 dưới đây.

Algorithm 4.5. Thuật toán RR-CSM

Input : dataset

tmax : số thế hệ tiến hóa

Output : cá thể tốt nhất và makespan

1. Begin

2. Load and Valid dataset

3. t  0

4. Pall  Initial population

5. f  Calculate the fitness, makespan, bestnest

6. while(t<tmax)

7. Pnew  Tạo cá thể mới bằng Lévy Flight (GS)

8. Pi  Lấy ngẫu nhiên một cá thể từ Pall

9. 𝑃𝑖 = { 𝑃𝑛𝑒𝑤 𝑖𝑓 𝑓(𝑃𝑛𝑒𝑤) < 𝑓(𝑃𝑖) 𝑃𝑖 𝑖𝑓 𝑓(𝑃𝑛𝑒𝑤) ≥ 𝑓(𝑃𝑖)

10. Ppa  pa% tổ kém nhất từ Pall

11. For j = 1 to size(Ppa)

12. Pnew  Tạo cá thể mới bằng Lévy Flight (LS)

13. 𝑃𝑗𝑝𝑎 = { 𝑃𝑛𝑒𝑤 𝑖𝑓 𝑓(𝑃𝑛𝑒𝑤) < 𝑓(𝑃𝑗𝑝𝑎) 𝑃𝑗𝑝𝑎 𝑖𝑓 𝑓(𝑃𝑛𝑒𝑤) ≥ 𝑓(𝑃𝑗𝑝𝑎)

14. End For

15. Pall  Thay thế Ppa vào Pall

16. f  Calculate the fitness, makespan, bestnest

17. bestnest = Reallocate(bestnest)

18. bestnest = Rotate(bestnest) 19. makespan = f(bestnest)

20. t = t+1

22. return {bestnest, makespan}

23. End

Với:

- f: hàm tính makespan của một lịch biểu

Các dòng 18 là các lời gọi đến hàm hàm Rotate để cải tiến kết quả của cá thể tốt nhất bestnest, sau đó sẽ tính toán lại makespan của cả quần thể bằng lời gọi ở dòng 19.

4.4.3. Kết quả thực nghiệm

Để kiểm chứng thuật toán RR-CSM, luận án tiến hành thực nghiệm trên 02 bộ dữ liệu: iMOPSE hiệu chỉnh và bộ dữ liệu của TNG[54]. Các thông số cấu hình thực nghiệm tương tự như trong mục 2.4.3.2. Kết quả thực nghiệm được trình bày trong bảng 4.12 và bảng 4.13 dưới đây.

Bảng 4.12: Kết quả thực nghiệm RR-CSM với bộ dữ liệu iMOPSE

Dataset GA-M R-CSM RR-CSM

Best Avg Std Best Avg Std Best Avg Std 100_5_22_15 465 469 3.1 454 455 1.0 452 454 1.1 100_5_46_15 523 529 5.4 506 509 2.1 505 506 0.2 100_5_48_9 476 481 4.5 471 473 1.5 467 471 3.7 100_5_64_15 478 487 8.2 461 464 2.3 456 461 4.7 100_5_64_9 453 457 3.2 430 432 1.4 429 430 0.7 100_10_26_15 221 224 2.1 208 210 1.3 204 208 3.8 100_10_47_9 247 253 5.9 238 240 1.6 236 238 1.2 100_10_48_15 238 246 7.6 237 238 0.1 234 237 2.7 100_10_64_9 239 249 9.4 222 225 2.1 216 222 5.8 100_10_65_15 240 244 3.2 230 232 1.8 227 230 2.7 100_20_22_15 109 115 5.2 95 101 5.2 91 95 3.8 100_20_46_15 145 150 4.1 144 152 7.8 143 147 3.2 100_20_47_9 121 125 3.3 119 126 6.1 117 119 1.9 100_20_65_15 193 200 6.8 185 189 3.6 183 185 1.8 100_20_65_9 124 131 6.5 101 110 8.9 100 101 0.3 200_10_128_15 440 446 5.7 422 428 5.1 421 422 0.6 200_10_50_15 468 471 2.9 466 467 0.9 463 466 2.3

Dataset GA-M R-CSM RR-CSM Best Avg Std Best Avg Std Best Avg Std 200_10_50_9 481 484 2.6 459 461 1.2 454 459 4.3 200_10_84_9 487 498 10.9 484 485 0.4 479 484 4.8 200_10_85_15 465 469 4.0 456 457 0.3 453 456 2.7 200_20_145_15 222 229 6.1 175 185 9.2 170 175 4.1 200_20_54_15 249 255 5.1 237 240 2.7 234 237 2.2 200_20_55_9 248 254 5.7 228 232 3.1 227 228 0.8 200_20_97_15 317 321 3.3 288 293 4.9 283 288 4.8 200_20_97_9 234 241 6.2 232 234 1.5 228 232 3.9 200_40_133_15 126 134 7.4 110 119 8.1 106 110 3.6 200_40_45_15 160 164 3.8 123 129 5.7 122 123 0.3 200_40_45_9 133 146 12.1 121 132 10.3 117 121 3.4 200_40_90_9 130 133 3.0 112 125 12.6 107 112 4.9 200_40_91_15 133 139 5.8 117 127 9.1 114 117 2.0

Bảng 4.13: Kết quả thực nghiệm RR-CSM với bộ dữ liệu TNG

Dataset GA-M R-CSM RR-CSM

Best Avg Std Best Avg Std Best Avg Std TNG1 201 203 3.5 131 136 4.5 129 133 3.3 TNG2 198 205 8.3 133 138 5.2 132 137 4.5 TNG3 212 218 7.1 132 135 1.6 130 132 1.7 TNG4 176 187 11.3 127 134 7.6 126 133 6.9 TNG5 751 757 6.2 572 577 4.1 563 568 4.3 TNG6 791 796 5.5 626 636 8.5 607 613 6.2 TNG7 810 820 10.7 569 573 5.7 556 560 3.8 TNG8 720 728 9.4 560 564 3.6 543 545 1.6

4.4.4. Đánh giá chất lượng lời giải của thuật toán

Các thực nghiệm được triển khai trên RR-CSM sử dụng bộ dữ liệu iMOPSE và bộ dữ liệu TNG. Kết quả thực nghiệm được trình bày trong bảng 4.12 và bảng 4.13 chỉ ra thuật toán RR-CSM có chất lượng lời giải luôn tốt hơn thuật toán GA-M.

Với bộ dữ liệu iMOPSE, giá trị tốt nhất của RR-CSM tốt hơn R-CSM từ 0.2% đến 4,67 %, so sánh chi tiết được thể hiện trong hình 4.16. Tổng độ lệch chuẩn của R-CSM là 122,1, của RR-CSM là 82,3, điều này cho thấy độ ổn định của thuật toán RR-CSM tốt hơn, hình 4.17 cho so sánh độ lệch chuẩn giữa RR- CSM, R-CSM và GA-M.

Với bộ dữ liệu TNG, giá trị tốt nhất của RR-CSM tốt hơn R-CSM từ 0,75% đến 3,12%, so sánh chi tiết được thể hiện trong hình 4.18. Tổng độ lệch chuẩn của R-CSM là 40,8, của RR-CSM là 32,2, điều này cho thấy độ ổn định của thuật toán RR-CSM tốt hơn, hình 4.19 cho so sánh độ lệch chuẩn giữa RR- CSM và R-CSM.

Một phần của tài liệu Luận án Tiến sĩ Toán học: Một số phương pháp gần đúng giải bài toán lập lịch với tài nguyên giới hạn (Trang 125 - 134)

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

(148 trang)