Chương 1. Tổng quan về bài toán lập lịch Chương này trình bày tổng quan về bài toán JSP, tình hình nghiên cứu, các hướng tiếp cận giải quyết bài toán JSP. Thuật toán di truyền Chương này trình bày một số khái niệm cơ bản trong thuật toán di truyền, các tham số đầu vào của thuật di truyền, các toán tử của thuật toán di truyền và thuật toán di truyền. Hai bài toán con của bài toán lập lịch JSP Chương này trình bày các khái niệm cơ bản liên quan đến hai bài toán con của JSP đó là bài toán lập lịch Flowshop hoán vị (PFSP) và Flow shop (FSP) và thuật toán Johnson cho bài toán Flowshop hoán vị 2 máy và 3 máy có hạn chế điều kiện.
Cuối cùng, trình bày thuật toán di truyền mã hóa số tự nhiên cho hai bài toán này. Một thuật toán di truyền lai cho bài toán lập lịch job shop Chương này trình bày một thuật toán di truyền lai là kết hợp thuật toán di truyền với các kỹ thuật tìm kiếm khác cho bài toán JSP và xây dựng chương trình minh họa cho thuật toán di truyền lai. TỔNG QUAN VỀ BÀI TOÁN LẬP LỊCH 1. Định nghĩa bài toán lập lịch Jobshop (JSP) Bài toán lập lịch job shop tổng quát được phát biểu như sau: Cho tập công việc { } , mỗi công việc bao gồm công đoạn (hay còn gọi là thao tác) được xử lý trên một tập máy và thỏa mãn các ràng buộc sau: a) Mỗi công việc phải được xử lý ở trên mỗi máy theo một trình tự cho trước của các thao tác.
Trình tự thực hiện thao tác của mỗi công việc lần lượt trên các máy được gọi là tuần tự công nghệ; b) Tại mỗi thời điểm, mỗi máy chỉ có thể xử lý nhiều nhất là một công việc; c) Mỗi máy tùy ý đều có khả năng xử lý một công việc nào đó, phần công việc được xử lý trên máy được gọi là thao tác. d) Mỗi thao tác phải được xử lý một cách liên tục trên máy (từ khi bắt đầu xử lý cho tới khi kết thúc xử lý không bị ngắt); e) Thời gian bắt đầu và thời gian hoàn thành xử lý thao tác được ký hiệu lần lượt là và. Thời gian xử lý thao tác được ký hiệu là ; f) Thời gian hoàn thành việc xử lý tất cả các công việc được gọi mà makespan và được ký hiệu là. Việc giải bài toán lập lịch job shop là xác định một lịch biểu (thứ tự xử lý các công việc ở trên m máy) sao cho makespan là nhỏ nhất.
Để minh họa cho bài toán, một ví dụ về bài toán JSP 3x3 được cho trong Bảng 1. Dữ liệu vào bao gồm một tuần tự công nghệ của các máy cho mỗi công việc và thời gian xử lý của mỗi công việc ở trên mỗi máy (trong dấu ngặc đơn). Công việc Máy (thời gian xử lý) 1 1(3) 2(3) 3(3) 2 1(2) 3(3) 2(4) 3 2(3) 1(2) 3(1) Bảng 1.1: Bài toán JSP 3 công việc, 3 máy Theo Bảng 1.1, các thao tác của được xử lý trên các máy theo trình tự: → → ; tức là, công việc 1 ban đầu được xử lý trên máy 1 với thời gian xử lý là 3, và tiếp theo, được xử lý trên máy 2 với thời gian xử lý là 3, và tiếp theo được xử lý trên máy 3 với thời gian xử lý là 3; các thao tác được xử lý trên các máy theo trình tự: → → các thao tác được xử lý trên các máy theo trình tự: → →. z 2 Bài toán này không chỉ là NP - khó (NP-hard) mà còn nổi tiếng là một trong những bài toán tối ưu tổ hợp khó tính toán nhất cho đến nay.
Độ phức tạp của bài toán này là một trong những lý do tại sao bài toán này được nghiên cứu một cách rộng rãi. Cho đến ngày nay vẫn chưa có một phương pháp nào giải quyết bài toán JSP một cách chính xác và thời gian nhanh. Tình hình nghiên cứu thuật toán tìm kiếm lịch biểu tối ưu 1. Tình hình nghiên cứu trên thế giới Bài toán JSP lần đầu tiên được công bố bởi Akers và Friedman (1955), bài toán này thường được biết với cái tên AkersFriedman.
Tuy nhiên, nó trở nên phổ biến nhờ vào bài toán nổi tiếng 10 công việc 10 máy được đưa ra bởi Fisher và Thompson (1963). Những nỗ lực đầu tiên để giải quyết bài toán JSP được thực hiện bởi Brooks và White (1965), Greenberg (1968) với phương pháp quy hoạch nguyên.Sau đó là phương pháp nhân tử Lagrange của Balas (1969), Charlton và Death (1970) Florian (1971), Ashour(1974), Ashour và Hiremath (1973), Fisher (1973)[5]. Một thuật toán của McMahon và Florian (1975) tìm được dẫn đầu là thuật toán chính xác tốt nhất. Thuật toán kết hợp các giới hạn của bài toán lập lịch trên một máy bằng cách sử dụng hàm mục tiêu để giảm thiểu thời gian trễ và liệt kê các lịch biểu tích cực.
Cùng thời gian đó một phương pháp heutistic dựa trên các luật ưu tiên được nghiên cứu bởi Gere (1966), Panwalkar và Iskander (1977) và Haupt (1989). Xa hơn nữa một số thuật toán mãnh mẽ được nghiên cứu với các phương pháp tiếp cận tối ưu. Barker và McMahon (1985) đã công bố công trình giải quyết bài toán lập lịch bằng cách sử dụng cấu trúc lân cận dựa trên các thuật toán tìm kiếm địa phương(local search)[5]. Lịch biểu tối ưu của bài toán JSP 10x10 lần đầu tiên được đưa ra bởi Leageweg (1984) nhưng việc chứng minh về tính tối ưu của lịch biểu này không được đưa ra.
Arlier và Pinson (1989) đã chứng minh rằng lịch biểu này là tối ưu và họ được ghi với việc giải quyết bài toán nổi tiếng Fisher và Thompson từ năm 1963[5]. Ngày nay, thuật toán hiệu quả nhất trong số các phương pháp chính xác là thuật toán nhánh cận của Caseau và Laburthe (1995), Baptiste (1995), Carlier và Pinson (1994), Brucker (1994), Brucker (1992) và các kỹ thuật khác nhau sau nhánh cận bởi Applegate và Cook (1991), Martin và Shmoys (1995) và Perregaard và Clausen (1995). Những hướng mới nghiên cứu giải quyết bài toán JSP tại thời điểm hiện tại là phương pháp gần đúng. Phương pháp đầu tiên trong danh sách là phương pháp dịch chuyển nút cổ chai (Shifting Bottleneck) của Adam 1998,Balas (1995), Dauzere-Peres và Lasserre (1993).
Tuy nhiên phần lớn của cách tiếp cận gần đúng là kỹ thuật tìm kiếm địa phương và tiến hóa. Trong kỹ thuật tìm kiếm địa phương và tiến hóa thì các thuật toán mạnh mẽ nhất là thuật toán mô phỏng luyện kim (simulated annealing) của Van Laarhoven (1992), Matsuo (1988) và Yamada (1994), Tìm kiếm Tabu (Taboo z 3 Search)bởi Dell’Amico và Trubian (1993), Taillard (1994), Barnes và Chambers (1995), Nowicki và Smutnicki (1996) và Thomsen (1997), Thuật toán di truyền (Genetic Algorithms)bởi Storer (1992), Yamada và Nakano (1992), Pesch (1993) và Dorndorf và Pesch (1995), vàkỹ thuật Tìm kiếm địa phương có chỉ dẫn (Guided Local Search)đề xuất bởiBalas và Vazacopoulos (1998)[5]. Các tiếp cận đã được đề xuất để giải bài toán JSP được trình bày trong Hình 1. Các phương Các phương pháp gần đúng pháp chính xác Các luật ưu Dịch chuyển tiên nhanh Các kỹ thuật Công thức nút cổ chai nhánh cận toán học Trí tuệ nhân tạo Tìm kiếm Mô phỏng Quy hoạch tuyến địa phương luyện kim tính nguyên Các mạng Tìm kiếm Nơron Taboo Giải thuật di truyền Hình 1.1: Các tiếp cận cho bài toán lập lịch JSP 1.
Tình hình nghiên cứu trong nước Hiện nay, bài toán JSP vẫn đang được quan tâm và nghiên cứu và ngày càng phát triển. Các công trình nghiên cứu về vấn đề này chủ yếu theo hướng các thuật toán đã được đề xuất và ứng dụng ở trên thế giới, từ đó tìm ra các phương pháp để cải tiến làm cho thuật toán tốt hơn. Ứng dụng thực tiễn của bài toán lập lịch chủ yếu trong lĩnh vực đào tạo: xây dựng thời khóa biểu, kế hoạch thi, lịch làm việc, lịch trực bệnh viện,lập kế hoạch sản xuất kinh doanh trong doanh nghiệp. Các phương pháp tiếp cận giải bài toán lập lịch 1.
Cách tiếp cận chính xác, thuật toán nhánh cận Thuật toán nhánh cận là phương pháp hiệu quả nhất trong số các phương pháp chính xác để giải bài toán JSP. Thuật toán nhánh cận là kỹ thuật được phát triển z 4 để giải quyết các bài toán rời rạc và tổ hợp. Mô hình được sử dụng để tìm kiếm là mô hình cây phân cấp. Tư tưởng cơ bản của phương pháp là trong quá trình tìm kiếm lời giải, sẽ phân hoạch tập các phương án của bài toán thành hai hay nhiều tập con biểu diễn như một nút của cây tìm kiếm và cố gắng bằng phép đánh giá cận), tìm cách loại bỏ các nhánh cây (những tập con các phương án của bài toán) mà ta biết chắc chắn không phải là phương án tối ưu.
Mặc dù trong trường hợp xấu nhấtthuật toán sẽ duyệt toàn bộ, nhưng những trường hợp cụ thể nó rút ngắn đáng kể thời gian tìm kiếm. Hiệu quả của thuật toán nhánh cận phụ thuộc cách thức phân nhánh và đánh giá cận. Việc phân nhánh sai sẽ không làm giảm việc bỏ bớt các phương án không tốt hoặc thậm chí cũng không thể thu gọn các miền khả thi xuống. Đánh giá cận sai sẽ tạo ra các nhánh không chính xác làm ảnh hưởng đến số lượng các phương án hoặc các tập con có thể lược bỏ được.
Như vậy thì một chiến lược nhánh cận không tốt sẽ làm giảm việc xác định các phương án khả thi và lúc này thuật toán sẽ liệt kê toàn bộ các cấu hình có thể cho dù bài toán không thực sự lớn. Chính vì thế những quy tắc khác nhau được áp dụng với mục đích làm sao để phân nhánh và đánh giá cận đúng là vấn đề quan trọng trong việc xây dựng thuật toán. Với bài toán lập lịch, thì lịch biểu các công việc được mô tả bằng một đồ thịnối rời (disjunctive graph). Tất cả các công đoạn cùng một công việc được nốithành một chuỗi các cung nối liền và các cung nối rời giữ các công đoạn thực hiệntrên cùng một máy.
Việc lập lịch sẽ trở thành việc sắp thứ tự các công việc trên từngmáy, nghĩa là làm cố định mối liên hệ trước sau giữa các công đoạn trên cùng mộtmáy bằng cách thay đổi hướng các cung nối rời theo một hướng cố định ta sẽ cómột lời giải khả thi, mỗi lời giải khả thi này ta tính được hàm mục tiêu chiềudài lớn nhất đi từ nút nguồn đến nút đích. Một vấn đề gặp phải của phương pháp nhánh cận là thời gian tính toán lớn. Cách tiếp cận gần đúng 1. Giới thiệu Một lớp quan trọng của loại cải tiến thuật toán là thủ tục tìm kiếm địa phương (local search).
Một thủ tục tìm kiếm địa phương không đảm bảo là một lời giải tối ưu.