Giai đoạn 2: Xếp lịch trực cho y tá

Một phần của tài liệu Luận văn công nghệ thông tin nghiên cứu bài toán xếp lịch trực cho y tá (Trang 48 - 55)

Từ lời giải thu được ở giai đoạn 1, ta có danh sách các y tá được phân công làm việc. Những y tá này ngoài việc được phân công vào các ca làm việc cũng sẽ được phân công làm trực vào cuối tuần hoặc trực đêm trong tuần. Ý tưởng của thuật giải Tham lam và Steeptest Descent được áp dụng để tạo và cải thiện chất lượng lịch trực cho những y tá này.

3.4.1 Bước 1: Khởi tạo lịch trực

Lịch trực ban đầu cũng được khởi tạo dựa trên ý tưởng của thuật giải Tham lam. Tại mỗi tuần, thứ tự ngày được chọn để phân công trực sẽ từ thứ Hai – thứ Ba – … – thứ Sáu. Tại mỗi ngày, lần lượt phân công trực cho y tá có số lần trực ít nhất trong chu kỳ xếp lịch hiện tại, việc này được lặp đi lặp lại cho đến khi đáp ứng đủ nhu cầu y tá cho các ca trực ở bệnh viện. Cần lưu ý rằng bước này luôn thoả các ràng buộc cứng liên quan đến lịch trực. Ngoài ra các ngày thứ Hai, thứ Ba, thứ Tư và thứ Năm chỉ có một loại ca trực duy nhất là trực đêm, còn thứ Sáu có loại ca trực cuối tuần. Ca trực cuối tuần được định nghĩa ở chương 2 là ca trực bắt đầu từ 6h00 tối thứ Sáu đến 7h30 sáng thứ Hai.

3.4.2 Bước 2: Cải thiện lịch trực

Phần này áp dụng thuật giải Steepest Descent để cải thiện chất lượng lịch trực thu được ở bước khởi tạo với tập láng giềng Bước chuyển ca trực (Move single duty). Tập

láng giềng này gồm các lời giải láng giềng được tạo ra bằng cách di chuyển một ca trực từ y tá này sang y tá khác trong cùng một ngày nhằm đáp ứng sở thích và yêu cầu cá nhân của từng y tá về những ca trực thích hoặc không thích làm, cũng như đáp ứng quy định về số lần trực tối đa cho mỗi y tá tại bệnh viện. Lý do luận văn đề nghị thuật

42

giải đơn giản này để cải thiện lịch trực vì lịch trực không phức tạp như lịch làm việc ban ngày của y tá, nhu cầu y tá để phân công trực vào mỗi ngày mỗi tuần đều rất ít chỉ từ 3 đến 4 y tá mỗi ngày, số lượng ràng buộc liên quan đến ca trực cũng không nhiều. Do đó, việc dùng thuật giải Steepest Descent cho bài toán nhỏ đơn giản này là hợp lý. Tại mỗi bước lặp của thuật giải, từ thứ Hai đến thứ Sáu ta xem xét những bước chuyển một ca trực u của y tá A sang y tá B nếu thoả hai điều kiện sau:

- Y tá B chưa được phân công trực trong ngày đó.

- Ca trực u có thể được phân công cho y tá B mà không vi phạm bất cứ ràng buộc cứng nào.

Với tập các lời giải láng giềng được tạo từ bước lặp trên ta chọn ra lời giải tốt nhất s.

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 có, tức là tổng điểm phạt của

s có giá trị nhỏ hơn tổng điểm phạt của lời giải tốt nhất hiện có, thì s trở thành lời giải đầu vào cho bước lặp tiếp theo. Quá trình này được lặp đi lặp lại cho đến khi lời giải s

không cải thiện được chất lượng so với lời giải tốt nhất hiện có.

Gọi s0 là lời giải khởi tạo ban đầu, argmin {s’} là lời giải tốt nhất trong số các lời giải

láng giềng s’, mã giả của thuật giải Steepest Descent được mô tả như Hình 3.9.

Hình 3.9. Mã giả của thuật giải Steepest Descent với Bước chuyển ca trực

Procedure STEEPEST_DESCENT_MOVE_SINGLE_DUTY(s0)

1. Đặt s = s 0

2. Đặt Thoát = false 3. While (Thoát = false)

4. Phát sinh tập láng giềng N(s) từ bước chuyển ca trực hợp lệ

5. z = argmin {𝑠 𝑠 ∈ 𝑁(𝑠) } 6. If (𝑓(𝑧) ≥ 𝑓(𝑠)) 7. Thoát = true 8. Else 9. s = z 10. EndIf 11. End while

12. s là lời giải tốt nhất hiện tại

43

C ương 4. Thực nghiệm và thảo luận

