Author Topic: How to group students with optional course?  (Read 1982 times)

0 Members and 1 Guest are viewing this topic.

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
How to group students with optional course?
« on: July 17, 2016, 01:21:06 AM »
In my case, students have both mandatory and optional subjects.
They will choose which subject (choosed by default for mandatory ones) to join on the network.
And several teachers (determined before choosing) will teach the same subject in parallel, therefore the students choosing the same subject have to be splitted into groups.
We start course timetabling after we collcect the results (e.g. how many students choosed xxx course).

But we do not know how to group students so that fet can do timetabling well.
Student A may choose subject B and C. If A is in group B1 and C1, then we have to set the constraint that B1 and C1 cannot take place at the same time. But it is not feasible to set so many contraints manully.
 

Volker Dirr

  • Forum Administrator
  • Level 5
  • *****
  • Posts: 1812
    • View Profile
Re: How to group students with optional course?
« Reply #1 on: July 17, 2016, 02:31:53 AM »
it's depending on how/that they choose.

a) students choose like this:
- please select a religion: jwish, Christian, Moslem, ...
- please select a main subject: French, Technology,  Social sciences, ...
- please select a sport: Football, Soccer, Dance, ...

and in the timetable most religions are at the same time. most main subjects are at the same time. most sports are at the same time. ...
in that case please use the split year automatilcy feature.
please read http://www.timetabling.de/manual/FET-manual.en.html#id_12

b) students choose like this:
- here are (nearly) all subjects: jwish, Christian, Moslem,  French, Technology,  Social sciences, Football, Soccer, Dance, ...
please select X of these subjects. (Nearly) doesn't matter which one; so in "worst case" he choose all religions.
in that case you need to use a FET custom version:
please read http://lalescu.ro/liviu/fet/forum/index.php?topic=1633.0

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
Re: How to group students with optional course?
« Reply #2 on: July 17, 2016, 08:20:33 AM »
Yes, they choose more like the second way.
I followed the link, downloaded the custom version and read the example fet files.
The main idea of the approach is to create a schedule with activities and teachers first, and then schedule the students to the activitys using FET where a real student = a FET activity and a real activity = a FET room.

I still have some questions:
1) It is a two-step approach, so it requires totally two fet files as input. Does FET generate the second file after the first step, or should I make the file manually? If only manually, I would like to make a little program to generate it. Is there and documents for the usage of all tags in a fet file?

2) For any subject (e.g. French), the related activities and teachers are all scheduled in the same timeslot (e.g. 9:00-10:00 Monday French and 10:00-11:00 Friday French) after the first step. But if they are scheduled to different timeslots (e.g. 9:00-10:00 Monday French Teacher T1, 10:00-11:00 Monday French Teacher T2, etc..), it is likely to reduce conflicts due to lack of classrooms. It is a new and much more complicated problem.  Do you have any idea or plan to this problem?

Thank you for your help.

Liviu Lalescu

  • Forum Administrator
  • Level 5
  • *****
  • Posts: 5008
  • FET author and forum moderator
    • View Profile
    • Homepage
Re: How to group students with optional course?
« Reply #3 on: July 17, 2016, 08:45:31 AM »
About (1): If I remember correctly, the mapr custom version works in a single step. Just assign FET activities (which have FET teachers = real teachers) to FET rooms.

I am not sure if jimmyjim needed real rooms. But I think you can have real rooms = additional FET rooms and use some constraints activities same starting times.

To see all tags of a FET XML file, either see function Rules::read in rules.cpp or open example files.

About (2): I am not sure I understand. You just allocate FET activities to FET rooms. A room can hold multiple activities in this FET custom version (as opposed to the official FET).
« Last Edit: July 17, 2016, 09:24:15 AM by Liviu Lalescu »

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
Re: How to group students with optional course?
« Reply #4 on: July 18, 2016, 12:35:13 AM »
(1) OK. I will try build on another computer so that I can run fet (instead of fet-cl) and figure out what the tags for.
(2) Maybe my understanding is wrong. Anyway, let me make an extreme example, say there is only one classroom and two teachers teaching French. So there are two activities (French-T1 and French-T2, both with a separate group of students) that should be scheduled to THE CLASSROOM at DIFFERENT timeslot. My understanding is the custom version would use just one timeslot for the activities of the same subject, and mark the problem unsolvable.

