Tải bản đầy đủ (.docx) (36 trang)

Phân hệ xếp lịch thi

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 (251.9 KB, 36 trang )

PHÂN HỆ
XẾP LỊCH THI
GIỚI THIỆU VỀ VẤN ĐỀ XẾP LỊCH THI:
Xếp lòch thi là một vấn đề phức tạp mà bất cứ một ngôi trường nào cũng phải quan tâm. Ta
nói đây là một vấn đề phức tạp bởi vì để tìm được một lòch thi tối ưu nhất ta phải đối mặt với sự
bùng nổ tổ hợp, mà hiện tại, chúng ta chưa có được một cơ chế tổng quát để giải quyết sự bùng
nổ tổ hợp. Vì vậy, ta chỉ có thể đạt được một lòch thi tốt theo một số đánh giá nào đó chứ không
thể đạt được một lòch thi gọi là tốt nhất. Xếp lòch thi, hay tổng quát hơn là vấn đề xếp thời gian
biểu hiện đang là vấn đề được các chuyên gia tin học trên thế giới quan tâm vì sự ứng dụng
rộng rãi của nó như: xếp lòch làm việc cho nhân viên, xếp thời gian biểu cho các phương tiện
giao thông công cộng ... và đặc biệt nhất là việc chưa có một giải thuật tối ưu nào cho vấn đề
này. Đây chính là một thách thức lớn cho những người yêu thích tin học.
Độ phức tạp của vấn đề xếp lòch thi tùy thuộc vào tình hình từng trường, đặc biệt là các
trường đại học và cao đẳng do có số lượng sinh viên cũng như số môn thi lớn.
Ở Việt Nam ta hiện nay, do đa số các trường đã chuyển sang hệ tín chỉ làm xuất hiện
các yêu cầu mới, các ràng buộc mới làm cho các chương trình hỗ trợ xếp thời khóa biểu cũng
như xếp lòch thi được viết trước đây đã trở nên lỗi thời, không còn phù hợp nữa. Do đó, để đáp
ứng nhu cầu hiện tại, và tìm hiểu kỹ hơn về vấn đề này em đã chọn phân hệ: “Xếp lòch thi”
trong đề tài: “Xây dựng hệ thống quản lý học vụ dùng SQL SERVER với cơ sở dữ liệu phân
bố”.
Với kiến thức hiện tại và sự cố vấn của các Thầy, Cô hướng dẫn, em cố gắng hoàn
thành đề tài một cách hợp lý nhất với một số giải thuật đã được sử dụng kết hợp với một số ý
tưởng đang được hiện thực hiện nay.
CHƯƠNG 1:
MÔ TẢ NGHIỆP VỤ
I. MỤC ĐÍCH:
Phần xếp lòch thi (thuộc phân hệ xếp thời khóa biểu) nhằm xếp lòch thi cho tất cả các môn
học có mở trong học kỳ-năm học.
Cung cấp một công cụ uyển chuyển để hỗ trợ người sử dụng trong việc quyết đònh các
chiến lược xếp lòch thi hay đánh giá một lòch thi thế nào là tốt, chấp nhận được.
I.1 Các yêu cầu


a) Yêu cầu về thời gian thi.
- Thời gian thi của kỳ thi phải thỏa mãn thời gian cho phép như là tuần bắt đầu, số
tuần thi.
- Thời gian của kỳ thi phải tránh các ngày lễ, ngày nghỉ. Cho phép chỉ đònh trước.
- Thời gian của môn thi phải tránh các tiết thi không cho phép đã được chỉ đònh
sẵn (ví dụ: tránh bắt đầu thi từ tiết 1 vì quá sớm nên việc chuẩn bò cho kỳ thi sẽ
không được tốt.).
b) Yêu cầu về các môn thi song song
- Các nhóm cùng học một môn học phải cùng thi một lúc để tiện cho việc ra đề thi
cũng như đánh giá kết quả học tập của sinh viên.
- Cho phép chọn các môn thi cùng thời điểm, các môn thi này phải không có sinh
viên cùng thi hai môn này. Yêu cầu này để giải quyết việc một môn học thuộc
hai khóa ngành khác nhau phải thi đồng thời. Ví dụ: môn Lòch sử Đảng có 2
khóa ngành Máy tính 95 và Cơ khí 95 cùng học và cùng thi một lúc.
- Các nhóm tổ của cùng một môn thi có thể bắt buộc thi không trùng ngày tiết. Ví
dụ: môn thí nghiệm chỉ có một phòng thì các nhóm tổ thi môn này không thể thi
chung do thiếu phòng.
c) Yêu cầu về số tiết thi
- Số tiết thi lấy từ tự điển môn học
- Cho phép cập nhập số tiết thi cho các môn thi. Cung cấp các công cụ để cập
nhập số tiết thi.
d) Yêu cầu về ngày thi và tiết bắt đầu thi
- Nếu ngày thi hoặc tiết bắt đầu thi hoặc cả hai đã được chọn trước cho một môn
thi thì phải ưu tiên xếp lòch thi cho môn thi đó vào ngày thi và tiết bắt đầu đó (ở
đây ta sử dụng độ ưu tiên tuyệt đối.
- Nếu không thể xếp vào ngày và tiết bắt đầu ưu tiên thì thông báo cho user thay
đổi ngày và tiết bắt đầu thi.
- Cung cấp công cụ nhập ngày và tiết bắt đầu ưu tiên, nếu không xếp được thì
thông báo và yêu cầu user nhập lại ngày, tiết bắt đầu.
e) Yêu cầu về tính chất phòng

