Assigning multiple small rooms or one large room

Started by math, August 29, 2019, 09:18:30 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Liviu Lalescu

Quote
Secondly, I don't think that the room dialog is very intuitive:

Sorry, I am bad at interfaces  :)

Quote
- In listbox I cannot distinguish between real rooms and virtual rooms. Would it be possible to make the virtual entries appear in italic font or to add something to their name (e.g. "(virtual)")?

I will do this: "Room1", "VR: Room2" (begin with "VR: ").

Quote
- for creating a virtual room, I first have to create a regular room, then making it virtual in the second step. Why not adding virtual rooms in the first place?

Because most users will not use virtual rooms, and for simplicity. And because I am bad at interfaces.

Quote
- when double-clicking a virtual room, the regular room dialog shows up where I can specify a building and a capacity. What relevance does this have in the context of virtual rooms? Since a virtual room encompasses multiple rooms, it does have multiple capacity values and may also spread over multiple buildings.

It has a specified building which will be used in the buildings constraints. Also the capacity - each activity which is put into this virtual room must have the number of students less or equal to the room capacity. Unfortunately, the capacity of the real rooms will be neglected in this case.

Quote
- wouldn't it make more sense to start the "make/edit virtual room" dialog when double-clicking?

See above.

Quote
- it seems as if virtual rooms can consist of real rooms only, i.e. FET does not support nesting of virtual rooms. However it is possible to add a real R1 room to a virtual room VR2, making that real room R1 virtual afterwards. This way VR2 consists of another virtual room.
(at least, FET complains about this when generating a new schedule.)

:)

Thank you for this bug report! What a tricky thing you thought!  :)  I will fix it (disallow making a real room virtual if it is in the real rooms sets of a virtual room).

Quote
Moreover, it is possible to specify "room not available times" for a virtual room. Does this make sense?

Yes, it will be an overall constraint. See also the building and capacity problems above.

Quote
Generating a schedule worked like a charm. I specified a virtual room which consists of two sets. When scheduling to this virtual room, FET allocates a real room for each set. In the student and teacher timetables there's no information about the real rooms but only the virtual room. However it should be easy to output both, e.g. "VR2 (R10, R15)" (allocated real rooms R10 and R15 representing virtual room VR2).

Yes, it is easy. I will do this. However, I need also Volker's help in the Print dialog and in the outputting of the HTML timetables (and exporting the timetable as CSV?)

Unfortunately, the locking is bad. The activity will be locked to the virtual room, but not to each real room of this virtual room as needed. If you generate again, you might get other real rooms for this virtual room.

This topic started due to your problem that you want to allocate a virtual room (with three sets of one room each?) or a real room to an activity. Is this problem solved?

math

QuoteThis topic started due to your problem that you want to allocate a virtual room (with three sets of one room each?) or a real room to an activity. Is this problem solved?

It's working like a charm. I don't need any more christmas presents this year.

Thanks a lot!

Liviu Lalescu

Thank you for your very valuable suggestions which made this possible!

I thought about it. If we don't risk, we don't get progress. I also risked much in the past on the new FET features. So I think I will add this to the official FET, the future 5.40.0. It should stay in a prerelease state for some time, though.

I corrected the above minor bugs. Now me and Volker need to unite our efforts to output the real rooms of a virtual room in the HTML timetables, in the XML timetables, in the CSV timetables, and in the Print dialog. Also, we need to update the import/export for the rooms (to allow virtual rooms).

math

Adding such a feature is definitely a risk. I guess it will take some time until all bugs are found and all inconsistencies have been solved. Thanks a lot for providing us with such a powerful tool. From my work at our university I know other commercial planning tools which have a nicer interface, but which do not even come close to the featureset of FET.

I would like to continue testing the new feature, so I would appreciate if you could update the snapshot. But don't hurry, nobody's pushing you.


