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

Thank you for your report!

It is useful one or more sets with >= 2 real rooms in them. Maybe the user wants an activity into two rooms: R1 and (any of R2 or R3).

Liviu Lalescu


math

Hi Liviu!

It's amazing how well the virtual room feature is already working. Excellent work! And thanks for the new version. I played around quite a lot with today's version and did not find that much. Basically it's only just optical issues and a single technical question. Let's begin with that.

Attached you find a configuration file that has a tag that is linked to a virtual room. Two activities are using that tag, so that two rooms are assigned for these activities at schedule generation time. So far, so good.

Now I select "Space -> Activities -> An activity has a set of preferred rooms". Here I select the mentioned tagged activity, assigning a lecture room and a tutorial room (exam room). Theoretically, the lecture room could be assigned as room for set 1 of the virtual room, while the tutorial room suits the requirements of set 2. However, schedule generation fails. I guess you already explained the reason: FET tries to assign the preferred room as virtual room (and NOT the sets inside this virtual room). Hence, schedule generation fails.

Hoever, even if I select the virtual room inside this constraint dialog, the schedule generation fails. Shouldn't it succeed?

Moreover, it's strange that I'm able to specify the virtual room in that dialog, because it's a single room only. Doesn't this dialog require a minimum of two rooms?

Also surprising: when selecting "Space -> Activities -> An activity has a preferred room", I can only select real rooms (not virtual rooms). If FET maps virtual rooms to preferred rooms (this is how I understood you), why is this dialog reserved for real rooms only?


Now some optical issues:
- In the "Data -> Space -> Rooms" dialog you add a "V:" in front of virtual rooms, so that real rooms can be distinguised from virtual rooms. Unfortunately this differentiation is available in this dialog only. In all other roomlists the "V:" is missing, so the user has to know whether a room is real or virtual.
- When double clicking a virtual room in the "Data -> Space -> Rooms" dialog, the dialog "Modify room" pops up. Doesn't it make more sense to start the "Make/edit virtual room" dialog instead?
- "Data -> Space -> Rooms -> Modify room" allows specifying a building and a capacity for a virtual room. Does this make any sense? If it is required for scheduling, both values could be derived from the real rooms that have been allocated.
- When trying to save a virtual room with an empty set, the following error message is displayed: "The set of real rooms number 1 has no real rooms - incorrect, because each set must be nonvoid". I doubt that the regular user understands that message. "Error: sets must not be empty. Please specify at least one real room for set 1" is perhaps easier to understand.
- When removing a set in that dialog, the set is deleted without any confirmation message. So it's quite easy to remove a set by mistake. Shouldn't there be some "Are you sure to remove that set? Yes/No" kind of thing?
- When removing set 1 in that dialog, the old set 2 becomes the new set 1. So the optical impression is that the user deleted the last set (by mistake) instead of the first set. Is it necessary to reorder the sets? Is the number of the set saved somewhere? Or is it just a list of elements, where set 1 is the first element of the list?


And most important: I still think that is is a very very very bad idea to specify both real rooms and virtual rooms in a single dialog. I still recommend to leave the room dialog as it was in the previous version, adding a "virtual room" dialog in addition. From the programming perspective this does not require any modifications in the data structures, because these two dialogs could work on the same data set, only just not on the entire data set but parts of it.

For the regular user this has the advantage, that she does not have to learn anything new and everything looks familiar. The new functionality is capsuled in a new dialog, so it's a clear cutting line between old and new.


That's it for today, bed is calling me. :)

Nagendra

Quote from: Liviu Lalescu on September 25, 2019, 10:30:05 PM
I added a new snapshot.

Maybe you can think to extend the virtual rooms feature to virtual activities. A virtual activity contains 2 or more real activities. This way 2 or more activities can be scheduled in one room (eg: something like a big hall)

Liviu Lalescu

Quote from: Nagendra on September 26, 2019, 05:29:06 AM
Maybe you can think to extend the virtual rooms feature to virtual activities. A virtual activity contains 2 or more real activities. This way 2 or more activities can be scheduled in one room (eg: something like a big hall)

I think too complicated and unnecessarily. You could add more rooms to represent a big hall.

Liviu Lalescu

Hello, math, and thank you for the very detailed report!

Quote from: math on September 25, 2019, 10:55:52 PM
It's amazing how well the virtual room feature is already working. Excellent work! And thanks for the new version. I played around quite a lot with today's version and did not find that much. Basically it's only just optical issues and a single technical question. Let's begin with that.

Attached you find a configuration file that has a tag that is linked to a virtual room. Two activities are using that tag, so that two rooms are assigned for these activities at schedule generation time. So far, so good.

