Việc giải quyết tốt bài toán xếp lịch y tá sẽ giúp khai thác hiệu quả nguồn nhân lực, cân bằng công việc cho mọi y tá, đáp ứng được sở thích cá nhân, ảnh hưởng tốt đến điều kiện và tinh
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
Thành phố Hồ Chí Minh – 2013
Trang 3Lời cảm ơn
Tôi xin chân thành cảm ơn Thầy Đinh Bá Tiến và Cô Viviane Gascon đã nhiệt tình tận tâm hướng dẫn, động viên khuyến khích tạo động lực lớn cho tôi trong suốt quá trình thực hiện luận văn
Tôi xin chân thành cảm ơn Quý Thầy Cô trường Đại học Khoa học Tự nhiên đã tận tình giảng dạy trong suốt quá trình học tập
Tôi xin bày tỏ lòng biết ơn sâu sắc đến Gia Đình và cảm ơn các Bạn Bè đã góp ý, ủng hộ, giúp đỡ tôi trong suốt quá trình làm luận văn
Học viên thực hiện
Vũ Ngọc Sen
Trang 4Mục lục
Lời cảm ơn i
Mục lục ii
Danh mục các bảng iv
Danh mục các hình v
Phần mở đầu 1
Lý do thực hiện và mục tiêu của đề tài 1
Bố cục luận văn 2
Chương 1 Tổng quan về bài toán Xếp lịch y tá 3
1.1 Giới thiệu bài toán Xếp lịch y tá 3
1.2 Các hướng tiếp cận cho bài toán Xếp lịch y tá 5
Chương 2 Phát biểu bài toán Xếp lịch y tá và Các thuật giải liên quan 12
2.1 Các khái niệm của bài toán 12
2.2 Mô hình toán học của bài toán và các ràng buộc 14
2.3 Thành phần lời giải 20
2.4 Các thuật giải liên quan 20
Chương 3 Thuật giải đề nghị 28
3.1 Các bước chuyển trong thuật giải 29
3.2 Thuật giải đề nghị 31
3.3 Giai đoạn 1: Xếp lịch làm việc cho y tá 34
3.4 Giai đoạn 2: Xếp lịch trực cho y tá 41
Chương 4 Thực nghiệm và thảo luận 43
Chương 5 Kết luận và hướng phát triển 48
5.1 Kết luận 48
Trang 55.2 Hướng phát triển 49
Tài liệu tham khảo 50
Phụ lục 56
A Kết quả xếp tay trên Access của Bộ dữ liệu 01 57
B Kết quả xếp tay trên Access của Bộ dữ liệu 04 61
Trang 6Danh mục các bảng
Bảng 2.1 Nhu cầu y tá cho các ca làm việc theo từng ngày trong tuần 13
Bảng 2.2 Nhu cầu y tá cho các ca trực theo từng ngày trong tuần 13
Bảng 2.3 Số ngày làm việc và số lượng y tá theo loại và nhóm 14
Bảng 2.4 Các hàm mục tiêu thành phần của các ràng buộc mềm 19
Bảng 4.1 Thông tin nhu cầu y tá của 5 bộ dữ liệu theo tuần 43
Bảng 4.2 Kết quả thực nghiệm 45
Bảng 4.3 Mục tiêu trải đều ca trễ cho các y tá chính thức 46
Bảng 4.4 Mục tiêu tối thiểu số lượng y tá chính thức làm ca trễ vào thứ Sáu 46
Bảng 4.5 Mục tiêu tối thiểu việc thiếu y tá 46
Bảng 4.6 Mục tiêu tối đa số lượng y tá làm vào thứ Hai và thứ Sáu 47
Bảng 4.7 Mục tiêu tối thiểu số lượng y tá làm việc nhiều hơn số ngày làm việc được quy định trong hợp đồng 47
Trang 7Danh mục các hình
Hình 1.1 Các hướng tiếp cận cho bài toán NRP 7
Hình 2.1 Minh hoạ thuật giải VNS [56] 24
Hình 2.2 Mã giả của thuật giải VNS [37] 25
Hình 2.3 Minh hoạ thuật giải ILS [37] : 26
Hình 2.4 Mã giả của thuật giải ILS [37] 27
Hình 3.1 Bước chuyển đơn: 29
Hình 3.2 Bước hoán chuyển đồng loạt trong một ngày 29
Hình 3.3 Bước hoán chuyển đồng loạt trong hai ngày 30
Hình 3.4 Bước hoán chuyển đồng loạt trong ba ngày 30
Hình 3.5 Bước chuyển ca trực 30
Hình 3.6 Thuật giải cho bài toán xếp lịch y tá 31
Hình 3.7 Mã giả của thuật giải Lặp tìm kiếm cục bộ 36
Hình 3.8 Mã giả của thuật giải Tabu Search với Bước chuyển đơn 38
Hình 3.9 Mã giả của thuật giải Steepest Descent với Bước chuyển ca trực 42
Trang 8Phần mở đầu
Lý do thực hiện và mục tiêu của đề tài
Ngày nay, theo đà phát triển của thế giới về mọi mặt kinh tế-văn hoá-xã hội, nhu cầu chăm sóc sức khoẻ con người ngày càng nhiều kèm theo yêu cầu chất lượng càng cao Cùng với sự phát triển về qui mô cũng như chất lượng của bệnh viện, việc sắp xếp số lượng lớn y tá vào làm các ca trực sao cho phù hợp và thoả đáng những nhu cầu của y tá cũng như nhu cầu của bệnh viện nói chung hay của từng khoa, từng loại ca trực nói riêng, đảm bảo các y tá luôn cảm nhận thoải mái, công bằng trong công việc và bệnh viện giảm thiểu được chi phí đã trở nên phức tạp hơn nhiều Do đó, bài toán Xếp lịch trực cho Y tá (Nurse Rostering Problem-NRP) đang rất được quan tâm và ứng dụng thực tế rộng rãi Đề tài này tập trung nghiên cứu và giải quyết bài toán NRP thực tế của một Bệnh viện đa khoa ở Canada – Centre hospitalier régional de Trois-Rivières Bệnh viện này chuyên cung cấp các dịch vụ
về phẫu thuật với 11 phòng phẫu thuật và 1 phòng chuyên khoa mắt Hiện nay số lượng y tá của bệnh viện không đủ để đáp ứng nhu cầu khám và phẫu thuật trong khi việc xếp lịch trực bằng MS Access chiếm nhiều thời gian của y tá trưởng mà vẫn chưa hợp lý do chưa đáp ứng được nhu cầu sở thích cá nhân của các y tá, một
số y tá phải làm quá nhiều ca trễ… khiến các y tá tự chuyển đổi ca làm việc nhiều Dẫn đến thực trạng có nhiều ngày bệnh viện không đủ y tá để đáp ứng nhu cầu khám và phẫu thuật Hiện nay tình trạng thiếu y tá khá nhiều và thường xuyên Vì vậy, việc xếp lịch y tá sao cho cân bằng ca trễ giữa các y tá chính thức, tối thiểu số lượng y tá chính thức làm ca trễ vào thứ Sáu, giảm thiểu tình trạng thiếu y tá, tối đa
số lượng y tá làm việc vào thứ Hai và thứ Sáu đang là nhu cầu rất cần thiết của bệnh viện Trong đó ca trễ là ca làm việc bắt đầu từ 10h00 sáng đến 6h15 chiều Mục tiêu của luận văn là đưa ra được thuật giải giúp giải quyết bài toán này Luận văn đã đề nghị một thuật giải Metaheuristic để giải quyết Kết quả thực nghiệm của thuật giải được so sánh với kết quả xếp bằng MS Access được lấy từ thực tế
Trang 9Bố cục luận văn
Luận văn gồm có 5 chương như sau:
- Chương 1 Tổng quan về bài toán Xếp lịch Y tá: gồm giới thiệu tổng quan bài toán và các hướng tiếp cận hiện nay để giải quyết bài toán
- Chương 2 Phát biểu bài toán Xếp lịch Y tá và Các thuật giải liên quan: trình bày chi tiết bài toán thực tế của một bệnh viện đa khoa tại Canada mà luận văn tập trung giải quyết gồm những khái niệm của bài toán, các ràng buộc, mục tiêu và mô hình toán học của bài toán; trình bày các thuật toán liên quan đến thuật giải đề nghị ở chương 3
- Chương 3 Thuật giải đề nghị: trình bày chi tiết về thuật giải được đề nghị để giải quyết bài toán
- Chương 4 Thực nghiệm và thảo luận: trình bày về các kết quả đạt được của thuật giải đề nghị
- Chương 5 Kết luận và hướng phát triển: rút ra kết luận đồng thời đưa ra hướng phát triển trong thời gian tới
Trang 10C ương 1 Tổng quan về bài toán Xếp lịch y tá
1.1 Giới thiệu bài toán Xếp lịch y tá
Bài toán Xếp lịch Y tá (Nurse Rostering Problem - gọi tắt là NRP) đại diện cho công việc rất quan trọng tại các bệnh viện hiện đại trên thế giới, đó là hoạt động quản lý y tá và các ca làm việc Yêu cầu của bài toán là phân công các y tá vào những ca làm việc có đặc điểm khác nhau với số lượng y tá rất giới hạn và họ có
kỹ năng cũng như hợp đồng làm việc khác nhau, trong khi phải thỏa mãn rất nhiều quy tắc của bệnh viện, tập quán làm việc, các luật và những sở thích cá nhân Việc giải quyết tốt bài toán xếp lịch y tá sẽ giúp khai thác hiệu quả nguồn nhân lực, cân bằng công việc cho mọi y tá, đáp ứng được sở thích cá nhân, ảnh hưởng tốt đến điều kiện và tinh thần làm việc của các y tá, điều này giúp nâng cao chất lượng chăm sóc sức khỏe của bệnh viện[52]
Bên cạnh tầm quan trọng về mặt thực tế thì việc giải quyết các bài toán NRP phức tạp cũng là thách thức khoa học cho các nhà nghiên cứu vì NRP thuộc lớp các bài toán NP khó [55] NRP chính là một loại đặc biệt của bài toán xếp lịch (Scheduling Problem) với rất nhiều những ràng buộc cụ thể và không đồng nhất, nên rất khó để giải quyết bài toán này một cách hiệu quả Dù vậy, đây là một trong những bài toán
có ứng dụng thực tế rất rộng lớn và được nghiên cứu rộng rãi trên thế giới trong suốt 40 năm qua [21] và cho đến ngày nay, điển hình là các nghiên cứu trong một
số năm gần đây như:
- Năm 2013, Ilina Stoilkovska ứng dụng Thuật giải Lặp tìm kiếm cục bộ (Iterated Local Search) để giải quyết bài toán xếp lịch cho y tá tại một số bệnh viện ở Na Uy [45], với lời giải khởi tạo được xây dựng bằng thuật giải Lập trình ràng buộc
- Năm 2010, với bài toán xếp lịch y tá phức tạp được đưa ra trong cuộc thi quốc tế lần thứ nhất INRC-2010 (the First International Nurse Rostering Competition), hai tác giả Zhipeng Lü và Jin-Kao Hao [63] dùng phương
Trang 11pháp tìm kiếm lân cận thích ứng (Adaptive Neighborhood search) trong đó
có sử dụng thuật toán tìm kiếm Tabu (Tabu search), với kết quả thu được tốt hơn ở 12 bộ dữ liệu, và đạt bằng ở 39 bộ dữ liệu trong tổng số 60 bộ dữ liệu Trong khi nhóm đoạt giải nhất của cuộc thi, C Valouxis, C Gogos, G Goulas, P Alefragis và E Housos [27] dựa trên hướng tiếp cập lai hai giai đoạn (Two-phase Hybrid) chia bài toán thành nhiều bài toán con và áp dụng phương pháp quy hoạch tính toán (Mathematical Programming) Một hướng tiếp cận lai khác cũng đạt được kết quả tốt do K Burke, Tim Curtois [35] đề xuất với phương pháp tìm kiếm Variable Depth Search được cải tiến với các phương thức leo đồi (Hill Climbing) sử dụng nhiều vùng lân cận tìm kiếm khác nhau, và dùng thuật toán quy hoạch động (Dynamic Programming) để xây dựng lịch trực cho từng y tá
- Vào những năm 2000, với dữ liệu của bệnh viện lớn ở Anh, nhiều tác giả như K.Burke, Aickelin, Dowsland, Thompson, White, J Li đã dành nhiều thời gian nghiên cứu với các giải thuật khác nhau để đưa ra những lời giải ngày càng tối ưu cho bài toán xếp lịch y tá này [4, 5, 6, 31, 49, 61] Aickelin
và Dowsland 2000, 2003; Aickelin và White 2004 đề xuất những hướng tiếp cận khác nhau dựa trên thuật giải di truyền (Genetic Algorithms), trong đó thuật giải Hill-climbing GA và Indirect GA cho kết quả tốt nhất [7] Trong khi một hướng tiếp cận khác dựa trên hệ thống Learning Classifier system được Li và Aickelin 2004 áp dụng Burke et al 2003, Li và Aickelin 2003 cũng thu được các kết quả rất khả thi với thuật giải tìm kiếm Tabu search hyperheuristic và Bayesian Optimization Algorithm
Một số thuật ngữ chính của bài toán gồm [23]:
- Chu kỳ xếp lịch (Planning Period): đây là khoảng thời gian mà các nhân viên
được xếp lịch Thường thì chu kỳ này là một tháng hoặc bốn tuần trong bài toán xếp lịch y tá
Trang 12- Nhóm kỹ năng (Skill Category): nhóm này phân loại các nhân viên theo trình
độ chuyên môn, kỹ năng hoặc trách nhiệm
- Loại ca (Shift type): chính là những ca làm việc ở bệnh viện, những ca trực
này có thời gian bắt đầu và kết thúc rất rõ ràng Chẳng hạn như các bài toán xếp lịch y tá thường có ba ca làm việc là ca sớm (07:00-15:00), ca trễ (15:00-22:00), và ca khuya (22:00-07:00) hoặc các biến thể nhỏ của chúng
- Các ràng buộc bao phủ (Coverage Constraints): cho biết số lượng nhân viên
cần thiết cho từng nhóm kỹ năng, cho mỗi ca làm việc hoặc cho từng khoảng thời gian trong suốt chu kỳ xếp lịch Các ràng buộc này thể hiện cho nhu cầu nhân lực Thường thì trong các bệnh viện, các ràng buộc bao phủ này được xác định từ hệ thống đo lường công việc (như là hệ thống phân loại bệnh nhân), các tỷ lệ y tá-bệnh nhân, hoặc do dự đoán
- Các ràng buộc liên quan đến thời gian (Time Related Constraints): những
ràng buộc này diễn đạt tất cả hạn chế về lịch cá nhân Nghĩa là những yêu cầu cá nhân, sở thích cá nhân, và những ràng buộc nhằm cân bằng khối lượng công việc giữa các nhân viên cùng nhóm
- Ràng buộc cứng (Hard Constraints): là toàn bộ những yêu cầu phải được
thỏa mãn với tất cả các chi phí
- Ràng buộc mềm (Soft Constraints): rất cần thiết nhưng có thể vi phạm để
đưa ra được lời giải khả thi
- Quy chế làm việc (Work Regulations): là hợp đồng giữa các nhân viên và
bệnh viện, thường được gọi là hợp đồng lao động Hợp đồng này đặt ra các ràng buộc về thời gian cho các y tá
1.2 Các ướng tiếp cận cho bài toán Xếp lịch y tá
Bài toán Xếp lịch y tá NRP có hai cách xếp lịch cơ bản được dùng rộng rãi là xếp lịch theo chu kỳ (Cyclic Scheduling) và xếp lịch không theo chu kỳ (Non-cyclic
Trang 13Scheduling) [12] Trong cách xếp lịch theo chu kỳ, mỗi y tá sẽ làm việc với cùng một lịch trực duy nhất tại các giai đoạn xếp lịch liên tiếp, giúp cho các y tá biết được lịch làm việc cố định của họ trong thời gian dài đủ ổn định để họ sắp xếp công việc, tuy nhiên cách này thiếu linh hoạt trong việc đáp ứng những yêu cầu cá nhân đột xuất Còn với cách xếp lịch không theo chu kỳ thì trong từng giai đoạn xếp lịch
sẽ có một lịch trực mới cho từng y tá, giúp thoả mãn được những yêu cầu cá nhân, giải quyết được những yêu cầu thay đổi theo ngày nhưng phải tạo lịch mới tại mỗi giai đoạn xếp lịch và các mô hình thuật toán sẽ phức tạp hơn [32]
Trong những thập kỷ qua, có rất nhiều hướng tiếp cận được đề xuất để giải quyết bài toán NRP tuỳ thuộc vào đặc điểm của bài toán và những nhu cầu của các bệnh viện với mục tiêu là đưa ra các lịch trực khả thi hoặc tốt nhất có thể Ba loại phương pháp tổng quát được sử dụng thường xuyên là quy hoạch tính toán (Mathematical Programming), các thuật giải heuristic và các phương pháp AI Hầu hết các thuật giải heuristic tập trung giải quyết những bài toán xếp lịch theo chu kỳ trong khi quy hoạch tính toán và AI thì được dùng cho cả những bài toán xếp lịch theo chu kỳ và không theo chu kỳ
Các hướng tiếp cận của bài toán NRP có thể được chia thành hai nhóm chính sau gồm hướng tiếp cận tối ưu hoá (Optimization Approach) và hướng tiếp cận quyết định (Decision Approach) Nhóm tối ưu hoá thường dựa trên các phương pháp quy hoạch tính toán, còn nhóm quyết định lại sử dụng các thuật giải heuristic và các phương pháp AI Có thể tổng quát các hướng tiếp cận cho bài toán NRP theo hình 1.1
1.2.1 N óm p ương p áp quy oạch tính toán (Mathematical Programming)
Quy hoạch tính toán (Mathematical Programming – gọi tắt là MP) được dùng trong hướng tiếp cận tối ưu hoá với một số mục tiêu như: tối thiểu hoá lượng y tá, tối đa mức độ thoả mãn về sở thích hay yêu cầu đặc biệt của các y tá Các thuật toán dựa trên MP thường đạt được những lời giải tối ưu với chi phí thấp nhất Tuy nhiên phương pháp này lại ít được áp dụng phổ biến do những công thức MP khó để diễn
Trang 15đạt số lượng lớn những mục tiêu và ràng buộc phức tạp, cũng như hạn chế về thời gian tìm kiếm nên hướng này thường chỉ được dùng cho những bài toán xếp lịch đơn giản với kích thước dữ liệu nhỏ [2], hoặc dùng kết hợp với các thuật giải heuristic Hướng tiếp cận này được áp dụng lần đầu trong bài toán NRP vào những năm 1970 và 1980 nhằm đưa ra các công thức và kỹ thuật giải quyết bài toán, điển hình là quy hoạch tính toán (Mathematical Programming) [29, 30], các kỹ thuật Brand-and-bound [62], quy hoạch mục tiêu (Goal Programming) [44, 47], các thuật toán iterative [1, 52] Trong những năm 1990, các kỹ thuật tiến bộ hơn nữa được biết đến là quy hoạch tuyến tính (Linear Programming) lai quy hoạch số nguyên (Integer Programming) và tối ưu hoá mạng (Network Optimisation) [14, 42, 50]…
1.2.2 Nhóm các thuật giải heuristic
Trong khi các phương pháp quy hoạch tính toán gặp khó khăn với những bài toán xếp lịch phức tạp hoặc có kích thước lớn vì mất quá nhiều thời gian tính toán để đưa ra lời giải tối ưu thì các thuật giải heuristic lại đưa ra được các lời giải khả thi với thời gian ngắn hợp lý mặc dù các lời giải này có thể không phải là lời giải tốt nhất Nhóm thuật giải này được chia thành hai loại: các thuật giải cổ điển (Classical Heuristic) và các Metaheuristic
1.2.2.1 Các thuật giải heuristic cổ điển (Classical Heuristic)
Các thuật giải cổ điển được phát triển rất sớm từ khoảng những năm 1960 gồm có những thuật giải khởi tạo lời giải và tìm kiếm cục bộ (Local Search) [46] Thuật giải heuristic khởi tạo lời giải (Constructive Heuristic) là phương pháp xây dựng lời giải một cách từ từ trong khi cố gắng giữ chi phí thấp nhất có thể, điển hình là Greedy (tạm dịch là thuật toán Tham lam): bắt đầu với một lời giải thành phần chưa có yếu tố nào, sau đó tiến hành lựa chọn rồi thêm các yếu tố vào lời giải, việc này được lặp lại đến khi xây dựng được lời giải khả thi [46] Trong khi đó, thuật giải heuristic tìm kiếm cục
bộ (local search heuristic) lại bắt đầu từ một lời giải khởi tạo ban đầu S, thuật giải sẽ
tìm lời giải tốt hơn trong vùng lân cận N(S) của lời giải S Tiến trình này được lặp lại
cho đến khi không tìm được lời giải nào tốt hơn Và lời giải tốt nhất được tìm thấy này
Trang 16còn được gọi là lời giải tối ưu cục bộ [46] Một số heuristic cơ bản như Shuffling và Greedy Shuffling (tạm dịch là Xáo trộn và Xáo trộn tham lam) Ý tưởng của Shuffling
là xây dựng một lời giải tệ nhất cho bài toán, sau đó lời giải được cải tiến dần bằng cách đổi một phần lịch trực của y tá này với một phần lịch trực của các y tá khác, mỗi bước đổi này được gọi là một ‘shuffle’ Các thuật giải theo kiểu Greedy Shuffling cũng tương tự Shuffling, tính toán chi phí của tất cả shuffles cho mọi y tá, sau đó liệt
kê chúng theo mức độ chi phí và chọn thực hiện shuffle mà lời giải được cải tiến tốt nhất Việc này được lặp đi lặp lại nhiều lần nhất có thể [12] Thuật giải này cùng
những biến thể của nó được sử dụng rộng rãi trong nhiều bài báo [11, 24, 34, 36…]
1.2.2.2 Metaheuristic
Metaheuristic định hình một lớp các phương pháp quan trọng để giải quyết các bài toán tối ưu rời rạc hay tổ hợp khó Thường thì những phương pháp này được dùng để giải quyết những bài toán mà các thuật giải heuristic cổ điển không làm được, nó cho phép tìm kiếm trên một không gian lời giải rộng lớn và giúp chương trình thoát khỏi các tối ưu cục bộ Metaheuristic thường là dạng lai của các thuật toán heuristic Trong những năm gần đây Metaheuristic được phát triển rất phổ biến vì nếu không thể đưa ra được lời giải tốt nhất cho bài toán thì vẫn đưa ra được lời giải khả thi tốt trong thời gian hợp lý, trong khi nhóm phương pháp quy hoạch tính toán MP có khả năng không đưa ra được lời giải và mất rất nhiều thời gian tìm kiếm Hơn nữa, hầu hết các Metaheuristic tương đối đơn giản để cài đặt và dễ dàng để áp dụng cho những mục tiêu phức tạp Tuy nhiên, Metaheuristic thường không đạt hiệu quả cao với những bài toán xếp lịch có nhiều ràng buộc quá phức tạp và khó đưa vào các heuristic Những bài toán này sẽ được giải quyết tốt hơn với hướng tiếp cận Lập trình ràng buộc (CP- Constraint Programming)- một nhánh của nhóm phương pháp trí tuệ nhân tạo (AI- Artificial Intelligence) Ngoài ra, điểm bất lợi nữa của các Metaheuristic là vấn đề lựa chọn giá trị phù hợp cho các tham số, cách làm thông dụng nhất hiện nay là dựa vào kinh nghiệm Các Metaheuristic được phân loại thành:
Trang 17Metaheuristic khởi tạo lời giải (Constructive Metaheuristic)
Một số Metaheuristic tiêu biểu của nhóm này là các thuật giải Greedy random adaptive
search procedures (GRASP) [41], Greedy Random Adaptive Memory Programming search (GRAMPS), Ant Colony Optimization [59], Adaptive Memory Programming
Metaheuristic tìm kiếm lân cận (Neighbourhood Search Metaheuristic)
Gồm có Tôi luyện thép (Simulated Annealing) [55], Tabu search [24], Iterated Local search [36], Neural Networks, Threshold Accepting, và Variable Neighbourhood search [34] Từ lời giải ban đầu, các thuật giải sẽ thực hiện lặp đi lặp lại việc tìm kiếm trong miền không gian tìm kiếm của bài toán nhằm mục đích tìm ra lời giải tối ưu Tại mỗi bước lặp, thuật giải sẽ tìm kiếm và chỉ chọn ra một lời giải duy nhất để làm lời giải cho bước lặp tiếp theo Thuật giải sẽ duyệt trong miền không gian láng giềng của lời giải hiện tại để chọn ra lời giải thay thế cho lời giải hiện tại ở bước lặp kế sau Mỗi lời giải trong không gian láng giềng của lời giải hiện tại được gọi là một láng giềng của lời giải hiện tại Sự tác động lên lời giải hiện tại để biến nó thành một lời giải láng giềng của nó gọi là một bước chuyển (move) Trong các Metaheuristic tìm kiếm lân cận, hai vấn đề quan trọng nhất cần quan tâm là tính tăng cường (intensification) và tính đa dạng (diversification) của quá trình tìm kiếm, tính tăng cường là khả năng tập trung tìm kiếm sâu ở những vùng không gian mà ta dự đoán là sẽ chứa lời giải tối ưu, tính đa dạng là khả năng tìm đến những vùng không gian lời giải mới nhằm thoát ra khỏi các vùng chứa điểm tối ưu cục bộ
Metaheuristic quần thể (Population Metaheuristic)
Tương tự như thuật giải Metaheuristic tìm kiếm lân cận, với điểm khác biệt chính là với mỗi bước lặp thuật giải sẽ chọn ra một tập các lời giải, trong khi nhóm Metaheuristic tìm kiếm lân cận chỉ chọn một lời giải duy nhất Các thuật giải điển hình của nhóm này là Evolutionary algorithms [15], các thuật giải di truyền (GA-Genetic algorithms [6, 61]), Scatter search, Path re-linking [41] …
Ngoài ra trong những năm gần đây các thuật giải lai Hybrid Metaheuristic được
phát triển và sử dụng rộng rãi vì khả năng tìm được lời giải tốt hơn nhiều [46], thường
Trang 18là kết hợp giữa các thành phần khác nhau hoặc giữa các Metaheuristic có hiệu quả cao, điển hình là:
- Thuật giải Memetic Algorithm _ một thuật giải Tìm kiếm Quần thể được kết hợp từ thuật giải Heuristic Tìm kiếm Cục bộ và thuật giải Di truyền (Genetic algorithms) [43]
- Burke et al (2001) lai Memetic Algorithm và Tabu Search cho bài toán xếp lịch
y tá đã cho thấy rằng cách lai này cho lời giải tốt hơn so với lời giải chỉ từ thuật giải Tabu Search [33]
- Một thuật giải lai khác giữa Quy hoạch số nguyên (Integer Programming) và Variable Neighbourhood Search (VNS) áp dụng cho bài toán xếp lịch y tá với tính ràng buộc cao cho kết quả tốt hơn so với thuật giải Di truyền (Genetic algorithms) [26]
- Burke (1999) lai giữa Tabu Search và Greedy Shuffling để giải quyết bài toán xếp lịch y tá của một bệnh viện ở Bỉ
1.2.3 N óm p ương p áp trí tuệ nhân tạo (Artificial Intelligence - AI)
Từ những năm 1980 đến nay, các phương pháp trí tuệ nhân tạo cũng được áp dụng cho bài toán xếp lịch [49] như Hệ thống chuyên gia (Expert systems) [51], Hệ thống tri thức (Knowledge based systems) [28], và đặc biệt là phương pháp Lập trình ràng buộc (Constraint Programming - CP) [13, 39] Lập trình ràng buộc đã thu hút được nhiều sự quan tâm và được thương mại hoá vì rất hữu dụng và có hiệu quả tốt khi sử dụng cho những bài toán với nhiều ràng buộc quá phức tạp mà Metaheuristic khó giải quyết được CP có thể dễ dàng diễn đạt các ràng buộc của bài toán, tuy nhiên, điểm bất lợi của CP là với những bài toán yêu cầu tìm một lời giải tối ưu hoặc gần tối ưu trong rất nhiều các lời giải khả thi thì phương pháp này hiếm khi đưa ra được lời giải tốt nhất [2]
Trang 19C ương 2 Phát biểu bài toán Xếp lịch y tá và Các thuật
giải liên quan
Bài toán cần giải quyết là bài toán xếp lịch cho y tá của bệnh viện đa khoa Centre hospitalier régional de Trois-Rivières tại Canada Hiện nay lịch làm việc của các y tá trong bệnh viện do y tá trưởng sắp xếp bằng MS Access với tổng số lượng hơn 50 y tá Việc xếp lịch này chiếm nhiều thời gian của y tá trưởng nhưng chưa được hợp lý với nhiều y tá dẫn đến tình trạng y tá tự chuyển đổi ca làm việc nhiều, xảy ra thực trạng có nhiều ngày không đủ y tá để đáp ứng nhu cầu khám và phẫu thuật tại bệnh viện Do
đó, xếp lịch một cách hợp lý, cân bằng ca trễ giữa các y tá chính thức, tối thiểu số lượng y tá chính thức làm ca trễ vào thứ Sáu, giảm thiểu tình trạng thiếu y tá, tối đa số lượng y tá làm việc vào thứ Hai và thứ Sáu đang là nhu cầu lớn của bệnh viện Trong
đó ca trễ là ca làm việc bắt đầu từ 10h00 sáng đến 6h15 chiều
2.1 Các khái niệm của bài toán
Những ngày cuối tuần gồm Chủ Nhật và thứ Bảy có một ca làm việc duy nhất là:
- Ca cuối tuần (Weekend) từ 7h30 sáng đến 3h45 chiều: cần 3 y tá làm việc
- Ngoài ra cần lưu ý thứ tự các ngày trong tuần theo yêu cầu của bài toán được sắp xếp như sau: Chủ Nhật – thứ Hai – thứ Ba – – thứ Bảy
Nhu cầu y tá cho các ca làm việc của bệnh viện được thể hiện trong bảng 2.1
Trang 20Bảng 2.1 Nhu cầu y tá cho các ca làm việc theo từng ngày trong tuần
- Trực đêm bắt đầu từ 6h00 tối hôm trước đến 7h30 sáng hôm sau cho các đêm
trong tuần từ thứ Hai đến thứ Năm: cần 3 y tá
- Trực cuối tuần từ 6h00 tối thứ Sáu đến 7h30 sáng thứ Hai: cần 4 y tá
Nhu cầu y tá cho các ca trực của bệnh viện được thể hiện trong bảng 2.2
Bảng 2.2 Nhu cầu y tá cho các ca trực theo từng ngày trong tuần
Hiện tại bệnh viện có ba nhóm y tá cụ thể như sau:
- Nhóm y tá chính thức, còn gọi là nhóm Regular Nhóm này gồm các y tá làm việc chính thức tại bệnh viện Họ luôn được phân công làm việc trừ trường hợp
họ xin nghỉ và được y tá trưởng chấp thuận
- Nhóm Flying Squad: những y tá trong nhóm này sẽ làm thay cho các y tá nghỉ bệnh hoặc khi thiếu y tá
- Nhóm y tá đã nghỉ hưu, còn gọi là nhóm Retired Trong trường hợp dù đã cho các y tá thuộc hai nhóm trên làm thêm giờ nhưng vẫn thiếu y tá để xếp lịch, thì nhóm y tá đã nghỉ hưu sẽ được phân công làm việc
Trang 21Mỗi nhóm gồm có hai loại y tá như sau:
o Y tá làm toàn thời gian, hay còn gọi là y tá Full time Những y tá này làm 5 ngày trong một tuần
o Y tá làm bán thời gian, còn gọi là y tá Part time Số ngày làm việc của từng y tá tuỳ theo hợp đồng mà họ đã ký kết với bệnh viện
Số ngày làm việc trong một tuần và lượng y tá trong từng nhóm được thể hiện trong bảng 2.3:
Bảng 2.3 Số ngày làm việc và số lượng y tá theo loại và nhóm
4 ngày /tuần thứ hai 2
2.2 Mô hình toán học của bài toán và các ràng buộc
Bài toán có hai loại ràng buộc gồm ràng buộc cứng (Hard Constraints) là những điều kiện mà lời giải bắt buộc phải thoả mãn, và ràng buộc mềm (Soft Constraints) là những điều kiện không cần thiết phải đáp ứng nhưng cần tối thiểu những vi phạm ràng buộc mềm Một lịch (hay có thể gọi là lời giải) đáp ứng được tất cả ràng buộc cứng thì được gọi là lời giải khả thi Yêu cầu về chu kỳ xếp lịch của bài toán là bốn tuần
Mô hình toán học của bài toán với các tham số như sau:
- N F là danh sách các y tá làm toàn thời gian (Full time)
- N P là danh sách các y tá làm bán thời gian (Part time)
- d dsw là số lượng y tá mà bệnh viện cần cho loại ca s trong ngày d của tuần w, với
d = 1,2, ,7; s = 1 (ca sớm), 2 (ca sáng), 3 (ca trễ), 4 (ca cuối tuần); w=1, 2, 3,
4
- sh nw là tổng số ngày (hoặc ca làm việc) mà y tá n phải làm việc trong tuần w
Trang 22- nu 3dw là số lượng y tá cần để phân công làm các ca trễ trong bốn tuần
- maxdutyWE thể hiện tổng số lần trực cuối tuần tối đa của một y tá trong khoảng
thời gian bốn tuần
- maxdutyEN cho biết tổng số lần trực đêm tối đa của y tá trong thời gian bốn
tuần
Và các biến:
𝑥𝑛𝑠𝑑𝑤 = {1 nếu y tá 𝑛 làm ca 𝑠 trong ngày 𝑑 của tuần 𝑤
0 nếu y tá 𝑛 không làm việc vào ngày 𝑑 tuần 𝑤
với n= N F N P ; s=1,2,3,4; d=1,2, ,7; w=1,2,3,4;
𝑢𝑛𝑑𝑤 = {0 nếu y tá 𝑛 không được phân công trực vào ngày 𝑑 tuần 𝑤1 nếu y tá 𝑛 được phân công trực trong ngày 𝑑 của tuần 𝑤
với n= N F N P ; d=1,2, ,7; w=1,2,3,4;
𝑜𝑓𝑓𝑛𝑑𝑤 = {1 nếu y tá 𝑛 xin nghỉ làm vào ngày 𝑑 của tuần 𝑤
0 nếu y tá 𝑛 không nghỉ làm vào ngày 𝑑 tuần 𝑤
Các ràng buộc cứng gồm:
- H1: Mỗi y tá n phải làm đủ số ngày làm việc sh nw trong tuần w mà họ đã ký kết
với bệnh viện trong hợp đồng lao động
- H3: Từ thứ Hai đến thứ Sáu, nếu y tá n làm ca sớm (s=1) trong ngày d của tuần
w, thì y tá này có thể làm ca sớm, ca sáng, ca trễ, hoặc là không làm việc vào
ngày kế tiếp
𝑥𝑛1𝑑𝑤≥ ∑ 𝑥𝑛𝑠(𝑑:1)𝑤
𝑠≠4
, ∀𝑛, 𝑤, 𝑑 = 2,3,4,5
- H4: Từ thứ Hai đến thứ Sáu, nếu y tá n làm ca sáng (s=2) trong ngày d của tuần
w, thì y tá này có thể làm ca sáng, ca trễ, hoặc là không làm việc vào ngày kế
Trang 23tiếp
𝑥𝑛2𝑑𝑤− 𝑥𝑛2(𝑑:1)𝑤− 𝑥𝑛3(𝑑:1)𝑤+ 𝑥𝑛1(𝑑:1)𝑤 ≤ 1, ∀𝑛, 𝑤, 𝑑 = 2,3,4,5
- H5: Từ thứ Hai đến thứ Sáu, nếu y tá n làm ca trễ (s=3) trong ngày d của tuần
w, thì y tá này chỉ có thể làm ca trễ hoặc là không làm việc vào ngày kế tiếp
𝑥𝑛3𝑑𝑤− 𝑥𝑛3(𝑑:1)𝑤+ ∑ 𝑥𝑛𝑠(𝑑:1)𝑤
𝑠≠3,4
≤ 1, ∀𝑛, 𝑤, 𝑑 = 2,3,4,5
- H6: Nếu y tá n làm ca cuối tuần (s=4) vào thứ Bảy của tuần w, thì y tá này cũng
phải làm việc vào Chủ nhật của tuần tiếp theo
𝑥𝑛47𝑤− 𝑥𝑛41(𝑤:1) = 0, ∀𝑛, 𝑤
- H7: Những y tá làm việc cuối tuần sẽ không được trực vào cuối tuần đó Và ngược lại, những y tá đã làm trực vào cuối tuần w sẽ không được làm việc cuối tuần đó
𝑥𝑛47𝑤+ 𝑢𝑛7𝑤 ≤ 1, ∀𝑛, 𝑤
- H8: Nếu y tá n trực cuối tuần vào thứ Bảy của tuần w, thì y tá này cũng phải trực cuối tuần vào Chủ nhật của tuần tiếp theo
𝑢𝑛7𝑤 = 𝑢𝑛1(𝑤:1), ∀𝑛, 𝑤
- H9: Nếu y tá n xin nghỉ làm vào ngày d của tuần w, thì y tá này sẽ không được
phân công làm việc trong ngày đó
𝑥𝑛𝑠𝑑𝑤+ 𝑜𝑓𝑓𝑛𝑑𝑤 ≤ 1, ∀𝑛, 𝑠, 𝑑, 𝑤
Các ràng buộc mềm:
- S1: Trong mỗi tuần w, y tá n không nên làm việc nhiều hơn số ngày làm việc
sh nw được quy định trong hợp đồng lao động, với s ∈ S
∑ ∑ 𝑥𝑛𝑠𝑑𝑤
𝑑
𝑠
− 𝑆𝑛𝑤1 = 𝑠ℎ𝑛𝑤, ∀𝑛, 𝑤 với 𝑆𝑛𝑤1 là số ngày y tá n làm nhiều hơn số ngày làm việc sh nw
- S2: Y tá n nên được phân công làm việc vào ca s mà y tá yêu cầu (sở thích) trong ngày d của tuần w
Trang 24𝑥𝑛𝑠𝑑𝑤− 𝑆𝑛𝑠𝑑𝑤2 = {1 nếu y tá 𝑛 yêu cầu làm ca 𝑠 trong ngày 𝑑 của tuần 𝑤
0 nếu y tá 𝑛 yêu cầu không làm ca 𝑠 ngày 𝑑 của tuần 𝑤
∀𝑛, 𝑠, 𝑑, 𝑤 với 𝑆𝑛𝑠𝑑𝑤2 là số lần y tá n được phân công làm việc vào ca s không đúng với yêu
- S4: Tổng số lần trực đêm của y tá n không nên nhiều hơn số lần trực đêm tối đa trong bốn tuần maxdutyEN theo hợp đồng làm việc của y tá
- S5: Y tá n nên được phân công trực vào ngày d của tuần w mà y tá yêu cầu
𝑢𝑛𝑑𝑤− 𝑆𝑛𝑑𝑤5 = {0 nếu y tá 𝑛 yêu cầu không 𝑡𝑟ự𝑐 ngày 𝑑, tuần 𝑤1 nếu y tá 𝑛 yêu cầu 𝑡𝑟ự𝑐 ngày 𝑑, tuần 𝑤 , ∀𝑛, 𝑑, 𝑤 với 𝑆𝑛𝑑𝑤5 là số lần y tá n được phân công trực không đúng với yêu cầu của y tá
Các mục tiêu của bài toán và các hàm mục tiêu thành phần:
- O1: Trải đều ca trễ cho các y tá chính thức Nghĩa là mỗi y tá n nên làm vừa đủ
số lượng ca trễ trung bình cho từng y tá trong bốn tuần
⌊ 𝑛𝑢3𝑑𝑤
|𝑁𝐹| + |𝑁𝑃|⌋ ≤ ∑ ∑ 𝑥𝑛3𝑑𝑤
𝑑 𝑤
≤ ⌈ 𝑛𝑢3𝑑𝑤
|𝑁𝐹| + |𝑁𝑃|⌉ với 𝑛𝑢3𝑑𝑤 là số lượng y tá cần để phân công làm các ca trễ trong bốn tuần N F
là danh sách các y tá làm toàn thời gian (Full time) N P là danh sách các y tá làm bán thời gian (Part time)
Trang 25Ví dụ:
o Số lượng y tá cần để phân công làm ca trễ trong từng ngày là 3
o Tổng số ngày có ca trễ trong mỗi tuần là 5
Trong đó, 𝑂𝑛1; là số y tá làm chưa đủ và 𝑂𝑛1: là số y tá làm vượt quá số lượng ca
trễ trung bình cho từng y tá trong bốn tuần 𝑝1 là điểm phạt cho mỗi vi phạm
- O2: Tối thiểu số lượng y tá chính thức làm ca trễ vào thứ Sáu Với 𝑝2 là điểm phạt cho mỗi y tá chính thức được phân công làm ca trễ vào thứ Sáu
𝐌𝐢𝐧 𝒇𝟐, 𝑣ớ𝑖 𝑓2 = 𝑝2∑ ∑ 𝑥𝑛36𝑤
𝑛 𝑤
Hàm mục tiêu của O3 như sau với 𝑝3 là điểm phạt cho từng y tá bị thiếu
𝐌𝐢𝐧 𝒇𝟑, 𝑣ớ𝑖 𝑓3 = ∑ ∑ 𝑝3
𝑑 𝑠
𝑆𝑠𝑑𝑤:
- O4: Tối đa số lượng y tá làm vào thứ Hai và thứ Sáu
Max 𝑝4∑ ∑ ∑ (𝑥𝑤 𝑛 𝑠 𝑛𝑠2𝑤+ 𝑥𝑛𝑠6𝑤) tương đương với hàm sau:
𝐌𝐢𝐧 𝒇𝟒, 𝑣ớ𝑖 𝑓4 = (−𝑝4∗ ∑ ∑ ∑(𝑥𝑛𝑠2𝑤+ 𝑥𝑛𝑠6𝑤)
𝑠 𝑛 𝑤
)
Trang 26- Tối thiểu các vi phạm ràng buộc mềm S1, S2, , S5 với các hàm mục tiêu thành phần tương ứng theo từng ràng buộc mềm được trình bày ở bảng 2.4
Bảng 2.4 Các hàm mục tiêu thành phần của các ràng buộc mềm
Độ ưu tiên của các hàm mục tiêu theo thứ tự giảm dần: f1, f2, f3, f4, f5, f6, f7, f8, f9
Trong đó, f1, f2, f3, f4 là những mục tiêu quan trọng Mỗi hàm mục tiêu f i có một
trọng số điểm phạt p i cho mỗi vi phạm Mục tiêu có độ ưu tiên lớn hơn thì trọng số điểm phạt cao hơn và được xác định bởi y tá trưởng của bệnh viện.Khi so sánh lời giải
sẽ so sánh dựa trên tổng số điểm phạt của lời giải Lời giải tốt hơn là lời giải có tổng điểm phạt nhỏ hơn
Từ các công thức trên, ta tính được tổng điểm phạt của lời giải khả thi X với hàm phạt f(X) như sau:
𝑥𝑛𝑠𝑑𝑤 = {1 nếu y tá 𝑛 làm ca 𝑠 trong ngày 𝑑 của tuần 𝑤
0 nếu y tá 𝑛 không làm việc vào ngày 𝑑 tuần 𝑤
𝑢𝑛𝑑𝑤 = {1 nếu y tá 𝑛 được phân công trực trong ngày 𝑑 của tuần 𝑤
0 nếu y tá 𝑛 không được phân công trực vào ngày 𝑑 tuần 𝑤
với n= N F N P ; s=1,2,3,4; d=1,2, ,7; w=1,2,3,4;
và thoả mọi ràng buộc cứng H1, H2, , H9
Trang 27Ngoài ra, những ràng buộc cứng, ràng buộc mềm và mục tiêu được áp dụng cho các loại y tá khác nhau và được mô tả trong bảng 2.5:
Bảng 2.5 Những qui định áp dụng cho từng loại y tá
Nhóm Loại y tá Các ràng buộc và mục tiêu liên quan
Lời giải của bài toán được biểu diễn như một ma trận, trong đó các cột mô tả các ngày,
và các dòng đại diện cho các y tá Một y tá được phân công vào một ca làm việc của ngày cụ thể thì ô tương ứng trong ma trận sẽ có giá trị khác 0 tương ứng với chỉ số ca làm việc đó, ngược lại nếu không được phân công thì giá trị bằng 0
Lời giải gồm có các thành phần sau:
- Danh sách các y tá được phân công trực theo từng ngày từng tuần
- Danh sách y tá được phân công vào các ca làm việc theo từng ngày trong bốn tuần bắt đầu từ ngày Chủ Nhật và kết thúc vào thứ Bảy Danh sách này được biểu diễn như ma trận nêu trên
2.4 Các thuật giải liên quan
Phần này trình bày về một số thuật giải liên quan đến thuật giải mà luận văn đề nghị
trong Chương 3 để giải quyết bài toán, các thuật giải liên quan được trình bày gồm
thuật giải Steepest Descent, Tabu Search, Variable Neighborhood Search, Iterated Local Search
Trang 282.4.1 Thuật giải Steepest Descent
Ý tưởng của thuật giải là tại mỗi bước lặp, chọn ra một lời giải tốt hơn bước trước đó
để tiếp tục cải thiện giải pháp Quá trình này kết thúc khi không tìm ra được lời giải
nào tốt hơn lời giải hiện thời s trong số các lời giải láng giềng của s
Đây là thuật giải đơn giản và dễ thực hiện Tuy nhiên, phương pháp tìm kiếm này sẽ dừng lại tại một lời giải tối ưu cục bộ đầu tiên tìm thấy kể từ lời giải khởi tạo và có nhiều khả năng là lời giải này khác xa so với lời giải tối ưu toàn cục Thuật giải này dễ rơi vào tối ưu cục bộ quá sớm và ít có cơ hội tìm kiếm trong một không gian lời giải rộng lớn hơn Mặt khác thì tốc độ xử lý nhanh chính là ưu điểm của thuật giải này
Giả sử s 0 là lời giải khởi tạo của bài toán, current là lời giải tốt nhất hiện tại và cũng là lời giải đầu vào cho mỗi vòng lặp Ở vòng lặp đầu tiên thì current=s 0 Danh sách các
lời giải láng giềng của lời giải current là N(current) Ta sẽ lặp lại các bước sau cho đến
khi không còn lời giải láng giềng nào tốt hơn lời giải tốt nhất hiện tại Các bước như sau:
- Bước 1: Tạo tập lời giải láng giềng z thuộc N(current) của lời giải current
- Bước 2: Chọn lời giải s là lời giải tối ưu nhất trong tập lời giải trên
- Bước 3: Nếu lời giải s tốt hơn current thì gán current = s, lời giải này cũng là lời giải đầu vào cho lần lặp kế tiếp Nếu lời giải s không tốt hơn current thì
dừng thuật giải
2.4.2 Thuật giải Tabu Search
Thuật giải Tabu Search của Glover [38] là một thuật giải Metaheuristic được ứng dụng phổ biến và rộng rãi vì tính hiệu quả trong việc tìm lời giải gần tối ưu đối với các bài toán lớn Thuật giải bắt đầu từ một lời giải khởi tạo, Tabu Search sẽ thực hiện lặp đi lặp lại việc tìm kiếm trong miền không gian tìm kiếm của bài toán để tìm ra lời giải tối
ưu, tại mỗi bước lặp, thuật giải Tabu Search sẽ tìm kiếm và chọn ra một lời giải tốt nhất trong các lời giải láng giềng để làm lời giải đầu vào cho bước lặp tiếp theo Lời giải tốt nhất được chọn có thể không cải thiện được chất lượng lời giải hiện có nhưng
Trang 29nó có khả năng giúp tìm kiếm trong một không gian tìm kiếm lớn hơn và cho phép thoát khỏi tối ưu cục bộ
Ngoài ra, giải thuật này ngăn chặn lời giải tối ưu cục bộ bằng cách sử dụng cấu trúc ghi nhớ là một danh sách Tabu List giúp ngăn chặn trường hợp chọn lại lời giải đã xem xét Mục đích chính của Tabu List là ghi nhận lại các lời giải đã được duyệt qua, tránh sự quay vòng trong quá trình duyệt Tuy nhiên, sẽ rất tốn kém để lưu lại toàn bộ các lời giải, nên Tabu List chỉ giữ lại một số lời giải được duyệt gần nhất và tuỳ bài toán cụ thể mà kích thước Tabu List được xác định lớn hay nhỏ Việc này giúp tránh tìm kiếm lặp đi lặp lại quanh những lời giải nhất định nhưng đồng thời cũng không loại bỏ hoàn toàn những lời giải này, giúp cho thuật giải không bị bế tắc và có thể thực hiện tiếp được Hơn nữa, thường thì ta không thể lưu hết toàn bộ cấu trúc giải pháp vào Tabu List mà chỉ ghi nhận lại những thuộc tính đặc trưng cho lời giải (ví dụ như y
tá, ngày bắt đầu, danh sách ca làm việc, độ dài danh sách này) Thuật giải còn dùng tiêu chuẩn mong đợi (aspiration criteria) để tránh việc bỏ sót những lời giải có chất lượng tốt nhưng bị bỏ qua do có những thuộc tính nằm trong danh sách Tabu List
Tiêu chuẩn được sử dụng phổ biến nhất là nếu lời giải s có chất lượng tốt hơn lời giải tốt nhất hiện tại thì dù các thuộc tính đặc trưng của lời giải s đã có trong Tabu List, lời giải s vẫn được chọn
Giả sử s 0 là lời giải khởi tạo của bài toán, s là lời giải đầu vào cho mỗi vòng lặp, với vòng lặp đầu tiên thì s=s 0 , lời giải tốt nhất hiện hành là current Danh sách các lời giải láng giềng của lời giải s là N(s) và f(s) là hàm đánh giá chất lượng lời giải s, f(s) càng
nhỏ thì lời giải càng tối ưu Ta sẽ lặp lại các bước sau cho đến khi gặp điều kiện dừng Điều kiện dừng của thuật giải Tabu Search có thể là tổng số lần lặp tối đa, hoặc số lần lặp tối đa mà không cải thiện được chất lượng lời giải Các bước như sau:
- Bước 1: Tạo tập lời giải láng giềng z thuộc N(s) của lời giải s, với một trong hai
tiêu chuẩn sau:
o Các lời giải láng giềng z này chưa có trong Tabu List
o Lời giải láng giềng cải thiện được chất lượng của lời giải current f(z)<f(current)
Trang 30- Bước 2: Chọn lời giải s là lời giải tối ưu nhất trong tập lời giải trên Lời giải này
cũng là lời giải đầu vào cho lần lặp kế tiếp
- Bước 3: Nếu lời giải s tốt hơn current thì gán current = s
- Bước 4: Cập nhật danh sách Tabu List
2.4.3 Thuật giải Variable Neighborhood Search
Thuật giải Variable Neighborhood Search (gọi tắt là VNS) là một phương pháp Metaheuristic được đề xuất lần đầu tiên bởi Mladenović và Hansen vào năm 1997 [56] cho phép thăm dò không gian tìm kiếm tốt hơn Trong khi hầu hết các thuật giải tìm kiếm cục bộ chỉ sử dụng một tập láng giềng duy nhất, thì thuật giải VNS lại cho phép tìm kiếm trên nhiều tập láng giềng khác nhau, nhờ đó tăng tính đa dạng lời giải trong quá trình tìm kiếm Thuật giải VNS còn kết hợp với các thuật giải local search để nâng cao chất lượng tìm kiếm Ý tưởng của thuật giải là cho các tập láng giềng được định nghĩa sẵn và được sắp thứ tự theo độ ưu tiên cho trước, tại mỗi bước lặp, các tập láng giềng sẽ được duyệt lần lượt, nếu lời giải láng giềng tốt nhất (lời giải tối ưu cục bộ) của tập láng giềng đó không thể cải thiện chất lượng lời giải hiện tại, thì tập láng giềng
kế tiếp sẽ được chọn Hình 2.1 bên dưới minh hoạ thuật giải VNS với ba tập lời giải láng giềng Nk1, Nk2, Nk3
Ta giả sử N k là danh sách các tập láng giềng với k là biến đếm, k=1,2,…,k max Lời giải
khởi tạo của bài toán là s 0 , và N k (s) là danh sách các lời giải trong tập láng giềng thứ k của lời giải s Ta sẽ lặp lại các bước sau cho đến khi đạt đến điều kiện dừng Điều kiện
dừng của thuật giải VNS có thể là thời gian chạy tối đa cho phép, số lần lặp tối đa, hoặc số lần lặp tối đa giữa hai lời giải có cải thiện chất lượng Các bước như sau:
- Bước 1 (Khởi tạo k): chọn tập láng giềng đầu tiên (k=1)
- Bước 2: Lặp lại thứ tự sau cho đến khi duyệt xong tập láng giềng cuối cùng ( ≤ )
o Bước 2.1: Shaking (tạm dịch là bước rung chuyển): chọn lời giải ngẫu
nhiên s trong các lời giải thuộc tập láng giềng thứ k của lời giải hiện tại current
Trang 31o Bước 2.2: Local search (bước tìm kiếm cục bộ): áp dụng thuật giải tìm
kiếm cục bộ cho lời giải đầu vào s, tìm ra s* là lời giải tối ưu cục bộ của tập láng giềng thứ k này
o Bước 2.3: Move neighborhood (bước này so sánh chất lượng lời giải và
chuyển sang tập láng giềng khác): nếu lời giải tối ưu cục bộ s* ở bước 2.2 tốt hơn lời giải current thì current=s* và bắt đầu lại từ tập láng giềng
đầu tiên, ngược lại thì chuyển qua tập láng giềng kế tiếp
Hình 2.1 Minh hoạ thuật giải VNS [56]
Về cơ bản, thuật giải VNS dễ áp dụng, dễ dùng và hiệu quả cao trong việc tạo ra lời giải gần với lời giải tối ưu trong thời gian tính toán vừa phải, hoặc ít nhất là thời gian hợp lý [37] Tuy nhiên với những bài toán rất lớn thì thời gian tìm kiếm là một thử
thách lớn cho thuật giải này Ngoài ra, trong một số trường hợp, khi lời giải s tìm được
đã tốt hoặc rất tốt, thì phải đi khá xa để tìm một thung lũng lời giải lớn khác, và hơn
nữa, lúc này việc shaking có thể làm cho xác suất tìm thấy một lời giải tốt hơn so với s
sẽ thấp Điều này cho thấy điểm yếu của thuật giải VNS cơ bản Tuy nhiên, đây là một thuật giải tốt về ý tưởng và chất lượng lời giải, thu hút được nhiều nhà nghiên cứu Sau này, nhiều cải tiến cho thuật giải đã được đưa ra và có kết quả tốt hơn như các bài báo của Crainic, Gendreau, Hansen, Hoeb và Mladenović [59], Hansen, Jaumard,
Nk1
Nk2
Nk3
Shaking Lời giải khởi tạo
Local Search
Trang 32Mladenović và Parreira [57], Hansen, Mladenović và Perez-Brito [58], Lopez, Batista, Pérez và Vega [53]
Procedure Basic Variable Neighborhood Search
1 input: starting solution, s 0
2 input: neighborhood operators, {N k }, k = 1, …, k max
3 input: Local Search procedure LS, using a different neighborhood operator
4 input: evaluation function, f
Hình 2.2 Mã giả của thuật giải VNS [37]
2.4.4 Thuật giải Iterated Local Search
Ý tưởng đơn giản của thuật giải này được đề xuất lần đầu tiên bởi Baxter vào năm
1981 [48], nhưng cho đến năm 1998, Stützle [60] mới chính thức phổ biến thuật giải
và đặt tên là Lặp tìm kiếm cục bộ Iterated Local Search (gọi tắt là ILS) ILS là một phương pháp Metaheuristic, hay chính xác hơn là một trong những Metaheuristic dựa trên Local Search, vì nó yêu cầu cần có sẵn một thuật giải Local Search Ý tưởng là
khi các thuật giải Local Search bị dừng lại tại một lời giải tối ưu cục bộ s*, thì một phương thức lặp cho phép sử dụng lại Local Search này cho lời giải s’ được tạo bởi bước làm nhiễu perturbation trên s*, điều này giúp thuật giải thoát ra khỏi tối ưu cục
Trang 33bộ Việc làm nhiễu perturbation được kiểm soát thông qua history nhằm tạo ra những lời giải đầu vào tốt hơn cho Local Search, làm tăng khả năng tìm được lời giải cải thiện chất lượng hơn lời giải tối ưu cục bộ Tại mỗi lần lặp, những history trước đó, có
thể là những thông tin về lời giải tối ưu cục bộ trước đó, sẽ không được sử dụng lại
Hình 2.3 Minh hoạ thuật giải ILS [37] :
Từ lời giải tối thiểu cục bộ s*, ta áp dụng perturbation tạo thành lời giải s’ khác Sau
đó áp dụng thuật giải Local Search, ta tìm ra lời giải s*’ có thể tốt hơn s*
Gọi s 0 là lời giải khởi tạo của bài toán, và s* là lời giải tối ưu cục bộ sau khi áp dụng
thuật giải Local Search Ta sẽ lặp lại các bước sau cho đến khi đạt điều kiện dừng Điều kiện dừng của thuật giải ILS có thể là số lần lặp tối đa hoặc thời gian lặp tối đa cho phép Các bước như sau:
- Bước 1: Perturbation (tạm dịch là bước nhiễu loạn): làm thay đổi lời giải s* dựa trên thông tin history tạo ra lời giải mới s’
- Bước 2: Local Search (bước tìm kiếm cục bộ): áp dụng thuật giải tìm kiếm cục
bộ cho lời giải đầu vào s’, tìm ra s*’ là lời giải tối ưu cục bộ tiếp theo
- Bước 3: AcceptanceCriterion (bước chọn lời giải): nếu s*’ thoả tiêu chuẩn chọn thì s*’ sẽ trở thành lời giải đầu vào cho vòng lặp tiếp theo, nếu không lời giải đầu vào vẫn sẽ là s* Có nhiều tiêu chí để chọn lời giải làm lời giải đầu vào s*
cho vòng lặp tiếp theo, cụ thể như sau:
Trang 34o Chỉ chuyển qua lời giải tối ưu nhất, nghĩa là nếu lời giải tối ưu cục bộ
s*’ ở bước 2 tốt hơn lời giải tối ưu cục bộ trước đó thì s*=s*’ ngược lại dùng tiếp tục lời giải s* cũ Đây là tiêu chí chọn có tính chuyên sâu cao, còn được gọi là better acceptance criterion
o Luôn chuyển qua lời giải tối ưu vừa tìm được và không chú trọng đến
chất lượng lời giải, nghĩa là luôn luôn s*=s*’ Đây là tiêu chí chọn có tính đa dạng hoá với tên gọi random walk acceptance criterion
o Tiêu chí còn lại cho phép lựa chọn giữa hai tiêu chí trên
Procedure Iterated Local Search
7 until termination condition met
Hình 2.4 Mã giả của thuật giải ILS [37]
Cần lưu ý rằng trong khi Local Search tập trung tìm kiếm trong không gian lời giải rộng lớn S, thì ILS chỉ cần tập trung tìm kiếm trong không gian lời giải nhỏ hơn gồm các lời giải tối ưu cục bộ Hơn nữa, thuật giải ILS đơn giản, dễ áp dụng và dễ thực hiện, có thể nói tính đơn giản là một ưu điểm lớn của thuật giải này ILS được đánh giá cao về hiệu quả [37] trong việc tạo ra lời giải gần với lời giải tối ưu Thuật giải ILS vừa giữ được tính đơn giản của Heuristic và vừa giữ được tính tổng quát chung của Metaheuristic Ngoài ra, thuật giải này rất linh động, cho phép người dùng chọn thuật giải Local Search theo ý muốn Gần đây, thuật giải này được sử dụng khá nhiều như các bài báo của Ilina Stoilkovska [45], M Stølevik và các cộng sự [40], F Bellanti và các cộng sự [36], E.K Burke và các cộng sự [25]…
Trang 35C ương 3 Thuật giải đề nghị
Luận văn đề nghị một thuật giải Metaheuristic để giải quyết bài toán xếp lịch y tá Thuật giải gồm hai giai đoạn: xếp lịch làm việc ban ngày cho các y tá và xếp lịch trực cho các y tá Trong giai đoạn đầu tiên, bài toán có nhiều ràng buộc cứng, trong đó một
số ràng buộc cứng khó thực hiện là H1 về số ca làm việc bắt buộc của y tá trong một tuần, và H3, H4, H5 quy định về trình tự các ca làm việc Ràng buộc H1 rất dễ bị vi phạm Nên luận văn đề nghị dùng thuật giải lai Hybrid Metaheuristic, lai giữa Lặp tìm kiếm cục bộ Iterated Local Search và Xáo trộn tham lam Greedy Shuffling Thuật giải Lặp tìm kiếm cục bộ tập trung giải quyết các vi phạm ràng buộc cứng, sau đó Xáo trộn tham lam cải tiến lịch của tất cả y tá Trong giai đoạn thứ hai, luận văn dùng Thuật giải Tham lam để tạo lời giải ban đầu và dùng Steepest Descent để cải tiến lời giải
Nhằm đáp ứng những yêu cầu cá nhân có tính thay đổi theo ngày của các y tá trong bệnh viện, luận văn dùng mô hình xếp lịch không theo chu kỳ (Non-cyclic Schedule) với những thông tin cố định như sau:
- Các ca làm việc trong tuần gồm: ca sớm, ca sáng, ca trễ, và ca cuối tuần
- Các ca trực trong tuần gồm: trực đêm và trực cuối tuần
- Các loại y tá gồm: y tá làm việc chính thức full time, y tá làm việc chính thức part time, y tá full time thuộc nhóm Flying Squad, y tá part time thuộc nhóm Flying Squad, y tá nghỉ hưu Số ngày làm việc trong từng tuần của y tá làm full time là năm ngày/tuần
- Các ràng buộc cứng, ràng buộc mềm, và những mục tiêu của bài toán
Những thông tin có thể linh hoạt thay đổi gồm:
- Chu kỳ xếp lịch cho y tá: số tuần cần xếp lịch
- Quy mô của bệnh viện: số lượng y tá của từng loại, số ngày làm việc trên từng tuần của y tá làm part time, lượng y tá cần cho mỗi ca làm việc
- Sở thích và yêu cầu cá nhân của từng y tá: những ca làm việc thích hoặc không thích làm, số ngày xin nghỉ