Tải bản đầy đủ (.pdf) (132 trang)

Ứng dụng tìm kiếm tabu cho bài toán xếp lịch trực y tá

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.71 MB, 132 trang )

Đại Học Quốc Gia Tp. Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-------------------

BÙI VĂN QUANG

ỨNG DỤNG TÌM KIẾM TABU CHO BÀI
TOÁN XẾP LỊCH TRỰC Y TÁ
Chuyên ngành: Công Nghệ Thông Tin
Mã số ngành: 01.02.10

LUẬN VĂN THẠC SĨ

TP. HỒ CHÍ MINH, THÁNG 07 NAÊM 2004


Đại học Quốc Gia Tp. Hồ Chí Minh

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC BÁCH KHOA
---------

Độc lập - Tự do - Hạnh phúc
---------

NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ và tên học viên: BÙI VĂN QUANG

Phái: Nam


Ngày tháng năm sinh: 15 - 09 - 1977

Nơi sinh: Lâm Đồng

Chuyên ngành: Công Nghệ Thông Tin

Mã số: 01.02.10

I. TÊN ĐỀ TÀI: Ứng dụng tìm kiếm Tabu cho bài toán xếp lịch trực y tá
II. NHIỆM VỤ VÀ NỘI DUNG:
ƒ Nhiệm vụ của đề tài là nghiên cứu phối hợp tìm kiếm Tabu (Tabu search) với
lập trình ràng buộc (Constraint programming) để giải bài toán xếp lịch trực y
tá tại các bệnh viện.
III. NGÀY GIAO NHIỆM VỤ (Ngày bảo vệ đề cương) :
IV. NGÀY HOÀN THÀNH NHIỆM VỤ (Ngày bảo vệ luận án tốt nghiệp):
V. HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Tiến só Dương Tuấn Anh
CÁN BỘ HƯỚNG DẪN

CHỦ NHIỆM NGÀNH BỘ MÔN QUẢN LÝ NGÀNH

TS. Dương Tuấn Anh

TS. Dương Tuấn Anh

Nội dung và đề cương luận văn thạc só đã được Hội Đồng Chuyên Ngành thông qua.
Ngày
PHÒNG ĐÀO TẠO SAU ĐẠI HỌC

tháng


năm

KHOA QUẢN LÝ NGÀNH


TÓM TẮT

Luận án này có nhiệm vụ giải quyết cho bài toán xếp lịch trực y tá, một ứng dụng xếp
lịch phổ biến trong thực tế. Lịch trực y tá được tạo ra bởi ứng dụng phải thỏa mãn tất cả
các ràng buộc cứng và thỏa mãn càng nhiều càng tốt các ràng buộc mềm. Luận án đề
xuất một hướng tiếp cận mới bằng cách kết hợp lập trình ràng buộc với kỹ thuật tìm
kiếmTabu thích nghi để giải bài toán xếp lịch trực y tá. Công việc xếp lịch được chia
làm hai giai đoạn (i) dùng lập trình ràng buộc để tạo ra một lịch trực khả thi ban đầu
thỏa mãn tất cả các ràng buộc cứng và (ii) dùng kỹ thuật tìm kiếm Tabu thích nghi để
cải thiện chất lượng của lịch trực dựa trên các ràng buộc mềm. Kỹ thuật tìm kiếm Tabu
thích nghi cho phép điều chỉnh các thông số của kỹ thuật tìm kiếm Tabu một cách thích
hợp để có những chiến lược tốt trong quá trình tìm kiếm, nhờ đó lời giải tìm được rất có
chất lượng. Từ các kết quả thực nghiệm dựa trên các số liệu thực tế của bệnh viện Nhân
Dân Gia Định đã cho thấy lịch trực được tạo ra có chất lượng rất tốt trong thời gian
ngắn. Kết quả thực nghiệm này cũng đã chứng tỏ phương pháp mới được đề xuất bởi
luận án làm tốt hơn phương pháp sử dụng cách tiếp cận giải hệ ràng buộc riêng phaàn.

Trang i


ABSTRACT

This thesis deals with a real world scheduling problem of nurse roster at a ward of a
hospital. The generated schedule must satisfy all hard constraints and many soft
constraints as possible. This thesis proposes a new solution method for nurse

scheduling which combines Constraint Programming and Reactive Tabu Search. The
method consists of (i) a Constraint Programming phase to generate an initial feasible
schedule satisfying all hard constraints and (ii) a Reactive Tabu Search phase to
improve the quality of the schedule with respect to soft constraints. The Reactive Tabu
Search allows us to adjust the parameters of the Tabu search algorithm in order to
response appropriately in the search process to find a better quality solution. We
perform experiments of the method on real data sets at the Gia Dinh People Hospital
and obtains high quality solution within a very short time. The experimental results
show that the new solution method outperforms the previous nurse scheduling system
which applied partial constraint satisfaction technique and some problem-specific
heuristics.

Trang ii


LỜI CẢM ƠN

Trước tiên tôi xin gởi lời cảm ơn chân thành đến Thầy TS. Dương Tuấn Anh, người đã
tận tình giúp đỡ tôi trong suốt thời gian học tập cũng như trong thời gian làm luận án
thạc só. Luận án được hoàn thành đúng thời hạn, có chất lượng chính là nhờ công lao to
lớn của Thầy.
Tôi cũng xin gởi lời cảm ơn đến các Thầy Cô trong khoa Công Nghệ Thông Tin trường
Đại Học Bách Khoa TP. Hồ Chí Minh đã rèn luyện, hướng dẫn tôi để trở thành một trí
thức có ích cho xã hội.
Xin cảm ơn chị Thanh Bình, y tá trưởng khoa Săn Sóc Đặc Biệt bệnh viện Nhân Dân
Gia Định và chị Hồng Liên, y tá trưởng khoa Săn Sóc Đặc Biệt bệnh viện Chợ Rẫy đã
tạo điều kiện thuận lợi cho tôi tìm hiểu về nghiệp vụ của bài toán Xếp Lịch Trực Y tá.
Sau cùng tôi rất biết ơn sự động viên, giúp đỡ của gia đình và bạn bè đã cho tôi một
động lực mạnh mẽ để có thể làm nghiên cứu khoa học.


Trang iii


MỤC LỤC
Tóm tắt ...................................................................................................................... i
Abstract .................................................................................................................... ii
Lời cảm ơn ..............................................................................................................iii
Mục lục ................................................................................................................... iv
Danh mục các hình và giải thuật ..........................................................................viii
Danh mục các bảng ..............................................................................................viii
CHƯƠNG I :

GIỚI THIỆU........................................................................................1

I.1
Đặt vấn đề ....................................................................................................... 1
I.2
Bài toán xếp lịch trực y tá ............................................................................... 2
I.2.1 Mục đích của chương trình xếp lịch trực y tá ...............................................2
I.2.2 Các thuật ngữ ................................................................................................2
I.2.3 Các yêu cầu đặt ra.........................................................................................4
CHƯƠNG II : CÁC NGHIÊN CỨU LIÊN QUAN...................................................6
II.1
Các công trình về xếp lịch trực y tá ................................................................ 6
II.1.1
Hệ thống xếp lịch y tá dùng lập trình logic có ràng buộc ........................6
II.1.2
Dùng cách tiếp cận giải hệ ràng buộc riêng phần với hệ ràng buộc phân
cấp có thứ bậc cho bài toán xếp lịch trực y tá ..........................................................8
II.1.3

