2 Replies Latest reply on Apr 26, 2011 12:46 PM by YoungWinston

# Time table Generation

Hi ,
I am looking at developing a time table generator for schools and colleges .

Though there is a plenty of work already done on this topic ,
but what attracts me to this is the very complexity of the problem , which makes it really challenging.

I am sure by sharing our ideas and positive criticism , we can learn a lot while working on the problem.

Well to start with we must have a common problem description .

I would describe the problem as : The time table consists of a cycle , each cycle has a set of
working days (WD) and
time slots per day (TPD),
a set of X lessons to be sheduled .

there are different batches of students(like a Standard II,section A in school) .

We need to make subsequent assignments of lessons to the individual time slots unless all the X lessons are assigned to a time slot

We may define an assignment as :

A = (T, G, R, S, L)

T: set of teachers (usually singleton)

G: set of group(s) of students involved (a whole batch, subset of batch or groups from different batches)

R: a room has finite distance from other rooms and a strength that it can accommodate,
could be suitable for some lessons and has some resources (like projectors , PC at each desk , facility of a chemistry lab etc).

S : a set of consecutive time slots ( lessons may have span over multiple time slots)

L: represents a subject to teach.

I would really appreciate your comments and criticisms on the description of the problem.

Edited by: geeksaint on Feb 4, 2011 4:57 AM
• ###### 1. Re: Time table Generation
A very good problem!

You should consider creating a open source tool for our friendly teaching community!!

Some classes will need two hours together. Such requirements could make the algorithm even more interesting.
• ###### 2. Re: Time table Generation
geeksaint wrote:
I would really appreciate your comments and criticisms on the description of the problem.
Seems a bit algebraic to me (although very well described). Hoary old analysts like me tend to prefer names (and moreover descriptive names) to letters; otherwise the old 7 &plusmn; 2 rule quickly comes into effect.

Also, you seem to be concentrating on sets and groupings, whereas I think I would be more interested in covering the elemental entities first (Teacher, Student, Room, TimeSlot, Subject etc - Note that all those names are singular, a suggestion given to me many moons ago when I was starting out).
These are sometimes called "actors" (although the term can also refer to the users of the system), and are a good basis for understanding the parameters of your problem/system.

Next, I would have a think about what your system needs to do. Concentrating too much on groupings tends to lead to premature implementation (the "oh yes, we're going to need one of those" approach), whereas deciding what it needs to do focuses your mind on the actual requirements. You might also want to consider who is going to use this system.

One thing that springs immediately to mind is the need to assign "lessons" (ie, gathering a group of Students in a specific Room at a specific time with a specific Teacher for a specific Subject). Again, don't go overboard about how this is done; just identify it as a requirement. There'll be plenty of time for the "how" once you've identified the "what".

Just one more thing about those individual entities: You've identified a "Room", but what about a Sports lesson or a Field day? What is the "Room" then? Might there be a better name? I suspect there's absolutely nothing wrong with a Room, but possibly as part of a greater whole (Venue?).

Finally, there is no "right" approach. Anything that makes you think about the problem is likely to improve the design.

Good luck

Winston