Liviu Lalescu

  • Forum Administrator
  • Level 5
  • *****
  • Posts: 5008
  • FET author and forum moderator
    • View Profile
    • Homepage
Re: How to group students with optional course?
« Reply #5 on: July 18, 2016, 03:57:55 AM »
(2) If I remember correctly, you can define two FET activities French-T1 and French-T2 (A1 and A2), constrain them to FET rooms S1 and S2 (which are real students). Then two activities A3 and A4 (A3 same starting time with A1 and A4 with A2). A3 and A4 have no teachers or students, and go to room R (real room).

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
Re: How to group students with optional course?
« Reply #6 on: July 31, 2016, 06:58:19 AM »
I think I have got the idea, after I play around the custom version with the example input file, under your help. For question (2), my understanding is wrong. I can have two activities, and set ConstraintActivitiesSameStartingHour to false for them.
I have a new question regarding to fet file:
There is a "Activities_List" part in fet file, where each "Activity" may have a "Activity_Group_Id" tag.
And there is also a "Equivalent_Activities_List" part, where equivalent activites are listed.
I really want to know the difference between activity_group and equivalent_activities, and when to use one over the other.

Liviu Lalescu

  • Forum Administrator
  • Level 5
  • *****
  • Posts: 5008
  • FET author and forum moderator
    • View Profile
    • Homepage
Re: How to group students with optional course?
« Reply #7 on: July 31, 2016, 09:16:00 AM »
I think I have got the idea, after I play around the custom version with the example input file, under your help. For question (2), my understanding is wrong. I can have two activities, and set ConstraintActivitiesSameStartingHour to false for them.
I have a new question regarding to fet file:
There is a "Activities_List" part in fet file, where each "Activity" may have a "Activity_Group_Id" tag.
And there is also a "Equivalent_Activities_List" part, where equivalent activites are listed.
I really want to know the difference between activity_group and equivalent_activities, and when to use one over the other.

It is hard for me to remember exactly what I did there. I searched the mapr version. Did you read the Help->Help for mapr version from the Menu?

Activity_Group_Id lists activities from the same component. Equivalent_Activities_Item lists which activities are interchangeable, to make the generation faster. If the activities have exactly the same teacher, etc., then you should add them to the Equivalent_Activities_Item.

There is also an Activity_Equivalence_Class in the activities list, but I think this has to do with skipping infeasible activities.

Please let me know.
« Last Edit: July 31, 2016, 09:18:37 AM by Liviu Lalescu »

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
Re: How to group students with optional course?
« Reply #8 on: July 31, 2016, 08:30:58 PM »
I read some of the help, and then I found in fet file there is a "ConstraintActivitiesSameStartingHour" part which I think is the key to my problem.

For one subject (e.g. French), there are two teachers (e.g. T1 and T2), students can join either activity (French-T1 or French-T2), but not both. In this case, I think the two activities have different Activity_Group_Id and I should add the two activities to the Equivalent_Activities_Item. Am I right?

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
Re: How to group students with optional course?
« Reply #9 on: July 31, 2016, 08:56:26 PM »
Also here comes a requirement that I hope to meet. In my initial post, I mentioned that the students might choose which optional subject to join in. So each student has a vector [1, 0, 1, 0, ..., 1], the length is the number of subjects, and 1 means the student choose that subject, 0 otherwise.

What I want to achieve is that assign students with the most similar/closest vector to the same activities. For activities of one subject, I can group the closest students by K-means. I wonder if there is any constraint that I can use to assign students to specific activities.

Liviu Lalescu

  • Forum Administrator
  • Level 5
  • *****
  • Posts: 5008
  • FET author and forum moderator
    • View Profile
    • Homepage
Re: How to group students with optional course?
« Reply #10 on: August 01, 2016, 03:58:03 AM »
I read some of the help, and then I found in fet file there is a "ConstraintActivitiesSameStartingHour" part which I think is the key to my problem.