Dùng kỹ thuật tìm kiếm Tabu để giải quyết bài toán xếp lịch trực y tá .....
.................................................................................................................10
II.1.4
Nhận xét các kỹ thuật đã được dùng để xây dựng ứng dụng xếp lịch trực
y tá
.................................................................................................................12
II.2
Các công trình liên quan đến kỹ thuật tìm kiếm Tabu ................................. 14
II.2.1
Sự phát triển của Tabu Search ................................................................14
II.2.2
Một framework cho Tabu Search – Open TS .........................................14
II.2.3
Dùng Open TS để giải bài toán “người bán hàng rong” ........................16
CHƯƠNG III :

PHƯƠNG HƯỚNG GIẢI QUYẾT BÀI TOÁN ........................20

III.1 Lập trình ràng buộc....................................................................................... 20
III.1.1
Giải thuật Backtracking căn bản ............................................................21
III.1.2
Giải thuật Backtracking có kiểm tra hướng tới (forward checking) ......22
III.1.3
Giải thuật kiểm tra hướng tới cho ràng buộc đa biến.............................24
III.2 Kỹ thuật tìm kiếm Tabu ................................................................................ 28
III.2.1
Các thành phần cơ bản của kỹ thuật tìm kiếm Tabu...............................28
III.2.2
Kỹ thuật tìm kiếm Tabu thích nghi ..........................................................30

III.3 Ứng dụng kỹ thuật lập trình ràng buộc và kỹ thuật tìm kiếm Tabu cho bài
toán xếp lịch trực y tá ............................................................................................... 30
III.4 Tóm tắt chương ............................................................................................ 43
CHƯƠNG IV :
IV.1
IV.2

THIẾT KẾ ỨNG DỤNG XẾP LỊCH TRỰC Y TÁ .................45

Kiến trúc của chương trình xếp lịch trực y tá ............................................... 45
Thiết kế cơ sở dữ lieäu ................................................................................... 46
Trang iv


IV.2.1
Sơ đồ thiết kế cơ sở dữ liệu ......................................................................46
IV.2.2
Mô tả các thực thể trong bài toán xếp lịch trực y tá ...............................48
IV.3 Thiết kế các đối tượng trong lớp Stateful Business Object .......................... 50
IV.3.1
Các đối tượng biểu diễn thông tin liên quan đến nghiệp vụ của bài toán
xếp lịch trực y tá ......................................................................................................50
IV.3.2
Các đối tượng cung cấp các tác vụ thao tác trên tập hợp ......................51
IV.3.3
Các đối tượng quản lý việc lấy và cập nhật dữ liệu ................................52
IV.3.4
Các kiểu dữ liệu liệt kê được sử dụng trong ứng dụng xếp lịch trực y tá ...
.................................................................................................................52
IV.3.5

Sơ đồ thiết kế của lớp Stateful Business Object ......................................53
IV.4 Thiết kế thư viện Open FC (Open Forward Checking) ............................... 57
IV.4.1
Lợi điểm của việc thiết kế thư viện Open FC ..........................................57
IV.4.2
Các thành phần cơ bản của thư viện Open FC .......................................57
IV.4.3
Sơ đồ thiết kế của thư viện Open FC .......................................................57
IV.4.4
Mô tả các thành phần chính của các đối tượng trong thư viện Open FC ..
.................................................................................................................59
IV.5 Thiết kế thư viện Open TS (Open Tabu Search) ......................................... 60
IV.5.1
Mục đích của việc thiết kế thư viện Open TS ..........................................60
IV.5.2
Mô tả các thành phần cơ bản của thư viện Open TS ..............................61
IV.5.3
Sơ đồ thiết kế của thư viện Open TS........................................................66
IV.6 Thiết kế các đối tượng trong lớp Nurse Rostering Tabu Search.................. 70
IV.6.1
Các đối tượng được dùng để biểu diễn các ràng buộc trong bài toán xếp
lịch trực y tá .............................................................................................................70
IV.6.2
Các đối tượng được dùng để hiện thực bài toán xếp lịch trực y tá dùng kỹ
thuật forward checking ............................................................................................71
IV.6.3
Các đối tượng được dùng để hiện thực bài toán xếp lịch trực y tá dùng kỹ
thuật tìm kiếm tabu ..................................................................................................71
IV.6.4
Sơ đồ thiết kế của các đối tượng trong lớp Nurse Rostering Tabu Search.

72
IV.7 Các chức năng của hệ thống xếp lịch trực y tá ............................................. 76
IV.7.1
Chức năng thiết lập các thông tin cấu hình cho việc xếp lịch trực y tá
(Set Configuration) ..................................................................................................76
IV.7.2
Chức năng quản lý các thông tin liên quan đến mô hình làm việc
(Configure Working Model) ....................................................................................76
IV.7.3
Chức năng quản lý các thông tin liên quan đến vị trí làm việc của y tá
(Configure Position) ................................................................................................77
IV.7.4
Chức năng quản lý các thông tin liên quan đến kỹ năng làm việc của y tá
(Configure Skill) ......................................................................................................77
IV.7.5
Chức năng quản lý các thông tin liên quan đến y tá (Maintain Nurse) .....
.................................................................................................................77
IV.7.6
Chức năng chọn y tá (Select Nurse) ........................................................78
IV.7.7
Chức năng xem các yêu cầu của các y tá (View Request List) ...............78
IV.7.8
Chức năng xếp lịch trực cho y tá (Schedule) ..........................................79
IV.7.9
Chức năng xem lịch trực của y tá (View Roster) ....................................79
IV.7.10 Chức năng tạo báo cáo lịch trực cho y tá (Create Report) .....................79
CHƯƠNG V :

HIỆN THỰC ỨNG DỤNG XẾP LỊCH TRỰC Y TÁ ..................81
Trang v



V.1
Các công cụ được sử dụng để xây dựng hệ thống xếp lịch trực y tá ............ 81
V.2
Hiện thực khối Stateful Business Object...................................................... 81
V.3
Hiện thực thư viện Open FC (Open Forward Checking) ............................. 82
V.3.1
Khởi tạo đối tượng HybridForwardChecking.........................................82
V.3.2
Tác vụ startChecking...............................................................................83
V.3.3
Tác vụ getFeasibleSolution .....................................................................84
V.4
Hiện thực thư viện Open TS (Open Tabu Search) ....................................... 84
V.4.1
Khởi tạo đối tượng SingleThreadedTabuSearch.....................................84
V.4.2
Tác vụ startSolving ..................................................................................85
V.4.3
Tác vụ getBestSolution ............................................................................87
V.5
Hiện thực khối xếp lịch trực y tá Nurse Rostering Tabu Search ................. 88
V.5.1
Khởi tạo đối tượng NurseRosteringSystem .............................................88
V.5.2
Tác vụ schedule .......................................................................................88
V.5.3
Tác vụ getInitialSolution .........................................................................89

V.5.4
Tác vụ getBestEverSolution ....................................................................90
V.6
Giao diện của hệ thống xếp lịch trực y tá ..................................................... 90
V.6.1
Giao diện chính của chương trình...........................................................90
V.6.2
Giao diện cho chức năng thiết lập các thông tin cấu hình trước khi xếp
lịch trực y tá .............................................................................................................90
V.6.3
Giao diện cho chức năng quản lý các thông tin liên quan đến mô hình
làm việc .................................................................................................................91
V.6.4
Giao diện cho chức năng quản lý các thông tin liên quan đến y tá........91
V.6.5
Giao diện cho chức năng chọn y tá .........................................................94
V.6.6
Giao diện cho chức năng xem các yêu cầu của y tá ...............................94
Giao diện cho chức năng xếp lịch trực y tá ............................................95
V.6.7
V.6.8
Giao diện cho chức năng xem lịch trực y tá............................................96
V.6.9
Giao diện cho chức năng tạo báo cáo lịch trực y tá ...............................97
V.7
Kết quả thực nghiệm..................................................................................... 99
V.7.1
Các thông số được dùng khi xếp lịch ......................................................99
V.7.2
Kết quả thực nghiệm trên cấu hình thứ nhất ...........................................99

