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

NGHIÊN CỨU ỨNG DỤNG CÁC GIẢI THUẬT METAHEURISTIC CHO BÀI TOÁN XẾP THỜI KHÓA BIỂU MÔN HỌC TRƯỜNG ĐẠI HỌC

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 (601.39 KB, 26 trang )


ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN




NGUYỄN TẤN TRẦN MINH KHANG



NGHIÊN CỨU ỨNG DỤNG CÁC GIẢI THUẬT
METAHEURISTIC CHO BÀI TOÁN XẾP THỜI
KHÓA BIỂU MÔN HỌC TRƯỜNG ĐẠI HỌC


Chuyên ngành: Khoa học máy tính
Mã số chuyên ngành: 62 48 01 01



TÓM TẮT LUẬN ÁN TIẾN SĨ CÔNG NGHỆ THÔNG TIN



Tp.Hồ Chí Minh – Năm 2013

Luận án được hoàn thành tại:
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN



Ngƣời hƣớng dẫn khoa học: PGS.TS. TRẦN THỊ HUỆ NƢƠNG

Phản biện 1: PGS.TS. DƢƠNG TUẤN ANH
Phản biện 2: TS. NGUYỄN ĐỨC CƢỜNG
Phản biện 3: TS. ĐINH BÁ TIẾN
Phản biện độc lập 1: PGS.TS. ĐỖ PHÚC
Phản biện độc lập 2: PGS.TS. ĐỖ VĂN NHƠN

Luận án sẽ được bảo vệ trước Hội đồng đánh giá luận án
cấp…………………………………………………………… ……
họp tại………………………………………………………………


Vào hồi……… giờ ………ngày…. ….tháng năm

Có thể tìm hiểu luận án tại:
……………………………………………………………………….
… ……………………………………………………………………


1
MỞ ĐẦU
Luận án tập trung giải quyết bài toán xếp thời khóa biểu dựa trên nhóm
học phần có mang đặc trƣng riêng của các trƣờng đại học Việt Nam, một bài
toán có nhiều ứng dụng trong thực tế.
Phƣơng pháp tiếp cận theo hƣớng metaheuristic là phƣơng pháp đƣợc sử
dụng rất thông dụng để giải quyết các bài toán xếp thời khóa biểu, một trong
những lớp bài toán dạng NP-khó. Tuy nhiên việc áp dụng các thuật toán theo
hƣớng tiếp cận này là không đơn giản bởi vì việc áp dụng một thuật giải
metaheuristic vào một bài toán đặc thù cần sự tinh tế trong việc biểu diễn lời

giải, khởi tạo lời giải ban đầu, thực hiện việc tìm kiếm lời giải trong không
gian lời giải. Hơn nữa, với sự đa dạng của các thuật toán đã công bố, việc
đánh giá để lựa chọn thuật toán tối ƣu cho bài toán xếp thời khóa biểu với đặc
thù Việt Nam là rất cần thiết. Do đó luận án tập trung làm rõ các vấn đề sau:
- Đánh giá, so sánh, và đề xuất một số cải tiến các thuật giải hiện có
cho bài toán xếp thời khóa biểu môn học của Việt Nam.
- Đề xuất một mô hình Toán học (unified framework) để có thể đánh
giá các thuật toán một cách hiệu quả. Mô hình này là cần thiết bởi
vì các thuật toán hiện có đƣợc đánh giá ở nhiều ngữ cảnh, ràng
buộc khác nhau dẫn đến sự không nhất quán trong so sánh hiệu quả
của các thuật toán.
- Phân tích, đánh giá các thuật toán nhƣ TabuSearch (TS), Simulated
Annealing (SA), thuật giải Variable Neighborhood Search (VNS),
thuật giải Genetic Algorithm (GA), thuật giải Memetic Algorithm
(MA), thuật giải Particle Swarm Optimization (PSO), thuật giải
Harmony Search (HS) và thuật giải Bees Algorithm (Bees) dựa trên
mô hình đã đề xuất cho tập dữ liệu thực tế thu thập tại trƣờng ĐH
Khoa Học Tự Nhiên Tp. HCM. Đây là tập dữ liệu có độ phức tạp


2
cao với 10 ràng buộc cứng, 10 ràng buộc mềm sát với thực tế triển
khai.
- Đề xuất một số cải tiến dựa trên các phân tích trên. Cụ thể, với
thuật toán TS, SA, VNS để tối ƣu bộ nhớ, khi khám phá không gian
lân cận, luận án đề xuất chỉ lƣu trữ các phép chuyển thay cho lƣu
trữ các lời giải lân cận. Kỹ thuật này đƣợc tiếp tục áp dụng cho các
thuật giải SA, VNS, MA. Với thuật toán PSO, luận án đề xuất khái
niệm vị trí, vận tốc trong việc ứng dụng thuật toán. Với các đề xuất
mới này, việc cài đặt các thuật toán đƣợc đơn giản hơn, và tốc độ

