Main Menu

University Timetable

Started by Frans, December 21, 2009, 08:13:50 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Frans

Dear subscribers

As a new subscriber this is my first post on this group.

First of all I want to congratulate the author with the excellent program. In my 22 years of setting timetables this is one of the best, if not the best, program I have ever used.

It seems to me that the majority of users are from schools. I am at a University and am using the program since May this year.

I wonder if some one can give me advice of what the best will be.

Currently I am setting a timetable for 4 different campuses. In total it will be app. 1 200 activities with about 3 000 Fet hours, 300 teachers (lecturers) and app. 200 Groups.

One problem I came accross is the following:

A few courses, why I do not know, do have a lot of electives. The number of periods is much more in a week than periods (fet hours) available in one week.

Here is an example of a course:

Choose 3 subjects from 18 subjects.
Choose one subject from 3 subjects
Choose one subject from 2 subject
Compulaory subjects are 10

From the above it is clear that there are numerous different number of groups, in the access of 100 groups (subgroups). It is not practical to create all these groups. Remember this is only one course and we do have app. 15 courses. (One luck is that this is for the minority of courses.)

One method of solving this is to make use of many dummy activities and schedule subjects at the same time. One problem with this, although I am busy to do it, is that if I get an impossible timetable it is very difficult to identify the dummy activities (the dummy activities has no students, groups).

I also added dummy groups under groups to see if that can help me. So far I solved the problem 80% but with a lot of effort.

Is there any one that do have a solution for my problem? it will be highly appreciated.

Another problem, and that is different from schools, is that there are no home rooms. Rooms have to be allocated for each and every activity according to the number of students, but this is another topic.

Any help will be appreciated. If my problem statement is not clear I am willing to try again.

Thanking you in advance.

Frans

(NS: Liviu I finally registered. It took FET app. 2 hours to do the scheduling.)



Volker Dirr

#1
Quote[...]
One problem I came accross is the following:
Here is an example of a course:

Choose 3 subjects from 18 subjects.
Choose one subject from 3 subjects
Choose one subject from 2 subjects
Compulaory subjects are 10

One method of solving this is to make use of many dummy activities [...]

Is there any one that do have a solution for my problem? it will be highly appreciated.

The only simplify i can think of are the "choose "1" subject" courses if you can do a conflict free activity planning. (so i mean each of that subject is teached by an other teacher.).

you have two times "choose 1 subject", just call it with a good name (you now better then me):
Choose one subject from 3 subjects: maybe call it "compulsory elective 1"
Choose one subject from 2 subjects: maybe call it "compulsory elective 2"

so you just use one activity with subject "compulsory elective 1", but all teachers and the whole group into this activity.

the "problem" is: you still need to add a dummy activity with same starting time constraint if you need room constraints.

would it help you if you do it that way and you can choose something like "each teacher need his own room". (so this attribute is related to an activity?!)
i am not sure if it is (easy) to code. i am sure some schools (that school systems are called "Gesamtschule" in germany) also need such a feature.

let's wait for livius answer.

ps: i think an activity attribute like "number of needed rooms" would be better then my previous suggustion, but i am not sure how to care about the room capacity correct in that case. so there are more settings needed?

Volker Dirr

pss: hmmm... maybe a better solution (better, because it fit better into fet style and maybe is also easier to code) is this:
the current constraint "preferred rooms" need a radio buttion, so you can select different options:
1. radio button: "take one of the selected rooms" (this is the current style)
2. radio button: "take all of the seleted rooms" (that is what maybe help you, but it mean it will select exactly your selected rooms. that style is good to "gesamtschulen", i am not sure about your situation.)

Maybe insted of radio button just an integer selection of "you X of the seleted rooms" (so current style is "1" and the X can be increased up to number of selected rooms)

Frans

<Choose one subject from 3 subjects: maybe call it <"compulsory elective 1"
<Choose one subject from 2 subjects: maybe call it <"compulsory elective 2"

Volker thank you for the quick reply.

I already tried the above but there is still a problem.

It is possible that subjects from "Elective 1" for example can run simultaneously with "Elective 2". Further a lecturer can give more than one subject in a group.

In addition the printing of the timetable is also a problem. Lecturers and students want to see the specific subjects on their timetable.

Currently I handle room allocation as follows: I split the rooms into different groups and define an activity tag for each group for example LargeVenues, SmallVenues, Labs and Laboratories. I then allocate the activity tags when defining the different activities. (I do not know if that is the purpose for an activity tag, but it works for me). However it would be great if there can be an easier way to allocate venues. In our situation this is crucial.

Once again thanks and I wish all of you everything of the best for the festive season and a prosperous New year.

Frans

Liviu Lalescu

The best would be scheduling on a student basis (define 1 subgroup=1 student). But this is complicated.

For dummy activities, maybe you could add a unique activity tag for each dummy activity, so you know to which category it belongs.

Yes, your use of activity tags for rooms is correct.

I am sorry, but I cannot help you with advice, I did not understand exactly all the requirements. I have no experience in timetabling.

Frans

Liviu thank you for the advice.