V.7.3
Kết quả thực nghiệm trên cấu hình thứ hai ...........................................100
V.7.4
Kết quả thực nghiệm trên cấu hình thứ ba ............................................100
V.7.5
Nhận xét .................................................................................................101
CHƯƠNG VI :
VI.1
VI.2

KẾT LUẬN..................................................................................108

Các đóng góp chính của luận án ................................................................. 108
Hướng mở rộng của đề tài .......................................................................... 109

THƯ MỤC THAM KHẢO .........................................................................................111
PHỤ LỤC A:

HƯỚNG DẪN CÀI ĐẶT .............................................................. A-1

PHỤ LỤC B:

HƯỚNG DẪN SỬ DỤNG ỨNG DỤNG XẾP LỊCH TRỰC Y TÁ .
.......................................................................................................... B-1

PHỤ LỤC C:

HƯỚNG DẪN SỬ DỤNG THƯ VIỆN OPEN FC (OPEN
FORWARD CHECKING)............................................................ C-1
Trang vi



PHỤ LỤC D:

HƯỚNG DẪN SỬ DỤNG THƯ VIỆN OPEN TS (OPEN TABU
SEARCH) ........................................................................................ D-1

BẢNG THUẬT NGỮ VIỆT-ANH ĐỐI CHIẾU .................................................... E-1

Trang vii


DANH MỤC CÁC HÌNH VÀ GIẢI THUẬT
Hình 2.1: Một bước lặp của Open TS ............................................................................... 14
Hình 2.2: Tua có chi phí nhỏ nhất của bài toán người bán hàng rong ............................. 18
Hình 3.1: Giải thuật backtracking căn bản ....................................................................... 21
Hình 3.2: Giải thuật backtracking có kiểm tra hướng tới ................................................. 23
Hình 3.3: Giải thuật kiểm tra hướng tới cho ràng buộc đa biến – 1 ................................. 25
Hình 3.4: Giải thuật kiểm tra hướng tới cho ràng buộc đa biến – 2 ................................. 26
Hình 3.5: Giải thuật kiểm tra hướng tới cho ràng buộc đa biến – 3 ................................. 26
Hình 3.6: Giải thuật tìm kiếm Tabu.................................................................................. 28
Hình 3.7: Heuristic sắp xếp thứ tự biến ............................................................................ 31
Hình 4.1: Kiến trúc của ứng dụng xếp lịch trực y tá......................................................... 44
Hình 4.2: Thiết kế cơ sở dữ liệu ....................................................................................... 46
Hình 4.3: Sơ đồ thiết kế của lớp Stateful Business Object – 1 ........................................ 53
Hình 4.4: Sơ đồ thiết kế của lớp Stateful Business Object – 2 ........................................ 54
Hình 4.5: Sơ đồ thiết kế của lớp Stateful Business Object – 3 ........................................ 55
Hình 4.6: Sơ đồ thiết kế của thư viện Open FC ............................................................... 57
Hình 4.7: Sơ đồ thiết kế của thư viện Open TS – 1 ......................................................... 66
Hình 4.8: Sơ đồ thiết kế của thư viện Open TS – 2 ......................................................... 67

Hình 4.9: Sơ đồ thiết kế của thư viện Open TS – 3 ......................................................... 68
Hình 4.10: Sơ đồ thiết kế của các đối tượng trong lớp
Nurse Rostering Tabu Search – 1 .................................................................. 72
Hình 4.11: Sơ đồ thiết kế của các đối tượng trong lớp
Nurse Rostering Tabu Search – 2 .................................................................. 73
Hình 4.12: Sơ đồ thiết kế của các đối tượng trong lớp
Nurse Rostering Tabu Search – 3 .................................................................. 74

DANH MỤC CÁC BẢNG
Bảng 5.1: Kết quả thực nghiệm trên cấu hình thứ nhất.................................................. 102
Bảng 5.2: Kết quả thực nghiệm trên cấu hình thứ hai.................................................... 104
Bảng 5.3: Kết quả thực nghiệm trên cấu hình thứ ba ..................................................... 106

Trang viii


Giới thiệu

CHƯƠNG I :

I.1

GIỚI THIỆU

Đặt vấn đề

Ngày nay, việc ứng dụng công nghệ thông tin để phát triển kinh tế, xã hội đã trở
thành một mục tiêu không thể thiếu ở những quốc gia phát triển cũng như đang
phát triển. Một số công việc khó khăn, phức tạp trong cuộc sống dần dần đã được
thay thế bởi những ứng dụng tin học hóa.

Trong những năm gần đây cuộc sống của người dân nước ta không ngừng được cải
thiện, nhu cầu về chăm sóc sức khỏe tăng lên là điều tất yếu. Để đáp ứng nhu cầu
cấp thiết đó, qui mô của các bệnh viện ở nước ta ngày càng được mở rộng, số
lượng y tá, bác só, … được tăng lên. Việc phân công lịch trực cho y tá đã trở thành
vấn đề không đơn giản khi phải giải quyết cho một số lượng lớn các y tá, các yêu
cầu cá nhân của họ, cũng như phải tuân theo các qui định của bệnh viện, hợp đồng
và luật lao động.
Xếp lịch y tá là một bài toán tối ưu tổ hợp (combinatorial optimization) thuộc loại
khó. Ở những quốc gia phát triển như Anh, Pháp, Ý, Bỉ … họ đã nghiên cứu xây
dựng chương trình xếp lịch y tá bằng các phương pháp khác nhau và đã ứng dụng
thành công cho một số bệnh viện. Các phương pháp đã được dùng có thể kể đến
như : dùng lập trình logic có ràng buộc ([2]), dùng cách tiếp cận giải hệ ràng buộc
riêng phần ([17]), dùng giải thuật di truyền ([3],[4]), dùng kỹ thuật tìm kiếm tabu
([6]), … Mỗi phương pháp được dùng đều có ưu và nhược điểm riêng.
Hiện nay, các phương pháp tìm kiếm không có hệ thống như : mô phỏng luyện kim
(Simulated Annealing), giải thuật di truyền (Genetic Algorithms), tìm kiếm Tabu
(Tabu Search) rất được ưu chuộng trong việc sử dụng để giải quyết cho các bài
toán tối ưu tổ hợp. Lý do là vì các phương pháp này cho ra kết quả rất tốt trong
thời gian ngắn so với các phương pháp tìm kiếm có hệ thống như dùng lập trình
logic có ràng buộc, dùng cách tiếp cận giải hệ ràng buộc riêng phần, ….
Việc phát triển ứng dụng xếp lịch trực y tá cho các bệnh viện ở nước ta vẫn còn là
điều mới mẻ. Với các yêu cầu đặc thù như : qui định của luật lao động, qui định
của khoa và bệnh viện, mô hình làm việc cho các y tá, … đã đòi hỏi sự cần thiết
phải xây dựng một ứng dụng xếp lịch trực y tá để đáp ứng các yêu cầu thực tế ở
Việt Nam.

