FET Suggestion Feature After Generating a Timetable

Started by satellite2, November 23, 2018, 07:46:55 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

satellite2

One of the biggest problems of timetable schedulers is that there will probably be some teachers who are not satisfied with some of their activity placements. I thought that after generating a timetable and locking all the time and room values of the activities, FET can have an option for users like a button, for instance, called "show the alternative rooms in a given day/time period for this activity (maybe in this certain building) " or "show the alternative days/time periods for this activity in this room". Of course these alternatives should be calculated with respect to the current constraints and every other locked activity stays the same. After that, if an alternative seems better, there can be an option like "change the time/space values of this activity to those specific alternative time/space values".

I don't know whether it can be effective when every other activity stays locked but for simpler timetables I guess there will probably be a good alternative for those unsatisfied teachers to choose for. I don't know how difficult it is to implement but it would be very helpful for manual changes without effecting the other activities.

Liviu Lalescu

You got me here  :-[  I don't have experience in adding manual scheduling into FET, also I prefer to dedicate myself to algorithms.

Maybe Volker can answer (he wrote a proprietary tool named TiTiTo, which I think does this. You can read about it here on the forum).

satellite2

Quote from: Liviu Lalescu on November 23, 2018, 08:05:26 PM
You got me here  :-[  I don't have experience in adding manual scheduling into FET, also I prefer to dedicate myself to algorithms.

Maybe Volker can answer (he wrote a proprietary tool named TiTiTo, which I think does this. You can read about it here on the forum).

I will take a look at that tool, thanks :)

Volker Dirr

you can do it with FET sadly only a bit complicated.
TiTiTo isn't perfect in your feature request, since it main idea is doing supervision planning, not manually timetabling.
But it is more comfortable than FET in manually timetabling.

For alternative rooms it is the best to use
TiTiTo -> Activities -> Plan Activities 2
Don't forget that it is able to order the table by different items. Just click on the header name.
Click on the room name and you will see alternative rooms only.

For shifting times you can use
TiTiTo -> Activities -> Schedule Teachers (or one of the other "Schedule X" menus)

satellite2

Quote from: Volker Dirr on November 23, 2018, 08:55:47 PM
you can do it with FET sadly only a bit complicated.
TiTiTo isn't perfect in your feature request, since it main idea is doing supervision planning, not manually timetabling.
But it is more comfortable than FET in manually timetabling.

For alternative rooms it is the best to use
TiTiTo -> Activities -> Plan Activities 2
Don't forget that it is able to order the table by different items. Just click on the header name.
Click on the room name and you will see alternative rooms only.

For shifting times you can use
TiTiTo -> Activities -> Schedule Teachers (or one of the other "Schedule X" menus)

Thank you very much, I will try them.

satellite2

#5
Quote from: Liviu Lalescu on November 23, 2018, 08:05:26 PM
You got me here  :-[  I don't have experience in adding manual scheduling into FET, also I prefer to dedicate myself to algorithms.

Maybe Volker can answer (he wrote a proprietary tool named TiTiTo, which I think does this. You can read about it here on the forum).

I think the same FET algorithm can be used for this. Let's say we have 250 activities and we generated a timetable and locked them all. When we unlock a single activity, the same FET algorithm will work just for one activity and the other 249 locked activities will be treated as "not available times and spaces". Of course this part can be complicated but is this difficult to implement?

Volker Dirr

#6
yes and no.

i will explain with the "problem" at my school.

the nature science subjects (chemistry, physics and biology) have got each a special room.
sadly i need more room space for that 3 subjects.

so there are 2 other rooms that i can use if the "correct" room is already used.

now how do i use the room constraints?

i can't use subject chemistry preferred room "chemistry lab" with 100%. That is impossible.
i must use subject chemistry preferred rooms is "chemistry lab" or "alternative room 1" with 100%.
since my timetable is very difficult i generate it only with this constraint. (without adding the following constraint at the beginning, since that is too difficult).

as soon as i got the final table i unlock all rooms and activate a second constraint:
subject chemistry preferred room "chemistry lab" with 99.999%.

(i also do it similar for physics and biology)

now i generate again. Generating just need one second now.
the result is that most chemistry activities are in the chemistry lab. sadly it still might happen that the chemistry lab is unused while the other room is used for chemistry at the same time. this is a "problem" of the algorithm and can't be fixed with the current algorithm. if that should be fixed it will be needed to write a second algorithm that try to fix those bugs after the whole table is generated.
so you need to move the room yourself at the moment in those situations. I use TiTiTo for moving the room, since it is more comfortable.

satellite2

Quote from: Volker Dirr on November 24, 2018, 12:17:31 PM
yes and no.

i will explain with the "problem" at my school.

the nature science subjects (chemistry, physics and biology) have got each a special room.
sadly i need more room space for that 3 subjects.

so there are 2 other rooms that i can use if the "correct" room is already used.

now how do i use the room constraints?

i can't use subject chemistry preferred room "chemistry lab" with 100%. That is impossible.
i must use subject chemistry preferred rooms is "chemistry lab" or "alternative room 1" with 100%.
since my timetable is very difficult i generate it only with this constraint. (without adding the following constraint at the beginning, since that is too difficult).

as soon as i got the final table i unlock all rooms and activate a second constraint:
subject chemistry preferred room "chemistry lab" with 99.999%.

(i also do it similar for physics and biology)

now i generate again. Generating just need one second now.
the result is that most chemistry activities are in the chemistry lab. sadly it still might happen that the chemistry lab is unused while the other room is used for chemistry at the same time. this is a "problem" of the algorithm and can't be fixed with the current algorithm. if that should be fixed it will be needed to write a second algorithm that try to fix those bugs after the whole table is generated.
so you need to move the room yourself at the moment in those situations. I use TiTiTo for moving the room, since it is more comfortable.

I got the point. What about using multiple generation feature? Let's say I locked every activity and unlocked the activity that I want to change. When I generated 20 multiple timetables, will the program show me 20 or maybe less alternative results in the HTML outputs?

Volker Dirr

#8
yes, it will.

but i think that won't help much.

because:
1. it might happen that there are 6 alternatives, but if you run it 20 times it might show you only 4 variants. it is random. it's like throwing a dice. if you throw it 20 times you might see only 4 numbers even there are 6 number on the dice.

2. that variant will need much time (not in generating. it will use much time in checking the alternatives manually. especialy because they might be duplicated.) it will be even more critical if you do that for a lot of activities.

it is much faster if you do that with TiTiTo, since you can see every alternative exactly 1 time.

Liviu Lalescu

Quote from: satellite2 on November 24, 2018, 11:54:07 AM
I think the same FET algorithm can be used for this. Let's say we have 250 activities and we generated a timetable and locked them all. When we unlock a single activity, the same FET algorithm will work just for one activity and the other 249 locked activities will be treated as "not available times and spaces". Of course this part can be complicated but is this difficult to implement?

You can lock all the activities of the current timetable and then unlock an activity from the timetable view dialogs and generate again. The unlocked activity is free to float now (but I guess it has little space to float).

satellite2

Quote from: Volker Dirr on November 24, 2018, 12:54:51 PM
yes, it will.

but i think that won't help much.

because:
1. it might happen that there are 6 alternatives, but if you run it 20 times it might show you only 4 variants. it is random. it's like throwing a dice. if you throw it 20 times you might see only 4 numbers even there are 6 number on the dice.

2. that variant will need much time (not in generating. it will use much time in checking the alternatives manually. especialy because they might be duplicated.) it will be even more critical if you do that for a lot of activities.

it is much faster if you do that with TiTiTo, since you can see every alternative exactly 1 time.

Dice example clarified everything, thanks.

satellite2

Quote from: Liviu Lalescu on November 24, 2018, 01:03:28 PM
Quote from: satellite2 on November 24, 2018, 11:54:07 AM
I think the same FET algorithm can be used for this. Let's say we have 250 activities and we generated a timetable and locked them all. When we unlock a single activity, the same FET algorithm will work just for one activity and the other 249 locked activities will be treated as "not available times and spaces". Of course this part can be complicated but is this difficult to implement?

You can lock all the activities of the current timetable and then unlock an activity from the timetable view dialogs and generate again. The unlocked activity is free to float now (but I guess it has little space to float).

So it is about trying a few times. My current strategy is to set the time or space constraint to that specific activity after unlocking it with use of additional not available times or preferred room constraint. I guess that is the only way right now to check if the timetable generation is possible after each trial.

Liviu Lalescu

Quote from: satellite2 on November 24, 2018, 01:51:31 PM
So it is about trying a few times. My current strategy is to set the time or space constraint to that specific activity after unlocking it with use of additional not available times or preferred room constraint. I guess that is the only way right now to check if the timetable generation is possible after each trial.

I am not sure I understand correctly, but maybe the answer is "yes". It is better to use the constraint activity preferred starting time, with 100% weight.

satellite2

Quote from: Liviu Lalescu on November 24, 2018, 01:57:36 PM
Quote from: satellite2 on November 24, 2018, 01:51:31 PM
So it is about trying a few times. My current strategy is to set the time or space constraint to that specific activity after unlocking it with use of additional not available times or preferred room constraint. I guess that is the only way right now to check if the timetable generation is possible after each trial.

I am not sure I understand correctly, but maybe the answer is "yes". It is better to use the constraint activity preferred starting time, with 100% weight.

Oh yes, that makes more sense to set starting time and day instead of not available times.