- Cho phép cập nhật loại phòng thi cho một nhóm thi để xếp lòch thi cho các môn
đặc biệt như môn thực hành, môn thí nghiệm...Nếu chỉ có một phòng phục vụ
cho một môn thi thì các nhóm trong môn học đó không thể thi song song cùng
thời gian.
- Cung cấp công cụ nhập tính chất phòng của một môn thi, nếu phòng đặc biệt
(phòng thí nghiệm ...) thì tùy chiến lược được chọn mà ta ưu tiên xếp lòch thi
trước hay sau.
- Cung cấp công cụ ghép phòng thi để tận dụng phòng thi hay tiện việc quản lý...
- Đối với các phòng thi khác nhau, các tính chất phòng khác nhau có hệ số sử
dụng phòng khác nhau. Ví dụ: các nhóm thi môn thí nghiệm có số chỗ ngồi cố
đònh -> hệ số sử dụng = 1. Các nhóm thi dùng phòng bình thường sẽ có hệ số sử
dụng 0.5.
f) Các công cụ để quản lý thông tin phục vụ hệ thống xếp lòch thi
- Cung cấp các công cụ cho phép user sử dụng các tùy chọn kết hợp với kinh
nghiệm nhằm đạt được một lòch thi chấp nhận được.
- Cung cấp các công cụ đánh giá dữ liệu hiện tại để user có được các thông tin
tổng quát nhằm sử dụng các tùy chọn chính xác hơn.
- Cung cấp công cụ đánh giá lòch thi xếp được để kiểm tra, so sánh các kết quả và
chọn được lòch thi kết quả tốt nhất trong các kết quả tìm được.
I.2 Các ràng buộc về sinh viên khi xếp lòch thi cho một môn thi
- Đảm bảo cho sinh viên không thi hai môn cùng một lúc và cố gắng giảm thiểu thời gian thi
không hợp lý (ví dụ: ngày thi hai môn, hai môn thi liên tiếp nhau…).
- Xem xét các giờ học của sinh viên, tránh ngày tiết thi trùng hay kế tiếp giờ học của bất kỳ
sinh viên thi môn thi này.
Các điều kiện tối ưu:
a) Ngày tiết thi hợp lý:
- Tránh sinh viên thi nhiều môn trong một ngày
- Tránh cho sinh viên thi nhiều môn liên tục (ba ngày thi liên tiếp, nhiều hơn hai
môn thi cùng ngày..) .
b) Phòng thi:

