Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Tr-ờng đại học vinh Khoa công nghệ thông tin Lập thời khoá biểu đại học Khoá luận tốt nghiệp đại học Giáo viên h-ớng dẫn: Th.S: Hoàng Hữu Việt Sinh viên thực hiện: Nguyễn Thanh Tuân Lớp: 45A1 - CNTT Vinh – 2008 SVTH: Ngun Thanh Tu©n GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Lời cảm ơn! Khoá luận đ-ợc hoàn thành tr-ờng Đại Học Vinh d-ới h-ớng dẫn Thầy giáo Th.S Hoàng Hữu Việt Nhân dịp này, tác giả xin bày tỏ lòng kính trọng biết ơn sâu sắc tới thầy, ng-ời đà trực tiếp giúp đỡ tác giả hoàn thành Khoá luận Tác giả xin chân thành cảm ơn thầy giáo, cô giáo chuyên ngành Hệ thống thông tin, khoa Công nghệ thông tin tr-ờng Đại Học Vinh, đà nhiệt tình giảng dạy giúp đỡ tác giả trình thực Khoá luận Tác giả xin bày tỏ lòng biết ơn tới Ban chủ nhiệm khoa thầy cô giáo Khoa Công nghệ thông tin Đại Học Vinh Phòng Đào tạo Đại học, phòng Quản trị Đại học, bạn bè, ng-ời thân đà tạo điều kiện giúp đỡ tác giả trình học tập nghiên cứu Xin chân thành cảm ơn quan tâm, giúp đỡ quý báu đó! Luận văn không tránh khỏi thiếu sót, tác giả mong nhận đ-ợc biết ơn ý kiến đóng góp quý thầy cô giáo bạn Vinh, tháng năm 2008 Tác giả SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Mục lục Trang Lời cảm ơn Giới thiệu đề tài Ch-ơng I Tổng quan 1.1 Lý chọn đề tài 1.2 Lịch sử giải vấn đề 1.3 Phạm vi mục đích đề tài 1.4 Các b-ớc giải vấn đề Ch-ơng II Cơ sở lý thuyết cách thức giải toán 10 2.1 Cơ sở lý thuyết 10 2.1.1 Dữ liệu vào toán 10 2.1.2 Khuôn dạng thời khoá biểu 13 2.1.3 Các ràng buộc xếp toán 15 2.1.4 Xây dựng hàm mục tiêu 17 2.1.5 Mô hình hoá tổng thể toán 18 2.2 Cách thức giải toán 19 2.2.1 Lựa chọn thuật toán 19 2.2.2 Công cụ cài đặt 20 Ch-ơng III Nội dung kết nghiªn cøu 21 3.1 Néi dung 21 3.1.1 ThiÕt kÕ bảng CSDL 21 3.1.2 Liên kết CSDL vào nhớ ch-ơng trình 29 3.1.3 Sơ l-ợc thuật toán 36 3.2 KÕt qu¶ 46 KÕt luËn 47 KÕt luËn chung toán 47 Những đóng góp đề tài 47 Hạn chế đề tài 48 Định h-ớng phát triển đề tài 48 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học 50 Tài liệu tham khảo Ký hiệu viết tắt (Quy -ớc chữ viết tắt sử dụng báo cáo luận văn) Viết tắt Viết đầy đủ TKB Thời khoá biểu CSDL Cơ sở liệu SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Giới thiệu đề tài Máy tính phát minh vĩ đại ng-ời kỉ 20 Một đặc tính bật máy tính tính xác tốc độ xử lí Nhờ đặc tính này, máy tính tính toán hàng triệu phép tính, hay xét hàng triệu tr-ờng hợp giây đồng hồ, khả mà óc siêu đẳng ng-ời thực đ-ợc Một minh hoạ hợp lí cho khả tuyệt vời máy tính toán lập lịch Có thể hiểu cách đơn giản lập lịch toán xếp dÃy thuộc tính khác thành hợp lí theo tiêu chí Tính chất toán lập lịch th-ờng số cách xếp lớn B-ớc xếp phải dựa vào b-ớc xếp tr-ớc đó, cần phải có ph-ơng án l-u lại b-ớc xếp đà qua, đồng thời phải kiểm tra khả b-ớc có dẫn tới đ-ợc kết hay không Từ b-ớc hiƯn t¹i cã thĨ cã rÊt nhiỊu lùa chän cho b-ớc Khả bùng nổ tổ hợp điều khó tránh khỏi Tính chất đặc tr-ng làm cho toán lập lịch thực khó chí giải đ-ợc thực tay giấy Việc xét hàng triệu tr-ờng hợp không khả thi Nhờ trợ giúp máy tính, loạt toán lớp đà đ-ợc giải Có toán đà đ-ợc giải hoàn toàn, số toán giải đến kết chấp nhận đ-ợc, số toán bỏ ngõ ch-a đạt yêu cầu Trong số toán tồn tại, toán lập lịch TKB cho tr-ờng học thách thức thực thú vị cho ng-ời yêu thích khoa học máy tÝnh BÊt cø mét nhµ tr-êng nµo, TKB häc tËp ng-ời học giáo viên đà x-ơng sống kết nối hầu nh- toàn hoạt động nhà tr-ờng Chính lẽ toán xếp TKB trở thành vấn đề quan trọng vào bậc nhà tr-ờng Bài toán Lập lịch TKB có dạng nhỏ là: lập lịch TKB cho tr-ờng Trung học phổ thông lập lịch TKB cho tr-ờng Đại học Hiện lập lịch TKB cho tr-ờng trung học đà đ-ợc giải trở thành sản phẩm thực SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học ứng dụng thực tế Riêng toán lập lịch TKB cho tr-ờng Đại học tiếp tục đ-ợc nghiên cứu giải Ch-ơng I Tổng quan 1.1 Lý chọn đề tài Bài toán xếp TKB đà từ lâu trở thành toán tiếng thu hút đ-ợc quan tâm nhiều nhà nghiên cứu, nhiều chuyên gia lĩnh vực liên quan Sự tiếng toán không đ-ợc đo độ phức tạp vấn đề, mà tính thực tiễn, khả áp dụng cao thực tế Hiện Phòng đào tạo tr-ờng Đại học đảm nhiệm công việc lớn quản lý, theo dõi toàn ch-ơng trình đào tạo, TKB cho toàn lớp học thuộc phạm vi nhà tr-ờng quản lý Toàn công việc chủ yếu đ-ợc thực tay, phần mềm sử dụng hạn chế rời rạc Tiền thân tr-ờng Đại học s- phạm Vinh, tr-ờng Đại học Vinh đà có chặng đ-ờng gần 50 năm xây dựng tr-ởng thành Với chế đào tạo đa dạng công việc quản lý Phòng đào tạo thực phức tạp đồ sộ Nhiều thầy giáo, cô giáo hệ sinh viên tr-ớc đà tập trung tìm hiểu nhằm xây dựng phần mềm hỗ trợ công việc quản lý Nhiều mảng công việc đà đ-ợc phần mềm giúp đỡ thành công Bài toán tồn lớn ch-a giải đ-ợc xây dựng phần mềm xếp TKB Từ khoá 48 trở sau Tr-ờng Đại học Vinh áp dụng chế đào tạo tín Nh-ng không mà toán xếp TKB cho chế lớp học niên chế Nó tiếp tục thách thức tất thầy cô giáo, tất hệ sinh viên ng-ời yêu khoa học, đặc biệt khoa học máy tính ứng dụng Cũng giống nh- nhà khảo cổ học muốn đ-ợc tận tay sờ vào quan tài vị hoàng đế La Mà cổ đại, kiến trúc s- muốn khám phá công trình xây dựng kim tự tháp huyền bí, sinh viên khoa Công nghệ thông tin muốn dành phần đam mê tìm hiểu toán Lập lịch Thời khoá biểu Đại học SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Vì thử thách thú vị đà đ-a đến định chọn đề tài Lập lịch Thời khoá biểu Đại học làm Khoá luận tốt nghiệp Đại học cho 1.2 Lịch sử giải vấn đề Nh- đà giới thiệu toán TKB toán Nhiều nhà nghiên cứu đà vào họ đà giải đến mức độ định Tôi xin giới thiêu sơ qua thực trạng phần mềm TKB Việt Nam giới mà đà dày công tìm hiểu 1.2.1 Phần mềm TKB Việt Nam Năm 1986-1987, nhóm chuyên gia máy tính khoa Toán Học viện kĩ thuật quân đà bắt đầu nghiên cứu toán xếp TKB mô hình tr-ờng Đại học Mô hình đ-ợc thử nghiệm lúc tr-ờng Đại học Bách khoa Hà Nội Khi triển khai công trình này, toàn việc lập trình đ-ợc tiến hành FORTRAN chạy máy tính IBM lớn đặt Trung tâm máy tính quân đội thành phố Hồ Chí Minh Năm 1988, nhóm đà định chuyển việc lập trình sang máy tính cá nhân Tháng 8/1988, lần phần mềm hỗ trợ xếp TKB đà xếp thành công TKB cụ thể tr-ờng Đại học Bách khoa Hà Nội Thành công đà đ-ợc mời báo cáo hội nghị Toán học toàn quốc tổ chức Đại học Bách khoa Hà Nội tháng 12/1988 Năm 1989, phòng huấn luyện Học viện kĩ thuật quân đà giao cho nhóm cán thuộc khoa toán viết phần mềm hỗ trợ xếp TKB cho Học viện kĩ thuật quân Phần mềm đà hoàn thành tháng 8/1989 đà đ-ợc sử dụng tr-ờng Học viện kĩ thuật quân suốt 10 năm sau Năm 1991, nhóm tác giả công trình đà cho đời phiên phần mềm TKB 2.1 dùng cho nhà tr-ờng phổ thông Năm 1998, Công ty Công nghệ Tin học Nhà tr-ờng School@net đ-ợc thành lập đà quay trở lại phát triển phần mềm TKB dành cho tr-ờng phổ thông phiên th-ơng mại phần mềm TKB Việt Nam đời tháng 12/1999 Phần mềm TKB đà liên tục đ-ợc nâng cấp, thời 6.0 đà đ-ợc 1000 nhà tr-ờng phổ thông Việt Nam sử dụng Tháng 7/2006, công ty School@net công bố phiên TKB 6.0 hỗ trợ hoàn toàn mô hình phòng học môn đa cho tr-ờng phổ thông Việt Nam SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Năm 2002, công ty School@net định quay lại nghiên cứu phát triển phần mềm hỗ trợ xếp TKB cho tr-ờng Đại học, Cao đẳng Trung học chuyên nghiệp Phiên TKBU 1.0 đà hoàn thành bắt đầu triển khai thực tế Học viện kĩ thuật quân từ tháng 3/2004 Hiện công ty hoàn thiện phiên TKBU 2.0 ph-ơng án TKB tổng quát cho tr-ờng Đại học Cao đẳng Việt Nam Nh-ng thời gian hoàn thành mức độ khả thi dự án bỏ ngõ tr-ờng Đại học khác nhiều thầy cô giáo sinh viên đà vào tìm hiểu, nghiên cứu, tiến hành xây dựng thành sản phẩm nh-ng kết thu đ-ợc ch-a đạt yêu cầu tr-ờng Đại học Vinh quy trình xếp TKB lớp học niên chế hoàn toàn thực thủ công tay 1.2.2 Phần mềm TKB giới Một thực tế ngạc nhiên giới tồn không nhiều phần mềm hỗ trợ xếp TKB nh- nghĩ Khoảng năm 2000, số l-ợng phần mềm xếp TKB d-ới bàn tay Đến năm nay, số l-ợng phần mềm dạng tăng lên nh-ng không nhiều, khoảng 30 phần mềm Có lẽ toán xếp TKB đâu khó nh- không phân biƯt ViƯt Nam hay thÕ giíi Theo mét sè ngn tin từ mạng Internet, Mỹ, đất n-ớc có khoa học công nghệ phát triển thÕ giíi th× ng-êi ta vÉn xÕp TKB b»ng tay Có hai phần mềm tiếng giới: Phần mềm Mimosa địa http://www.mimosasofrware.com (Đan Mạch) Phần mềm dành cho tr-ờng Đại học, Cao đẳng theo quảng cáo đà đ-ợc sử dụng 49 quốc gia giới Phần mềm cho phép xếp TKB theo lớp tín hầu nh- áp dụng Việt Nam Có thể download miễn phí thu gọn phần mềm địa Phần mềm GP_UNTIS (Cộng hoà liên bang Đức) có địa http://www.grupet.at, phần mềm hỗ trợ xếp TKB chủ yếu cho tr-ờng phổ thông công ty Gruber&Petters phát triển Nhóm Gruber&Petters công bố phần mềm TKB số Châu Âu, đời lần năm 1970 Hiện SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học phần mềm đ-ợc dùng 15.000 tr-ờng phổ thông, trải rộng 60 quốc gia giới Một số đặc điểm chung phần mềm xếp TKB giới: Hầu hết mô hình tr-ờng Đại học giới mô hình lớp tín chỉ, Việt Nam mô hình chủ yếu lớp niên chế Các tiết học ngày đ-ợc xếp liên tục từ sáng đến tối không phân biệt buổi học kiểu Sáng-Chiều-Tối nh- Tất phần mềm TKB l-u trữ liệu d-ới dạng binary, phần mềm TKB nói chung, kể Việt Nam giới Tất phần mềm có chức cho phép hiển thị, kiểm tra liệu, xếp tiết, xếp tự động hình Các chức tạo công cụ tốt giúp ng-ời xếp TKB hoàn thiện công việc Chức chuyển liệu TKB sang HTML, chức mà hầu nh- tất phần mềm có Với tính đối t-ợng thụ h-ởng phần mềm (nh- học sinh, giáo viên) xem thông tin TKB từ xa qua mạng máy tính Một điều cần nhắc đến giới chuyên gia khẳng định công việc xếp TKB mang ý nghÜa chuyªn nghiƯp rÊt cao, thËm chÝ cã thĨ coi nghề Chỉ có ng-ời nghề hiểu rõ ý nghĩa khó khăn đặc thù công việc xếp TKB, cã nh÷ng ng-êi nghỊ míi cã nh÷ng “ t- duy” gióp cho viƯc xÕp TKB nhanh chãng vµ chÝnh xác 1.3 Phạm vi mục đích đề tài Qua tìm hiểu thấy đ-ợc để tạo sản phẩm xếp TKB Đại học đòi hỏi thời gian, công sức nghiên cứu lâu dài với khả trình độ cao Một phần mềm xếp TKB thành công không tạo kết chấp nhận đ-ợc mà phải đảm bảo t-ơng thích với phần mềm quản lý khác SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học nhà tr-ờng để tạo thành hệ thống vận hành hoàn chỉnh Với khả thời gian khiêm tốn, đề tài mang tính chất tìm hiểu, mô tả toán, đồng thời xây dựng ch-ơng trình chạy thử với phạm vi liệu vừa phải để minh hoạ cho lập luận sở thân, thể kết theo h-ớng giải cá nhân 1.4 Các b-ớc giải vấn đề Cũng nh- toán nào, để giải toán lập lịch tr-ớc hết cần xác định giả thiết hay liệu vào (input), xác định yêu cầu toán, đ-a kết toán (output) Những toán mang tính chất lí thuyết tuý yếu tố t-ơng đối t-ờng minh Việc xác định vấn đề cốt lõi toán Đối với toán Lập lịch TKB nói riêng toán lập lịch để giải vấn đề cụ thể thực tế nói chung, việc xác định yếu tố toán phải thông qua trình khảo sát, tìm hiểu cụ thể Tất liệu nh- yêu cầu toán thực tế dạng thô, đòi hỏi ng-ời giải phải mà hoá Việc làm nói chung t-ơng đối phức tạp Các b-ớc giải toán lập lịch TKB Đại học mà trình bày đ-ợc tổng hợp thành b-ớc sau đây: Xác định liệu vào toán Xác định ràng buộc xếp Xác định hàm mục tiêu Xây dựng thuật toán khả thi Lựa chọn ngôn ngữ tiến hành cài đặt Xuất kết kiểm tra 10 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học 3.1.4 Cách thiết kế cài đặt thuật toán Để mô tả đ-ợc cụ thể thuật toán tr-ớc hết xin đ-ợc nêu số mảng liệu quan trọng dùng ch-ơng trình Các mảng liệu ý nghÜa cđa nã: public static TLopNgayTiet[][][] ArLopNgayTiet; Víi class TlopNgayTiet nh- sau: class TLopNgayTiet { public int TTMon; public int TTPhong; public int TTGiaoVien; } Mảng dùng để l-u lại thông tin đà xếp lớp l tiết t ngày n Một vị trí mảng cần phải thể hiên đ-ợc thuộc tính là: mà giáo viên hay số thứ tự giáo viên, mà phòng hay số thứ tự phòng, mà môn hay số thứ tự môn môn mà lớp học public static int[] ArSoTietConLaiLop; Mảng ArSoTietConLaiLop có chØ sè ch¹y theo líp l-u l¹i tỉng sè tiÕt ch-a đ-ợc xếp lớp Việc l-u lại số tiết ch-a đ-ợc xếp lớp chủ yếu để kiểm tra xem khả có ph-ơng án TKB cho lớp đ-ợc không public static int[][] ArSoLopHoc; Mảng ArSoLopHoc chạy theo số ngày tiết ArSoLopHoc[n][t] l-u lại số lớp học ngày n tiết t Đó số mảng liệu quan trọng để l-u liệu xếp Chi tiết thuật toán xếp Thuật toán xếp lần l-ợt lớp Khi xÕp TKB cho mét líp míi l, nÕu l lín tổng số lớp có nghĩa đà xếp hết cho tất lớp, tức đà có ph-ơng án TKB Tiến hành kiểm tra ph-ơng án đó, hay đánh giá hàm mục tiêu Nếu ph-ơng án tốt l-u lại 38 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Tr-ờng hợp ng-ợc lại l ch-a lớn tổng số lớp tiến hành xếp TKB cho lớp Vị trí xếp tiết ngày thứ (tất nhiên vị trí xếp hc bá qua) Thđ tơc xÕp mét líp nh- sau: public static void XepLop(int l) { if (l==ArLopHoc.Length) XetPhuongAn(); else XepLopTiet(2,1,l); } Nh- cần xây dựng thủ tục XepLopTiet(int n, int t, int l) Thđ tơc nµy cã ý nghÜa xÕp tiÕt thø t ngµy n cđa líp l Tại vị trí cần kiểm tra khả có ph-ơng án TKB cho lớp l hay không Việc kiểm tra khả có ý nghĩa quan trọng để hạn chế b-ớc không dẫn tới kết Nếu khả lại có hai ph-ơng án để lựa chọn: xếp không xếp học tiết cho lớp Việc không xếp t-ơng đối đơn giản cần nhảy lên vị trí tiết Trong tr-ờng hợp xếp tr-ớc hết phải tìm môn học j ch-a xếp lớp đó, môn học đà xếp nh-ng số tiết đà xếp cho học phần bé số học trình học phần Việc tìm kiếm đảm bảo thực kế hoạch đào tạo Chúng ta phải kiểm tra môn học j có thoà mÃn ràng buộc cứng hay không Nếu nh- môn học đà đ-ợc xếp ngày tr-ớc đó, đà đ-ợc xếp tiết tr-ớc ngày hôm xếp vào vị trí Một tr-ờng hợp không thoả mÃn tiết học tiết tiết số học trình lại học phần j 39 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Hàm kiểm tra môn học đ-ợc viết nh- sau: public static bool KTMon(int n, int t, int l, int j) { if (ArLopHoc[l].MonHoc[j].SoHocTrinh == 0) return false; if (t > 2) if ((XepRoi[l][n][t-1]) && (LopNgayTiet[l][n][t-1].TTMon == j)) return false; if (n > 2) for (int i = 1; i < 5; i++) if ((XepRoi[l][n - 1][i]) && (LopNgayTiet[l][n 1][i].TTMon == j)) return false; if ((t == 4) && ((ArLopHoc[l].MonHoc[j].SoHocTrinh == 3)||(ArLopHoc[l].MonHoc[j].SoHocTrinh == 6))) return false; return true; } TiÕp theo m«n học đà đ-ợc thoà mÃn, cần tìm giáo viên đảm nhận dạy môn học Việc đảm bảo giáo viên dạy môn dạy đà đăng kí đ-ợc phân công Giáo viên phải đảm bảo ch-a đ-ợc xếp dạy vào tiết đồng thời môn học có giáo viên đảm nhận Ngoài phải xem xét số tiết dạy giáo viên có v-ợt qua ng-ỡng tối đa cho phép số tiết phải đảm nhận ngày tuần hay không Hàm kiểm tra tính thích hợp giáo viên đ-ợc viết nh- sau: public static bool KTGV(int n, int t, int l, int j, int gv, int md) { for (int i = 0; i < l; i++) if ((XepRoi[i][n][t]) && (LopNgayTiet[i][n][t].TTGiaoVien == gv)) return false; if (ArLopHoc[l].MonHoc[j].SoHocTrinh != ArGiaoVien[gv].MonDay[md].SoHocTrinh) { for (int i = 2; i < n; i++) for (int k = 1; k < 5; k++) if ((XepRoi[l][i][k]) && (LopNgayTiet[l][i][k].TTMon == j) && (LopNgayTiet[l][i][k].TTGiaoVien != gv)) return false; } return true; } T¹i vị trí tiết học có nhiều ph-ơng án cho môn học, giáo viên đảm nhận dạy môn học Khi đà lựa chọn đ-ợc môn học giáo viên thích 40 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học hợp xếp vào vị trí ViƯc lùa chän phßng häc chóng ta sÏ xÐt sau đà xếp đ-ợc yếu tố lớp, giáo viên, môn học vào TKB Với hàm kiểm tra tính thích hợp môn học giáo viên đ-ợc xây dựng nh- trên, thủ tục tìm ph-ơng án môn học, giáo viên cho tiết t lớp l đ-ợc viết nh- sau: public static void XepLopTiet(int n, int t, int l) { if (ArSoTietConLaiLop[l]=5)||(KTXT(n,t,l))) XepLopTiet(n+1,1,l); else { for (int j = 0; j < ArLopHoc[l].MonHoc.Length; j++) { if (KTMon(n, t, l, j)) { for (int gv = 0; gv < ArGiaoVien.Length; gv++) for (int md = 0; md < ArGiaoVien[gv].MonDay.Length; md++) if (ArLopHoc[l].MonHoc[j].MaMon==ArGiaoVien[gv].MonDay[md].MaMon) if (KTGV(n, t, l, j, gv, md)) { SapXep(n, t, l, j, gv, md); } } } } KX(n,t,l); } } Khi đà kiểm tra tính thích hợp đối t-ợng ta tiến hành gán b-ớc lựa chọn vào mảng trung gian đà giới thiệu Ta thÊy r»ng, viƯc lùa chän cho tiÕt hiƯn t¹i cịng quy định cho tiết tuỳ vào số học trình, số học trình lại ch-a xếp môn Dẫn đến việc l-u lại ph-ơng án cho tiết kéo theo việc l-u lại ph-ơng án cho tiết Khi đà xếp vị trí kiĨm tra xem ®· xÕp xong TKB cho líp ®ã hay ch-a Nếu đà xếp xong gọi đệ quy ®Ĩ xÕp líp tiÕp theo NÕu ch-a xÕp xong th× gọi đệ quy nh-ng để xếp tiết ch-a xếp cho lớp Đồng thời phải trả trạng thái lúc ch-a xếp để xét cho ph-ơng án môn học giáo viên khác Việc xây dựng thủ tục SapXep phải đảm bảo cho tất tr-ờng hợp theo số học trình lại môn học đà lựa chọn, 41 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học tr-ờng hợp phải đảm bảo gọi đệ quy cho b-ớc trả trạng thái lúc ch-a xếp nh- đà phân tích Bây xét tr-ờng hợp cụ thể để xây dựng ch-ơng trình thoà mÃn ràng buộc đà nêu Tr-ờng hơp 1: Số học trình lại môn Khi số học trình lại xếp môn học phải xếp vào tiết liên tục Tức có nghĩa lựa chọn lựa chọn đồng thời cho tiết Có thể yên tâm tiết tiết tiết để làm cho việc gán tiết đồng thời không thoà mÃn ràng buộc Tr-ớc gọi đệ quy xử lý tr-ờng hợp Đoạn code xét cho tr-ờng hợp nh- sau: if (ArLopHoc[l].MonHoc[j].SoHocTrinh == 2) { LopNgayTiet[l][n][t].TTMon = j; LopNgayTiet[l][n][t + 1].TTMon = j; LopNgayTiet[l][n][t].TTGiaoVien = gv; LopNgayTiet[l][n][t+1].TTGiaoVien = gv; XepRoi[l][n][t] = true; XepRoi[l][n][t+1] = true; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArLopHoc[l].MonHoc[j].SoHocTrinh = 0; if (ArSoTietConLaiLop[l] == 0) XepLop(l + 1); else XepLopTiet(n, t + 2, l); XepRoi[l][n][t] = false; XepRoi[l][n][t + 1] = false; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArLopHoc[l].MonHoc[j].SoHocTrinh = 2; } Tr-êng hơp 2: Số học trình lại môn Khi số học trình lại xếp môn học phải xếp vào tiết liên tục Tức có nghĩa lựa chọn lựa chọn đồng thời cho tiết Cũng nh- tr-ờng hợp số tiết lại tiết đà đ-ợc kiểm tra đảm bảo tiết 4, 5, hay 10 Đoạn code xét cho tr-ờng hợp nh- sau: if (ArLopHoc[l].MonHoc[j].SoHocTrinh == 3) { LopNgayTiet[l][n][t].TTMon = j; LopNgayTiet[l][n][t + 1].TTMon = j; LopNgayTiet[l][n][t + 2].TTMon = j; 42 SVTH: Ngun Thanh Tu©n GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học LopNgayTiet[l][n][t].TTGiaoVien = gv; LopNgayTiet[l][n][t + 1].TTGiaoVien = gv; LopNgayTiet[l][n][t + 2].TTGiaoVien = gv; XepRoi[l][n][t] = true; XepRoi[l][n][t + 1] = true; XepRoi[l][n][t + 2] = true; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArLopHoc[l].MonHoc[j].SoHocTrinh = 0; if (ArSoTietConLaiLop[l] == 0) XepLop(l + 1); else XepLopTiet(n, t + 3, l); XepRoi[l][n][t] = false; XepRoi[l][n][t + 1] = false; XepRoi[l][n][t + 2] = false; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArLopHoc[l].MonHoc[j].SoHocTrinh = 3; } Tr-ờng hơp 3: Số học trình lại môn Theo ràng buộc đà liệt kê ban đầu, tr-ờng hợp phải chia học phần thành buổi học, buổi học tiết liên tục Do số học trình lại xếp môn học phải xếp tiết đồng thời, số học trình lại sau xếp Và điều chắn, sau xếp nh- việc kiĨm tra xem ®· xÕp xong TKB cho líp ®ã hay ch-a không cần thiết học phần ch-a xếp học hết tiết theo số học trình quy định Đoạn code xét cho tr-ờng hợp nh- sau: if (ArLopHoc[l].MonHoc[j].SoHocTrinh == 4) { LopNgayTiet[l][n][t].TTMon = j; LopNgayTiet[l][n][t + 1].TTMon = j; LopNgayTiet[l][n][t].TTGiaoVien = gv; LopNgayTiet[l][n][t + 1].TTGiaoVien = gv; XepRoi[l][n][t] = true; XepRoi[l][n][t + 1] = true; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArLopHoc[l].MonHoc[j].SoHocTrinh = 2; XepLopTiet(n, t + 2, l); XepRoi[l][n][t] = false; XepRoi[l][n][t + 1] = false; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArLopHoc[l].MonHoc[j].SoHocTrinh = 4; } 43 SVTH: NguyÔn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Tr-ờng hơp 4: Số học trình lại môn Đây tr-ờng hợp phức tạp Trong tr-ờng hợp lại có hai khả xảy Tr-ớc hết tiết tiết tiết bắt buộc xếp đồng thời cho tiết, số học trình lại Còn tiết tiết tiết xếp đồng thời cho tiết, xếp đồng thời cho tiết, số học trình lại t-ơng ứng Tr-ờng hợp tiết là 10 đà đ-ợc loại trừ tr-ớc Và nhtr-ờng hợp Số học trình lại tiết 4, sau xếp nh- việc kiểm tra xem đà xếp xong TKB cho lớp hay ch-a không cần thiết học phần ch-a xếp học hết tiết theo số học trình quy định Đoạn code xét cho tr-ờng hợp nh- sau: if (ArLopHoc[l].MonHoc[j].SoHocTrinh == 5) { if (t == 4) { LopNgayTiet[l][n][t].TTMon = j; LopNgayTiet[l][n][t + 1].TTMon = j; LopNgayTiet[l][n][t].TTGiaoVien = gv; LopNgayTiet[l][n][t + 1].TTGiaoVien = gv; XepRoi[l][n][t] = true; XepRoi[l][n][t + 1] = true; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArLopHoc[l].MonHoc[j].SoHocTrinh = 3; XepLopTiet(n, t + 2, l); XepRoi[l][n][t] = false; XepRoi[l][n][t + 1] = false; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArLopHoc[l].MonHoc[j].SoHocTrinh = 5; } else { { LopNgayTiet[l][n][t].TTMon = j; LopNgayTiet[l][n][t + 1].TTMon = j; LopNgayTiet[l][n][t].TTGiaoVien = gv; LopNgayTiet[l][n][t + 1].TTGiaoVien = gv; XepRoi[l][n][t] = true; XepRoi[l][n][t + 1] = true; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArLopHoc[l].MonHoc[j].SoHocTrinh = 3; XepLopTiet(n, t + 2, l); XepRoi[l][n][t] = false; XepRoi[l][n][t + 1] = false; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; 44 SVTH: Ngun Thanh Tu©n GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học ArLopHoc[l].MonHoc[j].SoHocTrinh = 5; } { LopNgayTiet[l][n][t].TTMon = j; LopNgayTiet[l][n][t + 1].TTMon = j; LopNgayTiet[l][n][t + 2].TTMon = j; LopNgayTiet[l][n][t].TTGiaoVien = gv; LopNgayTiet[l][n][t + 1].TTGiaoVien = gv; LopNgayTiet[l][n][t + 2].TTGiaoVien = gv; XepRoi[l][n][t] = true; XepRoi[l][n][t + 1] = true; XepRoi[l][n][t + 2] = true; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArLopHoc[l].MonHoc[j].SoHocTrinh = 2; XepLopTiet(n, t + 3, l); XepRoi[l][n][t] = false; XepRoi[l][n][t + 1] = false; XepRoi[l][n][t + 2] = false; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArLopHoc[l].MonHoc[j].SoHocTrinh = 5; } } } Tr-êng h¬p 5: Sè häc trình lại môn Tr-ờng hợp giống với tr-ờng hợp số học trình lại môn đó Chỉ khác xếp đồng thời cho tiết, số học trình lại học phần Đoạn code cho tr-ờng hợp này: if (ArLopHoc[l].MonHoc[j].SoHocTrinh == 6) { LopNgayTiet[l][n][t].TTMon = j; LopNgayTiet[l][n][t + 1].TTMon = j; LopNgayTiet[l][n][t + 2].TTMon = j; LopNgayTiet[l][n][t].TTGiaoVien = gv; LopNgayTiet[l][n][t + 1].TTGiaoVien = gv; LopNgayTiet[l][n][t + 2].TTGiaoVien = gv; XepRoi[l][n][t] = true; XepRoi[l][n][t + 1] = true; XepRoi[l][n][t + 2] = true; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArSoTietConLaiLop[l] ; ArLopHoc[l].MonHoc[j].SoHocTrinh = 3; XepLopTiet(n, t + 3, l); XepRoi[l][n][t] = false; XepRoi[l][n][t + 1] = false; XepRoi[l][n][t + 2] = false; 45 SVTH: NguyÔn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArSoTietConLaiLop[l]++; ArLopHoc[l].MonHoc[j].SoHocTrinh = 6; } Trên xây dựng quan trọng cho lập luận lí thuyết Ngoài số thiết kế hay xử lý khác ch-ơng trình chạy đ-ợc với ràng buộc ban đầu 3.2 Kết Với nội dung nghiên cứu nh- kết đà đạt đ-ợc đề tài là: ã Đề tài đà mô tả đ-ợc sơ l-ợc toán TKB: đối t-ợng liên quan, ràng buộc xếp ã Trình bày đ-ợc nguyên tắc, cách xây dựng hàm mục tiêu ã Tiến hành thiết kế, cài đặt ch-ơng trình chạy với liệu vừa phải để minh hoạ cho phân tích, thuật toán trình bày Ch-ơng trình đà cho kết TKB thoà mÃn điều kiện ràng buộc xếp ban đầu Sau số giao diện kết TKB đà xếp đ-ợc thay cho ph©n tÝch b»ng lêi 46 SVTH: Ngun Thanh Tu©n GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Kết TKB cho tất lớp 47 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học TKB học cho lớp riêng biệt Lịch dạy cho giáo viên 48 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Kết luận Kết luận chung toán xếp TKB Bài toán xếp TKB toán lớn, đà thách thức tất nhà lập trình Trong năm gần đà có nhiều công trình nghiên cứu toán Song kết đạt đ-ợc hạn chế Bài toán xếp TKB có đặc điểm chủ yếu sau đây: - Việc mô hình hoá toán khó khăn không thống - Dữ liệu vào toán lớn - Các ràng buộc xếp nhiều - Việc phân tách ràng buộc cứng ràng buộc mềm mang tính chất t-ơng đối tuỳ vào yêu cầu phòng đào tạo - Hàm mục tiêu để đánh giá tính tối -u ph-ơng án TKB mặt lý thuyết xây dựng đ-ợc, nh-ng thực tế để xây dựng đ-ợc hàm mục tiêu cồng kềnh khó đánh giá tính khách quan - Mặc dù không đánh giá khắt khe thời gian xếp nh-ng rõ ràng thực toán tổng quát cần thuật toán thực mạnh Những đóng góp đề tài Với tính chất khoá luận tốt nghiệp, đồng thời với khả thân kết đạt đ-ợc đề tài khiêm tốn Cã thĨ chØ mét sè ®ãng gãp chđ u sau đây: - Đề tài đà giới thiệu mô tả sơ l-ợc toán xếp TKB Đại học - Trình bày đ-ợc đối t-ợng liên quan, ràng buộc xếp - Mô tả đ-ợc cách xây dựng hàm mục tiêu - Thiết kế cài đặt thuật toán giải đ-ợc phạm vi liệu nhỏ cho kết TKB minh họa - Đề tài làm tài liệu tham khảo cho muốn tiếp cận toán xếp TKB thời gian ngắn 49 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Hạn chế đề tài Để phân tích hạn chế đề tài xét hai mặt: Về mặt xây dựng sở lý thuyết cho toán: - Cũng giống nh- công trình nghiên cứu tr-ớc hạn chế lớn đề tài mặt không mô tả đ-ợc toán d-ới dạng toán quy hoạch tuyến tính - Chỉ liệt kê đ-ợc số ràng buộc xếp - Đ-a đ-ợc cách xây dựng hàm mục tiêu nh-ng ví dụ minh hoạ tuần tuý mặt lý thuyết Để xác định hệ số hàm hàm mục tiêu lại phải dựa vào đánh giá độ -u tiên tiêu chí đ-ợc coi nh- ràng buộc mềm - Ch-a hoàn thiện việc liệt kê đối t-ợng liệu liên quan đến toán VÝ dơ nh-: viƯc ghÐp líp, t¸ch líp, mét sè thuộc tính thứ yếu giáo viên ảnh h-ởng đến số tiết dạy tuần - Ch-a tìm cách mà hoá liệu hợp lý Về mặt xây dựng ch-ơng trình: - ý nghĩa ch-ơng trình mang tính minh hoạ - Phạm vi liệu để ch-ơng trình thực đ-ợc nhỏ so với liệu toán thực tế - Việc mà hoá liệu ch-a thống với phần mềm quản lý sử dụng - Kết TKB mà ch-ơng trình đ-a đ-ợc thoà mÃn đ-ợc số ràng buộc đà liệt kê phần giới thiệu tr-ớc - Ch-ơng trình ch-a quan tâm đến việc thiết kế giao diện Định h-ớng phát triển đề tài Đề tài để phát triển đ-ợc cần phải có tìm hiểu sâu rộng thực tế xếp TKB Đại học Liệt kê danh mục ràng buộc cứng ràng buộc mềm với số l-ợng đủ lớn Tìm hiểu phần mềm quản lý sử dụng, 50 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học phần mềm xếp TKB tr-ờng Đại học khác để hợp lý hoá thống hoá việc mà hoá CSDL Đồng thời phát triển thuật toán đà có thay thuật toán khác khả thi nhằm giải đ-ợc phạm vi liệu toán lớn, tiến tới giải phạm vi liệu toán thực tế Thiết kế đ-ợc giao diện sản phẩm đủ đáp ứng yêu cầu phần mềm th-ơng mại: Chức xem, truy vấn TKB theo nhiều khuôn dạng khác hình Các TKB phải đ-ợc thể đẹp, rõ ràng, sáng sủa, dễ hiểu Việc thể thông tin TKB phải thời gian tức thời Không đ-ợc có thời gian trễ lín truy nhËp th«ng tin TKB Cã nhiỊu chức điều chỉnh, tinh chỉnh liệu TKB Hay nói cách khác cần kiến tạo công cụ mô pháng t- s¾p xÕp TKB b»ng tay Cã chức bảo mật liệu TKB Cũng phần này, xin nêu số nhận xét mang tính cá nhân tham khảo để định h-ớng giải toán tốt - Việc xếp phòng tách rời đà xếp xong yếu tố khác - Từ số liệu tổng thể tìm cách kiểm tra xem có ph-ơng án TKB hay không để xây dựng tập ràng buộc hợp lý cho toán thực tế - Có số lớp, hay phòng có vai trò bình đẳng Việc giả thiết -u tiên đ-ợc thực nhằm không xét lại tr-ờng hợp t-ơng tự - Việc xếp TKB sáng chiều hoàn toàn giống Do hay không chia đôi đ-ợc tất liệu Nếu điều không tính tổng quát có ý nghĩa lớn Phạm vi liệu giảm nửa nh-ng độ phức tạp tính toán toán giảm vô nhiều - Với số l-ợng liệu lớn vòng đệ quy sâu Nh-ng số l-ợng ràng buộc lớn lên số ph-ơng án b-ớc xếp giảm đi, đồng thời số ph-ơng án kết giảm Tức việc đ-a vào nhiều ràng buộc thuận lợi nhằm hạn chế khả bùng nổ tổ hợp 51 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Tài liệu tham khảo [1] Nguyễn Đức Nghĩa Nguyễn Tô Thành, Toán rời rạc, Nhà xuất Đại học quốc gia Hà Nội, 2003 [2] Quách Tuấn Ngọc, Ngôn ngữ lập trình C, Nhà xuất Thống kê, 2003 [3] Nguyễn Thanh Thuỷ_ Tạ Tuấn Anh, Lập trình HĐT với C++, Nhà xuất KH, 2002 Địa Website tham khảo: http://www.cntt.vn http://www.vinhuni.edu.vn http://www.vnschool.net 52 SVTH: Nguyễn Thanh Tuân GVHD: Hoàng H÷u ViƯt ... toán Lập lịch Thời khoá biểu Đại học SVTH: Nguyễn Thanh Tuân GVHD: Hoàng Hữu Việt Khoá luận tốt nghiệp Bài toán xếp TKB Đại học Vì thử thách thú vị đà đ-a đến định chọn đề tài Lập lịch Thời khoá. .. bậc nhà tr-ờng Bài toán Lập lịch TKB có dạng nhỏ là: lập lịch TKB cho tr-ờng Trung học phổ thông lập lịch TKB cho tr-ờng Đại học Hiện lập lịch TKB cho tr-ờng trung học đà đ-ợc giải trở thành... Tất lớp học phải học đủ số học phần, đủ số học trình học phần theo quy định Tất nhiên không đ-ợc học thừa Các giáo viên dạy chuyên ngành, môn dạy đà đăng kí Phòng học phải yêu cầu môn học, thích