Các thực nghiệm cho bài toán được thực hiện trên máy laptop với cấu hình bộ vi xử lý Intel Core 2 Duo, 2 GHz và 4GB RAM. Thuật giải mà luận văn đề nghịđược cài đặt bằng ngôn ngữ C++ và thử nghiệm trên 5 bộ dữ liệu thực tế từ bệnh viện đa khoa Centre hospitalier régional de Trois-Rivières tại Canada. Mỗi bộ dữ liệu có khoảng 50 y tá và thông tin nhu cầu y tá theo từng tuần của các bộ dữ liệu tại bệnh viện từ 06/11/2011 đến 09/05/2012 được trình bày ở Bảng 4.1.

Bảng 4.1. Thông tin nhu cầu y tá của 5 bộ dữ liệu theo tuần

Bộ dữ liệu Tuần CN T2 T3 T4 T5 T6 T7 Data01 (06/11/2011 – 03/12/2011) Tuần 1 3 35 34 34 35 34 2 Tuần 2 2 34 35 34 34 35 3 Tuần 3 3 34 34 35 34 34 3 Tuần 4 3 34 34 35 34 34 3 Data02 (01/01/2012 – 28/01/2012) Tuần 1 2 3 3 24 24 23 3 Tuần 2 3 34 34 35 34 34 3 Tuần 3 3 34 34 35 34 34 3 Tuần 4 3 34 34 35 34 35 2 Data03 (29/01/2012 – 25/02/2012) Tuần 1 2 35 34 35 34 34 3 Tuần 2 3 34 34 35 34 34 3 Tuần 3 3 34 34 35 34 34 3 Tuần 4 3 34 34 35 34 34 3 Data04 (25/03/2012 – 21/04/2012) Tuần 1 3 34 34 35 34 35 2 Tuần 2 2 35 35 34 34 3 3 Tuần 3 3 3 34 35 34 34 3 Tuần 4 3 34 34 35 34 34 3 Data05 (22/04/2012 – 19/05/2012) Tuần 1 3 35 35 36 35 34 3 Tuần 2 3 35 35 36 35 35 3 Tuần 3 3 35 35 36 36 35 3 Tuần 4 3 34 34 35 34 35 2

44

Giá trị của các tham số trong thuật giải Tabu Search mà luận văn đề nghị khi chạy thực nghiệm là:

- TabuTenure = 0.8*N

- maxNiter = 100

Với N là tổng số y tá cần phân công làm việc, maxNiter số lần liên tiếp tối đa mà lời

giải s không cải thiện được chất lượng so với lời giải tốt nhất hiện có.

- maxTime = 100 giây, đây là thời gian lặp tối đa cho phép của thuật giải Lặp tìm

kiếm cục bộ Iterated Local Search.

Trong mỗi bộ dữ liệu thuật giải đề nghị được chạy trong 10 lần và lấy kết quả trung bình để so sánh với kết quả xếp tay bằng MS Access được lấy từ thực tế của bệnh viện. Với số lượng ràng buộc cứng nhiều và quy mô bài toán cho quá trình xếp tay là khá phức tạp, nên trên thực tế y tá trưởng xếp lịch vẫn còn vi phạm ràng buộc cứng. Do việc điều chỉnh các ràng buộc cứng này tốn nhiều công sức và thời gian khi làm bằng MS Access nên y tá trưởng tạm chấp nhận lời giải. Tuy nhiên, họ vẫn mong muốn phần mềm sẽ có khả năng đưa ra các lời giải tránh các ràng buộc cứng này. Một số lịch xếp bằng MS Access chưa thoả mãn hết các ràng buộc cứng, trong đó các ràng buộc cứng bị vi phạm là H3, H4, H5 về thứ tự liên tiếp của các ca làm việc, cụ thể là

những lịch của các bộ dữ liệu Data01 (06/11/2011– 03/12/2011), Data04 (25/03/2012

– 21/04/2012).

Ngoài ra luận văn còn so sánh với kết quả xếp bằng thuật giải Lặp tìm kiếm cục bộ dùng Steepest Descent. Thuật giải này giống như thuật giải đề nghị, nhưng khác ở bước Local Search trong Lặp tìm kiếm cục bộ. Bước Local Search này dùng Steepest Descent để tìm kiếm lời giải tối ưu cục bộ thay vì dùng Tabu Search như trong thuật giải đề nghị.

Kết quả thực nghiệm được trình bày ở Bảng 4.2 cho thấy cả hai thuật giải đều cho kết quả tốt hơn nhiều so với kết quả xếp bằng MS Access ở tất cả các bộ dữ liệu và thoả mãn tất cả ràng buộc cứng. Những kết quả tốt hơn là những chữ số được tô đậm. Trong đó thuật giải đề nghị cho kết quả tốt hơn thuật giải Lặp tìm kiếm cục bộ dùng

45

Steepest Descent dù thời gian thực thi có nhiều hơn vài phút. Tuy vậy thời gian thực thi của cả hai thuật giải này đều hợp lý và vừa phải. Những kết quả mà thuật giải đề nghị tốt hơn thuật giải Lặp tìm kiếm cục bộ dùng Steepest Descent được gạch dưới trong các bảng kết quả. Việc so sánh giữa hai thuật giải này cho thấy thuật giải Lặp tìm kiếm cục bộ giải quyết tốt bài toán khó này và việc chọn được thuật giải Local Search tốt sẽ giúp tìm được lời giải rất gần với lời giải tối ưu hơn.