Trang 1


Giới thiệu

Nhiệm vụ của luận văn là nghiên cứu một phương pháp xếp lịch y tá mới mà là sự
kết hợp của hai cách tiếp cận lớn để giải quyết các hệ ràng buộc: lập trình ràng
buộc (constraint programming) và tìm kiếm cục bộ (local search). Lập trình ràng
buộc giúp tạo ra lời giải ban đầu thỏa mãn được tất cả những ràng buộc cứng (hard
constraint), nhưng chưa tính tới các ràng buộc mềm (soft constraint). Tìm kiếm
cục bộ, mà ở đây thông qua kỹ thuật tìm kiếm Tabu, sẽ cải thiện lời giải khả thi
thành lời giải chất lượng cao, tức là lời giải có tính đến các ràng buộc mềm.
Phương pháp mới này có chủ ý tận dụng các thế mạnh của cả hai cách tiếp cận lập
trình ràng buộc và tìm kiếm cục bộ.
Kỹ thuật lập trình ràng buộc được sử dụng trong luận văn là kỹ thuật backtracking
có kiểm tra hướng tới (forward checking). Kỹ thuật này cho phép tạo ra lời giải
khả thi ban đầu thỏa mãn tất cả các ràng buộc cứng của bài toán một cách nhanh
chóng.
Trong giai đoạn tối ưu để tìm ra lời giải tốt nhất dựa trên lời giải khả thi ban đầu,
kỹ thuật tìm kiếm Tabu được sử dụng. Trong luận văn này, kỹ thuật tìm kiếm Tabu
được tác giả sử dụng là kỹ thuật tìm kiếm Tabu thích nghi (Reactive Tabu Search),
cách tiếp cận này có ưu điểm so với cách tiếp cận chỉ dùng kỹ thuật tìm kiếm Tabu
thông thường ở chỗ : nó cho phép điều chỉnh các thông số của giải thuật tìm kiếm
Tabu một cách phù hợp để có những chiến lược tốt trong quá trình tìm kiếm, vì thế
lời giải tìm được sẽ có chất lượng tốt hơn.
I.2

Bài toán xếp lịch trực y tá

Ngoài qui định của luật lao động, các yêu cầu của việc xếp lịch trực y tá ở các
bệnh viện đều có những đặc trưng riêng. Vì thế việc chọn ra một mô hình tiêu
biểu đại diện cho việc xếp lịch y tá ở Việt Nam là cần thiết. Dựa trên tiêu chí đó,
đề tài chọn bệnh viện Nhân Dân Gia Định, đây là một bệnh viện lớn của thành
phố với mô hình trực của y tá có thể được xem như phổ biến ở nước ta.


I.2.1 Mục đích của chương trình xếp lịch trực y tá
Chương trình xếp lịch trực y tá có nhiệm vụ phân công các y tá vào các ca trực cho
mỗi ngày trong tháng và cung cấp các tiện ích để người dùng dễ dàng quản lý các
thông tin về y tá, thiết lập mô hình làm việc, thêm bớt các yêu cầu ước muốn,
chỉnh sửa các thông tin hệ thống. Ngoài ra các biểu mẫu cũng được cung cấp để
phục vụ cho việc in ấn, báo cáo.

I.2.2 Các thuật ngữ
o

Mô hình ba ca bốn kíp : mô hình có 3 ca {Sáng, Chiều, Đêm} và 4 kíp. Mỗi
kíp định nghóa ca trực trong một số ngày nhất định và sau đó sẽ lặp lại.

Trang 2


Giới thiệu
Ví dụ: kíp 1 trực theo {Sáng, Chiều, Đêm, Nghỉ}, kíp 2 {Chiều, Đêm, Nghỉ,
Sáng}, …

Trang 3


Giới thiệu
o
o
o
o
o


Ràng buộc cứng (hard constraint) : là những ràng buộc mà một lời giải hợp lệ
phải thỏa mãn.
Ràng buộc mềm (soft constraint) : là những ràng buộc mà việc thỏa mãn là
mong muốn chứ không bắt buộc.
Ràng buộc đơn biến : ràng buộc chỉ có một biến.
Ràng buộc nhị biến : ràng buộc có hai biến.
Ràng buộc đa biến : ràng buộc có nhiều hơn hai biến liên quan.

I.2.3 Các yêu cầu đặt ra
Các khoa lớn trong bệnh viện Nhân Dân Gia Định như Săn sóc đặc biệt, Cấp cứu,
Hồi sức nội, Hồi sức ngoại, Đặc biệt nhi và Phẫu thuật đều dùng mô hình trực ba
ca.
Có ba ca trực trong một ngày:
o
o
o

Ca sáng: từ 7 giờ sáng đến 3 giờ chiều.
Ca chiều: từ 3 giờ chiều đền 9 giờ tối.
Ca đêm: từ 9 giờ tối đến 7 giờ sáng ngày hôm sau.

Chương trình xếp lịch y tá phải đáp ứng được yêu cầu sau: lời giải được tạo ra phải
thỏa mãn tất cả các ràng buộc cứng (được ký hiệu là C) và thỏa mãn càng nhiều
càng tốt các ràng buộc mềm (được ký hiệu là M).

Qui định của luật lao động
-

Thời gian nghỉ phép một năm là 12 ngày (C).
Thời gian nghỉ giữa các ca trực ít nhất phải là 2 ca (C).

Ví dụ: nếu một y tá làm ca chiều hôm nay thì không thể phân vào ca trực sáng
hôm sau.

Qui định của bệnh viện
-

Lịch trực của y tá nên tuân theo mô hình trực của khoa và bệnh viện (M).
Ví dụ: Y tá A sẽ làm theo mô hình {Sáng, Chiều, Đêm, Nghỉ}.
Ngày cuối tuần hay ngày lễ vẫn được xem như ngày trực(C).
Sau một ca trực đêm phải là một ngày nghỉ (C).
Số y tá tối thiểu phải có mặt ở một ca trực (C).
Ví dụ: ca sáng phải có tối thiểu 5 y tá ở khoa Săn sóc đặc biệt.
Số y tá tối đa có mặt ở một ca trực (C).
Trong một tháng được nghỉ 1 ngày (C). Ngày nghỉ này độc lập với số ngày
phép và những ca trực “nghỉ” trong tháng.
Tổng số ngày làm việc tối thiểu của y tá trong một tháng (C).

Trang 4


Giới thiệu

-

Ví dụ: số ngày làm việc tối thiểu trong một tháng của y tá phải là 20 ngày.
Tổng số ngày làm việc tối đa của y tá trong một tháng (C).

Yêu cầu của y tá
Đây là những mong muốn của chính các y tá cho lịch trực của họ. Ví dụ: họ mong
muốn được nghỉ vào các ngày sinh nhật, ngày lễ hoặc mong muốn được làm việc ở

một ca trực trong một ngày nào đó.
Có 4 loại sau đây:
- Loại bắt buộc: những nguyện vọng cấp thiết hoặc đã hoạch định từ trước rất
lâu cần phải được giải quyết (C).
- Ưu tiên 1: những yêu cầu quan trọng không phải bắt buộc (M).
- Ưu tiên 2: những yêu cầu bình thường (M).
- Ưu tiên 3: những yêu cầu không quan trọng (M).
Với quá nhiều ràng buộc nêu trên, bài toán xếp lịch trực y tá trở nên rất phức tạp,
việc thỏa mãn hết tất cả các ràng buộc là rất khó và càng khó khăn hơn nữa khi số
lượng y tá, số ràng buộc mềm và số ngày xếp lịch tăng lên.
Tóm lại bài toán xếp lịch trực y tá bao gồm nhiều dạng ràng buộc khác nhau mà
chương trình phải cố gắng thỏa mãn. Đối với các ràng buộc cứng, đây là bài toán
thỏa mãn ràng buộc (constraint satisfaction problem) và đối với các ràng buộc
mềm, đây là bài toán tối ưu hóa (optimization problem).
Luận văn được tổ chức thành 6 chương :
1.
2.

