Lập lịch sử dụng thuật toán GT

Một phần của tài liệu Nghiên cứu các bài toán lịch biểu và ứng dụng (Trang 69 - 71)

Hình 4.5: Minh họa cách làm việc của thuật toán GT. Hình này trình bày đoạn giữa của quá trình lập lịch cho tất cả các thao tác. Trong hình này thao tác , , , , và có thể được lập lịch và cấu thành tập . là thao tác có thể hoàn thành sớm nhất, điều đó dẫn đến = { ; ; }. Trong chỉ có thao tác và thỏa mãn đẳng thức (4.2), do đó [ , ] = { , }. Nếu thao tác được chọn ngẫu nhiên từ [ , ] thì và dịch chuyển về phí trước theo

như trong Hình 4.5.

4.2.2. Áp dụng thuật toán GT cho JSP để sinh ra các lịch biểu tích cực Một bài toán lập lịch job shop được cho bởi ma trận tuần tự công nghệ { } và Một bài toán lập lịch job shop được cho bởi ma trận tuần tự công nghệ { } và ma trận thời gian xử lý { }. Đây là 2 ma trận dữ liệu đầu vào của bài toán lập lịch job shop cần giải quyết. Áp dụng thuật toán GT để có thể sinh một lịch biểu tích cực. Thuật toán bao gồm các bước sau:

1. Khởi tạo G là tập các thao tác đầu tiên trong tuần tự công nghệ của tất cả các công việc (cột đầu tiên của ma trận tuần tự công nghệ { }), tức là:

= , , … . , . Đối với mỗi thao tác ∈ thiết lập ( ) ≔ 0 và ( ) ≔ ( ).

2. Tìm thao tác hoàn thành sớm nhất ∗ ∈ . Một tập con của chứa các thao tác được xử lý ở trên máy được ký hiệu là .

3. Tính tập cạnh tranh , ⊂ , ở đậy − 1 là số thao tác đã được lập lịch trên máy .

4. Chọn ngẫu nhiên một thao tác trong , gọi thao tác được chọn là ∗ . …. ……. ………. ……. ……. [ , ] …….

5. Lập lịch cho ∗ là thao tác thứ trên máy , tức là ≔ ∗, với thời gian bắt đầu và thời gian hoàn thành của nó là: ∗ = ( ∗ ) và ∗ = ( ∗ ).

6. Đối với tất cả các thao tác ∈ \{ ∗ }:

- Cập nhật như sau: ≔ max { , ∗ }.

- Cập nhật như sau: ≔ + .

7. Xóa ∗ khỏi và bổ sung thêm vào thao tác kế tiếp ∗ trong tuần tự công nghệ của công việc vào nếu nó tồn tại. Tức là nếu = và < , thì

≔ và ≔ ( \{ ∗ }) ∪ { }. Tính ( ) và ( ) như sau:

- ( ) ≔ { ∗ , ( ) }.

- ( ) ≔ ( ) + ( ).

8. Lặp lại bước 2 đến bước 7 tới khi tất cả các thao tác được lập lịch.

9. Ma trận lời giải ra { } là lịch biểu tích cực thu được với tập thời gian bắt đầu là { } và tập thời gian hoàn thành là { }. Ở đây = .

4.3. Một thuật toán di truyền lai tuần tự cho bài toán JSP

Thuật toán di truyền cổ điển mặc dù mạnh mẽ nhưng không phải lúc nào kết quả đạt được cũng là tối ưu. Qua nhiều công trình đã được công bố trong và ngoài nước cho thấy các kỹ thuật lai chiếm ưu thế hơn các kỹ thuật sử dụng GA đơn thuần. Hướng nghiên cứu GA kết hợp với các phương pháp tìm kiếm khác để tạo cho giải pháp mạnh cho JSP là một hướng nghiên cứu còn mới mẻ. Tuy thời gian gần đây cũng có một số công tình nghiên cứu giải bài toán JSP theo hướng này, tuy nhiên cho đến nay vẫn chưa có giải pháp nào giải quyết triệt để JSP. Trong mục này tôi xin được trình bày thuật toán di truyền mới hiệu quả cho JSP được tham khảo trong[4]. Trong thuật toán mới này có trình bày một số cải tiến trong thuật toán di truyền để giải JSP:

