When I enter preferred rooms for a certain activity tag, then the rooms are assigned randomly, correct?
As the students can choose subjects, I have lots of activities with different numbers of participants (and also lots of rooms with different size/capacity).
It would be nice to have a possibility to assign rooms to an activity tag, where an activity gets the "next larger" room available.
So start with the smallest activity/activities and assign a room that has this capacity or a bit more. Then continue with the next larger activity until the largest one.
This would prevent small activities from being in very big rooms.
It would be great if components / subactivities always get the same room (option).
I am not sure now if it would be really difficult to implement the exact suggestion in FET, but it sure "feels" difficult.
You might want to add preferred activity tag for all the accepted rooms with 100% and for smaller rooms with say 80% (or more or less).
For your second request, you have the constraint activities occupy max 1 different rooms.
ah... why not using the room capacity feature?
of course it randomly choose, but it choose only rooms w3ith needed size.
of course it might happen that an activity will get a "too large" room, but where is the problem? The room isn't used. if FET need it, it will kick the activity out of the room and select an other one.
of course at the end you still might habe "too large" rooms, but where is the problem, the room is free and not needed by an other activity.
Thank you for your answers!
So I might introduce an activity tag "small rooms" if an activity has only a few participants to prevent it from being in a very large room.
Quoteof course it might happen that an activity will get a "too large" room, but where is the problem?
It is a problem for me (maybe not for other people), if say 15 students are in a room with capacity 60 (which could happen in our setting).
QuoteFor your second request, you have the constraint activities occupy max 1 different rooms.
Yes, that is exactly how I have solved it. But I have to enter a condition for each activity (lots of conditions). Therefore a (global) setting "same room for all components of an activity" would be nice.
Quote from: math user on July 09, 2016, 02:51:13 PM
QuoteFor your second request, you have the constraint activities occupy max 1 different rooms.
Yes, that is exactly how I have solved it. But I have to enter a condition for each activity (lots of conditions). Therefore a (global) setting "same room for all components of an activity" would be nice.
I think I will add this in the TODO. But I don't like it.
I could further improve your custom version to add this just for you, if you want. I will then think about adding this to the official version.
Thank you for your immediate reply, Liviu!
QuoteBut I don't like it.
I could further improve your custom version to add this just for you, if you want.
It would be useful for me. But just if it does not take too much of your time!
can you please explain one more time why it is needed? At the end you still have got as many emty rooms as before. The number of empty rooms won't change by your request. It will stay the same. And if you work with 100% weights only all students will got a place in the room. It will never happen that they have got a too small room. So why do you need it? If you want to change that, why don't you simply place the activity into the smaller one at the end?
Your request mustn't be added into the algoithm. If you read carefully you will notice that your request is only a tidy up at the end as soon you fully generated the timetable. It will be tricky to implement it while generating, because if an activity is unalloceted, it mean you "need" to replace all rooms. that will need (a lot of) time whole generating. If there is such a "tidy up" after generating the timetable, then generating won't slow down. (but i still can't get the advantage, since the number of empty rooms won't change)
Quote from: math user on July 09, 2016, 03:04:15 PM
QuoteI could further improve your custom version to add this just for you, if you want.
It would be useful for me. But just if it does not take too much of your time!
I added it, on http://lalescu.ro/liviu/fet/download/custom/math-user/
Please let me know if it works as expected. Please test a bit, I did not test thoroughly.
i didn't checked it yet. do you sort while generating or after generating?
if while generating: can anyone do a benchmark (generate the same dataset MANY times and compare speed)
Quote from: Volker Dirr on July 09, 2016, 09:13:40 PM
i didn't checked it yet. do you sort while generating or after generating?
if while generating: can anyone do a benchmark (generate the same dataset MANY times and compare speed)
I think you misunderstood. I just added a function to add constraints activities occupy max 1 different rooms for subactivities from the same component. It is done once before generating.
ah. ok.
@ Liviu:
Thanks a lot for your extra work, Liviu!
I will test it when I have faster Internet access to download the new version.
@ Volker:
Of course the timetable "works" - no technical problem.
But if say 10 students are in a room that can host 100 students, then my colleagues think I am crazy (lost in space ...).
I will solve the problem with an activity tag "small rooms" where I only enter the smaller rooms for activities that do not have many students.
I just thought that a feature of automatically assigning rooms that are only a bit larger than needed, would be nice. But apparently, I am the only one that finds this useful / necessary ...
Quote from: math user on July 11, 2016, 07:53:21 PM
@ Volker:
Of course the timetable "works" - no technical problem.
But if say 10 students are in a room that can host 100 students, then my colleagues think I am crazy (lost in space ...).
I will solve the problem with an activity tag "small rooms" where I only enter the smaller rooms for activities that do not have many students.
I just thought that a feature of automatically assigning rooms that are only a bit larger than needed, would be nice. But apparently, I am the only one that finds this useful / necessary ...
No, you are not the only one, sorry. I think others suggested this.
The problem is that things are not so easy as they appear. The program needs to have a weight for each constraint and choose to obey it or skip it. So you might want to add for a group of 10 students a 100% for Physical Education in all rooms and another constraint 80% (choose this 80% practically by trial and error) for small rooms. This is how FET works.
Think of min days between activities constraints. They have 95% or 100%. They can be either satisfied or skipped.
Quote from: math user on July 11, 2016, 07:53:21 PM
Of course the timetable "works" - no technical problem.
But if say 10 students are in a room that can host 100 students, then my colleagues think I am crazy (lost in space ...).
I will solve the problem with an activity tag "small rooms" where I only enter the smaller rooms for activities that do not have many students.
i fear that isn't a good idea. why? because you might get impossible timetables by that. i think only a tidy up at the end is needed/usefull. it is bad to do it before generating with tags, because you might loose possible solutions. and it is bad to do that while generating, because it will slow down without any other advantage. tidy up at the end shouldn't be to difficult, it won't make a timetable impossible and it won't slow down generating the timetable.
Thank you for your answers.
I first lock the times of all activities. Then I proceed to the rooms. If the timetable is impossible, I could deactivate the restriction with the tag "small rooms". That is sort of "tidy up at the end", isn't it?
Or what do you mean by it exactly, Volker? How do you proceed?
I am at school, not university. so all rooms have very similar size.
Yes, you can try your variant with tagging small rooms and deactivate the constraint. as soon as you generated it, load the solution and activate that constraint (in "worst case" with weight less then 100%).
My "tidy up" was more a suggestion for FETs' TODO list. Because it might tidy up much better your suggested workaround.
QuoteMy "tidy up" was more a suggestion for FETs' TODO list. Because it might tidy up much better your suggested workaround.
That sounds very good!
Sort of "Do you want FET to move activities to smaller rooms if possible?" after generating a timetable? That would be great! Maybe just add 20% of "extra space" (optional), i.e. move an activity with 30 students from a room with capacity 100 to a room with say 40 places (more than 30*1.2=36 places), but NOT to a room with only 31 places (as the number of students might change during the semester).
I fixed a bug reported by math user and I released a new version, with the same name (which is unusual and not very correct), in the same location: http://lalescu.ro/liviu/fet/download/custom/math-user/
Your idea about "just add an 20% extra space" sounds fine in the first moment. but there is a "problem". FET might already set rooms that doesn't have got that "extra space". So FET also need to select a larger room at the end? So a timetable might be suddenly impossible?!
I think the correct way is to care about that "extra space" already before generating.
QuoteI think the correct way is to care about that "extra space" already before generating.
Yes, Volker!