- Các phòng thi có số lượng phù hợp với nhóm thi, tránh dùng phòng lớn cho các
nhóm thi có số lượng sinh viên ít.
- Các phòng thi của các nhóm thi trong cùng một môn thi nên thuộc cùng một dãy
phòng để dễ quản lý.
- Tuy nhiên nếu không tìm được phòng ta vẫn cho phép dùng phòng có sức chứa
nhỏ nhất trong các phòng còn lại để xếp lòch thi.
CHƯƠNG 2:
PHÂN TÍCH VÀ THIẾT KẾ
I. PHÂN TÍCH VẤN ĐỀ:
Xếp lòch thi, thoạt nghe, ta có thể thấy đây là một vấn đề rất đơn giản: Ta chỉ cần xếp cho
từng nhóm lớp giống như thời khóa biểu, nghóa là nhóm lớp nào đang học ở một phòng một thời
điểm ta có thể cho thi ở phòng đó vào ngày giờ tương tự. Tuy nhiên, khi thực sự tiến hành xếp
lòch thi cho các môn học, ta sẽ phải giải quyết nhiều yêu cầu làm cho việc xếp lòch thi trở nên
rất khó giải quyết. Một trong các yêu cầu đó là có các môn học (thường là hầu hết) mà các
nhóm lớp học môn đó phải thi cùng lúc làm cho việc lấy thời khóa biểu học chuyển thành thời
khóa biểu thi trở nên không thể thực hiện được. Tuy nhiên, đây không phải là khó khăn chính
mà ta gặp phải khi tiến hành xếp lòch thi cho các môn học. Khó khăn chính của vấn đề xếp lòch
thi là việc đạt được một lòch thi tối ưu. Để đạt được một lòch thi tối ưu, ta cần phải xem xét hết
tất cả các khả năng có thể gặp khi xếp một môn thi. Điều này gặp một trở ngại rất lớn mà hiện
nay chúng ta chưa thực sự có được một phương pháp nào để giải quyết một cách triệt để, đó là
sự bùng nổ tổ hợp khi ta tiến hành việc xem xét mọi khả năng. Mặt khác, việc đánh giá thế nào
là một lòch thi tối ưu cũng rất khó khăn do mỗi người có một ý kiến chủ quan khác nhau: có
người cho rằng chỉ cần xếp được là tốt, có người cho là phải xếp lòch thi sao cho tất cả sinh viên
đều có lòch thi hợp lý mới thực sự là một lòch thi tốt. Do đó, ta chỉ cần xếp được một lòch thi
thỏa mãn một số yêu cầu cụ thể nào đó mà người sử dụng chương trình chấp nhận được là đủ.
II. CÁC HƯỚNG TIẾP CẬN VÀ GIẢI QUYẾT VẤN ĐỀ:
Theo một số bài báo trên các tạp chí tin học có liên quan đến việc xếp lòch thi thì có các
hướng cơ bản để giải quyết vấn đề để tìm giải pháp tối ưu là phương pháp phân nhóm (Cluster
method), phương pháp tuần tự (Sequential method), và phương pháp tìm kiếm tổng quát
(generalized search). Sau đây em xin trình bày một cách ngắn gọn về các phương pháp này.

