You have activities which will certainly end up in an unspecified room

Started by mimooh, October 15, 2018, 11:34:18 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

mimooh

What if I have so many rooms available and I don't want to put any constraints? FET can choose an hour for my class, so why wouldn't it choose the room if there are plenty available?

Volker Dirr

Because that will be a very bad behavior for "normal" schools.

A "normal" school have got home room for classes. So that room is available always for the classes. Only Sport, Science,  Art and Music are in special rooms. So "normal" school only need to add that special rooms and don't need to enter the home rooms at all. That save a lot of work; for the guy that enter the data but also for the algorithm; so both will be faster.

As soon as we implement your variant all that schools will get trouble; sample files won't work anymore.


Liviu, how about this:
space constraints -> activities -> Activities have got home roomS

That is nearly what mimooh (and i remember a few other guys from universities) suggested. It is not "any constraint", but it is only one constraint. So it will be fine for that guys, since the guys will save time.

Liviu Lalescu

Quote from: Volker Dirr on October 16, 2018, 08:44:55 AM
Liviu, how about this:
space constraints -> activities -> Activities have got home roomS

That is nearly what mimooh (and i remember a few other guys from universities) suggested. It is not "any constraint", but it is only one constraint. So it will be fine for that guys, since the guys will save time.

I am sorry, but home room(s) are for teachers and for students. Also, it was established after long thinking that activities preferred room(s) is impossible to add.

It is not that complicated to add an activity tag to each activity and add activity tag preferred room(s).

Volker Dirr

i think home rooms is in fact needed, because by that it can be "overwritten" by other room constraints. You can't do that by tags, because that constraints won't be skiped if there is an other room constraint. With "activities preferred room(s)" it will be impossible to most school, especialy because of special rooms. But with a "activities home roomS" constraint, where you can select all non special rooms, it will be a very nice feature.
also (but this is a bit minor problem) adding tags might be very much work, since you need to add tags for maybe a few hundred or even thousand activities.

Liviu Lalescu

I meant that "home room(s)" constraints are by the word "home" meaning related to students sets and teachers.

Even with activities home room(s) constraints you may get an impossible timetable if there are not enough home rooms. But this is not a good argument.

If the user wants to add a random room to each activity, he can add also preferred rooms as all the rooms of the timetable, and FET will assign the most constrained rooms to the needed activities (so it is not a problem to add "preferred room(s)" and not "home room(s)" for all the activities).

But the problem is indeed there are many activities, and to add the same activity tag to each of them is indeed tedious.

Maybe we could think of a special function to add a special activity tag to each activity. But it seems so ugly.

Or maybe if the number of subjects is not so large the user could add constraints subject preferred rooms. Just add all the rooms once and press "Down" and "Enter".

Volker Dirr

Quote from: Liviu Lalescu on October 16, 2018, 11:54:20 AM
I meant that "home room(s)" constraints are by the word "home" meaning related to students sets and teachers.

you forgot the missing "home to activities".

Quote from: Liviu Lalescu on October 16, 2018, 11:54:20 AM
Even with activities home room(s) constraints you may get an impossible timetable if there are not enough home rooms. But this is not a good argument.

Yes, a bad argument, since that (very similar) argument is true for every constraint.

Quote from: Liviu Lalescu on October 16, 2018, 11:54:20 AM
But the problem is indeed there are many activities, and to add the same activity tag to each of them is indeed tedious.
Maybe we could think of a special function to add a special activity tag to each activity. But it seems so ugly.

both is sadly true.

Quote from: Liviu Lalescu on October 16, 2018, 11:54:20 AM
If the user wants to add a random room to each activity, he can add also preferred rooms as all the rooms of the timetable, and FET will assign the most constrained rooms to the needed activities (so it is not a problem to add "preferred room(s)" and not "home room(s)" for all the activities).

you are wrong in that point. it must be "home", it won't work with "preferred room(s)", because you can't care about special rooms good then.

