Chương 4: BÀI TOÁN LẬP LỊCH THEO TÍN CHỈ
4.6 Hướng tiếp cận cho bài toán
4.6.2 Bước 2: Cải thiện chất lượng lời giải bằng giải thuật tìm kiếm Tabu
Mã giả giải thuật tìm kiếm Tabu – Pseudocode [40]
s ← s0 sBest ← s
tabuList ← null
while (not stoppingCondition()) candidateList ← null
for (sCandidate in sNeighborhood)
if (not containsTabuElements(sCandidate, tabuList))
candidateList ← candidateList + sCandidate end
end
sCandidate ← LocateBestCandidate(candidateList) if(fitness(sCandidate) > fitness(sBest))
tabuList ← featureDifferences(sCandidate, sBest) sBest ← sCandidate
while(size(tabuList) > maxTabuListSize) ExpireFeatures(tabuList)
end end
end
return(sBest)
4.6.2.1 Tính hàm mục tiêu đánh giá chất lượng của lời giải
Với mỗi biến quyết định Xrlp như đã đề cập trong mô hình bài toán 𝑋!"#
!
!
!
Hàm mục tiêu đánh giá chất lượng của lời giải dựa trên hai yếu tố:
o Vi phạm mỗi ràng buộc cứng: + 100 điểm o Vi phạm mỗi ràng buộc mềm: + 1 → 10 điểm
Dưới đây là một số hàm xây dựng phục vụ việc cài đặt giải thuật tìm kiếm Tabu trong việc đưa ra lời giải cho bài toán sắp xếp thời khóa biểu:
• evaluate(): tính toán tổng số điểm phạt cho mỗi ràng buộc
o có một cờ generateCandidates dùng để sinh ra một buổi học mới – proposedCandidates – cho các ràng buộc cứng khi thiết lập smartSearch = true và số bước lặp của smartSearch < số bước lặp dừng trong giải thuật để ưu tiên tìm kiếm các lời giải mới không vi phạm các ràng buộc cứng giúp ta nhanh chóng hạ số điểm phạt của hàm mục tiêu.
• stopCriteriaReach(): đánh giá tiêu chí dừng của giải thuật o hàm mục tiêu bằng 0 – đạt giá trị MIN
o sau 1000 bước lặp
o sau 100 bước lặp mà chất lượng lời giải không được cải thiện
• generateNextCandidate(): hàm sinh phép chuyển có o input : buổi học – lesson – hiện đang xét
o output: một phép chuyển ngẫu nhiên có thể thay đổi ngày / giờ / phòng học / giáo viên cho buổi học hiện tại
• getNeighborhood() – trả về một danh sách các phép chuyển lân cận
• calculateTotalEvaluation() – tính tổng số điểm phạt cho một lời giải
Dưới đây là sơ đồ mô tả luồng xử lí khi ta cài đặt giải thuật tìm kiếm Tabu cho mô hình bài toán sắp thời khóa biểu đã được đề cập từ đầu đến nay trong luận văn
initialize
!stopCriteriaReach()
getSurrounding() True
For Change in listChange
Evaluate()
bestTotalPoint
=
currentTotalPoint currentTotalPoint
<
bestTotalPoint True
True
generateNextChange()
TaboList ← currentChange
End Start
False
False
False
4.6.2.2 Phép chuyển
Như đã đề cập, bên trên yếu tố cốt lõi để giải thuật tìm được lời giải mới tốt hơn các lời giải trước đó dựa trên kỹ thuật cài đặt phép chuyển nhằm sinh ra một lời giải mới, hiện nay có nhiều tác giã đã đưa ra các phép chuyển khác nhau nhằm mục tiêu giải quyết bài toán lập lịch. Trong thời gian học tập, nghiên cứu tại trường Đại học Công nghệ và công tác tại cơ quan, tác đã đề xuất một cách sinh phép chuyển đơn giản để sinh ra các lời giải mới. Phép chuyển này có thể chưa phải là tốt nhất, tối ưu nhất nhưng cũng đã cho ra kết quả tốt phù hợp với mô hình bài toán đề ra. Sau đây là sơ đồ khối phép chuyển sinh ra một lời giải mới
Start lesson
choice is Weekday
choice is Hour
choice is Room
choice is Teacher true
true
true
true
false
false false false
End candidate ← ỉ
candidateTotalP oint ← scheduleTotalP oint
choice ← randomChoice()
candidateUnitBefore ← lessonWee kday candidateUnitAfter ← randomWeekday()
return candidate candidateUnitBefore ← lessonHour
candidateUnitAfter ← randomHour()
candidateUnitBefore ← lessonRoom candidateUnitAfter ← randomRoom()
candidateUnitBefore ← lessonTeacher
candidateUnitAfter ← randomTeacher()
4.6.2.3 Hàm mong đợi (Aspiration Function) Xét một phép chuyển m:
• Gọi S là lời giải hiện tại
• S’ là lời giải mới tạo thành sau khi thực hiện phép chuyển m lên S’
• S* là lời giải tốt nhất hiện tại
• f(S) là hàm mục tiêu
• phép chuyển m được gọi là thỏa hàm mong đợi chỉ khi f(S) < f(S*)
4.6.2.4 Điều kiện dừng của thuật toán
Thuật toán dừng khi một trong các điều kiện sau đây được thỏa mãn – hàm stopCriteriaReach:
• Sau 1000 bước lặp.
• Hàm mục tiêu của lời giải tốt nhất hiện tại đạt MIN = 0 (đã thỏa hết tất cả các ràng buộc cứng và mềm).
• Sau một số bước lặp nhất định (ví dụ 100 bước lặp) liên tiếp mà chất lượng lời giải tốt nhất hiện tại không đổi