There's one thing that I noticed:
I'm using tags for assigning rooms, as you suggested some months ago. So I have a tag "150+P", saying "this is a lecture for 150+ students". Then I used "Space -> Tags -> An activity tag has a set of preferred rooms" for specifying preferred rooms for activities with this tag.
Now I'm able to select virtual rooms here. Assuming I have a virtual room with two sets, FET allocates a room for each set, so that multiple rooms are allocated for an activity with this set. This is working like a charm, as I already stated.

Now the thing: If I take this tagged activity, I'm able to specify "Space -> Activities -> An activity has a preferred room" (resp. a set of preferred rooms). I'm not quite sure how to understand that constraint in the context of virtual rooms.

Up to now it was easy: If I'm tagging an activity and specify this constraint, a room is allocated that is both listed as preferred for the tag and the activity.

I guess the meaning of this constraint is still the same. So if I'm specifying a preferred room for such an activity, FET tries to use this room for all sets of the virtual room. As a matter of fact, this is impossible since a room cannot be allocated by multiple sets at the same time. Unsurprisingly, generating a schedule fails, but the error message is kind of confusing: "Cannot generate timetable, because for activity with id==20 you have no allowed preferred room (from preferred room(s) constraints)." Would it be possible to change that error message in a way that the user knows where to look for the problem? Example: "Cannot generate timetable, because for activity with id==20 you defined more sets in virtual rooms than you allowed as preferred room (from preferred room(s) constraints)."


And another question, just for curiosity: in the FET-News section I can see that you did not increase the major version of FET during the last 10 years. Following that logic, you started the FET development about 50 years ago.  ;)
So when did you actually start with FET? Has there ever been a version 4?

Liviu Lalescu

Quote from: math on September 20, 2019, 06:03:45 PM
I guess the meaning of this constraint is still the same. So if I'm specifying a preferred room for such an activity, FET tries to use this room for all sets of the virtual room. As a matter of fact, this is impossible since a room cannot be allocated by multiple sets at the same time. Unsurprisingly, generating a schedule fails, but the error message is kind of confusing: "Cannot generate timetable, because for activity with id==20 you have no allowed preferred room (from preferred room(s) constraints)." Would it be possible to change that error message in a way that the user knows where to look for the problem? Example: "Cannot generate timetable, because for activity with id==20 you defined more sets in virtual rooms than you allowed as preferred room (from preferred room(s) constraints)."

Good thing you observed this.

1) Each activity has some preferred rooms items. It does not matter if a room is virtual or real. They are treated the same. The intersection of the preferred rooms items must not be void. In your case it is void: one item is the virtual activity, one item is the real activity. I cannot improve the error message, unfortunately. Luckily it reports impossibility in a real case.

2) If the user had a virtual room VR ((R1, R2, R3)) and preferred room for A to VR and another preferred room for A to R1, FET would report again impossible, even if VR has a single set and the timetable is possible, theoretically. Because VR is different from R1, in FET. So, I just made an assertion that each virtual room has at least two sets (otherwise you could use directly preferred rooms constraints, isn't it? - please confirm this, it is important - I am tired, I might be wrong).

Quote
And another question, just for curiosity: in the FET-News section I can see that you did not increase the major version of FET during the last 10 years. Following that logic, you started the FET development about 50 years ago.  ;)
So when did you actually start with FET? Has there ever been a version 4?

:)

Please see:

1) Documentation page of FET homepage, History.

2) FET package - ChangeLog file (without dates, unfortunately).

Are you suggesting now FET-6.0.0?  :)  I would like, but the changes are not so important. FET-5 means good algorithm, FET<5 was using the genetic algorithm, which was very bad.

I will post at least each day I work a new snapshot (in fact just did, but I will now make some more changes and update a bit later a new snapshot).

Liviu Lalescu

#65
I have updated to FET-5.40.0-snapshot - your virtual rooms are now official. I hope no critical things will show up.

I have also compiled it for Windows. And I have good news: it takes the same time as FET-5.39.0 on my test. I don't know why on GNU/Linux it is a bit slower.

The link: https://lalescu.ro/liviu/Backup-fet/  , for now.

I added the real rooms in the Timetable view dialogs (if the activity is scheduled in a virtual room), please verify me.