xử lí đƣợc cải tiến rất đáng kể.
- Nghiên cứu cách kết hợp các thuật toán hiện có sao cho đạt hiệu
quả tối ƣu hơn. Cụ thể luận án đã đề xuất các phƣơng pháp kết hợp
giữa các thuật giải GA-Bees, HS-Bees, GA-SA, Bees-VNS, Bee-
PSO. Ý tƣởng chính của việc kết hợp các thuật toán là nhằm tăng
tính đa dạng và mở rộng không gian tìm kiếm hết khả năng có thể.
Kết quả thực nghiệm cho thấy sự vƣợt trội của các phƣơng pháp kết
hợp này so với các phƣơng pháp áp dụng đơn thuật một thuật giải.
Luận án đƣợc tổ chức thành 6 chƣơng, trong đó chƣơng 1 giới thiệu về
bài toán, chƣơng 2 giới thiệu về mô hình toán học để làm cơ sở cho việc đánh
giá các thuật toán theo hƣớng tiếp cận metaheuristic và giới thiệu các phƣơng
pháp tiếp cận chính của bài toán thời khóa biểu, chƣơng 3 giới thiệu về các
phƣơng pháp tiếp cận đơn lời giải và quần thể; các phân tích, cải tiến các
thuật toán trên cho bài toán cụ thể xếp thời khóa biểu môn học ở VN, chƣơng
4 các phƣơng pháp kết hợp, chƣơng 5 trình bày kết quả thực nghiệm, đánh
giá và so sánh kết quả giữa các thuật giải, chƣơng 6 kết luận và hƣớng phát
triển.



3
CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN
Xếp thời khóa biểu là một trong những công việc quan trọng và thƣờng
xuyên ở các đơn vị nhƣ trƣờng đại học. Đây là một công việc khá cực nếu
thực hiện bằng tay, bởi vì ngƣời xếp lịch phải xử lí một khối lƣợng lớn các
ràng buộc liên quan đến thời khóa biểu bao gồm cơ sở vật chất (phòng học,
máy chiếu, micro), lịch rảnh của giáo viên, số môn học, số lớp học, và số
lƣợng phân công.
Bên cạnh đó, với đặc thù của các trƣờng ĐH ở Việt Nam, các giáo viên
cũng thƣờng đặt ra những yêu cầu nhất định về mặt thời gian đối ngƣời xếp

lịch, cộng với việc lịch học phải cố gắng đƣợc sắp xếp làm sao để tiện cho
sinh viên, tránh việc lãng phí thời gian khi bắt sinh viên phải ngồi chờ quá lâu
giữa các môn trong cùng một buổi, một ngày. Việc sắp xếp lịch làm sao để có
thể tận dụng đƣợc tối ƣu nguồn tài nguyên mà vẫn đảm bảo đƣợc các yêu cầu
rất cơ bản này là một công việc thật sự khó khăn và vất vả cho ngƣời xếp
lịch.
Bài toán thời khóa biểu có thể phân thành ba nhóm chính:
- Bài toán xếp thời khóa biểu cho trƣờng phổ thông (high school
timetabling)
- Bài toán xếp thời khóa biểu cho trƣờng đại học (course timetabling)
- Bài toán xếp lịch thi (examination timetabling).

CHƯƠNG 2: MÔ HÌNH HÓA BÀI TOÁN THỜI KHÓA BIỂU MÔN
HỌC VÀ CÁC PHƯƠNG PHÁP TIẾP CẬN
2.1 Mô hình hóa bài toán
2.1.1 Các kí hiệu
Bài toán bao gồm các yếu tố cho sẵn sau:
- Tập  tập các tiết học trong một tuần.


4
- Tập : tập các ngày học trong một tuần.
- Tập 

: tập các tiết học của ngày thứ  trong tuần.
- Tập : tập các buổi học (ví dụ: buổi sáng, buổi chiều) trong một
tuần.
- Tập 













: tập các tiết học thuộc về buổi , với
.
- Tập : tập các giáo viên tham gia giảng dạy.
- Tập : tập các lớp học.
- 

: số lƣợng sinh viên của lớp học .
- Ma trận 

cho biết giờ rảnh của giáo viên:







với .
- Ma trận 


cho biết thời gian dạy mong muốn của giáo viên:







với .
- Ma trận 

cho biết giờ rảnh của lớp học:





 

với .
- Tập : tập các phòng học.
- 