Now I select "Space -> Activities -> An activity has a set of preferred rooms". Here I select the mentioned tagged activity, assigning a lecture room and a tutorial room (exam room). Theoretically, the lecture room could be assigned as room for set 1 of the virtual room, while the tutorial room suits the requirements of set 2. However, schedule generation fails. I guess you already explained the reason: FET tries to assign the preferred room as virtual room (and NOT the sets inside this virtual room). Hence, schedule generation fails.

Indeed.

Quote
Hoever, even if I select the virtual room inside this constraint dialog, the schedule generation fails. Shouldn't it succeed?

I tried and it solves. See the attached file.


Quote
Moreover, it's strange that I'm able to specify the virtual room in that dialog, because it's a single room only. Doesn't this dialog require a minimum of two rooms?

I don't understand. In the "activity preferred rooms" dialog you can add any number of rooms and FET will choose only one in the generation.


Quote
Also surprising: when selecting "Space -> Activities -> An activity has a preferred room", I can only select real rooms (not virtual rooms). If FET maps virtual rooms to preferred rooms (this is how I understood you), why is this dialog reserved for real rooms only?



You select the room from the combo box on the left. If that room is virtual, you can select also the real rooms from the list box on the right if you want, but in this case the weight must be 100% and the number of real rooms should be the same as the number of sets in the virtual room.


Quote
Now some optical issues:
- In the "Data -> Space -> Rooms" dialog you add a "V:" in front of virtual rooms, so that real rooms can be distinguised from virtual rooms. Unfortunately this differentiation is available in this dialog only. In all other roomlists the "V:" is missing, so the user has to know whether a room is real or virtual.

Sorry, feature not bug :(  . Too difficult to change now.

Quote
- When double clicking a virtual room in the "Data -> Space -> Rooms" dialog, the dialog "Modify room" pops up. Doesn't it make more sense to start the "Make/edit virtual room" dialog instead?
- "Data -> Space -> Rooms -> Modify room" allows specifying a building and a capacity for a virtual room. Does this make any sense? If it is required for scheduling, both values could be derived from the real rooms that have been allocated.

Sorry, feature not bug :(  . Read the Help in the Make/edit virtual room. The building and the capacity accepted for an activity are those of the virtual room, not those of the chosen real rooms.

Quote
- When trying to save a virtual room with an empty set, the following error message is displayed: "The set of real rooms number 1 has no real rooms - incorrect, because each set must be nonvoid". I doubt that the regular user understands that message. "Error: sets must not be empty. Please specify at least one real room for set 1" is perhaps easier to understand.

Hmm, sorry, I already asked the translators to translate. I'll think about it.

Quote
- When removing a set in that dialog, the set is deleted without any confirmation message. So it's quite easy to remove a set by mistake. Shouldn't there be some "Are you sure to remove that set? Yes/No" kind of thing?

Also you can double-click a real room without confirmation. I am not sure. You could press "Esc" or "Cancel" if you removed a set by mistake, and start over with that virtual room.

Quote
- When removing set 1 in that dialog, the old set 2 becomes the new set 1. So the optical impression is that the user deleted the last set (by mistake) instead of the first set. Is it necessary to reorder the sets? Is the number of the set saved somewhere? Or is it just a list of elements, where set 1 is the first element of the list?

I wrote about this in the Help button.

I could write "Set", "Set", ..., "Set", but I think numbers will help more than disturb.


Quote
And most important: I still think that is is a very very very bad idea to specify both real rooms and virtual rooms in a single dialog. I still recommend to leave the room dialog as it was in the previous version, adding a "virtual room" dialog in addition. From the programming perspective this does not require any modifications in the data structures, because these two dialogs could work on the same data set, only just not on the entire data set but parts of it.

For the regular user this has the advantage, that she does not have to learn anything new and everything looks familiar. The new functionality is capsuled in a new dialog, so it's a clear cutting line between old and new.

I prefer my way, because virtual rooms are nothing but rooms in the generation. I'll think about it.

Nagendra

Some improvements:

1) If there are 4 sets with one real room (capacity of each real room:30) in each set. If an activity with 90 students needs to be scheduled then the present form of virtual rooms "allot" all 4 real rooms (example attached) whereas only three real rooms are sufficient to cater to 60 90 students.

If only three real rooms are allotted then the fourth real room can be utilized for another activity with 30 students.

2) Virtual room capacity should be variable based on the capacity of real rooms in it. User shouldn't be asked to specify it.

Liviu Lalescu

Thank you, but unfortunately both (1) and (2) are too difficult for me.