II.1 Phương pháp phân nhóm:
Phương pháp này được chia làm hai giai đoạn. Giai đoạn một (cluster phase),
chia các nhóm thi song song kết hợp với môn thi (gọi tắt là nhóm thi) thành các nhóm
không bò đụng độ: conflict free group (nghóa là các nhóm thi trong cùng một group có
thể thi cùng lúc mà không có sinh viên nào phải thi hai môn cùng thời điểm). Có nhiều
cách để chia group, đơn giản là cách chọn từng nhóm thi một, bắt đầu với nhóm thi có
số sinh viên nhiều nhất, nhóm thi này được đưa vào group đầu tiên mà nó không bò đụng
độ (không có sinh viên trong nhóm thi này ở trong group đó, bởi vì nếu đã có 1 sinh
viên ở trong group đó thì sinh viên đó đã phải thi một môn trong group đó, bây giờ
thêm một nhóm thi nữa tức là sinh viên đó phải thi hai môn – đụng độ)ä. Mặt khác, để
tối thiểu hóa số group mới, ta chọn nhóm thi đụng độ nhiều nhất với các nhóm thi khác
trước (tức là chọn các nhóm thi theo thứ tự giảm dần số sinh viên có tham gia các nhóm
thi khác.
Sau khi các nhóm thi đã được phân chia vào các group, trong giai đoạn hai này,
các group được lần lượt gán thời gian (ngày,tiết bắt đầu) để tối thiểu hóa một vài mục
tiêu hay thỏa mãn các ràng buộc. Có nhiều cách để chọn thứ tự các group, cách đơn
giản nhất là dùng các hàm mục tiêu để tối thiểu hóa số sinh viên có hai môn thi liên
tiếp. Vấn đề này có thể đưa về bài toán TSP (Travelling Sales Man: bài toán tìm đường
đi ngắn nhất để đi hết các thành phố) bằng cách coi mỗi group là một thành phố, đoạn
đường giữa hai thành phố là số sinh viên phải thi trong cả hai group. Ta tìm một con
đường đi đến tất cả các thành phố (tức là xếp được lòch thi cho tất cả các group) với
chiều dài đoạn đường là ngắn nhất (số sinh viên phải thi hai môn liên tiếp là ít nhất).
Thứ tự viếng thăm các thành phố chính là thứ tự các group được gán ngày thi và tiết bắt
đầu (tất nhiên phải xét thêm đến việc dùng phòng cho các nhóm thi). Ngoài ra, để kết
thúc được quá trình tìm đường ta phải dùng thêm một thành phố (group) có số sinh viên
bằng 0, để chúng ta có thể dùng thành phố này kết thúc quá trình tìm kiếm.
II.2 Phương pháp tuần tự:
Trong phương pháp này, các nhóm thi lần lượt được gán một cặp giá trò (ngày
thi, tiết bắt đầu), tuy nhiên có nhiều chiến lược trong các thứ tự chọn nhóm thi cũng như
chọn thời gian cho các nhóm thi. Thông thường ta sử dụng hai giai đoạn: giai đoạn xây

dựng (construction phase) và giai đoạn tối ưu kết quả (improvement phase).
Giai đoạn xây dựng tìm một lòch thi làm trạng thái bắt đầu.
Giai đoạn tối ưu hóa sửa đổi và tìm lòch thi tối ưu hơn.
• Các chiến lược thường được dùng trong giai đoạn xây dựng:
a) Chiến lược theo số lượng lớn nhất các nhóm thi liên quan, nghóa là các nhóm thi có số
lượng các nhóm thi khác, mà sinh viên trong nhóm thi này phải tham gia, lớn nhất.
Ví dụ:
nhóm 1: SV A, SV B, SV C => số nhóm liên quan: 3
nhóm 2: SV A, SV D => số nhóm liên quan: 2
nhóm 3: SV B, SV E => số nhóm liên quan: 1
nhóm 4: SV A, SV F, SV H, SV G => số nhóm liên quan: 1
Vậy nhóm 1 được xếp trước, sau đó nhóm 2, nhóm 3, nhóm 4 theo số lượng số nhóm liên
quan.
b) Chiến lược theo số lượng lớn nhất các khoảng thời gian bò đụng độ, nghóa là các nhóm
thi có số lượng ngày tiết thi có thể xếp được là nhỏ nhất sẽ được chọn xếp trước.
Ví dụ:
nhóm 1: có 17 khả năng (các cặp giá trò: ngày và tiết bắt đầu) để xếp lòch thi
nhóm 2: có 10 khả năng (các cặp giá trò: ngày và tiết bắt đầu) để xếp lòch thi
nhóm 3: có 7 khả năng (các cặp giá trò: ngày và tiết bắt đầu) để xếp lòch thi
Vậy ta chọn nhóm 3 xếp trước, sau đó nhóm 2, nhóm 1 theo thứ tự số khả năng giảm dần
c) Chiến lược theo tổng số sinh viên phải thi các môn khác: nhóm thi nào có số lượng sinh
viên phải tham gia các nhóm thi khác lớn nhất sẽ được xếp trước.
Ví dụ: theo ví dụ câu a, ta có:
nhóm 1: 2 sv còn tham gia nhóm thi khác
nhóm 2, nhóm 3, nhóm 4: 1 sv còn tham gia các nhóm thi khác
Vậy ta chọn nhóm 1 xếp trước, sau đó đến các nhóm còn lại.
d) Chiến lược theo số lượng sinh viên của nhóm thi: nhóm nào có số lượng sinh viên lớn
nhất thì được xếp trước.
Ví dụ: theo ví dụ câu a, ta có:
nhóm 1: 3 sv

