2010-06-20 33 views
6

Tôi phải triển khai thuật toán tạo thời gian biểu cho một trường đại học. Tôi đã tìm kiếm và tìm thấy rất nhiều thuật toán. Nhưng đây là vấn đề. Tôi cần một thuật toán tạo ra một thời gian biểu cho toàn bộ học kỳ, chứ không phải trên cơ sở hàng tuần. Nó cũng nên xem xét thứ tự được xác định trước của các bộ phận của khóa học, ví dụ: Bài tập 1 nên sau bài giảng 2 và trước bài giảng 3. Bạn có gợi ý gì không?Có một thuật toán tạo thời khóa biểu đại học cho cả học kỳ không?

Cảm ơn.

UPDATE:
Tôi có những hạn chế khó khăn sau:
H1: Chỉ có một phần nhiên được gán cho mỗi phòng tại bất kỳ khe thời gian.
H2: Phòng có thể lưu trữ tất cả sinh viên theo học và đáp ứng tất cả các tính năng theo yêu cầu của sự kiện.
H3: Không có học viên nào tham gia chế độ nhiều khóa học cùng một lúc (ít nhất là khóa học bắt buộc)
H4: Không có giáo viên nào dạy nhiều hơn một phần khóa học cùng một lúc.

Các ràng buộc mềm là:
S1: Phần khóa học không được cấp cho một khoảng thời gian bất tiện cho một giảng viên.
S2: Cần có một số khoảng trống tối thiểu giữa các lớp của giáo viên.
S3: Cần có một số khoảng trống tối thiểu giữa các lớp cho học sinh.
S4: Lớp học phải đáp ứng các tùy chọn của giảng viên - các ngày và thời gian.
S5: Các phần của khóa học phải được lên lịch để xác định trước thứ tự.

Ví dụ:
Khóa học "Kiến trúc phần mềm"

Week No Course Room Course Part Day  Time 
--------+---------+-------+--------------+----------+----- 
Week 1: SA  435  Lecture 1  Wednesday 8.15-11 
Week 2: SA  435  Lecture 2  Wednesday 8.15-11 
Week 3: SA  47  Lab 1   Monday  13-15 
Week 3: SA  436  Lecture 3  Wednesday 11-14 
Week 4: SA  243  Exercise 1 Monday  13-15 
Week 5: SA  436  Lecture 4  Wednesday 8.15-11 
+0

Xin chào.Tôi đã thêm các ràng buộc và một ví dụ – Thea

+0

Dude, mỗi khi nó đến thời gian để ghi danh vào các đơn vị tôi muốn có một prorgam/script để làm điều này cho tôi. –

Trả lời

0

Tôi đã kết thúc bằng thuật toán được sửa đổi của thuật toán được đề xuất here. Tôi đã sử dụng thuật toán chuyển tiếp lặp lại và sau đó áp dụng mô phỏng ủ cho các ràng buộc mềm. Tôi đã thay đổi khoảng thời gian được thiết lập để nó chứa toàn bộ tập hợp thời gian cho học kỳ mà không có ngày cuối tuần và ngày lễ. Ví dụ, nếu học kỳ có 6 tuần và mỗi tuần tôi có 40 giờ, thì tập hợp các khoảng thời gian của tôi sẽ chứa toàn bộ 240 thời gian.

Tôi cũng đã thêm một ràng buộc cho đơn đặt hàng. Khi hạn chế này không được thỏa mãn thì nó đặt trọng số cao cho giải pháp hiện tại. Bằng cách này tôi ngăn chặn các thuật toán để chọn một giải pháp với các khóa học không theo thứ tự.

1

Bạn có thể muốn nhìn vào interval scheduling. Nghe có vẻ như bạn sẽ cần một phiên bản sửa đổi mà thêm một số hạn chế như nơi các bài tập được phép được đặt. Các thuật toán tham lam thường khá dễ sửa đổi và có whole bunch of already modified versions của thuật toán IS cơ bản.

-1

IIRC vấn đề như vậy không hoàn toàn có thể giải được bằng thuật toán.

+2

Trong mọi trường hợp, bạn có thể thực hiện tìm kiếm đầy đủ. –

0

Tôi đang làm việc trên một loại dự án tương tự và sử dụng Thuật toán di truyền được điều chỉnh để giải quyết vấn đề trong tầm tay.

Nghiên cứu thuật toán di truyền chi tiết và sau đó sử dụng các ràng buộc của bạn thiết kế sơ đồ để giải quyết vấn đề của bạn, có tính đến tất cả các ràng buộc bạn đã đề cập.

Các vấn đề liên quan