example: i tag all activities with a special button (which is ugly, but fast).
"normal" activities should be in "normal" rooms (with "normal" tables and chairs)
So i will add home "normal" rooms, but not "special rooms" like the gym (no chairs), Art room (higher tables), Sience room (not all teachers are allowed to enter that room because of critical machines/engines).
So if a use  "preferred room(s)" i got a problem:
a) if i add the special rooms, then activities might end up in incorrect/impossible rooms
or
b) if i don't add the special rooms, then i can't add a special room constraint at the same time for special activities, because in that case the timetable will be impossible

So to care about that you need to tag only the "normal" activities, but not the "special" one. So again maybe pretty much work.

But if there is a "home room" constraint, then you won't have got problem a) nor problem b) not problem to do much manually work.

Liviu Lalescu

Quote from: Volker Dirr on October 16, 2018, 12:14:55 PM
you are wrong in that point. it must be "home", it won't work with "preferred room(s)", because you can't care about special rooms good then.

example: i tag all activities with a special button (which is ugly, but fast).
"normal" activities should be in "normal" rooms (with "normal" tables and chairs)
So i will add home "normal" rooms, but not "special rooms" like the gym (no chairs), Art room (higher tables), Sience room (not all teachers are allowed to enter that room because of critical machines/engines).
So if a use  "preferred room(s)" i got a problem:
a) if i add the special rooms, then activities might end up in incorrect/impossible rooms
or
b) if i don't add the special rooms, then i can't add a special room constraint at the same time for special activities, because in that case the timetable will be impossible

So to care about that you need to tag only the "normal" activities, but not the "special" one. So again maybe pretty much work.

But if there is a "home room" constraint, then you won't have got problem a) nor problem b) not problem to do much manually work.


Very hard to understand your words.

If I add preferred rooms for Physics and Chemistry to Lab1 and Lab2 and Lab3 and for all activities (including Physics and Chemistry) preferred rooms to all rooms it will work.

But in the past we discussed the problem of "activities preferred room(s)" and decided it is bad to make such a constraint, I cannot remember the place.

With "activities home room(s)", I mean associating the word "home" to "activities" is weird.

But why bothering to add such an unusual constraint? For me it is much nicer if the user adds activity tags to the activities and uses them. I prefer to keep the number of constraints to a minimum.

Volker Dirr

Quote from: Liviu Lalescu on October 16, 2018, 02:13:48 PM
If I add preferred rooms for Physics and Chemistry to Lab1 and Lab2 and Lab3 and for all activities (including Physics and Chemistry) preferred rooms to all rooms it will work.

No, i won't. Of course it will generate, but Physics and Chemistry might end up in a "normal" room, not in the lab.


But you are right. I remember disadvantages now.

My suggestion will be fine in the first moment and/or if you schedule unique workshops only.

But "normal" activities are split into several parts. So they might end up in different rooms. So it will be a very mess. You need to care about that by constraints again, but those constraints will be slow. But even with that constraints it won't be tidy. Still a bit mess.

So you are right: School and universities with split activities should think and select:
a) (shared) teacher home rooms (so for example the older/handicapped teachers don't need to change rooms)
or
b) (shared) students home rooms (so a lot of students don't need to move. That will keep corridors more empty (which might be even an advantage to protect against accidents)
or
c) (shared) subject prefered rooms (so you can do a much better favorable climate for learning if you prepare rooms for subjects)

of course you can also do a combination of ( a and c ) or ( b and c ). Only a combination of ( a and b ) is critical.

Each variant is much better than just a random selection. Students and/or teacher will have much more fun with learning than. It is much better than just putting them into a random room; that sounds like you don't care about them. Working and learning won't make so fun if you know that your administration staff don't care about you (students nor teachers).

If you have trouble to do one of that variants you should thing about doing it at least for most of the students and/or maybe the youngest students. So you can still do that random selection by tags with the last few activities if your dataset is too difficult.

Liviu Lalescu

Quote from: Volker Dirr on October 16, 2018, 03:56:31 PM
Quote from: Liviu Lalescu on October 16, 2018, 02:13:48 PM
If I add preferred rooms for Physics and Chemistry to Lab1 and Lab2 and Lab3 and for all activities (including Physics and Chemistry) preferred rooms to all rooms it will work.

No, i won't. Of course it will generate, but Physics and Chemistry might end up in a "normal" room, not in the lab.