<For dummy activities, maybe you could add a unique activity <tag for each dummy activity, so you know to which category <it belongs.

If I do this I will have two activity tags for a dummy activity, one for the room and one unique one for identification purposes. Will this be OK for Fet if one activity has two activity tags? Will Fet not be confused? One tag will be empty and the other will have a room or a number of rooms. Will Fet know what to do?

(Sorry for asking this, but I am new to Fet.)

Just asking because this will help me a lot.

I tested another possibility to limit dummy activities. Difficult to explain but I will try: I define a group say as MK1 with subgroups MK1B, MK1C, MK1D, MK1E etc. I only use the first two groups, MK1A and MK1B, to add the activities. When the number of periods for the first two groups is equal to the number of total fet hours (or very near to) I start using the remaining groups and then timetable these groups at the same time as the first two groups. In this way I use less dummy activities, if I may call it that. This is actually also dummy activities but it is now easy to locate in case of a problem. (Is the same as a dummy activity with unique id.)

I just want to find out which one will be the best for Fet.

Once again thanks.

Frans





Liviu Lalescu

#6
QuoteLiviu thank you for the advice.

<For dummy activities, maybe you could add a unique activity <tag for each dummy activity, so you know to which category <it belongs.

If I do this I will have two activity tags for a dummy activity, one for the room and one unique one for identification purposes. Will this be OK for Fet if one activity has two activity tags? Will Fet not be confused? One tag will be empty and the other will have a room or a number of rooms. Will Fet know what to do?

(Sorry for asking this, but I am new to Fet.)

Just asking because this will help me a lot.


Of course you can add more activity tags, that is why you can select more in the add activity form. Each constraint will be respected (so, if you have 3 tags for an activity and 2 tags have constraints, both constraints will be respected).

Quote

I tested another possibility to limit dummy activities. Difficult to explain but I will try: I define a group say as MK1 with subgroups MK1B, MK1C, MK1D, MK1E etc. I only use the first two groups, MK1A and MK1B, to add the activities. When the number of periods for the first two groups is equal to the number of total fet hours (or very near to) I start using the remaining groups and then timetable these groups at the same time as the first two groups. In this way I use less dummy activities, if I may call it that. This is actually also dummy activities but it is now easy to locate in case of a problem. (Is the same as a dummy activity with unique id.)

I just want to find out which one will be the best for Fet.

Once again thanks.

Frans


I think also this approach is good. Choose the one which works best. But remember: if you add an activity for MK1, then MK1A, B, C, D, E will have this activity. So, take care that MK1C does not have too many activities. Also, if you care about the gaps, maybe MK1C will have too many gaps, so you may get an impossible timetable.

I think this second approach is used in some examples from FET (maybe Belize, Hong Kong (I am not sure) and Bethlen difficult 2007-2008 (again I am not sure) ).

Please let me know if you obtain a good timetable or not.

Edited to add: Maybe you could help me, by using the latest version 5.12.0, to check that it is OK. Also, maybe you can test a bit the new snapshot (see snapshots section in forum), just to make sure the save/save as options are OK. You can use the latest snapshot as a normal FET.

Frans

Liviu

Thanks again.

QuoteIf you add an activity for MK1, then MK1A, B, C, D, E will have this activity.

I do not use MK1 to add activities. As you said if I do this C, D and E will also have the activities. So what I do I add an activity as MK1A+MK1B instead of  MK1. In this way MK1C, D, and E stay empty and is only used when necessary. In other words it is actually a dummy activity and is not printed. (It is printed on MK1A and MK1B). Why I do this is that it is then easy to locate the "dummy" activity if there is a problem and the lecturer will also be able to see the group on his timetable..

QuotePlease let me know if you obtain a good timetable or not.

If you are interested I can send you the htm file of the final output. Still better I can send you the FET-file. (Must just change some names, in case someone from work is querying). Currently the timetable is say 50% complete. I am working with the problematic groups and if that is sorted out I add the other say 1 000 activities.

QuoteMaybe you could help me, by using the latest version 5.12.0