3.

4.
5.

6.

Chương thứ nhất giới thiệu về đề tài
Chương thứ hai giới thiệu các công trình xếp lịch trực y tá đã xây dựng và
trình bày các nghiên cứu liên quan đến các phương pháp sẽ được sử dụng
trong đề tài.
Chương thứ ba trình bày phương hướng giải quyết bài toán xếp lịch trực y tá,

tất cả các giải thuật được dùng trong luận án sẽ được trình bày một cách chi
tiết.
Chương thứ tư trình bày thiết kế của ứng dụng xếp lịch trực y tá cũng như
thiết kế cho các thư viện: backtracking có kiểm tra hướng tới, tìm kiếm Tabu.
Chương thứ năm trình bày cách hiện thực ứng dụng xếp lịch trực y tá cũng như
các thư viện đã được thiết kế trong chương bốn. Phần cuối cùng của chương sẽ
trình bày các kết quả thực nghiệm đã thu được và so sánh với các kết quả đã
đạt được của phương pháp giải hệ ràng buộc riêng phần.
Chương cuối cùng tổng kết lại những kỹ thuật cũng như kinh nghiệm đã được
sử dụng trong đề tài. Từ đó đề xuất ra các hướng mở rộng cho đề tài sau này.

Trang 5


Các nghiên cứu liên quan

CHƯƠNG II :

CÁC NGHIÊN CỨU LIÊN QUAN

Trong phần này, một số các phương pháp đã được dùng để xây dựng chương trình
xếp lịch trực y tá sẽ được trình bày, đồng thời các kỹ thuật liên quan đến phương
pháp được dùng trong đề tài cũng sẽ được tìm hiểu nhằm giúp ích cho việc hiện
thực dễ dàng, hiệu quả.
II.1

Các công trình về xếp lịch trực y tá

II.1.1 Hệ thống xếp lịch y tá dùng lập trình logic có ràng buộc
Với cách tiếp cận dùng lập trình logic có ràng buộc S. Abdennadher ([1],[7]) đã

xây dựng thành công ứng dụng xếp lịch cho y tá có tên gọi INTERDIP vào năm
1999. Hệ thống này được phát triển bằng phần mềm CLP Siemens-NixdorfInformations Systeme AG sử dụng IF/Prolog (Sie96b) với một bộ ràng buộc
(Sie96a) dựa trên CHIP (DVS+88). Bộ ràng buộc này cung cấp một số ràng buộc
với miền trị xác định giúp INTERDIP mô tả các ràng buộc trong bài toán xếp lịch
y tá.
a) Các yêu cầu của bài toán :
-

Trong một ngày có 3 ca trực : ca sáng, ca chiều và ca đêm.
Ràng buộc theo luật lao động: số ngày làm tối đa mỗi tháng, thời gian nghỉ tối
thiểu giữa hai ca trực.
Ràng buộc theo ca trực: số y tá tối đa và tối thiểu ở mỗi ca trực trong ngày.
Ràng buộc theo hợp đồng.
Các yêu cầu của y tá.
Ví dụ: nghỉ một ngày nào đó trong tháng, làm một ca trực ở một ngày trong
tháng.

Các ràng buộc theo luật lao động, theo ca trực, theo hợp đồng được xem là các
ràng buộc cứng cần phải thỏa mãn. Các yêu cầu của y tá tùy theo trường hợp mà
được xem là bắt buộc hoặc không bắt buộc.
b) Bài toán được mô hình theo cách giải hệ ràng buộc riêng phần :
-

Các ca trực trong các ngày của y tá được biểu diễn bởi các biến có dạng Vij
với i làsố thứ tự của y tá được xếp trực vào ngày j.

Trang 6


Các nghiên cứu liên quan

-

Miền trị của các biến là một tập các số nguyên hữu hạn có giá trị {0, 1, 2, 3}
với 0 là nghỉ trực, còn 1, 2, 3 lần lược là các ca sáng, chiều, đêm.
Các ràng buộc trong hệ thống được biểu diễn theo dạng của IF/Prolog
(Sie96b).
Ví dụ: biểu diễn cho ràng buộc số y tá tối đa và tối thiểu trong một ca trực có
dạng như sau:
Cardinality(Mink, Maxk, [V1j=k, V2j=k, …, Vsj=k])
với j: ngày đang xếp lịch cho các y tá.
s: số y tá.
k: là ca sáng, chiều hoặc đêm.

c) Các Heuristic được sử dụng :
Xếp lịch thành nhiều pha
Nhằm làm giảm không gian tìm kiếm, việc xếp lịch được chia nhỏ và thực hiện
trong ba pha. Mỗi pha chỉ phân bố một loại ca trực :
Pha 1 : xếp những ngày nghỉ.
Pha 2 : xếp những ca đêm.
Pha 3 : xếp các ca sáng và chiều.
Như vậy trong mỗi pha, miền giá trị của các biến đại diện cho các ca trực của y tá
sẽ giảm từ 4 xuống 2, không gian tìm kiếm được thu hẹp một cách đáng kể. Ở mỗi
pha, mỗi biến sẽ được gán giá trị 0 hoặc 1, ý nghóa của các giá trị này sẽ phụ
thuộc vào pha đang xét. Nếu một biến trong pha đầu tiên có giá trị 1, điều đó
nghóa là nó được gán một ngày nghỉ. Ngược lại những biến có trị 0 mang ý nghóa
là vẫn chưa được gán trị và sẽ được giải quyết ở hai pha còn lại. Trong pha thứ hai
những biến chưa gán trị trong pha 1 sẽ được gán trị 0 hoặc 1, với 1 có nghóa là
được xếp vào một ca đêm. Những biến mang giá trị 0 trong pha 2 được giải quyết
trong pha cuối cùng, chúng sẽ được gán giá trị 0 hoặc 1 tương ứng cho ca chiều
hoặc sáng.

Chia việc xếp lịch thành nhiều pha như vậy giúp cho không gian tìm kiếm được
thu hẹp một cách đáng kể và bài toán trở nên đơn giản hơn rất nhiều.
Gán chuỗi ngày làm việc theo một khuôn mẫu
Do không gian tìm kiếm quá lớn, những giải thuật tìm kiếm bình thường không thể
nào đủ thông minh để lựa chọn những giá trị đúng cho mỗi biến mà chỉ máy móc
thử sai hết giá trị này đến giá trị khác. Trong hệ thống của mình, S. Abdennadher
sử dụng một số lời giải mẫu được giả định là tốt gọi là khuôn mẫu (Pattern).

Trang 7


