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ột phần của tài liệu (LUẬN văn THẠC sĩ) giải bài toán lập lịch theo tín chỉ sử dụng giải thuật tìm kiếm tabu (Trang 40 - 44)

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

Một phần của tài liệu (LUẬN văn THẠC sĩ) giải bài toán lập lịch theo tín chỉ sử dụng giải thuật tìm kiếm tabu (Trang 40 - 44)

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

(53 trang)