: cho biết sức chứa của phòng học , với .
- Ma trận 

cho biết giờ rảnh của phòng học:








với.
- Tập : tập các nhóm phòng học.


5
- Tập 

: tập các phòng học theo nhóm phòng học .
- Tập : tập các phân công cần xếp lịch.
- 

: giáo viên tham gia giảng dạy phân công .
- Tập 

: tập các lớp học tham gia học phân công .
- Tập : tập các BlockElement, một BlockElement là một nhóm các
tiết học liên tiếp nhau của cùng một phân công mà cần phải đƣợc
phân vào cùng một buổi.
- Tập 



 cho biết lịch gán sẵn của
các phân công, một bộ ba




 khi và chỉ khi tiết bắt đầu
của BlockElement  đƣợc gán sẵn vào tiết  và phòng .
- Tập 

: tập các BlockElement thuộc về phân công , với .
- Tập 

: tổng số tiết học của BlockElement , với .
- Tập 

: tập các BlockElement do giáo viên  giảng dạy, với 
.
- Tập 

: tập các BlockElement mà lớp học  có tham gia học, với
.
- Tập : tập các nhóm học phần (curriculum) – mỗi nhóm học phần
là một tập các phân công mà không đƣợc xếp trùng giờ nhau do yêu
cầu của khoa quy định.
- Tập 

: các phân công thuộc thuộc nhóm học phần lớp học .

2.1.2 Các biến của mô hình
Tất cả các biến quyết định và các biến bổ trợ đều là các biến nhị phân -
chỉ nhận một trong hai giá trị là 0 hoặc 1.
- Biến quyết định (decision variable): 

với ,

trong đó: 

nếu tiết bắt đầu của BlockElement  đƣợc gán
vào tiết  và phòng , 

 nếu ngƣợc lại.


6
- Các biến bổ trợ (auxiliary variables): 

, 

, 

với 
  , trong đó:
+ 

nếu BlockElement  có diễn ra vào tiết  tại phòng , 


nếu ngƣợc lại.
+ 

nếu giáo viên  tham gia giảng dạy BlockElement  vào tiết 
tại phòng , 

 nếu ngƣợc lại.
+ 


nếu lớp học  tham gia học BlockElement  vào tiết  tại
phòng , 

 nếu ngƣợc lại.

2.1.3 Mô hình hóa các ràng buộc cứng
- Ràng buộc về tính liên tục của BlockElement và tính duy nhất của
phòng học của BlockElement: Tất cả các tiết học của cùng một
BlockElement phải diễn ra liền kề nhau và tại cùng một phòng.


  

 


- Ràng buộc đụng độ giáo viên: Một giáo viên không thể dạy nhiều
hơn một BlockElement tại cùng một thời điểm.
  



- Ràng buộc đụng độ lớp học: Một lớp học không thể tham gia học
nhiều hơn một BlockElement tại cùng một thời điểm.
  



- Ràng buộc đụng độ phòng học: Một phòng học chỉ đƣợc gán cho

nhiều nhất một BlockElement tại một thời điểm.
  





7
- Ràng buộc thời gian rảnh của giáo viên, lớp học, phòng học: Các
giáo viên, lớp học và phòng học không đƣợc xếp vào thời gian mà
họ không rảnh.
Giáo viên:





Lớp học:





Phòng học:





- Ràng buộc về tính đầy đủ và duy nhất của một phân công: Tất cả

các BlockElement của tất cả các phân công phải đƣợc gán vào một
và chỉ một tiết bắt đầu và một và chỉ một phòng học nào đó.
  



- Ràng buộc về buổi của BlockElement: Với mỗi BlockElement, tất
cả các tiết đƣợc gán đều phải thuộc cùng một buổi.
 












 


 

 
- Ràng buộc về ngày của phân công: Các BlockElement khác nhau
của cùng một phân công phải đƣợc gán vào các ngày khác nhau.
   







- Ràng buộc về phân công gán sẵn: Lịch gán sẵn (nếu có) của các
phân công phải đƣợc đảm bảo.







- Ràng buộc sức chứa của phòng học: Các lớp học phải đƣợc phân
công vào những phòng học có sức chứa phù hợp với sỉ số lớp học.


 








8
2.1.4 Mô hình hóa các ràng buộc mềm

Khác với các ràng buộc cứng, đối với các ràng buộc mềm, yếu tố đƣa
vào mô hình bài toán không phải là công thức biểu diễn ràng buộc, mà thay
vào đó là công thức biểu diễn số lƣợng vi phạm của ràng buộc nhằm đƣa vào
hàm mục tiêu.
- Ràng buộc di chuyển của giáo viên giữa các nhóm phòng học: Cần
hạn chế việc một giáo viên phải di chuyển giữa các nhóm phòng
học khác nhau trong cùng một ngày. Số vi phạm của ràng buộc này
đƣợc biểu diễn nhƣ sau:


       

 





