Các nghiên cứu liên quan
Khuôn mẫu này biểu diễn ca trực trong một số ngày liên tiếp nhau và sẽ được gán
cho các y tá.
Có rất nhiều khuôn mẫu được biết tùy vào ý thích của y tá hoặc qui định của bệnh
viện. Một mong muốn điển hình là làm việc năm ngày liên tục và nghỉ hai ngày
cuối tuần. Như vậy trong pha 1, khuôn mẫu đó sẽ là {0,0,0,0,0,1,1}. Mỗi pha sẽ có
tập các khuôn mẫu khác nhau. Những khuôn mẫu trong mỗi pha đều có độ ưu tiên
để lựa chọn, những khuôn mẫu nào tạo nên lời giải tốt thì sẽ có độ ưu tiên cao.
d) Kỹ thuật được dùng để tối ưu lịch trực :
Một lịch trực nếu chỉ thỏa mãn tất cả những ràng buộc cứng có thể gọi là chấp
nhận được, tuy nhiên nó không có nghóa là đủ tốt để sử dụng được trong bệnh
viện. S Abdennadher đã sử dụng một phương pháp thông dụng trong những ứng
dụng xếp lịch để đánh giá độ “tốt” của lời giải là số lượng và độ ưu tiên của những
ràng buộc mềm bị vi phạm. Một lời giải tối ưu là lời giải có số lượng những ràng
buộc mềm bị vi phạm là ít nhất.
INTERDIP sử dụng giải thuật Nhánh và Cận để tối ưu lịch trực. Nhánh và Cận bắt
đầu từ một lời giải và đòi hỏi lời giải kế tiếp phải tốt hơn lời giải hiện tại. Chất
lượng được đo bằng một hàm chi phí thích hợp, hàm này phụ thuộc vào tập các
ràng buộc mềm bị vi phạm. Trong INTERDIP, Nhánh và Cận được thực hiện ba

lần để tối ưu lịch trực vừa được tạo. Sự công bằng cho mỗi y tá cũng là vấn đề khi
tối ưu lịch trực, điều đó có nghóa là lịch trực của một y tá không quá dày hoặc quá
thưa so với các y tá khác.

II.1.2 Dùng cách tiếp cận giải hệ ràng buộc riêng phần với hệ ràng
buộc phân cấp có thứ bậc cho bài toán xếp lịch trực y tá
Một bài toán thỏa mãn ràng buộc (Constraint Satisfaction Problem) thường được
biểu diễn bởi một tập các biến, mỗi biến được kết hợp với một miền trị hữu hạn,
và một tập các ràng buộc qui định cách chọn trị cho biến. Lời giải của bài toán là
kết quả của việc gán trị cho các biến sao cho tất cả các ràng buộc đều được thỏa
mãn.
Trong thực tế, đối với một số bài toán tối ưu tổ hợp thuộc loại khó như xếp lịch
trực cho y tá thì việc thỏa mãn hết tất cả các ràng buộc của bài toán là điều không
thể. Vì thế trong hệ thống xếp lịch trực y tá của mình, Hofe[14] đã dùng cách tiếp
cận giải hệ ràng buộc riêng phần (Partial constraint satisfaction problem) với ý
tưởng chính là cố gắng thỏa mãn càng nhiều ràng buộc càng tốt, tuy nhiên số các
ràng buộc bị vi phạm phải ở mức chấp nhận được. Chất lượng của lời giải được
đánh giá dựa trên số các ràng buộc bị vi phạm, số các ràng buộc vi phạm càng ít
thì lời giải càng có chất lượng cao.

Trang 8


Các nghiên cứu liên quan

a) Yêu cầu của bài toán
Gán ca trực cho mỗi y tá trong tất cả các ngày cần xếp lịch (khoảng thời gian xếp
lịch thường được yêu cầu là từ 4 đến 5 tuần).
Lịch trực tạo ra phải đáp ứng được các yêu cầu sau:
Tuân theo các qui định của luật lao động.

Phân bổ các ngày nghỉ phép cho phù hợp.
Phân bổ các ca trực cho phù hợp.
Đáp ứng các yêu cầu của y tá.
Tuân theo các mô hình làm việc đã được định nghóa trước.
Trong các yêu cầu ở trên thì yêu cầu tuân theo các qui định của luật lao động là
bắt buộc, các yêu cầu còn lại là không bắt buộc.
b) Các kỹ thuật được sử dụng
Giải thuật được sử dụng là BB-FC-BM, đây là sự kết hợp của ba kỹ thuật: nhánh
và cận, kiểm tra hướng tới, và backmarking. Trong đó, nhánh và cận được dùng để
tối ưu lịch trực, kiểm tra hướng tới và backmarking được dùng để thu hẹp miền trị
của các biến.
Ngoài ra, Hofe còn dùng thêm các kỹ thuật khác như: phân cấp các ràng buộc
theo độ ưu tiên, dùng tri trức miền ứng dụng mang tính heuristic, kỹ thuật lựa chọn
giá trị kế tiếp cho biến.
Phân cấp các ràng buộc theo độ ưu tiên
Các ràng buộc được chia thành nhiều nhóm, mỗi nhóm có một độ ưu tiên nhất
định (từ 0 đến n, với 0 đại diện cho nhóm các ràng buộc cứng).
Đối với các ràng buộc mềm, mỗi ràng buộc sẽ được gán một trọng số để biểu
diễn mức độ quan trọng của chúng. Độ quan trọng của những ràng buộc trong
cùng một mức ưu tiên được xác định bằng tổng các trọng số này.
Luật sau sẽ được áp dụng khi so sánh hai tập ràng buộc mềm C’ và C’’:
C’ > C’’ nếu và chỉ nếu C’ >1 C’’
với C’ >i C’’ nếu và chỉ nếu:
Tổng trọng số của các ràng buộc ở mức ưu tiên i của tập C’ lớn hơn của
tập C’’.

Trang 9


Các nghiên cứu liên quan

-

Hoặc tổng trọng số của các ràng buộc ở mức ưu tiên i của tập C’ và C’’
bằng nhau, nhưng ở mức i+1 tổng trọng số của các ràng buộc của tập C’
lại lớn hơn của C’’.

Tri thức miền ứng dụng mang tính heuristic
Nhằm làm tăng tính hữu hiệu của giải thuật, tri thức miền ứng dụng được thêm
vào với tác dụng giúp giải thuật tìm ra lời giải tối ưu nhanh hơn. Ở đây, chúng
được biểu diễn dưới dạng những ràng buộc mềm có độ ưu tiên nhỏ.
Ví dụ: mô hình chuỗi các thời gian làm việc diễn tả các ca trực ưu thích của y tá,
hoặc của khoa và bệnh viện. Các mô hình này được tạo ra sao cho đã thỏa mãn
các ràng buộc bắt buộc của bài toán. Trước khi xếp lịch các mô hình này sẽ được
gán cho các y tá, và chúng có khả năng sẽ trở thành một phần của lời giải.
Kỹ thuật lựa chọn giá trị kế tiếp cho biến
Việc lựa chọn một giá trị phù hợp để mở rộng lời giải được thực hiện bởi giải thuật
MIN-MAX, đây là một biến thể của giải thuật AC-3. Giải thuật này sẽ tính giá trị
tương thích phù hợp nội bộ (locally consistent compatibilities) cho mỗi giá trị trong
miền trị của biến v. Theo thí nghiệm của Hofe, việc sử dụng giá trị tương thích
phù hợp nội bộ để chọn giá trị kế tiếp cho biến v làm hiệu suất của chương trình
tăng lên rõ rệt.

II.1.3 Dùng kỹ thuật tìm kiếm Tabu để giải quyết bài toán xếp lịch
trực y tá
Ứng dụng này được xây dựng để phục vụ cho việc xếp lịch trực y tá ở các bệnh viện
nước Ý ([6]).
a) Yêu cầu của bài toán
-