nhóm 2: 2 sv
nhóm 3: 2 sv
nhóm 4: 4 sv
Vậy ta chọn theo thứ tự nhóm 4, nhóm 1, nhóm 2, nhóm 3.
e) Chiến lược xếp theo độ ưu tiên đã được chỉ đònh trước: nhóm thi nào có độ ưu tiên lớn
nhất sẽ được xếp trước.
f) Chiến lược chọn ngẫu nhiên: chọn các nhóm thi một cách ngẫu nhiên hay không quan
tâm thứ tự chọn chúng.
Tuy nhiên, các chiến lược trên thường được kết hợp, hay cho phép người dùng chọn chiến
lược, hay dùng các chiến lược khác nhau để tạo các lòch thi khác nhau và cho và cho phép
người dùng chọn trong các kết quả này.
• Giai đoạn hai: Giai đoạn hai thường tìm các nhóm thi có thể chuyển đến thời điểm tốt hơn
(ngày thi, tiết bắt đầu), sau đó tìm các nhóm thi có thể đổi chỗ cho nhau để được một kết
quả tốt hơn (một lòch thi thỏa mãn nhiều tiêu chuẩn đánh giá hơn lòch thi cũ).
• Cách hiện thực:
Hầu hết các giải thuật theo phương pháp này dùng một ma trận gọi là Conflict Matrix để
thể hiện. Phần tử (i,j) của ma trận sẽ bằng số sinh viên phải thi trong cả hai nhóm thi i và nhóm
thi j. Việc thể hiện này cho phép hiện thực các luật như: “tối thiểu số sinh viên có hai môn thi
trong y khoảng thời gian liên tiếp”. Tuy nhiên, nó cũng không thể đánh giá được các luật như: “
tối thiểu số sinh viên có 3 hay nhiều hơn 3 môn thi trong y khoảng thời gian (ví dụ: y ngày)”.
Để đánh giá được các luật kiểu này, ta cần lưu lại danh sách các môn thi của sinh viên.
II.3 Chiến lược tìm kiếm tổng quát (generalized search)
Ta dùng thuật ngữ generalized search để mô tả một lớp các giải thuật sử dụng
một hay một vài trạng thái bắt đầu, sau đó dùng một chiến lược tìm kiếm tránh sự tối ưu
cục bộ (thường xuất hiện do hill clibing), và tìm kiếm trên một vùng rộng hơn, tổng quát
hơn của không gian tìm kiếm (sự tổ hợp của tất cả các khả năng có thể). Các giải thuật
chính trong phương pháp này bao gồm các giải thuật simulated annealing, tabu search
và genetic algorithm. Các giải thuật này đều có một tính chất: nếu có đủ thời gian,
chúng chắc chắn tìm ra kết quả tối ưu nhất. Tuy nhiên, cho hầu hết các vấn đề, chúng ta
không thể đợi bởi vì thời gian các thời gian này có thể gần như không tưởng, còn trong

một số trường hợp, với thời gian đó kết quả tìm được không còn cần thiết nữa. Do đó,
chúng vẫn cần kết hợp với việc sử dụng heuristic để tránh việc đánh giá tất cả các tổ
hợp có thể được tạo ra. Trong một vài khía cạnh, chúng tương tự như phương pháp tuần
tự; chúng dùng một phương pháp sắp xếp đơn giản để tạo ra một hay một vài lòch thi
làm trạng thái đầu, sau đó sử dụng thủ tục tìm kiếm một kết quả tốt hơn trên các trạng
thái được tạo ra từ các trạng thái đầu. Trong các giải thuật này, thời gian tính toán chủ
yếu là trong giai đoạn tối ưu hoá.
a) Simulated annealing:
Ý tưởng cơ bản của giải thuật này là nhanh chóng tìm một kết quả tương đối
tốt, tức là chọn một lòch thi chỉ cần thoả các ràng buộc cơ bản như: không có sinh
viên thi hai môn cùng lúc, phòng thi đủ chỗ. Sau đó, chọn ngẫu nhiên một kết
quả lân cận (một lòch thi khác được tạo ra từ lòch thi ban đầu bằng một cách nào
đó như đổi chỗ hai nhóm thi, hay chuyển một nhóm thi sang một thời điểm mới
v.v...). Nếu kết quả mới này thoả mãn hàm mục tiêu (hàm đánh giá một lòch thi
tốt hay xấu dựa trên các ràng buộc về sinh viên, và về phòng thi), nó sẽ được
chấp nhận. Nếu không, kết quả mới này sẽ tuỳ thuộc vào từng giải thuật cụ thể
mà nó được chọn hay không được chọn. Khởi đầu, sẽ có rất nhiều khả năng cho
hầu hết các kết quả mới được chọn để tiếp tục xem xét. Nhưng trong quá trình
thực hiện giải thuật, các khả năng sẽ dần dần giảm xuống, điều này luôn luôn
dẫn tới việc chọn kết quả tối ưu cục bộ (hill clibing). Tuy nhiên, các giải thuật
này cung cấp các chiến lược nhảy khỏi điểm tối ưu cục bộ để tiếp tục tìm điểm
tối ưu cục bộ khác (chọn ngẫu nhiên hay sử dụng heuristic). Tuỳ giải thuật mà
một hay nhiều hay tất cả kết quả tốt nhất trong các trạng thái đã kiểm tra được
giữ lại. Quá trình này dừng lại khi điều kiện thoát được thoả mãn (thời gian tối
đa hay không có kết quả tốt hơn sau một thời gian quy đònh trước), lúc này, kết
quả tốt nhất trong các kết quả tìm được sẽ được trả lại.
b) Tabu search :
Giải thuật này cũng tương tự như simulated annealing ở chỗ xem xét đánh
giá các kết quả mới để chọn làm trạng thái kế tiếp của quá trình tối ưu hoá. Tuy
nhiên, thay vì chọn ngẫu nhiêu một trạng thái để thoát khỏi điểm tối ưu cục bộ,

phương pháp này dùng một danh sách các “tabu moves”,danh sách chứa các kết
quả đã xem xét trước, để tìm một trạng thái khác không nằm trong danh sách
này để thoát khỏi trạng thái tối ưu cục bộ, bắt đầu một quá trình mới tìm một
trạng thái tối ưu khác. Trạng thái mới này được chấp nhận ngay cả khi nó dẫn
đến một kết quả xấu hơn kết quả hiện có. Tuy nhiên do tập hợp các trạng thái
lân cận quá lớn, có giải thuật chọn 1/(2n) số khả năng tạo trạng thái mới, với n
là số nhóm thi. Sau đó, giải thuật chọn trạng thái tốt nhất trong các trạng thái
vừa tạo ra làm trạng thái mới. Cũng vì lý do danh sách tabu list sẽ quá lớn nếu
chọn hết tất cả các trạng thái trước, nên danh sách chỉ giữ lại một số nhất đònh
các trạng thái trước, hiện thực bằng một cặp các giá trò (x,i) với x là nhóm thi và
i là thời gian đã được gán cho nhóm thi x trong các trạng thái trước. Giải thuật
không cho phép di chuyển nhóm thi x trở lại thời gian i. Việc kết thúc giải thuật
cũng tương tự như simulated annealing.
III. CÁCH GIẢI QUYẾT VẤN ĐỀ:
Như ta đã biết, việc xếp lòch thi tốn rất nhiều thời gian và ta không có cách nào để tìm
ra được một lòch thi tối ưu nhất mà ta chỉ có thể tìm được một lòch thi gọi là chấp nhận được
theo quan điểm của người sử dụng. Vì lý do này, em chọn hướng phát triển một công cụ cung
cấp cho người sử dụng các tuỳ chọn xếp lòch thi để họ có thể kết hợp kinh nghiệm bản thân và
các thông tin về dữ liệu hiện tại tìm được một lòch thi mà họ chấp nhận được. Theo phương
pháp này, người dùng công cụ này có thể chọn độ ưu tiên của các chiến lược xếp lòch thi cũng
như cho điểm các ràng buộc để đánh giá một lòch thi thế nào là tốt, thế nào là xấu. Sau đó, tìm
lòch thi, đánh giá và lưu lại. Sau đó chọn các độ ưu tiên khác, tìm một lòch thi mới để so sánh
với lòch thi đã có để chọn lòch thi tốt hơn.
III.1 Các chiến lược xếp lòch thi:
Công cụ cho phép chọn độ ưu tiên cho các chiến lược xếp lòch thi sau:
1. Chiến lược chọn theo số nhóm liên quan: nhóm có số nhóm liên quan lớn nhất được
chọn trước. Đây là chiến lược chọn có ảnh hưởng lớn nhất đến kết quả tìm được do
nếu ta xếp cho một nhóm có số nhóm liên quan lớn sau khi đã xếp cho các nhóm
liên quan của nó thì nhóm này phải tránh trùng thời gian thi của tất cả các nhóm liên
quan làm cho khả năng tìm được một thời điểm thi tốt cho nhóm này giảm xuống rất

