Multiple Layers of Subdividing Years, Groups, Subgroups...

Started by alex, September 09, 2014, 04:41:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

alex

Hello! I think that it would be very useful if FET could support more levels of subdividing the students sets. The version that I use (FET 5.18.0) supports only 3 "levels" of sets: Years, Groups and Subgroups. For example stuctures such as: Years, Groups, Subgroups, Sub-subgroups, Sub-sub-subgroups, etc, would simplify the formulation (description) of the problem during the data entering procedure (such as Activities, Teachers, Subjects, etc). And I think that simplifying the procedure would result in a more precise and easier entering of the school's data, and therefore a better "control" on the timetable generated. Thanks!

Liviu Lalescu

Unfortunately, it is too late to change now. Anyway, I hope you can do any desired operation with only 3 levels (in fact, even 2 levels would be enough).

alex

Oh! Do you mean that you should rewrite the code from the beginning? I don't have sufficient programming skills, but this is what I understood. Maybe you could add this option in the future. Something with equivalent usability for my school, would be an option for assigning different attributes to each set, according to the lesson. For example, in my school the groups are divided in different ways according to the lesson. Most of the time the groups exist in their conventional form (such as A1, A2, A3 for the first class of the high school and B1, B2, B3 for the second class, etc.). For the Informatics Lesson these groups are divided (splitted) in two parts, so some of the students are available for some attending other lessons. But, during the Theology lesson the group is splitted in a different way, because some students do not attend this lesson at all (the theology lesson is addressed to christians, while some students being muslims or atheists and therefore do not attend the Theology lesson). These students are available especially this hour and could easily attend another lesson addressed to individual students (such as piano or violin). I don't know if it is easy to assign different attributes (splittings) for the groups according to the lesson (subject) taught. Of course I can "fix" this "problem" by using simple mathematical thought and creating virtual subgroups with different attributes, but this is not the easiest way for somebody who isn't familiar with mathematical thinking. Thanks!

Liviu Lalescu

Yes, it would mean too many changes in the code.

But I still think you can use the current feature on three levels. You can divide the year by categories and add Theology hours to Christian group. This way, the non-Christian groups (and thus the non-Christian subgroups) will be free during Theology and they can have Musics lessons then.

alex

Yes, I could do this. The actual problem is that the same group (for example A1) is split in different ways according to the lesson. So, I need two subgroups for Informatics, an alternative splitting (of the same group) for Theology and another for Gym (since some students are available because of not participating in this lesson). All students who are free (from the above lessons) can have music lessons (as individual students). Mathematically and according to the available features of FET I should divide (split) the A1 group into 8 subgroups (2^3) in order to cover all possible combinations. And this should happen for virtually all groups of my school. If FET had the feature of splitting a group into multiple layers of subgroups, the "description" of the problem would be easier (or at least I think so).

Volker Dirr

#5
I am not 100% sure, but i think you are wrong at the Theology and Music explanation.
You don't need more subgroups for that.
Please check chapter "years, groups, subgroups"
http://www.timetabling.de/manual/FET-manual.en.html#id_12

So in your example it is easy:
"Theology and Music" is a category.
The category include 3 divisions "Christians", "Muslims" and "Music".

I am not 100% sure about the other things your wrote, because i need more information. I guess several of them are also normal categories.


