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
Trang 1PHÂ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 Tanó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ớisự 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ácphươ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 ưunà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áctrườ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ệncá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ũngnhư 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ịchthi” 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ệuphâ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ànthà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
Trang 2I.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ỉ địnhtrướ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ỉ địnhsẵ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ỳ thisẽ 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ó sinhviê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ộchai khóa ngành khác nhau phải thi đồng thời Ví dụ: môn Lịch sử Đảng có 2khó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ôngthể 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ậpnhập số tiết thi
Trang 3d) 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ônthi 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ùngthờ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 thitrướ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 kinhnghiệ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 tintổ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 gianthi 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ấtkỳ 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ý:
Trang 4- 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 haimôn thi cùng ngày )
Trang 5CHƯƠNG 2:
PHÂN TÍCH VÀ THIẾT KẾ
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ảilà 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à đủ
Trang 6II 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âygiờ 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ácnhó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
Trang 7như 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ạnxâ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ầnc) 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ó:
Trang 8nhó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ảithuậ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,
Trang 9cò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
Trang 10trong 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 tabulist 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ươngphá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ũngnhư 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ácnhó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
Trang 115 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 độ ưutiê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
Trang 12- Đ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ặcdù 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ậpvà 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
Trang 13Đố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ố.
Trang 14CHƯƠ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
Trang 15- ma_nganh: mã ngành.
- nam_vao_truong: năm vào trường
- dot: đợt
- ma_mh: mã môn học của môn thi
- nhom: nhóm
- nhom_to: nhóm tổ
- phong: mã phòng thi
- ngaythi: ngày thi
- tietbd: tiết bắt đầu thi
- si_so: sỉ số sinh viên của nhóm tổ, thông tin cần thiết khi tìm phòng
- thiss: mô tả các nhóm tổ thi đồng thời
- ghep: mô tả các nhóm tổ được ghép thi chung phòng
Ràng buộc:
- các nhóm tổ được ghép chung phải thi đồng thời với nhau
PHONG_HOC( phong, day_phong, suc_chua, ma_khoa, loại phòng, …)
- phong: mã phòng
- day_phong: dãy phòng chứa phòng
- suc_chua: sức chứa của phòng
- ma_khoa: mã khoa
- loai_phong: loại phòng
- Bảng này thuộc phân hệ xếp thời khóa biểu Để có thêm chi tiết, xin xem lại phân hệ xếpthời khóa biểu
SINH_VIEN( ma_sv, ten_sv,…)
- ma_sv: mã sinh viên
- ten_sv: tên sinh viên
- Bảng này thuộc phân hệ Quản lý sinh viên Để có thêm chi tiết, xin xem lại phân hệ xếpthời khóa biểu
II PHÂN BỐ DỮ LIỆU:
- Do phân hệ này được phòng đào tạo quản lý nên các bảng MONTHI vàNHOMTO_MONTHI được tạo tại Server phòng đào tạo
- Bảng PHONG_HOC cũng được phòng đào tạo quản lý
- Bảng SINH_VIEN được phân bố theo khoa trong phân hệ Quản lý sinh viên
Trang 16- Các dữ liệu cần tham khảo như chương trình đào tạo, đăng ký môn học được phân bố theokhoa trong phân hệ Chương trình đào tạo và đăng ký môn học.
- Kết quả chương trình là lịch thi cho các nhóm tổ môn học được để tại phòng đào tạo Kếtquả được nhân bản ra các khoa cho phép sinh viên vào khoa xem lịch thi của khoa mình
Trang 17CHƯƠNG 4:
CÁC CHỨC NĂNG CỦA PHÂN HỆ
I TÓM TẮT CHỨC NĂNG:
1 Cho phép người sử dụng xếp một thời khóa biểu cho một số môn trong học kỳ hiện tại.Người sử dụng có thể chọn một số môn học hay chọn tất cả các môn trong học kỳ hiện tạiđể xếp thời lịch thi Mặt khác để có thể xếp được một lịch thi chấp nhận được, phân hệcho phép xếp lại các môn học này trong một đợt xếp khác để đánh giá, so sánh các kếtquả và chọn kết quả tốt nhất mà người sử dụng chấp thuận
2 Cho phép người sử dụng tạo danh sách các ngày nghỉ lễ trong năm để tránh xếp lịch thivào các ngày đó
3 Cho phép người sử dụng nhập các tiết thi và ngày thi bận cần tránh khi xếp lịch thi
4 Cho phép người sử dụng chọn các môn thi ghép song song: Các nhóm tổ thi môn đó cầnthi cùng lúc tại các phòng khác nhau
5 Cho phép người sử dụng cập nhập lại số tiết thi cho các nhóm lớp môn học
6 Cho phép nhập ngày thi và tiết bắt đầu ưu tiên (với độ ưu tiên tuyệt đối) cho các nhómlớp môn học
7 Cho phép cập nhập tính chất phòng thi cho các nhóm lớp môn học
8 Cho phép ghép phòng thi chung các tổ thuộc các nhóm lớp môn học để tận dụng sức chứacác phòng thi lớn
9 Cho phép người sử dụng xem và sửa lịch thi theo ngành, nhóm tổ hay sinh viên
10 Cho phép người sử dụng chọn độ ưu tiên cho các chiến lược chọn nhóm thi trong khi xếplịch thi nhằm đạt được một lịch thi tốt hơn
11 Cho phép người sử dụng chọn các ràng buộc phụ cần hay không cần tuân theo khi xếp lịchthi
12 Cung cấp các thông tin về dữ liệu hiện tại để người sử dụng dùng kinh nghiệm bản thânchọn các độ ưu tiên cũng như các ràng buộc phụ nhằm đạt được một chiến lược xếp lịchthi chung tốt nhất có thể được
13 Cung cấp thông tin đánh giá lịch thi xếp được nhằm đánh giá, so sánh giữa các lần chọnchiến lược thi khác nhau để chọn kết quả tốt nhất
II THIẾT KẾ FORM:
II.1 Form nhập đợt xếp:
Chức năng: Nhập một đợt xếp mới với các thông tin cần thiết để xếp lịch thi Đợt xếp ở đâycó nghĩa là lần xếp hiện tại, ta có thể xếp lại lịch thi nhiều lần cho một nhóm các môn học
Trang 18hay tất cả các môn học trong cùng một năm học – học kỳ bằng cách chọn nhập một đợt xếpkhác Các kết quả của hai đợt xếp theo nghĩa này không ảnh hưởng lẫn nhau, nghĩa là khichọn một đợt xếp mới, các phòng được sử dụng bởi đợt xếp cũ được giải phóng Các môn họcmuốn xếp lịch thi có dữ liệu ảnh hưởng lẫn nhau cần xếp chung trong một đợt xếp
Input:
-mã đợt xếp: mã của đợt xếp hiện tại, kiểu varchar(8), ví dụ: ‘19961’
-năm học: năm học hiện tại, kiểu int từ 1990 đến 9999, ví dụ: 1996, dữ liệu này được lấytừ hệ thống quản lý chung
-học kỳ: học kỳ hiện tại, kiểu int từ 1 đến 2, ví dụ: 1, dữ liệu này được lấy từ hệ thốngquản lý chung
-ngày bắt đầu của năm học: ngày bắt đầu tương ứng với tuần 1, kiểu smalldatetime dạng mm/dd/yyyy, ví dụ: 12/02/1996, dữ liệu này được lấy từ hệ thống quản lý chung
-tuần bắt đầu thi: tuần bắt đầu của kỳ thi, kiểu int từ 1 đến 25, ví dụ: 15, dữ liệu này cóthể được lấy từ kế hoạch giảng dạy
-số tuần thi: số tuần cho kỳ thi, kiểu int từ 1 đến 4, ví dụ: 2, dữ liệu này có thể đượclấy từ kế hoạch giảng dạy
Output: Thêm, sửa, xóa, bảng DOT_XEP
Tiện ích: Thông báo nếu sửa, xóa khi đã có mã đợt xếp trong bảng
Tự động tạo ra bảng NGAY_THI, tính thứ trong tuần cho bảng này
Thiết kế giao diện: