1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu bài toán xếp thời khóa biểu của trường đại học theo tiếp cận bài toán thỏa mãn ràng buộc

68 170 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH _ TRẦN ANH TRUNG NGHIÊN CỨU BÀI TỐN XẾP THỜI KHĨA BIỂU CỦA TRƯỜNG ĐẠI HỌC THEO TIẾP CẬN BÀI TOÁN THỎA MÃN RÀNG BUỘC LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGHỆ AN, 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH _ TRẦN ANH TRUNG NGHIÊN CỨU BÀI TOÁN XẾP THỜI KHÓA BIỂU CỦA TRƯỜNG ĐẠI HỌC THEO TIẾP CẬN BÀI TỐN THỎA MÃN RÀNG BUỘC Chun ngành: CƠNG NGHỆ THƠNG TIN Mã số: 60.48.02.01 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THƠNG TIN Người hướng dẫn khoa học: TS HỒNG HỮU VIỆT NGHỆ AN, 2017 MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG TỔNG QUAN 1.1 Đặt vấn đề 1.2 Tổng quan tốn xếp thời khóa biểu 1.2.1 Bài tốn xếp thời khóa biểu cho trường đại học (University timetabling) 1.2.2 Bài toán xếp lịch thi (Examination timetabling) 1.3 Các hướng tiếp cận giải toán xếp thời khóa biểu 1.3.1 Hướng tiếp cận theo phương pháp quay lui (vét cạn) 1.3.2 Hướng tiếp cận theo phương pháp quy hoạch động 1.3.3 Hướng tiếp cận theo tìm kiếm heuristic 1.3.4 Hướng tiếp cận giải thuật leo đồi (Hill-climbing) 1.3.5 Hướng tiếp cận theo giải thuật di truyền 1.4 Hướng tiếp cận theo toán thỏa mãn ràng buộc 1.5 Mục tiêu, đối tượng phạm vi nghiên cứu 1.5.1 Mục tiêu nghiên cứu 1.5.2 Đối tượng phạm vi nghiên cứu CHƯƠNG BÀI TOÁN THỎA MÃN RÀNG BUỘC 11 2.1 Định nghĩa toán thỏa mãn ràng buộc 11 2.2 Phương pháp lan truyền cạnh 12 2.2.1 Biểu diễn toán thỏa mãn ràng buộc theo đồ thị 12 2.2.2 Nhất quán node (node consistency) 13 2.2.3 Nhất quán cung (arc-consistent) 13 2.2.4 Thuật toán AC-3 14 2.3 Phương pháp tìm kiếm quay lui 15 2.3.1 Thuật toán 17 2.3.2 Ví dụ minh họa 18 2.4 Phương pháp tìm kiếm quay lui kết hợp kiểm tra tiến (nhánh cận) 19 2.4.1 Thuật toán 20 2.4.2 Ví dụ minh họa 21 2.5 Tìm kiếm cục cho tốn ràng buộc (phương pháp tìm kiếm heuristic)22 2.5.1 Thuật tốn 22 2.5.2 Ví dụ minh họa 23 CHƯƠNG BÀI TỐN XẾP THỜI KHĨA BIỂU 25 3.1 Đặc tả toán 25 3.2 Mô hình hố tốn theo dạng tốn thỏa mãn ràng buộc 26 3.3 Thuật toán giải toán tổng quát 27 3.3.1 Các phương pháp nối tiếp (sequential methods) 27 3.3.2 Các phương pháp phân cụm (cluster method) 27 3.3.3 Các phương pháp dựa ràng buộc 28 3.3.4 Các phương pháp meta-heuristic 28 3.4 Bài toán xếp lịch thi trường đại học 28 3.4.1 Mơ tả tốn 28 3.4.2 Đề xuất thuật toán XLT (Xếp Lịch Thi) 29 3.4.3 Các hàm thuật tốn XLT 32 CHƯƠNG CÀI ĐẶT THỬ NGHIỆM THUẬT TOÁN 36 4.1 Cài đặt thuật toán cho toán xếp lịch thi trường đại học 36 4.1.1 Các cấu trúc liệu 36 4.1.2 Bộ liệu thử nghiệm 37 4.1.3 Đánh giá thuật toán 42 4.1.4 Một số nhận xét đề xuất 47 KẾT LUẬN 48 TÀI LIỆU THAM KHẢO 50 PHỤ LỤC 51 LỜI NĨI ĐẦU Người mà tơi xin dành kính trọng cảm ơn đặc biệt TS Hồng Hữu Việt Thầy không người giảng dạy môn học liên quan đến kiến thức thuật tốn cơng nghệ đại giới mà người trực tiếp hướng dẫn tận tình cho đề tài tơi Chính Thầy người tin tưởng, tạo điều kiện hỗ trợ tốt cho tơi hồn thành Luận văn tốt nghiệp Chắc chắn khơng thể nói hết tình cảm mà tơi muốn nói, muốn cảm ơn tới Thầy - người đưa ý tưởng song hành tơi hồn thành luận văn Mọi thắc mắc Thầy giải đáp, tạo điều kiện tối đa Thầy coi người bạn với Thầy người bạn lớn Tôi muốn dành lời cảm ơn tới TS Phan Lê Na Thầy cô khoa CNTT TS Phan Lê Na người trực tiếp giảng dạy chúng tơi với lịng u nghề đầy tâm huyết ngồi với vai trị Trưởng khoa, Cơ cương đạo quan tâm sát để chúng tơi hồn thành đề tài kịp tiến độ Tôi xin cảm ơn tới tất thành viên CH23-CNTT - hệ thạc sĩ khoa CNTT trường Đại học Vinh, họ người bạn thân thiết, chân thành, nguồn động viên lớn cho tôi! Cuối xin chân thành cảm ơn tất người quan tâm đồng hành suốt thời gian qua! Nghệ An, tháng năm 2017 CHƯƠNG TỔNG QUAN 1.1 Đặt vấn đề Bài tốn xếp thời khóa biểu toán cổ điển thuộc lớp toán tối ưu ràng buộc, khó Bài tốn từ lâu thu hút quan tâm, nghiên cứu phát triển nhiều tổ chức giáo dục, nhà khoa học tính ứng dụng cao độ phức tạp Đặc biệt, Việt Nam, từ lâu tốn xếp thời khóa biểu trở thành vấn đề có tính thời sự, tốn gây ý, quan tâm nhiều người Trong nhiều thập niên qua có nhiều phương pháp giải đưa Tuy nhiên, tính hiệu lời giải cho lớp tốn cịn nhiều bàn cãi Trong thuật toán truyền thống tỏ hiệu thuật tốn lĩnh vực trí tuệ nhân tạo lại tỏ phương pháp hữu hiệu để giải toán thuật tốn tìm kiếm mơ luyện kim, thuật tốn di truyền, Bài tốn xếp thời khóa biểu cho trường đại học tốn lập lịch Có nhiều ràng buộc đưa toán ràng buộc đối tượng tham gia (giảng viên, lớp học, sinh viên), ràng buộc tài nguyên phục vụ giảng dạy (phòng lý thuyết, phòng thực hành,…), ràng buộc thời gian (số tiết học), ràng buộc chuyên môn nhiều ràng buộc khác Như vậy, tốn xếp thời khóa biểu mơ hình thành tốn thỏa mãn ràng buộc (Constraint Satisfaction Problem - CSP) sử dụng phương pháp giải toán thỏa mãn ràng buộc để giải tốn xếp thời khóa biểu Từ nhận thức đó, chúng tơi đề xuất đề tài “Nghiên cứu tốn xếp thời khóa biểu trường đại học theo tiếp cận toán thỏa mãn ràng buộc” làm luận văn cao học thạc sĩ 1.2 Tổng quan tốn xếp thời khóa biểu Bài tốn xếp thời khóa biểu tốn tính tốn khó lập lịch Mục đích tìm khoảng thời gian thích hợp cho số nhiệm vụ có tài nguyên giới hạn Phụ thuộc vào chất tốn, ràng buộc tốn thay đổi có nhiều mục đích khác Bài tốn xếp thời khóa biểu tồn nhiều tình khác thực tiễn như: xếp lịch thi đấu thể thao, xếp lịch công việc đặc biệt xếp thời khóa biểu cho sở giáo dục Nó quan trọng nhu cầu cần thiết phải có thời khóa biểu hợp lý phục vụ công việc tổ chức cách thuận lợi để có thời khóa biểu tối ưu thỏa mãn tất ràng buộc điều khơng dễ, chí số trường hợp khó để tìm giải pháp khả thi Thực tế cho thấy khó để hình thành mơ hình chung cho tất trường hợp toán xếp thời khóa biểu, sở giáo dục có ràng buộc mục tiêu đặc biệt gắn với Bài tốn xếp thời khóa biểu nhóm thành kiểu: tốn lập lịch kỳ thi tốn lập lịch khóa học Bài tốn lập lịch kỳ thi gán kỳ thi qua khoảng thời gian tương ứng với vài ràng buộc Mục tiêu gán kỳ thi cho số khoảng thời gian tối thiểu mà xung đột Trong số trường hợp khác, số lượng khoảng thời gian cố định mục tiêu tối ưu hàm ưu tiên dựa số phịng, người coi thi sinh viên Ví dụ số hàm ưu tiên là: ● Tối đa khoảng thời gian kỳ thi liên tiếp sinh viên ● Lập lịch kỳ thi mà có số lượng sinh viên tham gia đơng khoảng thời gian sớm Đối với toán lập lịch khóa học, khoảng thời gian thường cố định trước, ví dụ vịng tuần Mục tiêu tìm lịch khóa học mà thỏa mãn số ràng buộc liên quan đến giảng viên, số phịng Ví dụ lịch làm việc giảng viên phải xếp thích hợp nhiều tiết học ngày làm việc để tối thiểu số ngày giảng viên làm Bài tốn lập lịch khóa học lập lịch kỳ thi có đặc điểm giống khác Ví dụ, tốn, sinh viên tham dự nhiều kỳ thi nhiều môn học thời điểm Mặc dù có khác biệt kiểu toán phương pháp giải chúng tương tự Trong luận văn này, tập trung xử lý toán lập lịch kỳ thi 1.2.1 Bài tốn xếp thời khóa biểu cho trường đại học (University timetabling) Bài tốn xếp thời khóa biểu cho trường đại học toán lập lịch cho giảng (lectures) vào khóa học với số lượng phịng học tiết học cho trước Bài tốn ràng buộc số phòng học, giảng viên, sinh viên, mơn học… Ở trường đại học, hai khóa học khác có trùng sinh viên tham dự điều tạo xung đột lập lịch tiết học Những trường đại học đào tạo theo hệ tín chỉ, sinh viên tham gia nhiều mơn học học kỳ nên địi hỏi có thời khóa biểu hợp lý để tạo điều kiện lựa chọn môn học cho sinh viên điều cần thiết Tóm lại tốn xếp thời khóa biểu cho trường đại học tốn có nhiều ràng buộc kích thước lớn nên ảnh hưởng đến thời gian thực thuật tốn khó đưa phương án tối ưu thỏa mãn tất yêu cầu đối tượng tham gia 1.2.2 Bài toán xếp lịch thi (Examination timetabling) Bài toán xếp lịch thi tương tự tốn xếp thời khóa biểu cho trường đại học có khác hai tốn Bài tốn xếp lịch thi có đặc điểm sau đây: • Chỉ có kỳ thi cho mơn thi • Mọi sinh viên phải tham gia kỳ thi • Một sinh viên có kỳ thi ngày khơng có nhiều q kỳ thi liên tiếp với sinh viên • Thời gian kỳ thi khác • Có thể có nhiều kỳ thi phịng thi (có nhiều mơn thi xếp phịng thi) 1.3 Các hướng tiếp cận giải tốn xếp thời khóa biểu Bài tốn thời khóa biểu nói riêng tốn tối ưu tổ hợp nói chung thuộc lớp tốn ràng buộc khó Sự khó khăn chúng thể độ phức tạp tính tốn thời gian để giải thường tăng theo hàm mũ kích thước tốn thường khó đạt kết tối ưu tuyệt đối 1.3.1 Hướng tiếp cận theo phương pháp quay lui (vét cạn) Đặc trưng vét cạn thường sử dụng phương pháp duyệt đệ quy để xét hết khả có nghiệm theo nguyên tắc "thử sai" quay lui Quay lui phương pháp vét cạn giá trị nghiệm chọn khơng thực cách duyệt tuyến tính Điểm tốt thuật toán quay lui so với vét cạn tuyến tính hạn chế bớt nhánh phải duyệt mà theo nhánh khơng tìm lời giải Tuy nhiên hạn chế phương pháp phải duyệt qua nhiều khả nên độ phức tạp chương trình thường mức giai thừa hay hàm mũ nên tốc độ tính tốn lâu trường hợp kích thước liệu vào lớn Vì độ phức tạp hàm mũ nên phương pháp thường khó giải tốn có số phần tử lớn 50 Vì phương pháp đệ quy khó áp dụng để giải tốn xếp thời khóa biểu ta phải phát triển khơng gian trạng thái lớn, trước tới trạng thái đích, hạn chế thời gian tính tốn dung lượng nhớ, khơng cho phép làm điều 1.3.2 Hướng tiếp cận theo phương pháp quy hoạch động Phương pháp dùng để giải “bài tốn tối ưu” có chất đệ qui, tức tìm phương án tối ưu cho tốn đưa tìm phương án tối ưu số hữu hạn toán Phương pháp quy hoạch động (Dynamic Programming) kỹ thuật nhằm đơn giản hóa việc tính tốn cơng thức truy hồi cách lưu tồn hay phần kết tính tốn bước trước với mục đích sử dụng lại Vì vậy, tốn xếp thời khóa biểu khó tiếp cận theo phương pháp quy hoạch động khơng phải tốn tìm nghiệm tối ưu, cách xác định tốn nhỏ tìm cơng thức truy hồi cho gần điều khơng thể Ngồi ràng buộc cứng cịn có ràng buộc mềm nên có nhiều tham số cho công thức truy hồi để giải theo hướng quy hoạch động 1.3.3 Hướng tiếp cận theo tìm kiếm heuristic Nhiều tốn xếp lịch có liệu vào lớn khơng thể áp dụng thuật toán cho lời giải tối ưu thời gian không cho phép, trường hợp chúng thường giải phương pháp heuristic (một tìm kiếm hợp lý đó) để có lời giải tương đối tối ưu thực thời gian cho phép Bài tốn xếp lịch thường có u cầu: - Yêu cầu loại (ràng buộc cứng): gọi yêu cầu bắt buộc (nội dung cụ thể tuỳ theo toán) yêu cầu phải đạt được, khơng đạt coi lời giải khơng chấp nhận Ví dụ: yêu cầu phải xếp hết tất công việc, phải xếp xong trước thời hạn cho trước đó, cơng việc phải tuân thủ yêu cầu thời gian bắt đầu, thời gian kết thúc, thời gian hồn thành cơng việc ấy, công việc phải thực trước công việc kia… - Yêu cầu loại (ràng buộc mềm): yêu cầu nhân nhượng phần (nội dung cụ thể tuỳ theo tốn) Ví dụ: cho phép tổng chi phí (hoặc tổng thời gian) thực xong công việc đạt giá trị thấp tốt (hoặc xong sớm tốt) Chính nhờ nhân nhượng mà ta đề xuất cách xếp một nhóm cơng việc dễ dàng hơn, "heuristic" Giải thuật chứa heuristic có đặc điểm: 50 TÀI LIỆU THAM KHẢO [1] Nguyễn Thanh Thủy, Trí tuệ nhân tạo: Các phương pháp giải vấn đề, Nxb Giáo dục, 1996 [2] Stuart Russell, Peter Norvig Artificial Intelligence A modern approach 3rded Prentice Hall, 2009 [3] Lixi Zhang, SimKim Lau Constructing university timetable using constraint satisfaction programming approach In Proccedings of CIMCA, 2005 pp 55-60 [4] Coston, Patrick James Applying constraints to the timetable problem Master Thesis, Lehigh University, 1992 [5] Tomáš Müller, Constraint-based Timetabling Ph.D Thesis Charles University in Prague 2005 [6] Mary Almond An algorithm for constructing University timetables The Computer Journal (1966) (4): 331-340 [7] E Aycan, T Ayav Solving the Course Scheduling Problem Using Simulated Annealing Advance Computing Conference, 2009 IACC 2009 IEEE International, Patiala, 2009, pp 462-466 [8] Naseem Jat, Sadaf Genetic Algorithms for University Course Timetabling Problems PhD Thesis University of Leicester 2012 [9] Abdul Wahab Khan Timetable in a Technical University The Journal of Educational Research Vol 64 No Pp 300-302, 1971 51 PHỤ LỤC Mã nguồn thuật toán XLT đề xuất để giải toán lập lịch kỳ thi // Thuat toan XLT, ket hop di truyen va leo doi // Mot DanSo gom nhieu CaThe // CaThe gom lich cac ky thi n // dieu kien rang buoc // XungDot[i,j] = so luong thi sinh tham gia ky thi i va j // time[i] luu slot time to chuc cho ky thi i // voi ky thi i,j: neu XungDot[i,j] != => time[i] != time[j] // // // // du lieu input course.txt (id #students) 001 002 // // // // student.txt 001 002 (sinh vien A) 002 (sinh vien B) 001 002 (sinh vien C) #include #include #include #include #include #include #include #include // ifstream //istream_iterator //stringstream #include #include #include #include //file in C #define #define #define #define #define #define #define #define SoTheHe 50 XacSuatLeoDoi 0.75 XacSuatDotBien 0.05 KichThuocTapChonLoc SoCaTheDanSo 11 SoBuocLapLeoDoi 100 SoLanKiemTra 50 DocDuLieuTu2File 52 using namespace std; int SoKyThi; vector< vector > XungDot; string fp1 = "car-f-92.crs"; string fp2 = "car-f-92.stu"; string file = "input2.txt"; FILE *output_file; class CaThe { public: // variable vector time; // gan timeslot cho moi ky thi vector used_time; // luu timeslot da su dung map SoKyThiTrongTimeSlot; // luu so exam timeslot int fitness; // luu so timeslot duoc su dung mot CaThe, can toi thieu fitness // constructor CaThe() { // gan ngau nhien timeslot cho n exam for (int i=0; isecond > 0) { // neu so luong exam tren slottime >0, chon slottime ay used_time.push_back(it->first); } } // Tinh gia tri fitness cho CaThe void TinhFitness() { fitness = used_time.size(); } // gan ky thi i cho timeslot t void GanKyThi(int i, int t) { //update thong tin SoKyThiTrongTimeSlot // used timeslot va fitness se luon update dua vua SoKyThiTrongTimeSlot, vi the chi can // update SoKyThiTrongTimeSlot SoKyThiTrongTimeSlot[time[i]] ; // remove gia tri timeslot cu time[i]= t; SoKyThiTrongTimeSlot[time[i]]++; // update gia tri moi } // kiem tra gia tri timeslot duoc gan moi cho ky thi i co vi pham constraint bool ThoaManRangBuoc(int i) { for (int j=0; j 0) && (time[i]==time[j])) 54 return false; return true; } // methods bool ThoaManToiKyThi(int i) { for (int j=0; j0) && (time[i] == time[j])) return false; return true; } // mutation cho dan so moi // dua vao xac suat DotBien tung CaThe, bang viec thay doi timeslot cho cac ky thi dua tren xac suat // timeslot moi phai thoa man khong vi pham constraint // voi moi exam, thu lan de kiem tra timeslot moi void DotBien() { for (int i=0; i< SoKyThi; i++) if (((1.0)*rand()/(RAND_MAX + 1.0)) < XacSuatDotBien) { // chon timeslot ngau nhien gan cho ky thi i, thu toi da lan // dk gan la thoa man rang buoc int oldTimeSlot = time[i]; // luu lai timeslot cu neu timeslot moi vi pham constraint for (int j=0; j

Ngày đăng: 10/02/2021, 21:58

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w