- 54 - ỨNG DỤNGFRAMEWORKVÀLẬPTRÌNHRÀNGBUỘCCHOBÀITOÁN LẬP THỜIKHÓABIỂU Đỗ Huy Thịnh Người hướng dẫn: PGS.TS. Nguyễn Văn Vỵ MSV: 0220310 Email: dhthinh0350@yahoo.com 1. Mở đầu Bàitoán lập thờikhóabiểu từ lâu luôn thu hút được sự quan tâm của nhiều tổ chức giáo dục và các nhà nghiên cứu bởi tính ứng dụng cao và độ phức tạp. Các bàitoánlậpthờikhóabiểu rất phong phú và đa dạng bởi các ràngbuộcvà yêu cầu của từng tổ chức. Bàitoán đặc trưng bởi các ràngbuộcvà các ràngbuộc có thể được thêm vào với nhiều mức khác nhau. Rất nhiều chương trình đã được lậpvà đưa vào sử dụng. Phần lớn các chương trình đó được phát triển dựa trên cơ sở một mô hình toán học chặt chẽ và thuật toán xây dựng là dành riêng cho mô hình đó. Vì vậy khi áp dụng, nó chỉ thích hợp với một phạm vi hẹp mà ở đó bàitoán đặt ra đúng với mô hình đã xây dựng. Ngay trong phạm vi đó, khi xuất hiện thêm một vài ràngbuộc mới thì kết quả đã không hiệu quả, thậm chí không cho lời giải. Một vấn đề đặt ra là, cần phát triển một hệ thống thờikhóabiểu có thể thích nghi được với nhiều lớp bàitoán lập thờikhóabiểu khác nhau về ràngbuộc với sự cải biên sửa đổi không nhiều và tiến hành là dễ dàng nhanh chóng. Chỉ có một hệ thống như vậy mới thực sự đáp ứng được yêu cầu thực tế cao và hiệu quả. Khóa luận hướng đến giải quyết bàitoán này dựa trên hai cơ sở sau: Tìm một thuật toán kiểu heuristic đủ đơn giản để giải bài toán. Do đó dễ cải tiến mỗi khi thêm ràngbuộc Sử dụng hai công nghệ tiên tiến là Frameworkvàlậptrìnhràng buộc. Vì lớp bàitoánthờikhóabiểu có phần lõi chung, nên Framework trợ giúp thiết kế xây dựng ứng dụngcho lớp này dễ dàng thay đổi ràngbuộc bổ sung. Còn lậptrìnhràngbuộc trợ giúp việc lậptrình có ràngbuộc tiện lợi, nhanh chóng. 2. Bài toánlậpthờikhóabiểuBàitoán xếp thờikhóabiểu là một trường hợp riêng của bàitoánlập lịch trong đó đưa ra một chuỗi các sự kiện (thông thường là các môn học, bài giảng, môn thi) và bao gồm các giáo viên và học viên trong một khoảng thời gian định trước và thoả mãn một tập hợp các ràngbuộc của từng loại thờikhoábiểu khác nhau. Các ràngbuộc bao gồm khả năng học tập của học viên và khả năng giảng dạy của giáo viên, số lượng và sức chứa của phòng học, hạn định về thời gian và yêu cầu đáp ứng của các sự kiện. Bàitoán xếp Thờikhóabiểu có thể phân loại theo loại khuôn dạng thời gian Thờikhóa biểu: thờikhóabiểu TUẦN, HỌC KỲ, nhiều TUẦN / HỌC KỲ, THÁNG, NĂM HỌC…. Hoặc phân loại theo đơn vị xếp Thờikhóabiểu theo mô hình lớp học niên chế nay lớp học tìn chỉ. Trong khóa luận này chỉ xét bàitoánlậpthờikhoábiểucho trường đại học ở Việt Nam mà cụ thể là trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội ( có thể tổng quát cho các trường vẫn giảng dạy theo hệ lớp- môn- giáo viên giảng dạy). Bàitoán được phát biểu như sau: Có một danh sách các lớp học học trong học kỳ, danh sách các môn học tương ứng cho từng lớp học và danh sách giảng viên tương ứng với mỗi môn cho từng lớp. Giảng đường cho mỗi lớp đã được xếp trước. Một lời giải hay một thờikhoábiểu chấp nhận được là tất cả các môn học được chia vào các tiết học trong một tuần thoả mãn điều kiện là một số ràngbuộc chặt ( tại một thời điểm một lớp chỉ học một môn và một giáo viên chỉ dạy tối đa một lớp….) và một số ràngbuộc mở rộng ( số buổi đến trường của giáo viên càng ít càng tốt, ngày nghỉ của lớp, giáo viên, số tiết chờ giảng trong ngày của giáo viên…). 3. Ngôn ngữ ràngbuộc đối tượng OCL ( Object Constraint Language) là ngôn ngữ xây dựng mô hình phần mềm, được định nghĩa như một chuẩn thêm vào UML - 55 - cho phân tích và thiết kế hướng đối tượng. Các biểu thức viết trong OCL phụ thuộc vào các kiểu ( lớp, giao diện,…) được định nghĩa trong các biểu đồ UML. Các biểu thức viết trong OCL thêm các thông tin quan trọng cho các mô hình hướng đối tượng. Các thông tin này thường không thể biểu diễn trong biểu đồ. Trong UML phiên bản 1.1 các thông tin này được giới hạn bởi các ràng buộc, mỗi ràngbuộc được định nghĩa như một hạn chế về giá trị nhận được ( một hay nhiều) của một hệ thống hay mô hình hướng đối tượng. Trong UML phiên bản 2, một mô hình có thể chứa nhiều thông tin thêm hơn là chỉ có ràng buộc. Các công việc như: định nghĩa truy vấn, các giá trị tham chiếu, các quy tắc nghiệp vụ hay các điều kiện trạng thái được viết bằng các biểu thức trong một mô hình. OCL là ngôn ngữ chuẩn trong đó các biểu thức được viết một cách rõ ràngvà dễ hiểu. OCL là ngôn ngữ khai báo, định nghĩa kiểu, là ngôn ngữ biểu diễn cả truy vấn vàràng buộc, dựa trên cơ sở toán học nhưng không có các ký hiệu toán học. OCL thêm các thông tin làm mô hình UML nhất quán, hoàn thiện và rõ ràng. 4. Giới thiệu khung làm việc Trong những năm gần đây, sự cần thiết của sử dụng lại phần mềm ngày càng trở nên quan trọng. Hướng đối tượng làm tăng khả năng sử dụng mã bằng cách cung cấp thừa kế và các giao diện chuẩn. Các thư viện lớp cung cấp các thành phần xây dựng sẵn có thể dùng lại được, nhưng việc sử dụng các thư viện lớp chủ yếu dẫn đến dùng lại mã nguồn và chỉ một ít là dùng lại phân tích thiết kế. Để tăng khả năng sử dụng lại của phân tích thiết kế, các khung làm việc hướng đối tượng ra đời. Một khung làm việc hướng đối tượng là một tập các lớp cộng tác tạo thành một thiết kế có thể dùng lại được cho một lớp cụ thể phần mềm. Khung làm việc quyết định kiến trúc của các ứng dụngdùng nó bằng cách chia thiết kế thành các lớp trìu tượng và định nghĩa các trách nhiệm, cộng tác và luồng điều khiển giữa các lớp. Phát triển khung làm việc nhấn mạnh tới dùng lại thiết kế hơn là dùng lại mã nguồn. Các kỹ thuật hướng đối tượng như thừa kế, đa hình cho phép xây dựng các khung làm việc có thể thực thi bằng cách chia nhỏ nó thành các lớp, cắm thêm các thành phần mới, và thể hiện các lớp qua các ngôn ngữ được xây dựng. 4. Xây dựng hệ thống chobàitoán lập Thờikhóabiểu học kỳ Sau khi mô hình hóa, phân tích, thiết kế và cài đặt hệ thống với một số bộ dữ liệu của trườn ĐHCN cho kết quả khá tốt: thời gian chạy khá nhanh ( bộ dữ liệu 20 lớp thời gian xếp <=1s) so với các chuơng trìnhdùng thuật toán vét cạn hay mô phỏng tự nhiên, kết quả về lịch dạy của các giáo viên dạy nhiều trong tuần là khá tối ư u. 5. Kết luận Khóa luận vận dụng các công nghệ PTTK hướng đối tượng vàlậptrìnhràngbuộc xây dựng một hệ thống xếp thờikhóabiểuvà thử nghiệm với việc thay đổi ràngbuộc rất khả quan. Tốc độ giải nhanh, việc đưa ràngbuộc vào đơn giản. Tuy nhiên do thời gian ngắn, việc thử nghiệm trên các ví dụ thực chưa nhiều. Việc thay đổi các ràngbuộc chưa đủ mức khác biệt, mặc dù thiết kế hệ thống đủ tốt, nhưng chưa đạt đến một framework như mong muốn. Hướng phát triển đề tài tiếp tục nghiên cứu nâng cấp chương trình thành một framework hoàn thiện để mở rộng phạm vi ứng dụng. Tài liệu tham khảo - Tài liệu tham khảo tiếng Việt [1] Nguyễn Việt Hùng, Nguyễn Văn Tuân - Xây dựngthờikhóabiểu bằng cách kết hợp phương pháp Heuristics và tương tác người máy - Khóa luận tốt nghiệp đại học 2005, Đại học Công nghệ - ĐHQGHN. [2] Vũ Văn Thạch - Ứng dụng khung làm việc chobàitoánlập lịch - Khóa luận tốt nghiệp đại học 2005, Đại học Công nghệ - ĐHQGHN [3] PGS.TS. Nguyễn Văn Vỵ - Bài gi ảng Phân tích thiết kế hệ thống phần mềm theo hướng đối tượng - Bộ môn Công nghệ phần mềm, Đại học Công nghệ - ĐHQGHN, Hà Nội, 2004. 109 tr. - Tài liệu tham khảo tiếng Anh [4] Michael Boggs, Wendy Boggs - Mastering UML With Rational Rose 2002 - Sybex. [5] Desmond Francis D’Souza, Alan Cameron Wills - Objects, Components, and Frameworks with UML - Addison Wesley, 1999. [6] Anneke Kleppe, Jos Warmer - Object Constraint Languate, The: Getting Your Models Ready for MDA, Second Edition - Addision Wesley, 2003. . Các bài toán lập thời khóa biểu rất phong phú và đa dạng bởi các ràng buộc và yêu cầu của từng tổ chức. Bài toán đặc trưng bởi các ràng buộc và các ràng buộc. giải bài toán. Do đó dễ cải tiến mỗi khi thêm ràng buộc Sử dụng hai công nghệ tiên tiến là Framework và lập trình ràng buộc. Vì lớp bài toán thời khóa biểu