- Một lịch biểu được mã hóa bởi các số tự nhiên. Phương pháp mã hóa này có ưu điểm hơn hẳn các phương pháp mã hóa đã sử dụng trước đây vì nó tạo kiều kiện thuận lợi cho việc thực thi các toán tử di truyền và đơn giản hóa trong cài đặt chương trình;

- Sử dụng chiến lược tìm kiếm lân cận trong phép đột biến, ở đây mỗi lân cận là một lời giải thu được sau một thay đổi nhỏ trong phép đột biến gien. Cải tiến này giúp khắc phục các yếu điểm không hội tụ của GA đơn thuần;

- Thuật toán đưa ra một toán tử trao đổi chéo mới, toán tử này kết hợp trao đổi chéo đồng nhất dùng các luật ưu tiên của Giffler và Thompson và được thực hiện trên 3 cá thể cha. Cải tiến này nhằm tạo ra một cá thể con mang các thuộc tính tốt của nhiều cá thể cha và vẫn là một lịch biểu tích cực.

- Toán tử chọn lọc được tiến hành theo hai bước:

Bước 1: Chọn một cá thể có độ thích nghi tốt nhất kể từ thế hệ đầu cho tới thế

giúp cho các thế hệ sau luôn có phần tử tốt hơn hoặc ít nhất cũng bằng phần tử tốt nhất của thế hệ trước đó. Đây là yếu tố quan trọng đảm bảo cho thuật toán tìm được lời giải tối ưu toàn cục;

Bước 2: Các cá thể còn lại được chọn ngẫu nhiên theo nguyên tắc bánh xe số đưa vào giá trị hàm thích nghi của mỗi cá thể. Đặc trưng này đảm bảo tính ngẫu nhiên và sự chọn lọc tự nhiên của thuật toán di truyền.

4.3.1. Mã hóa lời giải

Giả sử bài toán JSP đã cho có công việc được xử lý trên máy. Số thao tác của công việc thứ được ký hiệu là [ ] (không quá thao tác với mọi ). Tổng số

các thao tác cần được xử lý của tất cả các công việc là:

= [ ] (adsbygoogle = window.adsbygoogle || []).push({});

Chúng ta mã hóa thao tác từ 1 đến [1], của từ [1] + 1 đến [2], …, của từ [1] + [2] + ⋯ + [ − 1] + 1 đến . Như vậy mỗi lời giải là một hoán vị nào đó của dãy số tự nhiên {1, 2, … , } thỏa mãn các ràng buộc của bài toán.

Ví dụ, với bài toán 3 công việc, 3 máy đã cho trong bảng 4.1. Các thao tác đã được mã hóa trong Bảng 4.2

Công việc Máy (thời gian xử lý)

1(1) 2(2) 3(3)

1(4) 3(5) 2(6)

2(7) 1(8) 3(9)

Bảng 4.2: Bài toán JSP 3 công việc, 3 máy

Theo { }, các công đoạn đầu tiên của và được xử lý trên máy , công đoạn thứ 2 của được xử lý trên máy 1. Vì vậy, mã của các công đoạn trên là một hoán vị nào đó của {1, 4, 8}. Tương tự các công đoạn trên là một hoán vị nào đó của {2, 6,7}, trên là một hoán vị nào đó của {3, 5, 9}. Một lời giải có thể của bài toán được biểu diễn bằng hình vẽ có dạng như Hình 4.5.

Một phần của tài liệu Nghiên cứu các bài toán lịch biểu và ứng dụng (Trang 69 - 71)