nhiều. Ngược lại, nếu ta xếp cho một nhóm có số liên quan lớn trước thì do các
nhóm liên quan chưa xếp lòch thi, nên nhóm này sẽ có nhiều khả năng tìm được một
thời điểm tốt để xếp lòch thi.
2. Chiến lược chọn theo số sinh viên trong một nhóm: nhóm có số sinh viên lớn nhất
được chọn trước.
3. Chiến lược theo số phòng cần cho nhóm thi: nhóm nào cần nhiều phòng nhất sẽ
được xếp trước. Thực ra, chiến lược này gần giống chiến lược trên, nhưng trong một
số trường hợp như một nhóm tổ có số sinh viên lớn nhưng chỉ cần dùng một phòng.
4. Chiến lược theo loại phòng của nhóm thi: nhóm thi nào cần dùng phòng có tính chất
đặc biệt, ví dụ nhóm thí nghiệm chỉ có một phòng thí nghiệm, sẽ được xếp trước.
Chiến lược này cho phép ta xếp trước cho tất cả các nhóm đặc biệt sau đó tới các
môn học bình thường nhưng điều này thường dẫn đến một kết quả chung xấu, bởi vì
số sinh viên trong các nhóm này thường ít làm cho các nhóm liên quan cũng ít.
5. Chiến lược theo số khả năng về ngày thi và tiết bắt đầu có thể xếp được lòch thi cho
một nhóm thi: nhóm nào có ít khả năng nhất sẽ được xếp trước.
6. Chiến lược theo số lượng sinh viên phải thi trong các nhóm thi khác: nhóm nào có số
sinh viên phải thi trong các nhóm thi khác lớn nhất sẽ được xếp trước.
7. Chiến lược theo độ ưu tiên của các nhóm thi đã chỉ đònh trước. Cung cấp công cụ để
người sử dụng hệ thống chọn độ ưu tiên cho các nhóm thi.
III.2 Sự kết hợp giữa các chiến lược:
Các chiến lược trên được người sử dụng chọn độ ưu tiên, nếu không thì dùng độ ưu
tiên mặc đònh. Độ ưu tiên của các chiến lược phải khác nhau, chiến lược nào có độ ưu
tiên nhỏ nhất (độ ưu tiên = 1) sẽ được dùng đầu tiên. Các chiến lược có độ ưu tiên thấp
hơn sẽ được dùng sau nếu trong chiến lược đầu vẫn có các nhóm được đánh giá như
nhau. Nếu đã dùng tất cả các chiến lược chọn mà vẫn có các nhóm được đánh giá như
nhau, thì ta chọn theo thứ tự xuất hiện của chúng trong database.
Các chiến lược không được dùng sẽ có độ ưu tiên = 0. Nếu không dùng tất cả các
chiến lược thì các nhóm sẽ được chọn theo thứ tự xuất hiện của chúng trong database.
III.3 Các tiêu chuẩn và thang điểm đánh giá một lòch thi:
Để đánh giá một lòch thi, ta cần một thang điểm để cho điểm lich thi, sau đó, căn cứ

vào điểm của lòch thi để so sánh các lòch thi, chọn một lòch thi có thể chấp nhận được.
Để thuận tiện cho việc đánh giá, chương trình cung cấp một thang điểm để đánh giá
một lich thi kết quả với một điểm tối đa cho trường hợp tốt nhất và các điểm phạt trừ
lũy tiến khi thỏa mãn điều kiện của điểm phạt đó.
1. Điểm tối đa cho một sinh viên: 1000 điểm
2. Sinh viên có một buổi phải thi hai môn: -8 điểm
3. Sinh viên có một ngày phải thi hai môn: -4 điểm
4. Sinh viên có một ngày thi nhiều hơn hai môn: -16 điểm
5. Sinh viên có hai ngày thi liên tiếp: -1 điểm
6. Sinh viên có nhiều hơn hai ngày thi liên tiếp: -2 điểm
7. Sinh viên có một môn thi xếp không được: -100 điểm
Sinh viên có ngày thi phải đi học môn khác: ta coi môn học đó cũng như một môn thi và
đưa trường hợp này về các trường hợp trên.
- Điểm đầu tiên là điểm tối đa mà một sinh viên có thể đạt được. Các điểm sau là điểm phạt
khi gặp bất kỳ một trường hợp nào thỏa điều kiện trừ điểm.
- Điểm của một lòch thi bằng tổng số điểm của toàn bộ sinh viên tham gia kỳ thi đó. Để tạo
tính uyển chuyển cho chương trình ta cho phép người sử dụng quyết đònh và nhập thang
điểm khác điểm khác nếu cần.
- Nên chọn điểm tối ưu sao cho điểm tối đa lớn hơn tổng số điểm các điểm phạt, bởi vì mặc
dù với điểm tối đa nhỏ hơn, điểm đánh giá âm, ta vẫn có thể đánh giá được kết quả so với
các kết quả khác cùng thang điểm. Tuy nhiên, ta không nên để kết quả là số âm vì số âm
sẽ tạo ấn tượng đối với mọi người là kết quả này không tốt trong khi thực sự đây là một kết
quả tốt nhất trong các kết quả tìm được.
III.4 Các tùy chọn trong khi xếp lòch thi:
Trong khi xếp lòch thi, để có thỏa mãn một số ràng buộc phụ ta phải thu gọn các khả
năng của các nhóm thi. Nhưng khi xếp, có thể có một số nhóm không xếp được, nên ta
cần thêm khả năng cho các nhóm. Do đó, ta cũng cần bỏ đi một số ràng buộc phụ. Để
thực hiện điều này, ta cần có các tùy chọn để cho phép người dùng bỏ đi một số ràng
buộc phụ. Các tùy chọn đó là:
1. Tránh tiết 1