Gán ca trực hoặc ngày nghỉ cho y tá ở mỗi ngày trong tháng.

Một ngày được chia thành 3 ca là sáng, chiều và đêm.
Có 2 loại ràng buộc gồm có ràng buộc về hợp đồng lao động (Contractual
Constraints) và ràng buộc về ước muốn trong lúc làm việc (Operational
Requirements) được mô tả như sau:
Ràng buộc về hợp đồng lao động : được xem như là bắt buộc mà lời giải phải
thỏa mãn.
- Mỗi y tá không được làm quá K ngày liên tục.

Trang 10


Các nghiên cứu liên quan
-

Số các ca đêm liên tục tối thiểu phải bằng L và không được vượt quá M
ngày.
Sau một chuỗi các ca đêm liên tục y tá phải được nghỉ ít nhất N ngày.
Sau ngày cuối cùng của một chuỗi các ca đêm không được gán lại cho y tá
ca đêm ít nhất P ngày.

Trong đó K, L, M, N, P là các thông số được cho trước.
Ràng buộc về ước muốn trong lúc làm việc : các ràng buộc này chỉ được xem
là mong muốn chứ không bắt buộc.
- Bảo đảm số ngày nghỉ của y tá phải bằng với một giá trị cho trước.
- Ca chiều – ca sáng không nên được gán liên tục.
- Thỏa mãn các yêu cầu cá nhân của y tá.
Các ràng buộc thuộc loại này sẽ được gán với một trọng số để cho biết mức độ
quan trọng của nó.
Lưu ý: thành phần ảnh hưởng lớn đến hàm chi phí (cost function) là những
thành phần có liên quan đến các ca đêm và ngày nghỉ.

b)

Kỹ thuật dùng để tối ưu lịch trực
Kỹ thuật tìm kiếm Tabu được dùng trong việc tối ưu lịch trực. Cách làm việc
được mô tả như sau:
o

o

Lời giải ban đầu được tạo ra bằng cách dùng giải thuật tham lam (Greedy
Algorithm). Đầu tiên các ca đêm sẽ được gán trước, sau đó lần lược tới các
ca sáng và chiều, vì thế có khuynh hướng các ca sẽ được gán một cách
đồng đều.
Sau đó giai đoạn tối ưu cho lời giải ban đầu được thực hiện bằng cách thực
hiện các bước chuyển Tabu. Như đã lưu ý ở trên, các ca đêm và ngày nghỉ
có ảnh hưởng rất lớn đến hàm chi phí, vì thế giải thuật chỉ xem xét đến các
thành phần trong lời giải mà có liên quan đến ca đêm hay ngày nghỉ. Các
lời giải khả thi được tạo ra từ lời giải hiện hành có thể được thực hiện bởi
một trong bốn cách sau đây trong đó các ràng buộc về hợp đồng lao động
đảm bảo được tôn trọng :
-

Một tập các ca đêm mới được gán cho y tá.
Ca đêm đầu tiên trong tập được hoán đổi với ca trực của y tá khác.
Ca đêm sau cùng trong tập được hoán đổi với ca trực của y tá khác.
Một ca đêm được gán như là ca đêm đầu tiên hoặc ca đêm sau cùng
của một tập các ca đêm.

Trang 11



Các nghiên cứu liên quan
Các thành phần còn lại trong lời giải sẽ lần lượt được gán các ca sáng và
chiều bằng cách dùng giải thuật tham lam. Sau đó các bước còn lại của giải
thuật tìm kiếm Tabu sẽ được thựsc hiện.
c)

Kết quả đạt được
Chương trình đã được hiện thực thành công và đã được đưa vào sử dụng tại một
số bệnh viện ở Ý với thời gian tính toán là chấp nhận được.

II.1.4 Nhận xét các kỹ thuật đã được dùng để xây dựng ứng dụng xếp
lịch trực y tá
Ứng dụng xếp lịch trực y tá INTERDIP được S. Abdennadher xây dựng bằng cách
tiếp cận dùng lập trình logic có ràng buộc đã có những thành công đáng kể: lịch
trực được tạo ra có chất lượng chấp nhận được và có khuynh hướng mang lại sự
công bằng cho các y tá, điều đó có nghóa là lịch trực của một y tá không quá dày
hoặc quá thưa so với các y tá khác. Không gian tìm kiếm của bài toán đã được
giảm một cách đáng kể khi tác giả chia việc xếp lịch thành nhiều pha, nhờ vậy mà
bài toán đã trở nên đơn giản hơn rất nhiều. Tác giả đã sử dụng các khuôn mẫu, các
lời giải mẫu được giả định là tốt được xây dựng dựa trên các ý thích của y tá hoặc
sự ưu thích của bệnh viện, việc sử dụng này đã góp phần làm cho lời giải tìm được
có chất lượng đáng kể. Sự thành công của INTERDIP không thể có nếu không kể
tới việc sử dụng giải thuật nhánh và cận, giải thuật này bắt đầu từ một lời giải và
đòi hỏi lời giải kế tiếp phải tốt hơn lời giải hiện tại, chất lượng của lời giải được đo
bằng một hàm chi phí thích hợp, hàm này phụ thuộc vào tập các ràng buộc mềm bị
vi phạm. Tác giả đã cho rằng cách tiếp cận được sử dụng để xây dựng INTERDIP
có khả năng áp dụng cho các bài toán thuộc lớp xếp lịch nhân viên khác, từ đó cho
thấy lập trình logic có ràng buộc là một cách tiếp cận quan trọng cho các bài toán
có ứng dụng thực tế. Chi phí cho việc xây dựng INTERDIP cũng là một thuận lợi

đáng kể: thời gian phát triển ứng dụng ngắn, chỉ tốn khoảng 4000 dòng mã khi sử
dụng ngôn ngữ IF/Prolog với hơn một nữa là để phục vụ cho giao diện. Lịch trực
được tạo ra bởi INTERDIP trong một số trường hợp có chất lượng cao hơn so với
lịch trực được tạo ra bằng tay bởi những người có kinh nghiệm. Tuy nhiên, điều
này không thể bảo đảm trong mọi trường hợp.
Việc thỏa mãn hết tất cả các ràng buộc trong các bài toán tối ưu tổ hợp thuộc loại
khó như xếp lịch trực y tá là điều khó có thể xảy ra. Vì thế cách tiếp cận giải hệ
ràng buộc riêng phần (Partial Constraint Satisfaction Problem) được giới thiệu để
giải quyết khó khăn đó. Ý tưởng chính của giải thuật là cố gắng thỏa mãn càng
nhiều ràng buộc càng tốt, tuy nhiên số các ràng buộc bị vi phạm phải ở mức chấp
nhận được. Cùng với việc sử dụng kỹ thuật giải hệ ràng buộc riêng phần, trong hệ
thống xếp lịch trực y tá của mình Hofe còn phân cấp các ràng buộc theo các độ ưu
tiên khác nhau. Kỹ thuật này đã giúp cho việc biểu diễn các tri thức đặc trưng của

Trang 12