Preferred rooms constraints:
100% Physics to Lab1, Lab2 or Lab3
100% Chemistry to Lab1, Lab2 or Lab3
100% all activities to all rooms.

Then Physics and Chemistry will end up in Lab1, Lab2 or Lab3. All the constraints are respected. I don't understand the problem.

Volker Dirr

Quote from: Liviu Lalescu on October 16, 2018, 04:18:10 PM
Preferred rooms constraints:
100% Physics to Lab1, Lab2 or Lab3
100% Chemistry to Lab1, Lab2 or Lab3
100% all activities to all rooms.

Then Physics and Chemistry will end up in Lab1, Lab2 or Lab3. All the constraints are respected. I don't understand the problem.

No, in that example you forgot that a "normal" activity (not a "special" like Physics) might end up in Physics room or the gym. So your suggestion is impossible for a school.

Liviu Lalescu

Quote from: Volker Dirr on October 16, 2018, 04:33:47 PM
Quote from: Liviu Lalescu on October 16, 2018, 04:18:10 PM
Preferred rooms constraints:
100% Physics to Lab1, Lab2 or Lab3
100% Chemistry to Lab1, Lab2 or Lab3
100% all activities to all rooms.

Then Physics and Chemistry will end up in Lab1, Lab2 or Lab3. All the constraints are respected. I don't understand the problem.

No, in that example you forgot that a "normal" activity (not a "special" like Physics) might end up in Physics room or the gym. So your suggestion is impossible for a school.

No, FET will try again and will continue to generate the timetable: displace the "normal" activities from the Labs and put the "special" activities in the Labs. You might want to try practically.

mimooh

Heh, not sure if you are talking to me or to each other, so not sure how deeply I should understand what you are saying in this thread :) Since I will do scripting it's not at all a problem for me to add hundreds of tags or add to each activity a list of all of my rooms. I would just like to know what I should put and where. So I am not asking you for a button/function doing all this. You know, I feel uncomfortable asking you for more than you have already given to the community. I really, really, but really, really appreciate that.

mimooh

And it's not at all, that I won't have 2 or 3 preffered rooms for most of my activities! Of course there are tons of rules for preferable rooms for given subjects, like computer science classes, or this or that laboratory and I will probably handle that. But say math excercises can be in any of 30 or 100 rooms. So I am asking is there a preffered approach for assigning 100 rooms in FET.

Liviu Lalescu

Quote from: mimooh on October 16, 2018, 04:47:48 PM
Heh, not sure if you are talking to me or to each other, so not sure how deeply I should understand what you are saying in this thread :) Since I will do scripting it's not at all a problem for me to add hundreds of tags or add to each activity a list of all of my rooms. I would just like to know what I should put and where. So I am not asking you for a button/function doing all this. You know, I feel uncomfortable asking you for more than you have already given to the community. I really, really, but really, really appreciate that.

No problem :)  We were talking to each other, but in a way so that other users can see and write.

Quote from: mimooh on October 16, 2018, 04:52:06 PM
And it's not at all, that I won't have 2 or 3 preffered rooms for most of my activities! Of course there are tons of rules for preferable rooms for given subjects, like computer science classes, or this or that laboratory and I will probably handle that. But say math excercises can be in any of 30 or 100 rooms. So I am asking is there a preffered approach for assigning 100 rooms in FET.

It is best to keep the .fet file as small as possible (so that the memory consumption is less. The speed of generation might be similar). This is done using activity tags and preferred rooms for subjects and/or activity tags.

Volker Dirr

Quote from: Liviu Lalescu on October 16, 2018, 04:44:29 PM
No, FET will try again and will continue to generate the timetable: displace the "normal" activities from the Labs and put the "special" activities in the Labs. You might want to try practically.

Wrong. You misunderstood the problem. I tried practically and your idea doesn't work (only in special case, but not in general)

of course you can do it you way, but ONLY if you do different constraints for normal AND special rooms.

the suggestion was to simplify the problem by one of this tricks:
add a single constraint for all activities AND special room.

But that is currently impossible, because there is no "home" room constraint. So you will end up in one of this problems:
a) it is impossible to generate at all (if "all" activities got only "normal" rooms.
b) "normal" rooms might end up in special rooms (if "all" activities" got "all rooms")