Bảng 4.2. Kết quả thực nghiệm Bộ dữ liệu MS Access Lặp tìm kiếm cục bộ dùng Steepest Descent Thuật giải đề nghị Tổng điểm phạt Tổng điểm phạt Thời gian (giây) Tổng điểm phạt Thời gian (giây) Data01 864 386.5 568 284 783 Data02 1188.5 637.5 546 466 789 Data03 1345.5 731 553 476.5 769 Data04 1142 465 562 337 772 Data05 1166.5 575 551 429 781

Chi tiết các số liệu của kết quả thực nghiệm trên được trình bày theo các mục tiêu của bài toán trong các bảng sau:

- Bảng 4.3: Mục tiêu quan trọng f1: Trải đều ca trễ cho các y tá chính thức.

- Bảng 4.4: Mục tiêu quan trọng f2: Tối thiểu số lượng y tá chính thức làm ca trễ vào thứ Sáu.

- Bảng 4.5: Mục tiêu quan trọng f3: Tối thiểu việc thiếu y tá.

- Bảng 4.6: Mục tiêu quan trọng f4: Tối đa số lượng y tá làm vào thứ Hai và thứ Sáu.

- Bảng 4.7: Mục tiêu phụ f5: 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.

Những mục tiêu phụ còn lại đều không bị vi phạm trong các kết quả xếp bằng MS Access, thuật giải Lặp tìm kiếm cục bộ dùng Steepest Descent, và thuật giải đề nghị.

46

Bảng 4.3. Mục tiêu trải đều ca trễ cho các y tá chính thức

Bộ dữ liệu MS Access Lặp tìm kiếm cục bộ dùng

Steepest Descent

Thuật giải đề nghị

Số lượng y tá chính thức chưa trải đều ca trễ trong bốn tuần

Data01 34 11 9

Data02 36 17 13

Data03 39 16 12

Data04 35 12 9

Data05 35 14 11

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

Bộ dữ liệu MS Access Lặp tìm kiếm cục bộ dùng

Steepest Descent

Thuật giải đề nghị

Số lượng y tá chính thức phải làm ca trễ vào thứ Sáu

Data01 12 5 0

Data02 12 4 2

Data03 9 5 0

Data04 9 6 3

Data05 12 4 0

Bảng 4.5. Mục tiêu tối thiểu việc thiếu y tá

Bộ dữ liệu MS Access Lặp tìm kiếm cục bộ dùng

Steepest Descent Thuật giải đề nghị Tổng số ca làm việc thiếu y tá Data01 7 4 4 Data02 23 14 9 Data03 32 19 11 Data04 16 5 2 Data05 20 13 11

47

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

Bộ dữ liệu MS Access Lặp tìm kiếm cục bộ dùng

Steepest Descent

Thuật giải đề nghị

Tổng số y tá thiếu vào thứ Hai và thứ Sáu

Data01 2 2 2

Data02 7 5 2

Data03 12 7 3

Data04 5 2 1

Data05 7 4 2

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

Bộ dữ liệu MS Access Lặp tìm kiếm cục bộ dùng

Steepest Descent

Thuật giải đề nghị

Tổng số ngày y tá làm nhiều hơn số ngày làm việc qui định trong tuần

Data01 6 9 9

Data02 11 20 25

Data03 8 21 29

Data04 17 27 30

Data05 15 22 24

Thuật giải đề nghị đạt được cả bốn mục tiêu quan trọng của bài toán, xem chi tiết ở các Bảng 4.3, Bảng 4.4, Bảng 4.5 và Bảng 4.6. Cải thiện nhất là số y tá chưa được trải đều ca trễ trong bốn tuần giảm mạnh từ hơn 30 xuống còn khoảng trên dưới 10 y tá. Số lượng y tá phải làm ca trễ vào thứ Sáu hầu như còn rất ít. Ngoài ra, lượng y tá bị thiếu trong từng ngày giảm đáng kể. Do bài toán yêu cầu phân công cho y tá làm thêm giờ trong trường hợp thiếu y tá. Vì vậy số lượng y tá làm nhiều hơn số ngày làm việc quy định trong tuần tăng, xem chi tiết ở Bảng 4.7. Tuy nhiên đây chỉ là mục tiêu phụ. Chi tiết về lịch làm việc và lịch trực của từng y tá trong bộ dữ liệu được trình bày ở phần Phụ lục.

48

C ương 5. Kết luận v ướng phát triển

Một phần của tài liệu Luận văn công nghệ thông tin nghiên cứu bài toán xếp lịch trực cho y tá (Trang 48 - 55)

Tải bản đầy đủ (PDF)

(71 trang)