Các nghiên cứu liên quan
miền ứng dụng (domain specific knowledge), ví dụ như biểu diễn các lời giải được
phỏng đoán là tốt dưới dạng các ràng buộc mềm có độ ưu tiên nhỏ, nhờ vậy đã
tránh được việc hiện thực các tri thức này trong các thủ tục tìm kiếm. Hofe đã biểu
diễn các qui định của luật lao động như là những ràng buộc cứng và các yêu cầu
của y tá như những ràng buộc mềm có độ ưu tiên thấp nhất. Việc biểu diễn này đã
đưa đến lời giải được tạo ra sẽ có chất lượng không tốt nếu xét theo mức độ thỏa
mãn yêu cầu từ phía các y tá. Trong thực tế, những yêu cầu này là rất quan trọng,
thậm chí trong một số trường hợp các yêu cầu của y tá đứng ở cấp độ quan trọng
như các ràng buộc cứng bắt buộc phải thỏa mãn.
Hiện nay các phương pháp tìm kiếm không có hệ thống như: tìm kiếm Tabu, giải
thuật di truyền, … rất được ưu chuộng trong việc sử dụng để giải quyết cho các bài
toán tối ưu tổ hợp, lý do là vì các phương pháp này cho ra kết quả rất tốt trong thời

gian ngắn so với các phương pháp tìm kiếm có hệ thống như đã giới thiệu ở trên:
dùng lập trình logic có ràng buộc, dùng cách tiếp cận giải hệ ràng buộc riêng phần

Với cách tiếp cận dùng kỹ thuật tìm kiếm Tabu, F. Bellanti và các cộng sự đã xây
dựng thành công ứng dụng xếp lịch trực y tá cho các bệnh viện nước Ý. Việc xếp
lịch được tiến hành trong hai giai đoạn: lời giải ban đầu được tạo ra bằng cách
dùng giải thuật tham lam, sau đó kỹ thuật tìm kiếm Tabu được sử dụng để tối ưu
lịch trực. Lịch trực được tạo ra bởi cách tiếp cận này có chất lượng khá tốt trong
khoảng thời gian chấp nhận được. Tuy nhiên, tác giả đã không sử dụng các tri thức
kinh nghiệm như sắp xếp thứ tự biến, chọn trị cho biến, gán lịch trực theo các
khuôn mẫu được giả định là tốt, đồng thời các tính năng cao cấp của kỹ thuật tìm
kiếm Tabu như danh sách các bước chuyển Tabu thích nghi (Reactive Tabu List),
thực hiện tính đa dạng hóa trong quá trình tìm kiếm (Diversification) chưa được sử
dụng nên kết quả của lịch trực được tạo ra chưa thật sự tốt và thời gian tạo ra lịch
trực chưa phải là thật sự ngắn.
Để giải bài toán xếp lịch trực y tá, ngoài ba cách tiếp cận đã được nêu ở trên hiện
nay trên thế giới còn có những cách tiếp cận khác như : dùng quy hoạch nguyên
(Integer Programming) ([18]), dùng kỹ thuật di truyền ([3],[4]), …
™ Ngoài việc nghiên cứu các phương pháp đã được dùng để xây dựng ứng dụng
xếp lịch trực y tá, một số kỹ thuật có liên quan đến phương pháp sẽ được dùng
trong đề tài cũng được tìm hiểu. Sau đây là các nghiên cứu có liên quan đến việc
sử dụng kỹ thuật tìm kiếm Tabu.

Trang 13


Các nghiên cứu liên quan
II.2

Các công trình liên quan đến kỹ thuật tìm kiếm Tabu


II.2.1 Sự phát triển của Tabu Search
Các phương pháp tối ưu hóa cổ điển thường gặp khó khăn rất lớn khi được dùng để
giải các bài toán tối ưu tổ hợp thuộc loại khó, các bài toán này xuất hiện rất nhiều
ở các lónh vực khác nhau trong cuộc sống như kinh doanh, khoa học kỹ thuật, kinh
tế …
Kết quả đạt được không như mong đợi khi áp dụng các phương pháp cổ điển là do
một số trở ngại như giới hạn về tài nguyên hệ thống, thời gian thực hiện, … Vì thế
trên thế giới đã có rất nhiều công trình nghiên cứu được thực hiện nhằm giải quyết
khó khăn này.
Trong những năm gần đây, kỹ thuật tìm kiếm Tabu rất được ưu chuộng khi giải các
bài toán tối ưu tổ hợp thuộc loại khó, lý do là vì phương pháp này đem lại các kết
quả rất tốt. Các lónh vực mà kỹ thuật tìm kiếm Tabu được áp dụng có thể kể đến
như hoạch định về tài nguyên (resource planning), viễn thông
(telecommunications), thiết kế mạch tổ hợp (VLSI design), phân tích tài chính
(financial analysis), xếp lịch (scheduling), …
Nhằm làm giảm chi phí cũng như cung cấp sự tiện lợi cho các nhà phát triển muốn
ứng dụng kỹ thuật tìm kiếm Tabu, các khung làm việc (framework) đã được
nghiên cứu và hiện thực.

II.2.2 Một framework cho Tabu Search – Open TS
Open TS ([8]) là một trong những dự án mã nguồn mở được phát triển bởi tổ chức
COIN-OR (COmputational INfrastructure for Operations Research) thuộc công ty
IBM.
Đây là một khung làm việc (framework) cho phép phát triển những ứng dụng dùng
kỹ thuật tìm kiếm Tabu được thiết kế theo hướng đối tượng. Sau đây là những ưu
điểm của framework này:
-

-


Có khả năng giải quyết cho mọi loại bài toán tối ưu tổ hợp. Ví dụ : Traveling
Salesman Problem, Vehicle Routing Problem, …
Giảm nhẹ nỗ lực lập trình : người dùng chỉ cần định nghóa bài toán theo cách
giải quyết của kỹ thuật tìm kiếm Tabu, sau đó framework sẽ làm nốt phần
còn lại.
Cách diễn đạt kỹ thuật tìm kiếm Tabu cho ứng dụng được tổ chức khoa học và
dễ hiểu khi tuân theo một số qui định đã được định nghóa sẵn bởi framework.

Trang 14


Các nghiên cứu liên quan
-

Sử dụng các công nghệ mới của lónh vực khoa học máy tính như : thiết kế và
lập trình hướng đối tượng, triển khai các ứng dụng trên nền tảng Internet, tận
dụng sức mạnh của các máy tính có nhiều bộ vi xử lý.

Các phần tử cơ bản của Open TS gồm có :
-

Solution structure : thể hiện lời giải bài toán.
Objective function : hàm mục tiêu đánh giá các lời giải khả thi.
Tabu list : danh sách các bước chuyển Tabu.
Move: bước chuyển.
Move Manager : có nhiệm vụ sinh ra các bước chuyển lân cận từ lời giải hiện
hành hoặc lời giải khởi đầu.

Một bước lặp của Open TS được miêu tả ở hình 2.1.

Ở tại lời giải khởi đầu hay một lời giải hiện hành, Open TS dùng Move Manager
để tạo ra một tập các bước đi lân cận, giá trị của mỗi bước đi này được lượng giá
bởi hàm mục tiêu. Sau đó với sự trợ giúp của danh sách các bước chuyển Tabu,
Open TS sẽ xác định và chọn ra bước đi có cải thiện lời giải nhất. Bước đi tốt nhất
vừa được chọn sẽ được dùng để tạo ra lời giải hiện hành tiếp theo.
Để hiểu rõ hơn cách sử dụng thư viện Open TS cũng như xem xét khả năng ứng
dụng kỹ thuật tìm kiếm Tabu cho các bài toán tối ưu thuộc loại phức tạp khác,
phần tiếp theo sẽ trình bày cách dùng Open TS để giải quyết cho bài toán người
bán hàng rong (Traveling Salesman Problem).

Hình 2.1 : Một bước lặp của Open TS

Trang 15


×