Professional Documents
Culture Documents
Tuan 5 - Toi Uu Hoa Quyet Dinh
Tuan 5 - Toi Uu Hoa Quyet Dinh
HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
_______________________
BÀI TẬP 4
MÔN HỌC: CÔNG NGHỆ 4.0 TRONG LÃNH VỰC CƠ KHÍ
CHỦ ĐỀ: TABU RESEARCH
2
Cấu trúc bộ nhớ trong TS hoạt động bằng việc tham khảo bốn chiều chính sau:
Bộ nhớ sử dụng trong tìm kiếm Tabu là bộ nhớ hiện (Explicit Memory) và bộ
nhớ thuộc tính (Attributive Memory). Bộ nhớ hiện ghi nhận toàn bộ lời giải, thường là
chứa các lời giải tốt trong quá trình tìm kiếm. Những lời giải tốt đã ghi nhận sẽ được
dùng để mở rộng tìm kiếm cục bộ. Những ứng dụng của loại bộ nhớ này giới hạn ở chỗ,
vì cần phải thiết kế cấu trúc dữ liệu để không tốn quá nhiều bộ nhớ. Thay vào đó, tìm
kiếm Tabu sử dụng bộ nhớ thuộc tính. Loại bộ nhớ này lƣu lại thông tin về các thuộc
tính của lời giải khi có thay đổi từ lới giải này sang lời giải khác. Ví dụ, trong đồ thị hay
mạng, các thuộc tính có thể bao gồm các nút hoặc các cung được thêm vào hoặc bớt đi
bởi phép chuyển.
Ví dụ minh hoạ
Đây là một minh họa cho thấy các thuộc tính có thể được sử dụng như thế nào
trong cấu trúc bộ nhớ Recency – based. Xem một vấn đề tìm cây tối ưu trên đồ thị với
các nút được đánh số từ 1 đến 7. Và ba đồ thị thể hiện cho đồ thị ở bước k, k+1, k+2
trong quá trình tạo ra các trạng thái để tìm lời giải. Với quy định là khi một phép chuyển
được thực hiện sẽ bao gồm một cạnh được lấy ra và một cạnh được thêm vào để giữ
nguyên cây.
Phép chuyển áp dụng ở bước k để tạo ra một cây ở bước k+1 bao gồm việc gỡ
cạnh (1,3) và thêm vào cạnh (4,6). Được thể hiện ở hình 2.2, là cạnh đƣợc đánh dấu và
cạnh đứt nét. Ở bƣớc k, cạnh (1,3) và cạnh ảo (4,6) trong cây được xem là hai thuộc
tính lời giải (Solution attribute) khác nhau và cạnh được gọi là (1,3) trong và cạnh (4,6)
ngoài. Các thuộc tính này đƣợc xem là Tabu – active, được dùng để định nghĩa ra trạng
thái Tabu (Tabu status) của các phép chuyển ở các bước tiếp theo.
Ví dụ trong bộ nhớ Recency – based ta có thể chọn cạnh (1,3) trong là Tabu –
active trong 3 bước, để giữ cho cạnh (1,3) không bị thêm lại vào cây hiện tại trong
những bước này. Do đó cạnh (1,3) chỉ có thể thêm vào cây ở bước gần nhất là bước
k+4. Tương tự, nếu cạnh (4,6) ngoài Tabu – active, trong 1 bước để giữ cho cạnh (4,6)
khỏi bị gỡ ra trong 1 bước. Những điều kiện này giúp cho việc thực hiện các phép
chuyển tránh lặp lại những lần chuyển ở những bước trước
Số bước mà một cạnh trong trạng thái Tabu – active được gọi là Tabu tenure.
Nếu giá trị Tabu tenure quá lớn sẽ làm cho chất lượng của lời giải không được cải thiện.
Nhưng nếu Tabu tenure quá nhỏ sẽ làm cho hàm mục tiêu lặp lại theo chu kỳ
4
Trong ví vụ trên, khi bộ nhớ hiện mở rộng các lời giải lân cận trong khi tìm kiếm
cục bộ (bằng cách nhớ các lời giải tốt) thì bộ nhớ thuộc tính làm giảm các lời giải đó
(bằng cách giữ hoặc cấm các phép chuyển có chọn lọc).
5. Chu kì Tabu
Chu kì Tabu là số lần lặp lại mà một nước đi nằm trong Danh sách Tabu. Các
lượt đi trong Danh sách Tabu là những lượt đi không thể thực hiện lại vì nó đã được
truy cập gần đây. Có hai cách để thực hiện Chu kì Tabu (T):
- Tĩnh: chọn T là hằng số (thường là sqrt(T))
- Động: chọn T ngẫu nhiên giữa một số T_min và T_max
Từ một lời giải ban đầu, tìm kiếm TABU sẽ lặp đi lặp lại quá trình tìm kiếm
nhằm cải thiện dần lời giải tốt nhất hiện có (ta sẽ gọi tắt là kỷ lục) của bài toán. Tại mỗi
bước lặp, thuật toán sẽ duyệt trong một miền lân cận (cũng có thể là toàn bộ lân cận)
của lời giải hiện tại để chọn ra lời giải tốt nhất, lời giải này sẽ thay thế cho lời giải hiện
tại ở bước lặp kế tiếp. Mỗi lời giải trong lân cận của lời giải hiện tại được gọi là một lân
cận (neighborhood) của lời giải hiện tại. Quá trình tác động lên lời giải hiện tại để biến
nó thành một lân cận của lời giải hiện tại được gọi là một bước chuyển (move). Điểm
khác biệt căn bản của tìm kiếm TABU so với các thuật toán tìm kiếm địa phương khác
chẳng hạn LS là tại mỗi bước lặp; để tránh việc duyệt trở lại những lời giải đã từng được
khảo sát, tìm kiếm TABU sử dụng một danh sách để lưu trữ một số bước chuyển đã
từng được sử dụng, gọi là danh sách TABU; danh sách này sẽ chứa một số bước chuyển
6
vừa được thực hiện trong một số bước lặp ngay trước đó, các bước chuyển nằm trong
danh sách TABU được gọi là các bước chuyển TABU. Các bước chuyển này sẽ bị cấm
sử dụng lại chừng nào nó còn nằm trong danh sách TABU. Mỗi bước chuyển TABU sẽ
nằm trong danh sách TABU trong khoảng thời gian t bước lặp, sau đó, bước chuyển
này sẽ được loại khỏi danh sách TABU và nó có thể lại được sử dụng. Số t vừa nêu
được gọi là giá trị TABU tenure của bước chuyển. Giá trị t có thể cố định cho tất cả các
bước chuyển hoặc cũng có thể là một số ngẫu nhiên được chọn cho từng bước chuyển.
Một vấn đề có thể xảy ra là một bước chuyển dù đang bị cấm nhưng nó lại có
khả năng cải thiện kỷ lục; do đó để tránh bỏ sót các bước chuyển tốt này, thuật toán tìm
kiếm TABU đưa ra khái niệm tiêu chuẩn mong đợi (aspiration criteria). Tiêu chuẩn
mong đợi thường được áp dụng là: Nếu một bước chuyển TABU có thể cải thiện được
kỷ lục thì bước chuyển này vẫn được chọn và nó sẽ được loại khỏi danh sách TABU.
Ví dụ:
Xem xét một bước chuyển tabu m; nếu nước đi này đưa ra một giải pháp mới tốt
hơn giải pháp tốt nhất được tìm thấy cho đến nay, thì người ta sẽ muốn bỏ trạng thái
tabu của m và chấp nhận nước đi. Điều này có thể được thực hiện bằng cách nói rằng
m (áp dụng cho s) có thể được chấp nhận nếu nó có mức nguyện vọng a(s,m) cho giá
trị tốt hơn ngưỡng A(s,m). Tổng quát hơn, chúng ta có thể quan niệm A(s,m) là định
nghĩa một tập hợp các giá trị ưu tiên (đối với các phần tử) cho một hàm (hoặc ánh xạ)
a(s,m) và nguyện vọng có thể được biểu diễn dưới dạng:
Sau đó, trạng thái tabu của nước đi m sẽ bị vô hiệu hóa nếu ít nhất một (hoặc một
số cụ thể) các điều kiện [1] được thỏa mãn. Nếu nhiều điều kiện nguyện vọng được thỏa
mãn đồng thời bởi nhiều nước đi, quy tắc lựa chọn phải được xác định.
Bộ nhớ tần số
Bộ nhớ này chứa tổng số lần lặp lại mà mỗi giải pháp đã được chọn kể từ khi bắt
đầu tìm kiếm. Các giải pháp được truy cập nhiều hơn ít có khả năng được chọn lại và
sẽ thúc đẩy các giải pháp đa dạng hơn. Có hai cách tiếp cận chính để đa dạng hóa:
Khởi động lại đa dạng hóa: cho phép các thành phần hiếm khi xuất hiện trong
giải pháp hiện tại bằng cách khởi động lại tìm kiếm từ những điểm này
Đa dạng hóa liên tục: làm sai lệch việc đánh giá các động thái có thể xảy ra với
tần suất của các động thái này. Các nước đi không xuất hiện thường xuyên sẽ có xác
suất được thực hiện cao hơn.
8
6. Sơ đồ giải thuật
• tabulist = ∅; // danh sách TABU cho bằng rỗng while (điều kiện dừng chưa thỏa)
- if (p ∉ tabulist) M = M ∪ p;
- s = s’t ;
- Tuần (Week): chu kỳ lặp lại của thời khóa biểu, có thể gồm nhiều tuần.
- Ngày (Day): các ngày dạy trong một tuần.
- Tiết học (Period): tiết dạy trong ngày.
- Môn học (Subject): môn học được giảng dạy trong trường.
- Giáo viên (Teacher): giáo viên tham gia vào thời khóa biểu.
- Lớp học (Class): lớp học tham gia vào thời khóa biểu.
- Buổi học (Lesson): buổi học của một lớp do một giáo viên được phân côngdạy
môn nào đó.
- Phòng học (Room): phòng học để sắp lịch cho các buổi học.
- Tài nguyên (Resource): các tài nguyên cung cấp cho thời khóa biểu. Baogồm:
như micro, máy chiếu…
Lớp học và môn học là khác nhau: một giảng viên có thể dạy một môn, ví dụ như
môn Cơ sở dữ liệu là ánh xạ 1-1, còn giảng viên này dạy 3 lớp hiện đang học môn Cơ sở dữ
liệu là ánh xạ 1-m. Vậy trong mô hình ta đã biết trước giảngviên này dạy môn gì, dạy lớp
nào thì bài toán sẽ trở nên đơn giản hơn.
Hình 5 – Mối quan hệ giữa Giảng viên, Lớp học và Môn học
10
Chi tiết hơn ta có thể dễ dàng nhận thấy rằng việc xếp thời khóa biểu là việc sắp các buổi
học có các thông tin gồm:
Rút ra kết luận là việc sắp lịch học cho các lớp và sắp lịch dạy chogiảng viên
là tương đương nhau qua phép ánh xạ trên.
Vậy ta có thể xây dựng mô hình theo 2 cách hoàn toàn tương đương và chỉ còn lại
3 chiều là:
T – là tập các giảng viên (gồm giảng viên cơ hữu và giảng viên part time) L – là
Rl (l ∈ L) – là số phòng học còn trống có thể sắp lịch được cho buổi học l.
𝑅! (𝑝 ∈ 𝑃) – là số phòng học còn trống có thể sắp lịch được trong tiết học p. Ta có
(r ∈ R, l ∈ L, p ∈ P)
Trong đó giá trị 𝜕 của biến quyết định Xrlk được tính qua các ràng buộc, ta có 2 loại
ràng buộc chính để mô tả buổi học l do giảng viên t dạy vào giờ p tại phòng học r nếu không
thỏa mãn mỗi:
Việc lựa chọn trọng số cho mỗi ràng buộc dựa theo nhu cầu thực tế khi ta xây dựng
hệ thống. Nếu ràng buộc quan trọng, cần ưu tiên cao và có ảnh hưởng lớntới quá trình lập
thời khóa biểu thì ta nên đặt trọng số cao. Còn nếu ràng buộckhông quá quan trọng ta
có thể thiết lập trọng số nhỏ hơn cho phù hợp.
Từ đó ta xây dựng hàm mục tiêu sau đây và nhiệm vụ chính là xây dựng giải thuật
để hàm mục tiêu này đạt MIN:
𝑋!!!
! ! !
12
Qua đây có thể thấy rằng với các trọng số có các giá trị khác thì nhau ngoài việc
giúp ta phân loại mức ưu tiên cho các ràng buộc, việc này còn giúp ta đưa ra chiến lược tốt
hơn để tìm MIN cho hàm mục tiêu bằng cách ưu tiên giải quyết các ràng buộc có trọng số
cao để hàm mục tiêu tiệm cận MIN nhanh hơn.
Cụ thể hơn giải thuật sẽ ưu tiên giải quyết các ràng buộc cứng trước do có trọng số
cao sau đó sẽ sắp xếp thêm để tối ưu kết quả sắp lịch.
! ! 𝑋!!! = 1(𝑙 ∈ 𝐿) – ràng buộc mô tả mỗi buổi học l chỉ học vào 1 tiết
học p trong tuần tại 1 phòng học r cụ thể - Class conflict
𝑋!!! = 0(𝑟 ∉ 𝑅! , 𝑙 ∈ 𝐿! , 𝑝 ∈ 𝑃) – mô tả việc giáo vụ sẽ không lên lịch cho lớp l
vào tiết học p nếu hiện phòng học r đang có lớp học – Period conflict.
𝑋!!! = 0 (𝑟 ∉ 𝑅! , 𝑙 ∈ 𝐿! , 𝑝 ∈ 𝑃) – mô tả sẽ không sắp lịch được cho buổi
học l vào tiết học p nếu hiện phòng học r không đủ điều kiện cơ sở vật chất
– Room conflict.
𝑋!!! = 0 𝑟 ∈ 𝑅! 𝑟 ∈ 𝑅! , 𝑙 ∉ 𝐿! , 𝑝 ∈ 𝑃) – mô tả không thể lên lịch cho buổi
học l vào tiết học p tại phòng học r do giảng viên t hiện đang bận – Teacher
conflict
nào và số lớp dạy không quá Lt (có thể dạy quá do thiếu giảng viên)
! ! 𝑋!!! ≤ 𝑅! (𝑝 ∈ 𝑃) – ràng buộc để kiểm tra với một tiết học p thì có
các phòng học nào còn trống
! ! 𝑋!!! ≤ 𝑅! (𝑙 ∈ 𝐿) – ràng buộc để kiểm tra với một môn học l thì có
các phòng học nào còn trống
1 − 𝑃𝑇𝑈
! 𝑋!!! 4 − 𝑁𝐼𝐼𝑇 (𝑡 ∈ 𝑇, 𝑘 ∈ 𝐾) – mô tả một giảng viên
≤ 3 − 𝑐á𝑐 𝑘ℎó𝑎 𝑛𝑔ắ𝑛 ℎạ𝑛
t dạy một buổi học l không quá số buổi qui định/tuần (có thể tăng hoặc giảm)
Nếu ta xếp được lịch cho giảng viên Cường dạy đúng như yêu cầu thì:
Y=0+0+0=0
Nếu ta chỉ xếp được lịch dạy cho giảng viên Cường dạy ở phòng lab nhưng vào thứ
2 và thứ 5 thì:
Y=0+0+3=3
Nếu ta chỉ xếp được lịch dạy cho giảng viên Cường dạy ở phòng lab nhưng vào thứ
3 và thứ 4 thì:
Y=0+5+0=5
Nếu ta chỉ xếp được lịch dạy cho giảng viên Cường dạy ở phòng lab vào thứ 3 và
thứ 4 thì:
Y=0+5+3=8
Còn trong các trường hợp khác khi không thỏa mãn ràng buộc cứng đều không
được chấp nhận (Y ≥ 100).
Ta có thể dễ dàng thống kê các trường hợp trong ví dụ trên theo bảng dưới
đây:
14
Ràng buộc cứng Ràng buộc Ràng buộc Hàm mục tiêu Kết quả
(phòng lab) mềm (thứ 2) mềm (thứ 4) Y
0 0 0 0 Tốt nhất
0 0 3 3
Chấp nhận
0 5 0 5
được
0 5 3 8
100 0 0 100
100 0 3 103
Loại
100 5 0 105
100 5 3 108
Bảng 1 - Mô tả cách tính của hàm mục tiêu
Lý do ta đưa việc tính toán giá trị Y vào cho biến X ở đây là để tiện cho việc
áp dụng thuật toán tabu search tìm ra giải pháp tối ưu nhất là giải pháp mà trong đó mọi
Xrlp đạt giá trị MIN có thể (thỏa mãn nhiều ràng buộc nhất).
Thuật toán tìm kiếm Tabu sẽ xuất phát từ 1 đáp án bất kỳ, đáp án này có thể tạo nên
bằng cách đơn giản là cứ xếp tuần tự để tìm được một lời giải mà không cần quan tâm
đến chất lượng lời giải, sau đó sẽ tìm kiếm lời giải tốt hơn dựa trênlời giải ban đầu. Cách
khác tốt hơn là đưa ra 1 đáp án sắp xếp mà thỏa mãn cácràng buộc chặt trước, sau đó ta
sẽ cải tiến đáp án cho tốt hơn bằng cách thay đổi việc sắp lịch cho các giảng viên để thỏa
mãn được càng nhiều ràng buộc lỏng càng tốt, nếu sau khi thay đổi mà X rlp mới có giá trị
nhỏ hơn Xrlp cũ thì đương nhiên ta cógiải pháp tốt hơn.
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
Bước 1: Khởi tạo lời giải ban đầu ngẫu nhiên
Khởi tạo ban đầu giúp ta tạo ra một danh sách các buổi học được sắp lịch một cách
ngẫu nhiên bằng cách duyệt qua danh sách các lớp, mỗi lớp học một số môn nhất định, mỗi
môn có thể học một vài buổi. Do đó ta sẽ duyệt từng buổi học / từng môn / từng lớp. Quy tắc
khởi tạo giá trị ban đầu hoặc ngẫu nhiên cho lớp học này theo quy tắc như sau:
- Buổi học:
- Lớp: lớp hiện đang duyệt
- Môn học: môn hiện đang xét
- Giờ học, ngày học, phòng học, giáo viên ta sẽ chọn ngẫu nhiên
Sơ đồ khối
Start
ScheduleLesson ← Ø
false
true
module ∈ listModules
true false
module ∈ classlessons
false
true
true
newLesson ← constructInitialLesson()
newLessonclass ← class
newLessonmodule ← module
newLessonroom ← randomRoom()
newLessonhour ← randomHour()
← randomWeekday()
newLessonteacher ← randomTeacher()
Schedulelessons ← newLesson
16
Việc sinh ra lời giải ban đầu ngẫu nhiên này có thể vi phạm nhiều ràngbuộc, thậm
chí không thỏa mãn một số ràng buộc cứng – hard constraints - nhưng lưu ý rằng đây chỉ là
lời giải ban đầu mà từ đó ta sẽ dùng giải thuật tìm kiếm Tabu để tìm ra phương án sắp xếp tối
ưu thỏa mãn tất cả các ràng buộc cứng và cố gắng giảm tối đa số lượng vi phạm các ràng buộc
mềm – soft constraints
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
Xuất phát từ cơ sở của giải thuật tìm kiếm Tabu, luận văn sẽ đi vào triển khai cài đặt
thực tế cho mô hình được đề cập bên trên để từ đó xây dựng ra một phần mềm nhằm giải quyết
nhu cầu thực tế hiện nay tại cơ quan tác giả đang làm việc.
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)
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ố:
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ậpsmartSearch =
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
18
True
candidate ← Ø
candidateTotalPoint ← scheduleTotalPoint
choice ← randomChoice()
choice is Weekday
true
choice is Hour
true false
candidateUnitBefore ← lessonHo ur
candidateUnitAfter ← randomHour()
false
choice is Room
true
false
candidateUnitBefore ← lessonRoom
candidateUnitAfter ← randomRoom()
true
candidateUnitBefore ← lessonTeacher
return candidate End
candidateUnitAfter ← randomTeacher()
20
Hàm mong đợi (Aspiration Function)
Xét một phép chuyển m:
- 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’
- phép chuyển m được gọi là thỏa hàm mong đợi chỉ khi f(S) < f(S*)
- 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