Also please verify my text I have put in the Rooms->Help and Make/edit virtual->Help. Please make suggestions, if you want.

I think that in the Make/edit virtual dialog, instead of "Insert", I should write "Add". What do you think?

We did a good job!  :)

math

QuoteIf the user had a virtual room VR ((R1, R2, R3)) and preferred room for A to VR and another preferred room for A to R1, FET would report again impossible, even if VR has a single set and the timetable is possible, theoretically. Because VR is different from R1, in FET. So, I just made an assertion that each virtual room has at least two sets (otherwise you could use directly preferred rooms constraints, isn't it? - please confirm this, it is important - I am tired, I might be wrong).

I understand the problem: scheduling fails because there is no intersection set between VR and R1 - even though R1 is part of VR - because VR is handled as a room, not resolving the real rooms within the sets.  I think that this way of handling virtual rooms definitely makes sense.


QuoteAre you suggesting now FET-6.0.0?

Not really. I was curious. 5.40.0 is perfectly fine for me.  :)

Volker Dirr

#67
Just two questions to other users, since Liviu and me disagree:

a) In the interface the virtual room AND real room might be useful, since the timetable maker might need to hunt bugs. The critical stuff is that it might be too much information, the interface might be to full. So is it needed to enable/disable them (both)?

b) What about the html files for teachers and students. Teachers and students don't know where to go if they see a virtual room. So they need to know the real room. So we must print the real room of course.
But what about the virtual room. Is there any reason to print also the virtual room? In my opinion it is just very critical and wasting space. FET users already complained right now that the timetables doesn't fit on a paper. So why printing the virtual room name into the html timetable? Is there any reason why a teacher or a student needs to know the virtual room name if he can already see the real room names? Isn't that just wasting space and confusing fet users, teachers and students since the same virtual room might end up in different real rooms?! So I also fear students and teacher might run into the wrong room if they only quick read the virtual room name.

Liviu Lalescu

My proposal is to have a check box, Print virtual rooms in HTML timetables, active by default. This is in my opinion logical. If the user does not want to see virtual rooms, he can simply disable that check box. But the preferred room(s) constraints in FET relate to the virtual room(s), not to the chosen sets of real rooms for that virtual room.

Volker Dirr

#69
i must admit that i don't like that proposal, since:
a) Most users are not experts. many won't find the checkbox. just read this forum, we help them already now many times, even similar stuff is written in the manual. it is just complicating things. if, then it should be disabled by default.
b) i can't see a single reason why the virtual room name should be useful for a teacher or a student. it will confuse them. i can tell you that even with real rooms only some students and some teachers are already confused today if they have got for example physics one time on room A and the other day in room B. Printing virtual room names with the same name but in fact different rooms will confuse them (and others) much more. i highly suggest to not print virtual room names. only real room names.
c) i also fear of the space problem of the paper, just check how many guys ask because printing problems in this forum. we only need to help more guys to disable an needed feature. it is unneeded work (the coding of printing the virtual room name and the help for disabling an unneeded feature.)

Liviu Lalescu

My arguments are that users may use in other ways the virtual rooms. And that they might want to see the virtual room. And that FET will not retain the real rooms in a generation on a locked file, which might puzzle the users.

Volker Dirr

I don't understand. What other ways?

The "And that FET will not retain the real rooms in a generation on a locked file, which might puzzle the users." is a second other big problem of the current solution. Other school administration software that tries to load a fet file can't restore the real rooms. So for example TiTiTo and other tools will only get a virtual room, not the real room. So teachers and students don't know where to go :-(

Liviu Lalescu

If they want to have for instance virtual rooms representing real rooms. Or other ways in which the user wants to see the virtual room.

Yes, this is a problem. I will think of it, but it is very difficult. If I cannot solve it, the users should avoid virtual rooms or use both the .fet file and the activities.xml file. It is above my possibilities for now  :(


Volker Dirr

but in that case the real rooms are already printed. So you will print the same name 2 times. That is only wasting space.

Liviu Lalescu

No, because the virtual room (corresponding to a real-life room) contains more sets of rooms (which say might be uninteresting).