Cong ty Cong Nghe Tin hoc Nha truong http://www.vnschool.net
Lịch sử phần mềm xếp thời khóa biểu TKB (12): Những kỷ niệm với TKB 6.0
29/12/2012

thời khóa biểuNhư vậy khi phát hành phiên bản TKB 5.5 vào tháng 7 năm 2005, bài toán xếp tự động thời khóa biểu 100% (lệnh SF) đã lại một lân nữa được đặt ra cho mô hình phòng học bộ môn. Nhưng lần này vấn đề không nằm ở bài toán lớn mà chỉ nằm ở một thuật toán FPR cần nâng cấp cho mô hình phòng học bộ môn.


Chúng tôi biết rằng không thể không giải quyết bài toán này vì thị trường không cho phép chúng tôi thất hẹn thêm 1 lần nữa.

Trong suốt thời gian sau tháng 7-2005, thuật toán FPR luôn ám ảnh tôi. Đi đâu tôi cũng cầm theo 1 cuốn sổ nhỏ để làm nháp, vẽ các sơ đồ và suy nghĩ về cách thực hiện thuật toán FPR trong môi trường có phòng học bộ môn. Nhưng tất cả đều vô vọng. Càng suy nghĩ về bài toán này càng thấy phức tạp không như mình tưởng tượng ban đầu. Để các bạn hình dung có thể nói ngắn gọn thế này: mô hình cũ của thời khóa biểu không có phòng bộ môn là mô hình 2 chiều, trong đó chỉ có 2 chiều là Lớp học và Giáo viên. Còn mô hình mới với phòng học bộ môn là 3 chiều với thêm 1 chiều nữa là Phòng học. Sự phức tạp nằm ở chỗ cần nâng cấp 1 thuật toán từ 2 chiều lên 3 chiều.

Cho đến tận gần cuối năm 2005 bài toán vẫn bế tắc. Có những lúc tôi đã tuyệt vọng và nghĩ rằng có lẽ bài toán thời khóa biểu làm tới đây là hết. Trong khi các phát triển nâng cấp khác của bản TKB 6.0 vẫn được tiến hành thuận lợi thì việc nâng cấp lệnh SF xếp 100% vẫn giậm chân tại chỗ.

Có 1 sự kiện đã làm thay đổi một cách tình cờ. Tháng 12 năm 2005 tôi bất ngờ bị mắc bệnh nhãn áp cao và phải vào bệnh viện 108 mổ mắt gấp. Tôi nhập viện vào khoảng giữa tháng 12, dự kiến là sẽ nằm viện tối thiểu 10 ngày: chuẩn bị trước mổ 3 ngày, sau mổ 7 ngày sẽ xuất viện. Vào viện tôi rảnh hơn và đã dành toàn bộ thời gian suy nghĩ về thuật toán FPR này. Và một điều kỳ lạ đã đến, vào đúng những ngày nằm viện tôi đã nghĩ ra được cách giải quyết bài toán này.

Tôi hãy còn nhớ đêm thứ 2 sau khi tôi mổ mắt, một mắt bịt kín hoàn toàn, một mắt bịt 50% (vì mắt này bắn lazer nên không bịt hoàn toàn), tôi đã đến phòng trực của khoa mắt xin phép bác sĩ trực làm việc 1 lúc. Đêm hôm đó tôi đã ngồi đến 3h sáng để viết lại toàn bộ thuật toán FPR mới trong môi trường phòng học bộ môn. Nửa đêm bác sĩ trực tỉnh dậy đã ra quát tôi ầm ĩ nói rằng "anh muốn mù mắt hay sao mà làm như thế này!".

Còn tôi thì cực kỳ thấy vui sướng vì đã hoàn thành 1 công việc mà trước đó tôi không bao giờ nghĩ mình có thể làm được.

Thuật toán FPR khi mô tả lần trước (trường hợp 2 chiều) tôi chỉ phác thảo khoảng 2 trang là nhân viên lập trình có thể hiểu và làm được ngay. Nhưng bây giờ thuật toán mới FPR phòng học bộ môn tôi đã viết ra mất 70 trang giấy A4, vô cùng phức tạp.

Ngay sau khi ra viện tôi đưa ngay nhóm dự án triển khai thuật toán FPR mới. Và điều kỳ diệu đã xảy ra. Thuật toán chạy ngon lành. Chức năng xếp tự động 100% SF đã chạy chính xác tuyệt đối với mô hình phòng học bộ môn, thời gian chạy xếp xong 1 thời khóa biểu chỉ 1 phút. Không có gì có thể vui sướng hơn.

Tháng 5 năm 2006, phiên bản TKB 6.0 ra đời, lần đầu tiên mô hình thời khóa biểu phòng học bộ môn đã được giải quyết trọn vẹn bài toán xếp 100%. Cũng từ lúc đó có thể nói Công ty Công nghệ Tin học Nhà trường đã giải quyết xong và trọn vẹn ở mức 2 bài toán xếp thời khóa biểu cho nhà trường phổ thông. Mô hình 3 mức của một bài toán thời khóa biểu đã được chúng tôi đưa ra như sau:

- Mức 1: xếp tự động 95-98%.

- Mức 2: xếp xong 100%.

- Mức 3: tối ưu và làm đẹp thời khóa biểu.

Phần mềm TKB 6.0 là phần mềm đầu tiên của Việt Nam đã giải quyết được đến mức 2 của bài toán xếp thời khóa biểu. Từ nay trở đi chúng tôi có 1 nhiệm vụ lớn và nặng nề hơn nữa đó là cần giải quyết Mức 3 của bài toán này. Tất cả còn ở phía trước.


Bùi Việt Hà, Công ty Công nghệ Tin học Nhà trường
URL của bài viết này::http://www.vnschool.net/modules.php?name=Sanpham&file=article&sid=6922
© Cong ty Cong Nghe Tin hoc Nha truong contact: sales@schoolnet.vn