Có rất nhiều các bài toán quan trọng trong thực tế của lập lịch như: Lập lịch sản xuất; lập lịch xếp lớp cho giảng viên; lập lịch thực hiện công việc cho dự án; lập lịch trực cho bác sỹ,
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYÔN XU¢N MINH
NGHI£N CøU C¸C BµI TO¸NLÞCH BIÓU Vµ øNG DôNG
LUËN V¡N TH¹C SÜ C¤NG NGHÖ TH¤NG TIN
Hà Nội - 2015
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYÔN XU¢N MINH
NGHI£N CøU C¸C BµI TO¸NLÞCH BIÓU Vµ øNG DôNG
Chuyên ngành: Hệ thống thông tin
Mã số: 60 48 01 04
LUËN V¡N TH¹C SÜ C¤NG NGHÖ TH¤NG TIN
Người hướng dẫn khoa học: GS.TS Vũ Đức Thi
Hà Nội - 2015
Trang 3MỤC LỤC
LỜI CẢM ƠN
LỜI CAM ĐOAN
MỤC LỤC
DANH MỤC CÁC BẢNG
DANH MỤC CÁC HÌNH VẼ, BIỂU ĐỒ
MỞ ĐẦU
CHƯƠNG 1 TỔNG QUAN VỀ BÀI TOÁN LẬP LỊCH 1
1.1 Định nghĩa bài toán lập lịch Jobshop (JSP) 1
1.2 Tình hình nghiên cứu thuật toán tìm kiếm lịch biểu tối ưu 2
1.2.1 Tình hình nghiên cứu trên thế giới 2
1.2.2 Tình hình nghiên cứu trong nước 3
1.3 Các phương pháp tiếp cận giải bài toán lập lịch 3
1.2.3 Cách tiếp cận chính xác, thuật toán nhánh cận 3
1.2.4 Cách tiếp cận gần đúng 4
CHƯƠNG 2 THUẬT TOÁN DI TRUYỀN Error! Bookmark not defined 2.1 Lịch sử ra đời Error! Bookmark not defined 2.2 Một số khái niệm cơ bản Error! Bookmark not defined 2.2.1 Cá thể, nhiễm sắc thể Error! Bookmark not defined 2.2.2 Quần thể Error! Bookmark not defined 2.2.3 Chọn lọc Error! Bookmark not defined 2.2.4 Lai ghép Error! Bookmark not defined 2.2.5 Đột biến Error! Bookmark not defined 2.3 Lưu đồ thuật toán di truyền đơn giản Error! Bookmark not defined 2.4 Các tham số của thuật toán di truyền Error! Bookmark not defined 2.4.1 Kích thước quần thể Error! Bookmark not defined 2.4.2 Xác suất lai ghép Error! Bookmark not defined 2.4.3 Xác suất đột biến Error! Bookmark not defined 2.5 Khởi tạo quần thể ban đầu Error! Bookmark not defined 2.5.1 Hàm tính độ thích nghi Error! Bookmark not defined 2.5.2 Toán tử chọn lọc Error! Bookmark not defined 2.5.3 Các toán tử lai ghép Error! Bookmark not defined 2.5.4 Toán tử đột biến Error! Bookmark not defined 2.7 Kết luận Error! Bookmark not defined CHƯƠNG 3 HAI BÀI TOÁN CON CỦA BÀI TOÁN LẬP LỊCH JOB SHOP Error!
Bookmark not defined.
Trang 43.1 Bài toán Flowshop hoán vị Error! Bookmark not defined 3.1.1 Mô tả bài toán Error! Bookmark not defined 3.1.2 Cách tính thời gian hoàn thành trong một lịch biểu hoán vị Error!
Bookmark not defined.
3.1.3 Thuật toán Johnson cho PFSP 2 máy và PFSP 3 máyError! Bookmark not
defined.
3.1.4 Một thuật di truyền mã hóa tự nhiên cho bài toán FSP tổng quát Error!
Bookmark not defined.
3.1.5 Kết quả thực nghiệm Error! Bookmark not defined 3.2 Bài toán lập lịch Flowshop Error! Bookmark not defined 3.2.1 Mô bài toán Error! Bookmark not defined 3.2.2 Một thuật toán di truyền mã hóa tự nhiên cho bài toán FPS tổng quát Error!
Bookmark not defined.
3.3 Kết luận Error! Bookmark not defined
CHƯƠNG 4 MỘT THUẬT TOÁN DI TRUYỀN LAI CHO BÀI TOÁN LẬP LỊCH
JOB SHOP Error! Bookmark not defined 4.2 Các luật ưu tiên của Giffler và Thompson Error! Bookmark not defined 4.2.1 Thuật toán Giffler - Thompson (GT) Error! Bookmark not defined 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 Error!
Bookmark not defined.
4.3 Một thuật toán di truyền lai tuần tự cho bài toán JSP Error! Bookmark not
defined.
4.3.1 Mã hóa lời giải Error! Bookmark not defined 4.3.2 Khởi tạo tập lời giải cho thế hệ ban đầu Error! Bookmark not defined 4.3.3 Xây dựng hàm thích nghi Error! Bookmark not defined 4.3.4 Các toán tử di truyền Error! Bookmark not defined 4.3.5 Thuật toán di truyền Error! Bookmark not defined 4.3.6 Tính đúng đắn của thuật toán Error! Bookmark not defined 4.4 Kết quả thực nghiệm Error! Bookmark not defined KẾT LUẬN Error! Bookmark not defined.
Trang 5MỞ ĐẦU
Lý do chọn đề tài
Lập lịch là một chủ đề quan trọng trong lĩnh vực nghiên cứu hoạt động xuất hiện từ đầu những năm 1950 Mục tiêu chính của lập lịch là phân phối một cách hiệu quả tài nguyên dùng chung qua thời gian hoàn thành các tác vụ
Có rất nhiều các bài toán quan trọng trong thực tế của lập lịch như: Lập lịch sản xuất; lập lịch xếp lớp cho giảng viên; lập lịch thực hiện công việc cho dự án; lập lịch trực cho bác sỹ, y tá trong bệnh viện; lập lịch hàng không, lập lịch tàu hỏa…
Với nhiều ứng dụng như vậy việc nghiên cứu và đưa ra một thuật toán có thể thống kê một lịch biểu để thực hiện công việc hoàn thành trong thời gian tối ưu là vô cùng quan trọng
Từ năm 1950 đến nay mặc dù có rất nhiều công trình nghiên cứu về lập lịch được đề xuất Nhưng có hai vấn đề cần quan tâm xung quanh bài toán lập lịch đó là lịch biểu thực hiện công việc đã tối ưu chưa và tốc độ thực hiện của thuật toán là nhanh hay chậm Xuất phát từ hai vấn đề đó, có hai phương pháp tiếp cận chính để giải bài toán lập lịch đó là phương pháp chính xác và phương pháp gần đúng
Phương pháp thứ nhất là phương pháp chính xác Với phương pháp này thì ưu điểm lớn nhất là sẽ tiến hành tìm kiếm trên toàn bộ không gian bài toán và kết quả sẽ luôn tìm được một lịch biểu thực hiện các công việc tối ưu Phương pháp chính xác nhìn nhận sâu vào vấn đề bài toán, đưa ra được những quyết định với các thông tin quan trọng về cấu trúc của vấn đề hoặc phân tích chính xác các lịch biểu Tuy nhiên do bản chất là vét cạn nên có nhiều hạn chế khả năng áp dụng phương pháp này như tốn nhiều chi phí thực hiện, mất nhiều thời gian xử lý để tìm ra lời giải, … Một số thuật toán giải quyết bài toán lập lịch theo phương pháp tiếp cận nàytiêu biểu như các kỹ
thuật nhánh cận (Branch and Bound), Quy hoạch tuyến tính nguyên (Integer Linear
Programming) Trong đó, thuật toán nhánh cận được đánh giá là thuật toán tốt nhất
trong các thuật toán nghiên cứu theo phương pháp tiếp cận chính xác
Phương pháp thứ hai là phương pháp gần đúng sử dụng các hàm ước lượng heuristic đánh giá để tìm lịch biểu công việc, việc sử dụng các hàm ước lượng này có nhược điểm lớn là lời giải của phương pháp tìm ra không được chắc chắn là lời giải tối
ưu nhất Trong thực tế, nhiều trường hợp chất lượng của lời giải tìm ra không chấp nhận được Kết quả của bài toán bị ảnh hưởng bởi các thông số (kích thước của tập hợp, lời giải ban đầu của thuật toán, các lân cận…) Và cách thức để giải quyết bài toán đôi khi được xem như kỹ xảo để xử lý hơn là khoa học Tuy nhiên phương pháp này lại có lợi thế hơn so với phương pháp chính xác là chi phí thời gian tìm kiếm để đưa ra lời giải thấp Gần đây một số thuật toán mạnh mẽ được tiếp cận bằng phương pháp gần đúng điển hình như là: “Taboo Search”, “Simulated Annearling”, “Genetic Algorithms”, …
Trong lĩnh vực lập lịch, một mô hình chung nhất cho lập lịch là bài toán lập lịch
Jobshop (Jobshop Scheduling Problem)viết tắt JSP Bài toán này nổi tiếng là một trong
Trang 6những bài toán tối ưu tổ hợp khó tính toán nhất cho đến nay JSP cũng là một trong những bài toán được nghiên cứu nhiều nhất và là một mô hình phát triển tốt về lý thuyết lập lịch Ngoài ra, một động lực khác giúp JSP được thúc đẩy mạnh mẽ là các ứng dụng của nó trong thực tế và cuộc sống sản xuất Vì vậy em mạnh dạn chọn đề tài
luận văn thạc sĩ “Nghiên cứu các bài toán lịch biểu và ứng dụng”
Bố cục của luận văn
Nội dung của luận văn bao gồm 4 chương:
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
Chương 2 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
Chương 3 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
Chương 4 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
Trang 7CHƯƠNG 1 TỔNG QUAN VỀ BÀI TOÁN LẬP LỊCH
1.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 𝐽𝑖 1≤𝑖≤𝑛, 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 𝑀𝑗
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.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ý)
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 𝐽1 được xử lý trên các máy theo trình tự: 𝑂11 →
𝑂12→ 𝑂13; 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 𝐽2 được xử lý trên các máy theo trình tự: 𝑂21→ 𝑂23→ 𝑂22các thao tác 𝐽3 được xử lý trên các máy theo trình tự: 𝑂32→
𝑂31→ 𝑂33
Trang 8Bà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
1.2 Tình hình nghiên cứu thuật toán tìm kiếm lịch biểu tối ưu
1.2.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
Trang 9Search)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.1
Hình 1.1: Các tiếp cận cho bài toán lập lịch JSP
1.2.2 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
1.3 Các phương pháp tiếp cận giải bài toán lập lịch
1.2.3 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
Các phương pháp chính xác
Các kỹ thuật nhánh cận
Công thức toán học
Quy hoạch tuyến tính nguyên
Các phương pháp gần đúng
Dịch chuyển
nút cổ chai
Trí tuệ nhân tạo
Các mạng Nơron
Các luật ưu tiên nhanh
Tìm kiếm địa phương Mô phỏng luyện kim
Tìm kiếm Taboo
Giải thuật
di truyền
Trang 10để 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
1.2.4 Cách tiếp cận gần đúng
1.2.4.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
Nó thường cố gắng tìm một lịch biểu mà lịch biểu đó là tốt hơn so với lịch biểu hiện tại trong lân cận của lịch biểu hiện tại Hai lịch biểu là lân cận nếu một lịch biểu này
có thể thu được qua việc sửa đổi và được xác định bởi lịch biểu kia Tại tất cả các vòng lặp một thủ tục tìm kiếm địa phương thực hiện việc tìm kiếm bên trong lân cận
và đánh giá các giải pháp lân cận khác nhau Quá trình tìm kiếm trong lân cận có thể được thực hiện qua một số cách Cách đơn giản nhất là chọn các lịch biểu trong lân cận một cách ngẫu nhiên, đánh giá các lịch biểu này và quyết định cái lịch biểu nào sẽ