optional subject timetabling

Started by Richard, April 25, 2008, 04:22:34 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Richard

First of all, thanks for the great program.

We've been experimenting with it at a Spanish university for the last few weeks and we've been very impressed with it's power and functionality.

Our question is about timetabling a period when students split up into optional subjects, of which they can take any one or none.

Is there an easy way to include this concept in the generated timetable without specifying which students go to which subject (which is a lot of extra work for little gain)?

We want to specify a room and the time and the teacher(s) but we don't need to include the student sets in this case.

In other words, these are activities that students CAN do but they are not obligatory.  

(For your information, our situation with a simplified example:

the university has centres; in this example the Faculty of Education

each centre organises degree studies; in this example a Degree in Social Education (DSE) and a Degree in Primary Education (DPE)

a degree contains different years; in this example DSE1, DSE2, DSE3 and DPE1, DPE2, DPE3

a degree contains obligatory subjects, some of which are obligatory in more than one degree; in this example Educational Psychology (EP) in the first year - so we have groups of students from different degrees that coincide in the same activity: the groups DSE1-A and DPE1-A do EP together in one set of activities and DSE1-B and DPE1-B do EP together in another set of activities

a degree also contains optional subjects, which are often optional for more than one degree; in this example Basic English and Basic French, which take place at the same time periods. This is what our question is about. Can we reserve teachers, rooms and times  and associate the same student groups, for example, DSE1-A to both activities as an either/or relation, without contradicting the timetable?

Thanks in advance,

Richard

Liviu Lalescu

Hi!

I think the solution is simple. You need 2 activities in the same time. Activity A1: Subject French, Teacher Francois, Students Year1_Fr (an unspecified part of year1 students) and Activity A2: Subject English, Teacher John, Students Year1_En (an unspecified part of year1 students, the rest of students from year1). Then you can add a single activity A (Subject Language, Teachers Francois and John and students Year1. This way, you'll get exactly what you want. The only problem is that each activity can take place in a single room, so if A is to take place in 2 rooms you need to add a dummy activity (A'), a constraint activities same starting time (A and A') and the 2 needed space constraints.

The only (possible, minor) problem is if for instance year1 is split into French, English and None. Then, if you add activity A, the None students will have a free period during this activity. If you want to constrain the gaps, this gap for students None will not be counted and they might get more gaps than allowed. In this case, you need to define more precisely the students structure:

This is complicated: to define exactly the students into optional groups, for instance split by language (En, Fr, none) and split by sex (b, g), you need to define 3*2 subgroups (En_b, En_g, Fr_b, Fr_g, none_b, none_g) and define the groups (3+2 groups, for instance group En contains En_b and En_g and group b contains En_b, Fr_b and none_b). You can now add the groups as you need in each year. The structure permits every situation. You can have Year1 to contain these 5 groups and also other 5 groups, and you can define group Year1Section1 (contained in Year1, with the other 10 groups) as having some subgroups.

Please let me know if the problem was solved.

Volker Dirr

#2
QuoteThe only (possible, minor) problem is if for instance year1 is split into French, English and None. Then, if you add activity A, the None students will have a free period during this activity. If you want to constrain the gaps, this gap for students None will not be counted and they might get more gaps than allowed. In this case, you need to define more precisely the students structure

You don't need to specify a students structure in that case. If gaps are not allowed and you have "French, English and None" groups, then it mean just that this activities must start or and a day. so you need to add only a constraint, that is activity ends a day or that the prefferd time is the first hour. (but with defining students structure you will get better timetables, because FET can choose itself if the activity is in the first hour or in the last hour and because FET can also set that activity in the 2nd period if the first period is free.)


I am not sure about the unspecified groups. I recommend to add all students (years) just to the first activity (French), but no students to the second activity (English) and connect both students with a constraint activities have the same time (day+hour).

Liviu Lalescu

QuoteYou don't need to specify a students structure in that case. If gaps are not allowed and you have "French, English and None" groups, then it mean just that this activities must start or and a day. so you need to add only a constraint, that is activity ends a day or that the prefferd time is the first hour. (but with defining students structure you will get better timetables, because FET can choose itself if the activity is in the first hour or in the last hour and because FET can also set that activity in the 2nd period if the first period is free.)

Not exactly. You have constraint students max gaps per week. User might allow 2 gaps per week. Then you can have this activity in the middle of the day.

This situation was reported by user Horatiu Halmajan.

QuoteI am not sure about the unspecified groups. I recommend to add all students (years) just to the first activity (French), but no students to the second activity (English) and connect both students with a constraint activities have the same time (day+hour).

Yes, that is also possible. I think the algorithm is faster if adding like I said, but the difference is very little. If you want details why the algorithm is faster with my variant, write me (technicalities involved :-) A short explanation is that in initial ordering of activities, I neglect to consider constraint activities same starting time and also there are fewer activities.