Nagendra

Hmm....

(1) can be handled by the below trick though
1) VR-2 (Virtual room-2) will have 2 sets
2) VR-3 (Virtual room-3) will have 3 sets
.
.
.
VR-infinity :P

(2) need to look for a trick...

math

Hi Liviu!

QuoteHoever, even if I select the virtual room inside this constraint dialog, the schedule generation fails. Shouldn't it succeed?
I tried and it solves. See the attached file.

Don't know what I did yesterday. Now it's working on my side as well

QuoteAlso you can double-click a real room without confirmation. I am not sure. You could press "Esc" or "Cancel" if you removed a set by mistake, and start over with that virtual room.

I don't think that sets and rooms can be compared in this context. If I'm double clicking a room by mistake, I can revert this mistake by clicking on the same room again. If I'm deleting a set, all the specified rooms inside the set are deleted as well. So it's more difficult to revert the error. At the end it's your decision, but I wouldn't mind a confirmation message.

QuoteI wrote about this in the Help button.
I could write "Set", "Set", ..., "Set", but I think numbers will help more than disturb.

The help text did not answer my question. I asked whether a set has an id in the internal data structures or if it's just a list (so that number 2 gets automatically number 1 as soon as the old number 1 is deleted.

QuoteI prefer my way, because virtual rooms are nothing but rooms in the generation. I'll think about it.

I know that virtual rooms are nothing but regular rooms (and that this was the beauty that attracted your attention). But that is your developer's perspective. The regular user does not know internals, so that regular rooms are regular rooms and virtual rooms are virtual rooms. I guess the average user will never work with virtual rooms, so having two different dialogs would reduce the complexity of the room dialog. But again, it's entirely your decision.

Liviu Lalescu

Quote from: math on September 26, 2019, 06:40:08 PM
I don't think that sets and rooms can be compared in this context. If I'm double clicking a room by mistake, I can revert this mistake by clicking on the same room again. If I'm deleting a set, all the specified rooms inside the set are deleted as well. So it's more difficult to revert the error. At the end it's your decision, but I wouldn't mind a confirmation message.

OK, your way is better. I added a confirmation here. I added a new snapshot ( https://lalescu.ro/liviu/fet/download/test/ ).

Quote
The help text did not answer my question. I asked whether a set has an id in the internal data structures or if it's just a list (so that number 2 gets automatically number 1 as soon as the old number 1 is deleted.

No id, just a list. I added an explanation when you remove a set (in the confirmation, see above).

Quote
I know that virtual rooms are nothing but regular rooms (and that this was the beauty that attracted your attention). But that is your developer's perspective. The regular user does not know internals, so that regular rooms are regular rooms and virtual rooms are virtual rooms. I guess the average user will never work with virtual rooms, so having two different dialogs would reduce the complexity of the room dialog. But again, it's entirely your decision.

I am sorry to disagree with you here. But I will think about it and wait to see also what other users say.

Liviu Lalescu

I added a new snapshot, with a rare but important crash bug fix. There is a file to prove that in the downloads directory ( https://lalescu.ro/liviu/fet/download/test/crash-file-solved-on-2019-09-27/k.fet ).

Link, as usual: https://lalescu.ro/liviu/fet/download/test/

Liviu Lalescu

There is something interesting about finding a random bipartite matching in the graph:

Consider the example S1 (R1, R2), S2 (R2, R3, R4).

If you draw the graph with the rooms on the left and the sets on the right, the probabilities are: (R1, R2), (R1, R3), and (R1, R4) - 20.83%, (R2, R3) and (R2, R4) - 18.75%.

If you draw the graph with the rooms on the right and the sets on the left, the probabilities are: (R1, R2) - 25%, (R1, R3) and (R1, R4) - 16.67%, (R2, R3) and (R2, R4) - 20.83%.

(I mean I am applying a kind of randomization of the Hopcroft-Karp algorithm on this graph).

I am using the first variant. I am not sure how to ensure that the matching will be "random enough". I hope in practice my simple randomization will work (the randomization means the order of the rooms on the left considered in the algorithm is random and the adjacency of these rooms will also have a random order).

Maybe you can help me with ideas.

Liviu Lalescu

I added a new snapshot, making things a bit faster in some situations.

The same link: https://lalescu.ro/liviu/fet/download/test/

math

Sorry, I did not understand your previous posting regarding the differences in percentages (probabilities?) of sets. But maybe it's more a reminder for yourself than an information for us. Right? ;)

Thanks for the new versions, but I'm not quite sure if I find the time for testing before Monday. It's quite a busy weekend...