ỨNG DỤNG NGÔN NGỮ lập TRÌNH RÀNG BUỘC COMET vào bài TOÁN lập THỜI KHÓA BIỂU

43 4 0
ỨNG DỤNG NGÔN NGỮ lập TRÌNH RÀNG BUỘC COMET vào bài TOÁN lập THỜI KHÓA BIỂU

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thị Thùy ỨNG DỤNG NGƠN NGỮ LẬP TRÌNH RÀNG BUỘC COMET VÀO BÀI TỐN LẬP THỜI KHĨA BIỂU KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công nghệ thông tin Hà Nội – 2010 i LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thị Thùy ỨNG DỤNG NGƠN NGỮ LẬP TRÌNH RÀNG BUỘC COMET VÀO BÀI TỐN LẬP THỜI KHĨA BIỂU KHĨA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Cơng nghệ thơng tin Cán hƣớng dẫn: Th.S Lê Hồng Hải Hà Nội - 2010 ii LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com LỜI CẢM ƠN Trước hết, em xin chân thành cảm ơn đến quý thày cô trường Đại học Cơng Nghệ tận tình dạy bảo em suốt thời gian học tập trường Em xin gửi lời biết ơn sâu sắc đến Thạc sĩ Lê Hồng Hải dành nhiều thời gian tâm huyết hướng dẫn nghiên cứu, giúp em hồn thành khóa luận tốt nghiệp Em xin chân thành cảm ơn Ban Giám hiệu trường Đại học Cơng nghệ q thày Khoa công nghệ thông tin tạo điều kiện để em học tập hồn thành tốt khóa học Trong khóa luận khơng thể tránh khỏi thiếu sót Em mong nhận được đóng góp q báu thày bạn để khóa luận hoàn thiện Hà Nội, tháng năm 2010 Sinh viên Nguyễn Thị Thùy LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com TĨM TẮT KHĨA LUẬN Lập Thời khóa biểu công việc cần thiết quan trọng mà tất tổ chức giáo dục phải thực nhằm đƣa biểu đồ kế hoạch năm học, lịch giảng dạy học tập cho giáo viên, học sinh Trƣớc đây, CNTT chƣa đƣợc phát triển mạnh mẽ ứng dụng rộng rãi cơng việc thƣờng đƣợc thực cách thủ công giấy, tiêu tốn nhiều chi phí, thời gian cơng sức Bài tốn lập Thời khóa biểu tronng trƣờng học một trƣờng hợp riêng toán lập lịch đƣợc xếp vào hàng tốn khó chƣa có giải thuật tối ƣu Có nhiều thuật tốn, phƣơng pháp tiếp cận khác đƣợc nhà khoa học giới đƣa nhằm giải toán Song, phƣơng pháp tiếp cận đƣợc cho giải pháp tối ƣu cho tốn lập lịch ứng dụng ngơn ngữ lập trình ràng buộc vào giải tốn tổ hợp Với mục tiêu xây dựng chƣơng trình lập thời khóa biểu hoạt động hiệu quả, khóa luận xin trình bày ngơn ngữ lập trình ràng buộc Comet ứng dụng Comet để giải toán lập thời khóa biểu Comet ngơn ngữ lập trình ràng buộc đƣợc phát triển ứng dụng Đây ngơn ngữ lập trình điển hình cho việc giải toán tổ hợp nhƣ lập lịch, lập kế hoạch … Đây ngôn ngữ lập trình hƣớng đối tƣợng, dễ sử dụng cấu trúc câu lệnh tƣơng đối giống với ngôn ngữ lập trình C++ LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com MỤC LỤC LỜI CẢM ƠN TÓM TẮT KHÓA LUẬN MỤC LỤC BẢNG CÁC KÝ HIỆU VIẾT TẮT BẢNG CÁC THUẬT NGỮ CHUYÊN NGÀNH DANH SÁCH CÁC HÌNH VẼ ĐƢỢC SỬ DỤNG CHƢƠNG 1: MỞ ĐẦU 1.1 Ý nghĩa ứng dụng Comet vào giải vấ đề tối ƣu hóa tổ hợp 1.2 Cấu trúc khóa luận .10 CHƢƠNG 2: LẬP TRÌNH RÀNG BUỘC 11 2.1 Lập trình ràng buộc gì? 11 2.2 Nguồn gốc lập trình ràng buộc 11 2.3 Mơ hình lập trình ràng buộc 12 2.4 Ứng dụng ngơn ngữ lập trình ràng buộc (CP) 14 CHƢƠNG 3: NGƠN NGỮ LẬP TRÌNH COMET 16 3.1 COMET gì? 16 3.2 Lập trình Comet 17 3.2.1 Mơ hình lập trình Comet 17 3.2.2 Ví dụ 20 3.3 Ƣu điểm Comet 23 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com CHƢƠNG 4: ỨNG DỤNG COMET VÀO BÀI TỐN LẬP THỜI KHĨA BIỂU 26 4.1 Đặt vấn đề xây dựng toán .26 4.2 Giải toán .28 4.3 Thực nghiệm 30 4.3.1 Các chức quản lý giảng viên, mơn học, phịng học, khoa 31 4.3.2 Chức phân công giảng dạy 36 4.3.3 Chức xếp Thời khóa biểu .37 4.3.4 Chức xem thời khóa biểu theo tên lớp, tên giảng viên, tên phòng học 38 CHƢƠNG 5: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN .40 TÀI LIỆU THAM KHẢO 41 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com BẢNG CÁC KÝ HIỆU VIẾT TẮT Ký hiệu Từ viết tắt ACM Association for Computing Achinery AI Artificial Intelligence API Application Programming Interface CHIP Constraint Handling In Prolog CLP Constraint Logic Programming CBLS Constraint-Based Local Search CP Constraint Programming LP Logic Programming BẢNG CÁC THUẬT NGỮ CHUYÊN NGÀNH Các thuật ngữ Ý nghĩa Artificial Intelligence Trí tuệ nhân tạo Application Programming Interface Giao diện lập trình ứng dụng Constraint Programming Lập trình ràng buộc Logic Programming Lập trình logic Search Tìm kiếm Search Tree Cây tìm kiếm LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com DANH SÁCH HÌNH ẢNH ĐƢỢC SỬ DỤNG Hình 1-1 Bài toán 4-Hậu Hình 1-2 Một nhánh tìm kiếm tốn 4-Hậu Hình 2-1 Mơ hình CP 12 Hình 2-2 Ứng dụng CP vào phân tích chuỗi protein 15 Hình 3-1 Thành phần tìm kiếm Comet 19 Hình 3-2 Code toán 16-Hậu Comet 20 Hình 3-3 Kết tốn 16-Hậu Comet 22 Hình 3-4 Kết trực quan tốn 16-Hậu visualization 24 Hình 4-1 Mơ hình chƣơng trình 30 Hình 4-2 Quản lý giảng viên 31 Hình 4-3 Quản lý phòng học 32 Hình 4-4 Quản lý mơn học 33 Hình 4-5 Quản lý lớp học 34 Hình 4-6 Quản lý khoa .35 Hình 4-7 Chức phân cơng giảng dạy 36 Hình 4-8 Chức xếp Thời khóa biểu 37 Hình 4-9 Xem Thời khóa biểu theo lớp 38 Hình 4-10 Xem Thời khóa biểu theo giảng viên 39 Hình 4-11 Xem Thời khóa biểu theo phịng học 39 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com CHƢƠNG 1: MỞ ĐẦU Ngày nay, với phát triển mạnh mẽ CNTT góp phần mang lại thành tựu rực rỡ cho lĩnh vực, hoạt động đời sống Cùng với phát triển CNTT, hệ ngơn ngữ lập trình lần lƣợt đời nhằm đáp ứng yêu cầu công nghệ Đóng góp quan trọng vào phát triển ứng dụng CNTT, ngơn ngữ lập trình ràng buộc Comet thật mang lại tiện ích lớn việc giải toán tổ hợp nhƣ lập lịch, lập kế hoạch 1.1 Ý nghĩa ứng dụng lập trình ràng buộc vấn đề tối ƣu hóa tổ hợp Trong lĩnh vực nghiên cứu khoa học máy tính, tốn tối ƣu hóa tổ hợp đƣợc đánh giá tốn khó NP[1], đặc trƣng liệu lớn, ràng buộc phức tạp Để giải vấn đề hiệu địi hỏi phải có kinh nghiệm kỹ Trên giới có nhiều cơng trình nghiên cứu, thuật tốn đƣợc ứng dụng phát triển để giải vấn đề này: thuật toán quay lui, vét cạn, thuật tốn quy hoạch động Tuy nhiên, lập trình truyền thống chƣa có giải thuật hiệu nhất, đáp ứng đƣợc thời gian xử lý đa thức Do đó, tốn khó chƣa có lời tối ƣu Trong năm gần đây, CP lên nhƣ công nghệ quan trọng, giải hiệu tốn tối ƣu hóa tổ hợp, ứng dụng thành công nhiều lĩnh vực: hàng không, khoa học máy tính, cơng nghiệp sản xuất…CP thực giải pháp tối ƣu, đƣợc giới chuyên môn đánh giá cao khả giải vấn đề phức tạp sống thực Dƣới đây, ta xét tốn N-Hậu lập trình truyền thống với giải thuật vét cạn, quay lui Bài toán N-Hậu Bài toán 4-queens toán đặt quân hậu bàn cờ vua kích thƣớc 4*4 cho khơng có quân hậu “ăn” đƣợc quân hậu khác, hay nói cách khác khơng qn hậu di chuyển theo quy tắc cờ vua Do đó, lời giải LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com toán cách xếp bốn quân hậu bàn vua cho khơng có hai quân đứng hàng, cột đƣờng chéo Hình 1-1 Bài tốn 4-Hậu Đây tốn tổ hợp kinh điển, có nhiều giải thuật: quay lui, vét cạn, quy hoạch động Tuy nhiên, độ phức tạp thuật toán thƣờng Chƣa có giải thuật thỏa mãn thời gian chạy đa thức Dƣới đây, ta xét tốn mơi trƣờng lập trình truyền thống ( ngơn ngữ lập trình C/C++ Java ) với giải thuật vét cạn, quay lui (gọi đệ quy) Tƣ tƣởng giải thuật vét cạn, quay lui ta thử đặt quân cờ vào ô bàn cơ, sau lần lƣợt đặt quân vào ô cờ khác Trong trƣờng hợp không thỏa mãn điều kiện ràng buộc tốn (Khơng có hai quân cờ “ăn” đƣợc nhau) quay lui trở lại bƣớc trƣớc đặt lại quân cờ cho thỏa mãn điều kiện toán Giải thuật đƣợc mô tả trực quan nhánh tìm kiếm tốn 4-Queens (Hình 1-2) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 4.2 Giải tốn Một hệ thống lập Thời khóa biểu hoạt động hiệu phải đáp ứng đƣợc u cầu nghiệp vụ tốn Do đó, lần lƣợt giải ràng buộc toán Khai báo biến ràng buộc sử dụng chƣơng trình: var{int} start[0 n-1](cp,1 200); var{int} day[0 n-1](cp,2 6); var{int} hour[0 n-1](cp,{1,3,4}); var{int} room[0 n-1]; n số buổi học cần phải lịch Mảng day, hour, room chứa biến ràng buộc ngày giảng dạy, bắt đầu phòng học buổi học Mảng day chứa danh sách ngày học tuần (từ thứ đến thứ 6), có giá trị ràng buộc đoạn [2, 6] Mảng hour danh sách thời điểm bắt đầu tiết học, có giá trị ràng buộc tập giá trị {1, 3, 4} Mảng room danh sách phòng học phục vụ cho trình giảng dạy học tập Ngồi ra, cịn có mảng session có hai giá trị (tƣơng ứng với buổi sáng) (tƣơng ứng với buổi chiểu), mảng duration lƣu khoảng thời gian môn học/buổi start[i]==24*day[i]+ 8*session[i] + hour[i] Mảng start lƣu thời gian bắt đầu môn học tuần đƣợc ánh xạ từ ngày học, buổi học học mơn  Ràng buộc giáo viên: Mảng startTemp danh sách thời điểm giảng dạy tƣơng ứng với giảng viên Mảng durationTemp lƣu khoảng thời gian giảng dạy giảng viên Do tính chất ràng buộc, thời điểm giáo viên đảm nhận dạy mơn học Vì vậy, giảng viên dạy từ hai lớp trở lên hai mơn trở lên thời điểm giảng dạy startTemp, khoảng thời gian durationTemp, giáo viên dạy mơn Ta khái qt ràng buộc nhƣ sau: cp.post(cumulative(startTemp,durationTemp,arr1,1)); 27 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Hàm cumulative muốn nói công việc giảng dạy i, thời gian startTemp[i], diễn khoảng thời gian duration[i], ứng với giáo viên (arr[i]=1) cho phép dạy môn học  Ràng buộc ngày nghỉ giáo viên: Chƣơng trình quản lý danh sách ngày nghỉ mà giáo viên đăng ký Để đảm bảo chƣơng trình khơng xếp lịch dạy cho giáo viên vào buổi mà giáo viên đăng ký nghỉ ta phải khái quát ràng buộc nhƣ sau if(sessionTemp[j]==sessionOff[k]) cp.post(dayTemp[j]!=dayoff[k]); sessionTemp buổi dạy giáo viên, sessionOff buổi mà giáo viên đăng ký nghỉ, dayTemp ngày phải dạy dayoff ngày mà giáo viên đăng ký buổi nghỉ (sessionOff)  Ràng buộc giáo viên nghỉ tiết đầu: cp.post(hourTemp [j]!=1) hourTemp tập hợp bắt đầu dạy theo danh sách giáo viên đăng ký nghỉ tiết đầu Do dó, để thỏa mãn điều kiện không xếp lịch dạy vào tiết đầu mà giáo viên đăng ký nghỉ, ta phải post lên ràng buộc bắt đầu hourTemp[j] phải khác (tiết 1)  Ràng buộc số tiết/buổi: cp.post(hour[i] + duration[i]

Ngày đăng: 01/11/2022, 20:20