Main Menu

Overlapping groups

Started by stappix, November 14, 2021, 12:55:50 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

stappix

At our university, we have:
o lectures, where all students of a semester attend, and
o practicals (e. g.) where students of a semester are divided into smaller groups. Sometimes 2 groups, sometimes 4 groups etc.

So I created a "Year" (e. g. SEM1) for each semester, and acoording groups:
SEM1-2.1, SEM1.2.2
SEM1-3.1, SEM1-3.2, SEM1- 3.3
SEM1-4.1 ... SEM1-4.4
... and so on, up to SEM1-8.1 ... SEM1-8.8

Now, suppose we have 4 students: Alice, Bob, Chris and Donald. Students are assigned to groups alphabetically, i. e.:
Alice + Bob are in group SEM1-2.1
Chris and Donald are in group SEM1-2.2
But also:
Alice is in group 4.1 (and also 3.1, 5.1, ...)
Bob is group 4.2
Chris is in group 4.3
Donald is in group 4.4.

From FET's point of view, these groups are all independent. Therefore, it might, e. g., place a "SEM1-2.1"-Activity in parallel with a "SEM1.4.1"-Activity. But that's not possible, because Alice cannot attend both Atctivities at the same time.

To avoid this, I create a lot of "Activities not overlapping" constraints:
o Collect all "SEM1-2.1" Activities plus all "SEM1.4.1" Activities and create a "not overlapping" constraint.
o Collect all "SEM1-2.1" Activities plus all "SEM1.4.2" Activities and create a "not overlapping" constraint.
o ... and so on, with all possible combinations.

Anyway, it's working fine this way. Timetable generation is a matter of minutes or even seconds.
However, I'm just wondering: Is there a more elegant way to do this?

Liviu Lalescu

Hello and welcome to the forum!  :)

Of course there is a more elegant way to do this:

1) Add Alice, Bob, Chris, and Donald as subgroups, and add them individually to each group, using "Add existing", so you don't have to write their name more times, just double-click,

or

2) Divide year SEM1 automatically by categories. You can select 8 categories, and category i will have i divisions. But this will make 8!=40320 groups, which is too much and very inefficient. So please use (1). Or read some more about dividing years automatically by categories in FET's help.

stappix

That was quick!  :)

I must admit I didn't understand the concept of categories yet. I'm going to try harder...

About solution 1):
Activities are then still assigned to the groups, not the subgroups, correct?
Of course, we have more than 4 students, but if I understand correctly, I just need (up to) 8 dummy students (resp. subgroups) "A" to "H", and add them to the groups accordingly?

By the way: I noticed that the "Add existing" Button is only available in the latest version of FET. As I generate the .fet file automatically, I'm a bit careful with migrating to new versions. Did you change anything with the xml-format of the .fet file between versions 5.x and 6.x?



Liviu Lalescu

Quote from: stappix on November 14, 2021, 02:57:48 PM
That was quick!  :)

:)

Quote
I must admit I didn't understand the concept of categories yet. I'm going to try harder...

Example: 2 categories, 3 then 4 divisions each. X1,X2,X3 and Y1,Y2,Y3,Y4. Then FET will consider internally 12 subgroups X1_Y1 to X3_Y4. Group X2 will contain X2_Y1 to X2_Y4. You can consider X and Y as levels of language or mathematics or optionals of religion.

Quote
About solution 1):
Activities are then still assigned to the groups, not the subgroups, correct?
Of course, we have more than 4 students, but if I understand correctly, I just need (up to) 8 dummy students (resp. subgroups) "A" to "H", and add them to the groups accordingly?

I forgot about another solution: to import students from CSV. It might be faster than adding them from the interface. To see the structure of the file do an export of a small file.

You need to add each real-life non-empty (at least one real student in each) subgroup. I think only 8 subgroups is too little. I am not sure about your timetable data.

Quote
By the way: I noticed that the "Add existing" Button is only available in the latest version of FET. As I generate the .fet file automatically, I'm a bit careful with migrating to new versions. Did you change anything with the xml-format of the .fet file between versions 5.x and 6.x?

There are changes; you can always load an old file with FET-6.2.2, but you might not be able to open a FET-6.2.2 file with a much older FET. However, I would recommend you the latest FET version, it is much nicer.

But I think "Add existing" is in FET-5 last versions.

stappix

Tried it - works perfectly.
And the size of my .fet file is reduced by 20K  :).

Thanks a lot!

(I'll also switch to the newest FET version now...)

Regards,
  Friedhelm.

Liviu Lalescu

Great, Friedhelm,

I forgot to answer your question: Yes, activities are assigned to groups. Subgroups are for FET internals in your case (but you can use them in activities if you really want). Other institutions might use subgroups in activities, if the groups are not overlapping.

Liviu.