I am already using 5.12.0 and so far I do not have any problems. One think I notice though is that if I want to unlock a teacher, group or room from the timetables menu by selecting eveything using the heading I must exit the menu to cancel the selection. (Probably I am doing something wrong, but that is really not a problem.

The save options in 5.12.0 works fine and I save lots of times, after each run.

I will download the latest snapshot and will let you know of any problems, if any.

Frans

Frans

Liviu

Sorry me again. I only have one question:

Is it possible to delete a sub activity without deleting the main activity? I do not want to make the activity inactive.

If I for example has an activity split into 3 say 1+1+1 and I want to change it to 2+1. I know that I can make the third one inactive and change the first one to 2.

Why I ask this is to clean up my final FET file. Currently I must delete the activity and add the new one. The problem is that I have to re-enter all the starting times as well as simultaneous information.

Thanks.

Frans

Liviu Lalescu

#9
Quote
I do not use MK1 to add activities. As you said if I do this C, D and E will also have the activities. So what I do I add an activity as MK1A+MK1B instead of  MK1. In this way MK1C, D, and E stay empty and is only used when necessary. In other words it is actually a dummy activity and is not printed. (It is printed on MK1A and MK1B). Why I do this is that it is then easy to locate the "dummy" activity if there is a problem and the lecturer will also be able to see the group on his timetable..
Yes, that is a good idea.

Quote
If you are interested I can send you the htm file of the final output. Still better I can send you the FET-file. (Must just change some names, in case someone from work is querying). Currently the timetable is say 50% complete. I am working with the problematic groups and if that is sorted out I add the other say 1 000 activities.

I want you to generate a 100% correct timetable, and then let me know if FET did a good job. Yes, you are welcome to send me your .fet file, I can keep it private and use for testing, or put it in the official examples, if you change names and agree on that (but I am interested in a final file). Yes, I am also interested into the html output, but only final correct 100% complete results, which are used practically in your institution (better, if you put them online, just give me the link).

Quote
I am already using 5.12.0 and so far I do not have any problems. One think I notice though is that if I want to unlock a teacher, group or room from the timetables menu by selecting eveything using the heading I must exit the menu to cancel the selection. (Probably I am doing something wrong, but that is really not a problem.
This is Qt 4.6.0 improvement over 4.5.2. If you select some items, you cannot unselect with click on them. I think you can unselect with Ctrl+Click or Shift+Click.

Quote
The save options in 5.12.0 works fine and I save lots of times, after each run.

I will download the latest snapshot and will let you know of any problems, if any.

In 5.12.0 I know save works fine, but in 5.12.1-snapshot I changed a bit and that is why I need a bit of testing (I tested, but more tests are better).

If you use 5.12.1-snapshot, everything should be OK. Only if you open a 5.12.1-snapshot file with 5.12.0, you'll get a warning, but you can ignore it (because the file structure is identical).

I advise you to make some backups, at least 1 file once a day, or once at 2 hours (save under a different name). At least at the beginning of testing.

Are you using gaps constraints for teachers/students in your institution? (Just curious if these constraints are used in universities).

Did you say that the timetable is produced in 2 hours? Or data input did last 2 hours? How long does the timetable generation take?

Liviu Lalescu

QuoteLiviu

Sorry me again. I only have one question:

Is it possible to delete a sub activity without deleting the main activity? I do not want to make the activity inactive.

If I for example has an activity split into 3 say 1+1+1 and I want to change it to 2+1. I know that I can make the third one inactive and change the first one to 2.

Why I ask this is to clean up my final FET file. Currently I must delete the activity and add the new one. The problem is that I have to re-enter all the starting times as well as simultaneous information.

Thanks.

Frans

No problem, you can ask me anything, and if I am at home, I'll answer :-)

Unfortunately, you have touched a sensitive point :-) I cannot remove only one component of a larger split activity. Yes, the FET interface is bad in this point.

Frans

QuoteI want you to generate a 100% correct timetable, and then let me know if FET did a good job.

I am now busy generating multiple timetables, 5 in total with 5.12.0. Currently file nr. 4 is generated. I will let you know as soon as completed. After this I will use the new snapshot.

The first timetable takes 35 minutes, the second one 1 hr and 14 minutes and the third one 1 hr 17 minutes. I will let you have times times of the rest when finished.

QuoteI advise you to make some backups, at least 1 file once a day

I usually make backups after every run.

QuoteAre you using gaps constraints for teachers/students in your institution?

Yes I use a lot of constraints, for example:
Same staring time
Consecutive activities
Preferred Starting times and slots
Minimum periods per day for students
Zero gaps for students
Maximum building changes for lecturers per day as zero. (The reason for this is that lecturers lectures at different campuses and it is not possible to lecture at more than one campus a day as some of the campuses are 40km. apart. The only problem is that I cannot use building changes if it is on a specific campus.

QuoteDid you say that the timetable is produced in 2 hours?

Yes, generation took the first time 2 hours, but then I made some changes. The input of the data took verly long. Probably because I am not acqainted with the Faculty that I am busy with at the moment. (Had to sort out problems.)

Frans

Liviu Lalescu

#12
Quote
I am now busy generating multiple timetables, 5 in total with 5.12.0. Currently file nr. 4 is generated. I will let you know as soon as completed. After this I will use the new snapshot.

The first timetable takes 35 minutes, the second one 1 hr and 14 minutes and the third one 1 hr 17 minutes. I will let you have times times of the rest when finished.

Please take your time!

I am only interested in approximate average time (just an estimate), minimum and maximum time.

Also, let me know, about the final timetable, what do you think of it, is it good? Better or worse than the old timetables?

Hint: if you have a dual core you can run in parallel 2 FET's, because each FET will run on only a core. This way, in the same time you obtain twice as much timetables (if you are in a hurry to produce timetables). But take care to use different file names, so that the results are stored in different directories. If you have quad core, you can run 4 FET's simultaneously.

Edited to add: if you generate with snapshot, you'll get in the html a longer description of the FET version (5.12.1-snapshot... instead of 5.12.0). If this bothers you, you could regenerate with 5.12.0 for the locked file. Or use 5.12.0 mainly and only test a bit the 5.12.1-snapshot.