Giao diện chương trình:
Từ một bài tập lớn nghiên cứu các thuật toán xếp thời khoá biểu cho các trường đại học (môn trí tuệ nhân tạo), kết hợp việc tìm hiểu nguyên tắc xây dựng TKB chung của một số các trường Đại Học.
Bài toán TKB không phải là một bài toán mới, nó là một bài toán cũ nhiều người đã dày công và tìm kiếm lời giải chung để giải quyết cho tất cả mọi trường hợp. Tuy nhiên do tính chất của bài toán là quy hoạch lõm nên chúng không bao giờ tìm ra bài toán giải quyết được tất cả các trường hợp.
Chương trình của tôi đưa ra cũng không nhắm vào mục tiêu ấy mà nhắm vào mục tiêu là một nhóm các trường đại học có quy chế đào tạo giống với với mô hình trường Đại Học Đà Nẵng
Giao diện thân thiện đẹp – Các chức năng thường dùng được đưa ra màn hình chính.
Các tính năng nổi bật:
- Giao diện thân thiện dễ dùng
- Tốc độ thuật toán rất nhanh
- Có khả năng xử lý với dữ liệu rất lớn (theo thử nghiệm là > 10.000 đối tượng)
- Có khả năng kết hợp nhiều phòng ban trong việc xây dựng một thời khoá biểu lớn.
- Phân quyền rõ ràng
- Chức năng ghép các lớp (hầu hết các chương trình trước đây không có chức năng này)
- Các loại báo cáo đa dạng, đẹp
- Sử dụng bảng mã chuẩn UNICODE trong hiển thị tiếng Việt
- Nhiều công nghệ được tích hợp với chương trình (bảo mật , backup …)
Sáng tạo lớn nhất trong chương trình đó là việc đưa ra một qui chuẩn của việc xếp lịch. Đó là định nghĩa ra đơn vị sự kiện. Đó là đơn vị nhỏ nhất thông suốt sử dụng quá trình xếp lịch. Các chương trình phần mềm trước đây không đưa ra được định nghĩa cho các sự kiện cần xếp lịch nên không thể có một qui chuẩn cho việc qui tất cả các bài toán của hầu hết các trường thành một bài toán chung.
Sau khi có định nghĩa của các sự kiện, bài toán với các mô hình đào tạo khác nhau đều qui về bài toán tối ưu tô màu bản đồ. Tất nhiên đối với mỗi mô hình đào tạo chúng ta đều phải xây dựng một thuật toán khác. Nhưng xây dựng được khung cơ sở để dựa vào đó chúng ta có thể viết các thuật toán đã chiếm 70% công việc của quá trình xếp lịch.
Trong chương trình dự thi tôi đã đưa ra 2 cách để xếp thời khoá biểu
- Tự động hoàn toàn
- Xếp lịch bằng tay tuỳ theo các yêu cầu bên ngoài khác.
Chúng ta biết rằng các yêu cầu đối với một TKB là rất đa dạng, nhiều nên việc xây dựng một chương trình thông minh:
- Nhận yêu cầu của con người
- Tự động xử lý đáp ứng với yêu cầu đó
Là không thể. Vì trong quá trình ấy chúng ta phải đơn vị hoá các yêu cầu của con người thành số mà máy tính hiểu được. Nên việc đó là không thể. Nên tôi đã đưa ra một cách mà con người có thể tác động vào đó để có thể đưa ra kết quả như mong muốn. Đó là xếp lịch bằng tay.
Đối với các chương trình tuyên bố chương trình có thể tự động hoàn toàn đáp ứng mọi nhu cầu của người dùng là không khả thi.
Ví dụ:
- Sau khi chạy xong thuật toán xếp lịch. Trưởng khoa yêu cầu tôi không dạy vào các tiết đầu tiên trong ngày (1,2) vì tôi phải chủ trì các buổi họp.
- Nếu không có xếp lịch bằng tay chúng ta không có cách nào thay đổi được kết quả cần in ra của TKB. Chỉ có một cách là cách chức ông trưởng khoa đó và để một ông nào khác lên thay.
Ví dụ về việc không thể tìm ra kết quả:
- Khoa Triết học của hầu hết các trường Đại Học là khoa có mật độ giảng dạy lớn nhất. Do đó các giáo viên ở khoa này thường phải dạy rất nhiều. Có những tuần số tiết mà các giáo viên đó giảng dạy vượt quá khả năng của giáo viên đó (80 tiết / tuần) chẳng hạn.
- Trong khi chúng ta có 1 tuần có 6 ngày. Mỗi ngày 12 tiết (6 sáng, 6 chiều) tức là có 6x12=72 tiết. Nhưng giáo viên đó phải dạy đến 80.
- Suy nghĩ khi có máy tính mọi việc đều được giải quyết là không khả thi. Và đó là một trong các lý do không thể tự động hoàn toàn giải quyết. Vì việc các chương trình máy tính cố tìm cách xếp 80 tiết vào 72 ô là việc không thể. Cố tìm sẽ dẫn đến treo máy.
- Có một cách giải quyết không mang tính máy tính mà mang tính hành chính đó là trong tuần đó tìm người giảng dạy thay.
Với tất cả các yêu cầu đó chương trình của tôi có mục tiêu khiêm tốn hơn:
- Tự động tìm cách xếp lịch cho đại đa số các trường hợp
- Những trường hợp khó nhiều ràng buộc sẽ được người dùng tự xếp bằng tay.
Với mục tiêu như thế để sử dụng tối đa khả năng của chương trình. Người sử dụng nên tuân thủ các bước:
- Xếp tay cho các trường hợp yêu cầu đặc biệt, khó trước.
- Các trường hợp đơn giản xếp tự động sau.
Một trong những điểm khó khác của phần mềm đó là việc hiển thị TKB. Do nhóm các tiết học là không giống nhau có thể là 2, 3, 4 tiết liên tiếp nên để hiển thị TKB kéo theo chúng ta phải trộn các cột. Khi sử dụng các phần mềm Crystal Report, Active Report, C1 Report chúng ta không thể xây dựng các báo cáo động dạng này. Chương trình đã giải quyết bằng cách Export dữ liệu ra Excel. Và công việc in ấn thực hiện trên Excel. Đó là một điểm rất mạnh của chương trình.
Với việc sử dụng tính năng này chúng ta có thể sinh ra rất nhiều các loại báo cáo khác nhau.