Kỹ thuật Di cư

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 63 - 66)

Khi thực hiện tiến hóa, thuật toán PSO có xu hướng rơi vào các vùng cực trị địa phương nghĩa là sau nhiều thế hệ quần thể vẫn bị hút vào khu vực xung quanh một cực trị địa phương. Để hướng dẫn quần thể đi tới giá trị tối ưu, cần phải đưa chúng thoát ra khỏi vùng lân cận xung quanh cực trị địa phương để chuyển tới một vùng không gian nghiệm khác, đó là mục đích của kỹ thuật di cư trong luận án này. Ngoài việc giúp thuật toán thoát khỏi cực trị địa phương, kỹ thuật di cư còn mở rộng không gian tìm kiếm, nâng cao kết quả của thuật toán.

Định nghĩa 2.3: Quần thể được gọi là tiến hóa không thành công nếu giá trị makespan của quần thể không thay đổi qua 2 thế hệ liên tiếp.

2.3.1.1. Ý tưởng của kỹ thuật di cư

Kỹ thuật Di cư áp dụng trong thuật toán M-PSO được thực hiện qua các bước sau:

Bước 1: Tìm và phát hiện cực trị địa phương

thể tiến hóa không thành công liên tiếp, nếu giá trị này lớn hơn một ngưỡng quy định (nmax), thì quần thể đã rơi vào cực trị địa phương. Công thức 2.5 trình

bày cách tính nfail.

𝑛𝑓𝑎𝑖𝑙 = {𝑛0 𝑖𝑓 𝑛𝑒𝑤𝑓𝑎𝑖𝑙 + 1 𝑖𝑓 𝑛𝑒𝑤𝑚𝑎𝑘𝑒𝑠𝑝𝑎𝑛 = 𝑜𝑙𝑑𝑚𝑎𝑘𝑒𝑠𝑝𝑎𝑛

𝑚𝑎𝑘𝑒𝑠𝑝𝑎𝑛 ≠ 𝑜𝑙𝑑𝑚𝑎𝑘𝑒𝑠𝑝𝑎𝑛 (2.5)

Bước 2: Di chuyển quần thể

Việc di chuyển quần thể sang vị trí khác được thực hiện như sau: - Duyệt từng cá thể của quần thể;

- Với mỗi tác vụ i của cá thể, xem xét tập Li các tài nguyên có thể thực hiện được tác vụ i, sắp xếp các tài nguyên thứ tự tăng dần của chỉ số tài nguyên;

- Lấy tài nguyên ở vị trí đối xứng để thực hiện tác vụ i thay cho tài nguyên hiện tại.

Hình 2.4 minh họa việc di cư của tác vụ bằng việc thay đổi tài nguyên thực hiện. Cụ thể, tác vụ đang được thực hiện bởi tài nguyên L2 sẽ được bố trí tài nguyên thực hiện mới là Lm-1 và tác vụ đang được thực hiện bởi tài nguyên Lm

sẽ được bố trí tài nguyên mới là L1 để thực hiện.

Hình 2.4. Thay đổi tài nguyên thực hiện tác vụ

Việc dịch chuyển tài nguyên thực hiện tác vụ cần đảm bảo ràng buộc của bài toán. Sau khi thực hiện với toàn bộ quần thể, ta sẽ được một quần thể mới được di chuyển bằng kỹ thuật Migration.

Ví dụ 2.2:

Xem xét một dự án với các thông tin như sau:

L1 L2 ... Lm-1 Lm

- Tập tác vụ W ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; - Tập tài nguyên L={1, 2, 3, 4};

- Năng lực của các tài nguyên được thể hiện như trong Bảng 2.8. Bảng 2.8: Năng lực của các tài nguyên

W1 W2 W3 W4 W5 W6 W7 W8 W9 W10

L1 × × × × × ×

L2 × × × × × × × ×

L3 × × × × × × ×

L4 × × × × × × ×

Xem xét một phương án lịch biểu với các thiết lập tài nguyên thực hiện tác vụ như trong bảng 2.9.

Bảng 2.9: Lịch biểu khả thi của dự án trong ví dụ 2.2 Tác vụ 1 2 3 4 5 6 7 8 9 10 Tài nguyên 1 1 2 1 2 2 4 1 1 4

Xét tác vụ 1, tập tài nguyên thực hiện tác vụ 1, W1 = {L1, L2, L3, L4}

Áp dụng kỹ thuật di cư với tác vụ 1, ta thấy, tài nguyên thực hiện tác vụ 1 (adsbygoogle = window.adsbygoogle || []).push({});

hiện tại là L1, dùng kỹ thuật di cư để thiết lập tài nguyên thực hiện tác vụ 1 bằng cách lấy tài nguyên đối xứng trong tập tài nguyên W1, ta có tài nguyên mới để thực hiện tác vụ 1L4.

Áp dụng tương tự với các tác vụ 2, 3, 4, 5, 6, 7, 8, 9, 10, ta sẽ được cá thể sau khi di cư với thiết lập tài nguyên thực hiện được thể hiện trong bảng 2.10.

Bảng 2.10: Lịch biểu mới sau khi di cư Tác vụ 1 2 3 4 5 6 7 8 9 10 Tài nguyên 4 3 4 4 3 2 2 4 4 2

Ta có thể thấy, trong lịch biểu mới, tại vị trí của tác vụ 6, tài nguyên thực hiện không thay đổi do W6 = {L1,L2,L3}. Điều này hạn chế khả năng tạo ra các

bước di chuyển lớn của cá thể. Tuy nhiên, vấn đề này sẽ ít gặp phải trong bài toán với số lượng tài nguyên thực hiện lớn hơn.

2.3.1.2. Hàm Migration

Algorithm 2.2. Migration

Input: Pall – quần thể hiện tại

Output: Pnew – quần thể sau khi di chuyển

Begin

1. Pnew = {}

2. For i=1 to size(P) // duyệt lần lượt từng cá thể

3. Pi = Pall[i]; // lấy cá thể thứ i từ quần thể

4. For j = 1 to y // duyệt lần lượt từng task

5. Wi = Danh sách tài nguyên thực hiện Wi

6. Wi = Sort(Wi) // sắp xếp chỉ số tài nguyên trong Wi

7. idx = Chỉ số tài nguyên thực hiện task i

8. idx = size(Wi) – idx + 1

9. Li = Wi[idx] 10. End for // j 11. Pnew = Pnew + {Pi} 12. End for // i 13. Return Pnew; End Function

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 63 - 66)