PS:
In "worst" case you can use a subgroup as a "student name". then everything is possible (but it is much work to add if you can't export that information from your school administartion software.)

Liviu Lalescu

Quote from: alex on September 10, 2014, 11:57:47 AM
Yes, I could do this. The actual problem is that the same group (for example A1) is split in different ways according to the lesson. So, I need two subgroups for Informatics, an alternative splitting (of the same group) for Theology and another for Gym (since some students are available because of not participating in this lesson). All students who are free (from the above lessons) can have music lessons (as individual students). Mathematically and according to the available features of FET I should divide (split) the A1 group into 8 subgroups (2^3) in order to cover all possible combinations. And this should happen for virtually all groups of my school. If FET had the feature of splitting a group into multiple layers of subgroups, the "description" of the problem would be easier (or at least I think so).

It is correct. So, your last sentence, why do you say so? FET can do splitting of a group by categories. Just define a FET year to be a real group, and divide the FET year automatically.

Otherwise, could you tell me how you could use dividing into subsubgroups, for instance? Since I don't understand.

alex

I've already tried splitting "Years" into "Categories". This results in "Groups". The problem is that dividing a "Year" into "Categories", automatically generates "Subgroups" for each one of the divided-into-categories "Year", at least for the FET version that I use (5.18.0). As you'll see, I need the "Subgroup" division in order to assign the students' names as "Subgroups". Anyway, I'll take a closer look to the "Categories" option of dividing a "Year", or even better I'll try the last version. I'm going to describe what I did up until now, in order to have the option to assign the students' names as "Subgroups" and solve the problem:
The ultimate problem is that I need a timetable where each student has to be arranged to have a lesson as an individual with his/her teacher. This means that the music lessons are like "private" lessons; one teacher with one student. So, I thought that the "smallest" set of FET (subgroup) should be assigned to each student's name, in order to have this "detailed" form of timetable. Also, I assigned the groups (A1, A2, A3, B1, etc.) as "Years". They are not real "Years" but this simplified the problem. For some hours per week each group (A1, A2, etc) ("Year") has officially and regularly these music lessons (one teacher with one student). But, there are some more hours per week, with some of the students of each group ("Year" in FET) are available and can take these "private" music lessons. For example when the "Year" A1 attends an Informatics lesson, it is split into two subsets; the 1st half (subset) of A1 attends the lesson while the students of the 2nd half (subset) of A1 is... free! So, I could schedule some music lessons this hour for the 2nd subset of A1. For doing this, I assigned these subsets as "Groups" in FET, in order to achieve a clear description of the problem. Also, when A1 takes a Theology lesson some (few) students do not attend it, since they are Muslims (generally speaking, non-Christian students do not attend the Theology lesson). In the same way, these (few) students are "available" for attending "private" music lessons (one student with one teacher). In the same way when A1 takes its Gym lesson, some students, because of having problems with their health, do not participate in this lesson and therefore, are available for having "private" music lessons. The same happens with all Groups ("Years" in FET) in my school). For assigning each student of (let's say) A1 to a "Group" ("Group" is the only level of set subdivision left available under these conditions) I have to take care to "define" subsets ("Groups") according to the above attributes for each student. Let's say that I create the "Groups" (A1-Informatics-1 and A1-Informatics-2); I didn't create these "Groups" but let's assume that I did. The problem with this "grouping":
For example, a student of the 2nd half of the Informatics lesson of A1 (A1-Informatics-2), while being available (for having a "private" music lesson) when the 1st half of A1 attends Informatics (A1-Informatics-1), might not be available during the Gym lesson of A1(because he/she attends it), or a student of the 1st half of the Informatics lesson (A1-Informatics-1), while being available when A1-Informatics-2 takes the Informatics lesson, might not be available (for taking a "private" music lesson) when A1 takes the Theology lesson. I think that the solution is to create eight (8) subgroups ("Groups" for FET) for A1; A1-INF1-THE1-GYM1 (this is a "Group" where each one of the students of the A1-Informatics-1 "Group" attends Informatics during the Informatics lesson, Theology during the Theolory lesson and Gym during the Gym lesson, A1-INF1-THE1-GYM0 (this is a "Group" where each one of the students of the A1-Informatics-1 subset attends the Informatics Lesson, Theology during the Theology lesson, BUT does not attend the Gym lesson (for example for some health problems), etc. Totally, eight Groups are created (THESE ARE THE ACTUAL "GROUPS" I CREATED; A1-Informatics-1 and A1-Informatics-2, were not created!!)
A1-INF1-THE1-GYM1 (1st half of A1, all of its students attending Infromatics as well as both Theology and Gym)
A1-INF1-THE1-GYM0 (1st half of A1, all of its students attending Informatics as well as Theology but not Gym)
A1-INF1-THE0-GYM1 (1st half of A1, all of its students attending Informatics and Gym but not Theology)
A1-INF1-THE0-GYM0 (1st half of A1, all of its students attending just Informatics Theology but nor Gym, neither Theology)
A1-INF2-THE1-GYM1 (2nd half of A1, all of its students attending Infromatics as well as both Theology and Gym)
A1-INF2-THE1-GYM0 (2nd half of A1, all of its students attending Informatics as well as Theology but not Gym)
A1-INF2-THE0-GYM1 (2nd half of A1, all of its students attending Informatics and Gym but not Theology)
A1-INF2-THE0-GYM0 (2nd half of A1, all of its students attending just Informatics Theology but nor Gym, neither Theology).
After creating these "Groups" I can assign the following type of rules:
For exampe, if the 1st half of A1 attends the Informatics lesson, the students from A1-INF2-THE1-GYM1, A1-INF2-THE1-GYM0, A1-INF2-THE0-GYM1 and A1-INF2-THE0-GYM0 "Groups" are available for having "private" music lessons. When A1 attends the the Gym lesson, the students from A1-INF1-THE1-GYM0, A1-INF1-THE0-GYM0, A1-INF2-THE1-GYM0, A1-INF2-THE0-GYM0 "Groups" are available for attending "private" music lessons and when A1 attends the Theology lesson, the students from A1-INF1-THE0-GYM1, A1-INF1-THE0-GYM0, A1-INF2-THE0-GYM1 and A1-INF2-THE0-GYM0 for attending "private" music lessons, etc. In this way, I can define the above "Groups" as "available" or not available for specific hours by utilizing the "a students set's not available times" option (Time->Student's tag in FET). Otherwise, I could only define whole "Years" (A1, A2, A3, etc) as available, and therefore could not take the advandage of some students being available for some more hours per week. This "grouping" and general description of the problem results in a better timetable, because it exploits every possible availability of students. Finally, I defined the individual students' names as "Subgroups", I created some activities for the "private" music lessons by assigning each "subgroup" (student) with a "teacher" and "subject", entered some rules and generated a timetable. I tested the above method and it seems that it works. I haven't entered all the data, but I think and hope that I didn't do anything wrong! Thanks!!!

Volker Dirr

Quote from: alex on September 10, 2014, 05:25:03 PM
I've already tried splitting "Years" into "Categories". This results in "Groups". The problem is that dividing a "Year" into "Categories", automatically generates "Subgroups" for each one of the divided-into-categories "Year", at least for the FET version that I use (5.18.0).

That is normal and highly needed if you divide a year automaticly!

Quote from: alex on September 10, 2014, 05:25:03 PM
The ultimate problem is that I need a timetable where each student has to be arranged to have a lesson as an individual with his/her teacher. [...]

You are totaly complicating the problem.
It depend a bit on how many individual lessons there are.
If there are only a few, then use the "divide year" feature.

If there are many individual lessons (more then you can enter in the "divide year" feature, then you should do it different:
Use unique students names as subgroup name.

alex

My school has around 230 students. Around 170 of them have (each one of them) 4 hours per week "private" lessons, around 20 of them 2 hours per week, and the rest for 1 hour per week. The timetable should definetely include each student's name. The only way I found to do this is to assign each student as a "subrgoup". Thanks a lot anyway!!!! FET is a great application!!!

Liviu Lalescu

I'm glad it works! I admit I could not read thoroughly your reply #7. But I can say this:

You can divide a year automatically according to categories (automatically), or do this manually. Manually: you define subgroups, and add each subgroup to the needed groups. This manual procedure is needed if by the automatic procedure you would get many empty subgroups.

In the manual way, if you define groups containing more subgroups, you can add activities to only a single group, but more subgroups will be involved, so you don't need to add for instance all Theology subgroups to a single Theology activity.

Volker Dirr

ok. That are to many individual lessons to use the "divide year" feature.
So you must use the unique students name as subgroup name.
You should think about saving work to enter the data into fet, because you will have much data.
I highly recommend to check if your school administration software (and/or the software you use to print credentials) is able to export a csv file with "year", "group" and "subgroup" names. Then it is very easy to import that data into fet.
If you can't export such a csv file you can maybe sent me a link to your school administration software. I can check if it is easy to import the students structure from their data (and maybe also the activities, teacher and other stuff).

liquid

Alex, if you wanted indeed to experiment with multilayer division you could try a piece of software which I have written once. (I should refresh it because it was a few years ago). I have though two conclusions:

  • You will get quite complex group division
  • Many of generated groups will be in fact empty
It's not so handy as you may think.