2. Tránh tiết 6
3. Tránh tiết 7
4. Tránh tiết 12
5. Chừa một tiết giữa hai môn thi của một sinh viên bất kỳ
6. Một sinh viên bấr kỳ một buổi chỉ thi một môn
IV. CHỌN MÔ HÌNH KHI LÀM VIỆC TRÊN CƠ SỞ DỮ LIỆU PHÂN BỐ:
Khi làm việc trên cơ sở dữ liệu phân bố, để ứng dụng đạt được hiệu quả tối ưu khi tham
khảo hay cập nhật dữ liệu trong Database, ta cần quan tâm đến tần suất của ứng dụng cũng như
hệ số chọn dữ liệu.
- Tần suất của ứng dụng là số lần ứng dụng cần tham khảo hay cập nhật dữ liệu. Trong cơ sở
dữ liệu phân bố, tần suất là một chỉ số quan trọng trong việc lựa chọn các cách truy cập và
xử lý dữ liệu như load hết dữ liệu về site đang làm việc hay sử dụng kết phân bố, vân vân…
Nếu tần suất cao ta nên chọn cách load các dữ liệu cần thiết về site làm việc và thực hiện
trên các dữ liệu đó.
- Tuy nhiên, còn một thông số khác ta cần quan tâm là hệ số chọn của ứng dụng: đó là tỉ lệ
chọn dữ liệu về site làm việc của ứng dụng.
- Dựa vào hai thông số này ta sẽ quyết đònh chọn phương pháp nào là thích hợp nhất để tham
khảo dữ liệu.
Đối với vấn đề xếp lòch thi, ta cần các thông tin về môn học học kỳ để chọn các môn học
trong học kỳ này để xếp lòch thi, kết quả đăng ký môn học để kiểm tra không cho sinh viên nào
trùng lòch thi cũng như đánh giá lòch thi, và cuối cùng là thông tin về phòng để xếp lòch thi. Ta
chọn các thông tin về môn học học kỳ, các thông tin về nhóm tổ cũng như các sinh viên học
đăng ký trong các nhóm tổ đó về site làm việc để tiến hành xếp lòch thi, các thông tin phụ để
xem lòch thi vân vân ta sẽ dùng kết phân bố.

CHƯƠNG 3:
QUAN HỆ THỰC THỂ
I. ERD:
MONTHI( ma_nganh, nam_vao_truong, dot, ma_mh, sotietthi, loai_phong)
- ma_nganh,nam_vao_truong,dot : khóa ngành gồm mã ngành, năm vào trường, đợt.

Ví dụ: Ngành máy tính: MT, năm vào trường: 1995, đợt: 1 -> khóa ngành: MT19951
- ma_mh: mã môn học của môn thi.
- sotietthi: số tiết thi mặc đònh của môn học.
- loai_phong: loại phòng của môn thi. Môn thi đặc biệt sẽ có phòng đặc biệt.
NHOMTO_MONTHI( ma_nganh, nam_vao_truong, dot, ma_mh, nhom, nhom_to, phong,
ngaythi, tietbd, si_so, thiss, ghep)
- Bảng lòch thi xếp được.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×