For one subject (e.g. French), there are two teachers (e.g. T1 and T2), students can join either activity (French-T1 or French-T2), but not both. In this case, I think the two activities have different Activity_Group_Id and I should add the two activities to the Equivalent_Activities_Item. Am I right?

Same starting hour was specially for jimmyjim. I don't know if you need it. It does not mean same starting time. Same starting hour means the activities may be in other days.

I think you are right for the second paragraph.

Also here comes a requirement that I hope to meet. In my initial post, I mentioned that the students might choose which optional subject to join in. So each student has a vector [1, 0, 1, 0, ..., 1], the length is the number of subjects, and 1 means the student choose that subject, 0 otherwise.

What I want to achieve is that assign students with the most similar/closest vector to the same activities. For activities of one subject, I can group the closest students by K-means. I wonder if there is any constraint that I can use to assign students to specific activities.

I do not understand these words.

I am sorry, but this custom version mapr was developed a very long time ago and getting accustomed again with it would mean much time. There are very many "hidden" features which I forgot. I cannot dedicate myself to free support for this.

If I'll find some time, I'll try to have a look again at the mapr custom version.

I am not sure if the constraint activities occupy max time slots from selection was done in mapr already. If yes, it might help to have a similar timetable for some students (read the help of the constraint).
« Last Edit: August 01, 2016, 05:18:17 AM by Liviu Lalescu »

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
Re: How to group students with optional course?
« Reply #11 on: August 01, 2016, 07:11:19 AM »
Yes, I understand, thank you very much for your help and support.

My state of the requirement is really bad for your understanding. I just want to do students course planning by collecting the students who choose the same subjects into the same activities. For example, both students S1 and S2 choose subjects A, B, C, D, and each subject has several activities, say A-T1, A-T2, ..., B-T1, ... , D-Tn. I hope S1 and S2 should join the same four activities, say A-Ti, B-Tj, C-Tk, D-Tm, rather than S1 joins four activities and S2 joins another four activities.

In my last post, I use the vector to cluster the students. So I can get which group of students should join the same activities, but I don't know which constraints for FET to assign one student to specific activities.

Liviu Lalescu

  • Forum Administrator
  • Level 5
  • *****
  • Posts: 5008
  • FET author and forum moderator
    • View Profile
    • Homepage
Re: How to group students with optional course?
« Reply #12 on: August 01, 2016, 12:25:43 PM »
It is difficult for me to understand without seeing the exact input file. But you might want to use constraint activities use max 1 different rooms. So some activities go into the same FET "room".

zt3

  • Level 1
  • *
  • Posts: 14
    • View Profile
Re: How to group students with optional course?
« Reply #13 on: August 02, 2016, 08:23:09 AM »
Ok, I will try to play around first.
But you just reminded me

About (1): If I remember correctly, the mapr custom version works in a single step. Just assign FET activities (which have FET teachers = real teachers) to FET rooms.

I am not sure if jimmyjim needed real rooms. But I think you can have real rooms = additional FET rooms and use some constraints activities same starting times.

To see all tags of a FET XML file, either see function Rules::read in rules.cpp or open example files.

About (2): I am not sure I understand. You just allocate FET activities to FET rooms. A room can hold multiple activities in this FET custom version (as opposed to the official FET).


The custom version does not need real rooms. So the result coursetables just show "when" to take "which" activity, but no "where".
I do not know how to "have real rooms = additional FET rooms and use some constraints activities same starting times".
Would you state it with more detail?
 

Liviu Lalescu

  • Forum Administrator
  • Level 5
  • *****
  • Posts: 5008
  • FET author and forum moderator
    • View Profile
    • Homepage
Re: How to group students with optional course?
« Reply #14 on: August 02, 2016, 08:28:26 AM »
The custom version does not need real rooms. So the result coursetables just show "when" to take "which" activity, but no "where".
I do not know how to "have real rooms = additional FET rooms and use some constraints activities same starting times".
Would you state it with more detail?

Add some rooms as courses and other rooms as real rooms. In the rooms list, add both, maybe with names to differentiate, like courses start with "C" and real rooms with "R". Then add some activities to be placed in "R" rooms and maybe constrain them to be at the same time as the courses activities.