- Ràng buộc giờ lủng của giáo viên theo buổi: Hạn chế trƣờng hợp
một giáo viên phải dạy nhiều BlockElement trong cùng một buổi
mà lại phải nghỉ giữa các BlockElement này. Số vi phạm của ràng
buộc này (kí hiệu: 

 là số bộ







trong lời giải
hiện tại, với ,








,

   


   

mà:


  





  








- Ràng buộc giờ lủng của giáo viên theo ngày: Hạn chế trƣờng hợp
một giáo viên phải dạy nhiều BlockElement trong cùng một ngày
mà lại phải nghỉ giữa các BlockElement này. Số vi phạm của ràng
buộc này (kí hiệu: 

 là số bộ








trong lời giải
hiện tại, với ,








,

   

   

mà:


  





  











9
- Ràng buộc tổng số tiết dạy tối đa của giáo viên: Hạn chế trƣờng
hợp một giáo viên phải dạy nhiều hơn 9 tiết một ngày. Số vi phạm
của ràng buộc này đƣợc tính bằng công thức sau:


      




 


- Ràng buộc thời gian dạy mong muốn của giáo viên: Hạn chế
trƣờng hợp các giáo viên phải dạy vào tiết mà họ không mong
muốn. Tổng số vi phạm của ràng buộc này đƣợc tính nhƣ sau:


 




  





- Ràng buộc di chuyển địa điểm học của lớp học trong cùng 1 ngày:
Cần hạn chế việc một lớp học phải di chuyển giữa các nhóm phòng
học khác nhau trong cùng một ngày. Số vi phạm của ràng buộc này
đƣợc biểu diễn nhƣ sau:


       

 























- Ràng buộc di chuyển địa điểm học của nhóm học phần - lớp học
trong cùng 1 ngày: Cần hạn chế việc các phân công thuộc cùng một
nhóm học phần-lớp học nhƣng lại đƣợc phân vào các nhóm phòng
học khác nhau trong cùng một ngày. Số vi phạm của ràng buộc này
đƣợc biểu diễn nhƣ sau:


         


















 


- Ràng buộc độ nén lịch dạy của giáo viên theo buổi: Mục tiêu của
ràng buộc này là cực tiểu hóa số lƣợng buổi mà mỗi giáo viên phải
dạy, giá trị cần cực tiểu hóa đƣợc biểu diễn bằng công thức sau:


10






Trong đó, 




  







- Ràng buộc độ nén lịch học của lớp học theo buổi: Mục tiêu của
ràng buộc này là cực tiểu hóa số lƣợng buổi mà mỗi lớp học cần
học, giá trị cần cực tiểu hóa đƣợc biểu diễn bằng công thức sau:






Trong đó, 




  






- Ràng buộc giờ lủng của lớp học theo buổi: Hạn chế trƣờng hợp một
lớp học phải học nhiều BlockElement trong cùng một buổi mà lại
phải nghỉ giữa các BlockElement này. Số vi phạm của ràng buộc
này (kí hiệu: 

là số bộ








trong lời giải hiện tại,
với ,







,


  

   

mà:


  






  









2.2 Hàm mục tiêu
Mục tiêu của bài toán là tìm cách gán các BlockElement vào các phòng,
các tiết (xác định giá trị của các biến 

) sao cho lời giải  thu đƣợc thỏa
tất cả các ràng buộc cứng và cho giá trị cực tiểu của hàm mục tiêu  sau
đây:











Trong đó:



11
+ : là lời giải của bài toán.
+ n: tổng số ràng buộc mềm của bài toán (n=10).
+ 

: trọng số của ràng buộc mềm thứ i.
+ 

: là số lƣợng vi phạm tại ràng buộc thứ i của lời giải 
Hai lời giải 

và 

, khi đó lời giải 

đƣợc gọi là tốt hơn lời giải 

nếu










.


2.3 Nhóm các hướng tiếp cận metaheuristics dựa trên tìm kiếm cục bộ
Bắt nguồn từ một lời giải ban đầu (lời giải này gọi là lời giải khởi tạo, có
thể đƣợc tạo thành từ nhiều phƣơng pháp khác nhau, chẳng hạn nhƣ ngẫu
nhiên, Greedy, GRASP), các thuật giải metaheuristic dựa trên tìm kiếm cục
bộ 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 của mình,
thuật giải sẽ tìm kiếm và chỉ lựa ra một lời giải duy nhất để làm cơ sở cho
bƣớc lặp tiếp theo, đây chính là điểm khác biệt cơ bản nhất giữa nhóm thuật
giải Local Search so với nhóm các thuật giải dựa trên quần thể, ở nhóm các
thuật giải dựa trên quần thể, sau mỗi bƣớc lặp, kết quả thu đƣợc là cả một tập
các lời giải, trong khi nhóm Local Search chỉ chọn một lời giải duy nhất. Tại
mỗi bƣớc lặp, thuật giải sẽ lấy lời giải duy nhất thu đƣợc từ bƣớc lặp trƣớc
làm li gii hin ti, 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 c chuyn(move). Trong
các local search, 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à


12
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ộ. Các local search khác nhau sẽ đƣa ra các chiến lƣợc khác nhau để
đảm bảo sự tồn tại và cân bằng giữa hai yếu tố này.
Các thuật giải thuộc nhóm này mà đã đƣợc áp dụng cho bài toán xếp thời
khóa biểu gồm có: thuật giải Tabu Search, thuật giải tôi luyện thép

(Simulated Annealing) và các phiên bản deterministics, thuật giải Đại hồng
thuỷ (Great Deluge), thuật giải Variable Neighborhood Search, thuật giải
Iterated Local Search, thuật giải Walk Down Jump Up, thuật giải Monkey
Search.

2.4 Mô tả về bộ dữ liệu dùng để đánh giá các thuật toán
Trong phần này, chúng tôi sẽ trình bày 14 bộ dữ liệu thực tế của khoa
Công Nghệ Thông Tin, Đại Học Khoa Học Tự Nhiên, TP. HCM. Các bộ dữ
liệu đƣợc lấy từ niên khóa 2003-2004 đến 2009-2010. Để phân tích một cách
tổng quát độ phức tạp của các bộ dữ liệu này, chúng tôi đề xuất 14 độ đo nhƣ
sau:
Độ đo 01: A là số phân công
Độ đo 02: T là số giáo viên
Độ đo 03: C là số lớp học
Độ đo 04: R là số phòng học
Độ đo 05: P là số phân công có gán sẵn
Độ đo 06: Cr là số nhóm học phần - lớp học
Độ đo 07: CoL là số cặp phân công không đƣợc xếp chung tiết do có cùng
giáo viên.
Độ đo 08: CoC là số cặp phân công không đƣợc xếp chung tiết do có cùng
lớp học.


13
Độ đo 09: CoCr là số cặp phân công không đƣợc xếp chung tiết do thuộc
cùng nhóm học phần – lớp học.
Độ đo 10: Co là số cặp phân công không đƣợc xếp chung tiết do thuộc một
trong 3 nhóm độ đo trên (độ đo 07, đo đo 08, độ đo 09). Tức là các cặp phân
công không đƣợc xếp chung tiết do cùng giáo viên hoặc lớp học hoặc nhóm
học phần - lớp học.

Độ đo 11: AvT là trung bình tỉ lệ % giờ rảnh của giáo viên. Đƣợc tính bằng
công thức








Với: PpD = 12 là tổng số tiết học trong 1 ngày, D = 6 là số ngày trong 1 tuần.
Độ đo 12: AvC là trung bình tỉ lệ % giờ rảnh của lớp học. Đƣợc tính bằng
công thức








Với: PpD = 12 là tổng số tiết học trong 1 ngày, D = 6 là số ngày trong 1 tuần.
Độ đo 13: AvR là trung bình tỉ lệ % giờ rảnh của phòng học. Đƣợc tính bằng
công thức









Với: PpD = 12 là tổng số tiết học trong 1 ngày, D = 6 là số ngày trong 1 tuần.
Độ đo 14: AvA là trung bình tỉ lệ % giờ rảnh của phân công. Đƣợc tính bằng
công thức









CHƯƠNG 3: CÁC PHƯƠNG PHÁP TIẾP CẬN ĐƠN LỜI GIẢI VÀ
QUẦN THỂ


14
Luận án đã thực nghiệm 8 thuật giải theo phƣơng pháp tiếp cận đơn lời
giải và quần thể, bao gồm: SA, VNS, TS, GA, MA, HS, Bees, PSO. Trong đó
thuật giải SA là có tính dễ thực hiện nhất.

3.1 Mã giả thuật giải Simulated Annealing
Thuật giải: Giải thuật Simulated Annealing
Bƣớc 01: Khởi tạo lời giải ban đầu 

bằng cách sử dụng kỹ thuật Greedy
và GRASP.
Bƣớc 02: Gán lời giải hiện tại 




.
Bƣớc 03: Gán lời giải tốt nhất 



.
Bƣớc 04: Khởi tạo nhiệt độ ban đầu T
0
.
Bƣớc 05: Khởi tạo giá trị ban đầu cho các biến:
Bƣớc 05.1: T = T
0
.
Bƣớc 05.2: Iter = 0.
Bƣớc 05.3: IterMax.
Bƣớc 05.4: Niter = 0.
Bƣớc 05.5: NiterMax.
Bƣớc 05.6: Stop = False.
Bƣớc 05.7: MinorIterMax.
Bƣớc 06: While(Stop = False)
Bƣớc 06.1: Iter = Iter + 1.
Bƣớc 06.2: Niter = Niter + 1.
Bƣớc 06.3: MinorIter = 0.
Bƣớc 06.4: While(MinorIter≤MinorIterMax)
Bƣớc 06.4.1: MinorIter = MinorIter + 1.
Bƣớc 06.4.2: Phát sinh 





(tập láng giềng của 

).
Bƣớc 06.4.3: Tính 




 




.


15
Bƣớc 06.4.4: If




Bƣớc 06.4.4.1: Cập nhật 



.

Bƣớc 06.4.5: If













Bƣớc 06.4.5.1: Cập nhật 



.
Bƣớc 06.4.5.2: Cập nhật Niter = 0.
Bƣớc 06.4.6: Else
Bƣớc 06.4.6.1: Tạo ngẫu nhiên giá trị 



.
Bƣớc 06.4.6.2: If





Bƣớc 06.4.6.2.1 



.
Bƣớc 06.5: If(Niter=NiterMax)
Bƣớc 06.5.1: Tăng nhiệt độ T.
Bƣớc 06.5.2: Niter = 0.
Bƣớc 06.6: Else
Bƣớc 06.6.1: Giảm nhiệt độ T.
Bƣớc 06.7: If(Iter = IterMax)
Bƣớc 06.7.1: Stop = True.
Bƣớc 06.8: If(




=0)
Bƣớc 06.8.1: Stop = True.
Bƣớc 07: Xuất lời giải độ thích nghi tốt nhất 

.

3.2 Kết quả chạy thực nghiệm thuật giải Simulated Annealing
Bảng 3.1 Bảng tham số thực nghiệm cho thuật giải SA
STT
Tham số
Miền giá trị
1

IterMax
500
2
Niter
100
3
MinorIterMax
200

Bảng 3.2 Bảng kết quả thực nghiệm cho thuật giải SA


16

Hình 3.1 Kết quả tốt nhất thuật giải SA


0
100
200
300
400
500
600
Data
01
Data
02
Data
03

Data
04
Data
05
Data
06
Data
07
Data
08
Data
09
Data
10
Data
11
Data
12
Data
13
Data
14
Vi phạm
Các bộ data
Kết quả tốt nhất
Data
Kết quả
tốt nhất
Kết quả
trung bình tốt nhất

Phiên bản
Kết quả
Phiên bản
Kết quả
Data 01
SA01
401
SA01
401
Data 02
SA01
400
SA01
400
Data 03
SA01
475
SA01
475
Data 04
SA01
420
SA01
420
Data 05
SA01
445
SA01
445
Data 06

SA01
255
SA01
255
Data 07
SA01
435
SA01
435
Data 08
SA01
515
SA01
515
Data 09
SA01
385
SA01
385
Data 10
SA01
400
SA01
400
Data 11
SA01
430
SA01
430
Data 12

SA01
415
SA01
415
Data 13
SA01
495
SA01
495
Data 14
SA01
410
SA01
410


17
CHƯƠNG 4: CÁC PHƯƠNG PHÁP KẾT HỢP
Luận án đã thực nghiệm 15 phƣơng pháp kết hợp giữa các thuật giải sau:
GA+SA, GA+VNS, GA+TS, HS+SA, HS+VNS, HS+TS, Bees+SA,
Bees+VNS, Bees+TS, Bees+GA, Bees+HS, PSO+SA, PSO+VNS,
PSO+TS, Bees+PSO.
Trong đó phƣơng pháp kết hợp thuật giải Bees và thuật giải Variable
Neighborhood Search cho kết quả tốt nhất.

4.1 Mã giả thuật giải Bees và VNS
Thuật giải: Kết hợp thuật giải Bees và thuật giải VNS
Bƣớc 01: Khởi tạo quần thể ong ngẫu nhiên ban đầu có kích thƣớc n (mỗi
cá thể ong là một lời giải của bài toán).
Bƣớc 02: Đánh giá độ thích nghi của từng cá thể trong quần thể ban đầu.

Bƣớc 03: Tìm cá thể ong tốt nhất 

.
Bƣớc 04: Tính 






.
Bƣớc 05: Khởi tạo giá trị ban đầu cho các biến:
c 05.1: Iter = 0.
c 05.2: IterMax.
c 05.3: Niter = 0.
c 05.4: NiterMax.
c 05.5: Stop = False.
Bƣớc 06: While(Stop==False)
// Thuật giải Bees
c 06.1: Chọn m vùng để tìm kiếm lân cận.
Bƣớc 06.1.1: Chọn m lời giải tốt nhất đại diện cho từng vùng.
Bƣớc 06.1.2: Xác định kích thƣớc lân cận của các vùng thông qua
tham số ngh.


18
c 06.2: Tuyển thêm ong cho các vùng đƣợc chọn và đánh giá độ thích
nghi cho từng cá thể ong đƣợc tuyển thêm.
Bƣớc 06.2.1: Chọn e vùng tốt nhất trong m vùng lân cận.
Bƣớc 06.2.2: Tạo ra nep lời giải lân cận cho mỗi lời giải trong e lời

giải tốt nhất.
Bƣớc 06.2.3: Tạo ra nsp lời giải lân cận cho mỗi lời giải trong (m-e)
vùng còn lại trong m vùng.
Bƣớc 06.2.4: Đánh giá độ thích nghi cho từng lời giải lân cận đƣợc
tạo ra.
c 06.3: Chọn ong có độ thích nghi cao nhất trong mỗi vùng để xây dựng
quần thể mới.
c 06.4: Phân công (n-m) ong còn lại tìm kiếm ngẫu nhiên và thay thế
các cá thể ong này bằng các cá thể có đƣợc do tìm kiếm ngẫu nhiên.
// Thuật giải đơn lời giải
c 06.5: Chọn lời giải ngẫu nhiên 

trong quần thể.
c 06.6: Cải tiến lời giải 

bằng thuật giải đơn lời giải (TS, SA,
VNS).
c 06.7: Đƣa lời giải cải tiến thay cho lời giải 

đang có trong quần
thể.
c 06.8: Tìm lời giải tốt nhất trong quần thể hiện tại 

.
c 06.9:Tính 







.
c 06.10: If







Bƣớc 06.10.1: Cập nhật lời giải tốt nhất 



.
Bƣớc 06.10.2: Cập nhật 



.
Bƣớc 06.10.3: Niter = 0.
c 06.11: Niter = Niter + 1.
c 06.12: Iter = Iter + 1.


19
c 06.13: If(Iter>=IterMax)
Bƣớc 06.13.1: Stop = True.
c 06.14: If(Niter>=NiterMax)
Bƣớc 06.14.1: Stop = True.

c 06.15: If(

=0)
Bƣớc 06.15.1: Stop = True.
Bƣớc 07: Xuất cá thể ong có độ thích nghi tốt nhất 

.

4.2 Kết quả chạy thực nghiệm thuật giải Bees và VNS
Bảng 4.1 Bảng tham số thực nghiệm cho thuật giải Bees-VNS
STT
Tham số
Miền giá trị
1
N
6, 8, 10, 20, 30, 40
2
M
3, 5, 6, 7, 10, 15
3
E
1, 2, 4, 5, 7
4
Nep
2, 3, 4, 5, 7, 8, 10, 30, 35
5
Nsp
1, 2, 3, 4, 5, 10, 15
6
ngh

5, 10, 25, 30, 50
7
Chiến lƣợc NS
NS1, NS2
8
IterMax_Bees
1000
9
NiterMax_Bees
100
10
Version
1, 2
11
Option
1, 2, 5, 9, 10, 13, 14
12
k
12
13
t
0


20
STT
Tham số
Miền giá trị
14
NumberNeighbourhood

1
15

0.01, 0.02
16
k
min

1, 2
17
k
step

1, 2

Bảng 4.2 Bảng kết quả thực nghiệm cho thuật giải Bees-VNS
Data
Kết quả
tốt nhất
Kết quả
trung bình tốt nhất
Phiên bản
Kết quả
Phiên bản
Kết quả
Data 01
BV03
332
BV12
374

Data 02
BV08
313
BV08
394
Data 03
BV04
384
BV04
441
Data 04
BV08
313
BV08
394
Data 05
BV08
313
BV08
394
Data 06
BV08
313
BV14
430
Data 07
BV09
345
BV12
408

Data 08
BV10
383
BV10
503
Data 09
BV07
306
BV07
378
Data 10
BV07
306
BV07
378
Data 11
BV08
313
BV09
373
Data 12
BV08
313
BV08
394
Data 13
BV08
313
BV08
394

Data 14
BV08
313
BV08
394

Hình 4.1 Kết quả tốt nhất thuật giải Bees kết hợp VNS


21


CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM
Dựa trên kết quả thực nghiệm cho thấy các phiên bản kết hợp giữa Bees
và VNS cho kết quả rất tốt ở tất cả các bộ dữ liệu.

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 Tóm tắt các đóng góp của luận án
Luận án đề xuất một mô hình toán học để có thể đánh giá các thuật toán
một cách hiệu quả và thống nhất trong cùng một bộ dữ liệu và tiêu chí đánh
giá. Trong mô hình này đã mô hình hóa biểu diễn các ràng buộc cứng, ràng
buộc mềm của bài toán xếp lịch và hàm mục tiêu nhằm đánh giá chất lƣợng
lời giải.
Luận án đã phân tích, đánh giá và so sánh 23 thuật toán bao gồm 3 thuật
toán đơn lời giải nhƣ, 5 thuật toán quần thể và 15 mô hình thuật toán kết hợp.
Nghiên cứu của luận án đã chỉ ra các thuật toán quần thể có lợi thế hơn
so với các thuật toán đơn lời giải.
Nghiên cứu của luận án đã chỉ ra mô hình kết hợp Bees-VNS là tốt nhất
đối với bộ dữ liệu của bài toán. Kết quả thực nghiệm cho thấy sự vƣợt trội
của phƣơng pháp kết hợp này so với các phƣơng pháp khác.


0
200
400
600
Data
01
Data
02
Data
03
Data
04
Data
05
Data
06
Data
07
Data
08
Data
09
Data
10
Data
11
Data
12
Data

13
Data
14
Vi phạm
Các bộ data
Kết quả tốt nhất


22
6.2 Hướng phát triển của luận án
Mở rộng đánh giá các thuật toán metaheuristic khác nhƣ thuật toán đom
đóm (firefly algorithm), thuật toán monkey search, thuật toán League
Championship, thuật toán cuckoo search, thuật toán gravitational search,
thuật toán virus optimization, thuật toán bat, thuật toán galaxy-based search,
thuật toán spiral optimization, thuật toán differential search.
Thu thập thêm dữ liệu ở các trƣờng đại học khác ở Việt Nam và kiểm
chứng các mô hình thuật toán đã đề cập trong luận án.
Xây dựng lý thuyết nền tảng cho việc kết hợp các thuật toán nhằm gia
tăng hiệu quả trong việc tìm nghiệm tốt.
Cải tiến độ phức tạp của các mô hình thuật toán kết hợp đã thực nghiệm
để tối ƣu bộ nhớ, tăng tốc độ, tăng tính linh hoạt khi kết hợp với các thuật
toán mới.










CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ LIÊN QUAN ĐẾN LUẬN ÁN
Hội nghị, Tạp chí tại Việt Nam
[CT1] Minh Khang Nguyen Tan Tran, Hue Nuong Tran (2011),
"Automated Systems for Educational Timetabling Problems",
Journal of Technical Education Science 17(2011), Vietnam, pp 1-
10.
Hội nghị, Tạp chí quốc tế
[CT2] Khang Nguyen Tan Tran Minh, Nguyen Dang Thi Thanh, Khon
Trieu Trang and Nuong Tran Thi Hue (2010), "Using Tabu
Search for Solving a High School Timetabling Problem", Studies
in Computational Intelligence, 283, pp 305-313.
[CT3] Khang Nguyen, Nguyen Dang, Khon Trieu, Nuong Tran (2010),
"Automating a Real-World University Timetabling Problem with
Tabu Search Algorithm", in Proceedings of 2010 IEEE
International Conference on Computing and Communication
Technologies, Research, Innovation, and Vision for the Future
(RIVF2010), Hanoi, pp 1-6.
[CT4] Khang Nguyen, Tung Pham, Nga Le, Nguyen Dang, and Nuong
Tran (2010), "Simulated Annealing-Based Algorithm for a Real-
World High School Timetabling Problem", in Proceedings of
2010 Second International Conference on Knowledge and
Systems Engineering (KSE2010), Hanoi, Vietnam, pp 125-130.
[CT5] Khang Nguyen, Quang Nguyen, Hien Nguyen, Phuc Nguyen,
Nuong Tran (2011), "Variable Neighborhood Search for a Real-
World Curriculum-based University Timetabling Problem", 2011
Third International Conference on Knowledge and Systems
Engineering (KSE2011), 10/2011, Hanoi, Vietnam, p 157-162.
[CT6] Khang Nguyen, Nam Nguyen, Vi Pham, Phuc Nguyen and
Nuong Tran (2011), "Applications of Particle Swarm

Optimization Algorithm to a Practical University Timetabling
Problem", 2011 International Conference on Computer and
Computational Intelligence (ICCCI2011), 12/2011, Bangkok,
Thailand.

×