Arrange timetable for each individual student based on their choice of subjects

Started by hoangtho892, July 05, 2024, 11:54:49 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

hoangtho892

Hi everyone,

I have a project in arranging the timetable for many students. And I would like to use FET to create a timetable for each individual student.

My data has a list of subjects, teacher assignments, and the list of students with their choice of subjects (140 students).

For example:
Subject: MATH.A, LITE.A, LITE.B, PHYS.A, PHYS.B, CHEM.A, HIST, GEOG... (each subject will be separated into several certain groups)
Group: MATH.A (5 groups); LITE.A (4 groups); LITE.B (1 group); PHYS.A (2 groups); PHYS.B (1 group); CHEM.A (1 group); HIST (2 groups); GEOG (2 groups)
Students: 140 students choose MATH and LITE, and 2 or 3 other subjects.

I need to create a timetable for each student.
I used ASC Timetable but it's not smart or maybe I do not know how to use it.
So I would like to use FET to create it.
Please help me with how to declare data and step-by-step use it.
Thank you so much!

Liviu Lalescu

Hello,

You can add individual teachers, subjects, and maybe activity tags (optional).

Then you need to organize the students. Maybe add each student as a separate students year, or add a single year Y and add each student as an individual group, or Y and in it G and in it add each student as an individual subgroup. You can add then years or groups containing some real students, and these years or groups represent the grouping for some students. You can use "Add existing" so you only need to double click, as opposed to writing again the students' names.

Then add the activities, containing each one individual students or the students sets.

I am not sure exactly about the best organization of the data; you must think of it; maybe you could open some example files.


Liviu Lalescu

Hello again,

I am not sure if you know to which group each student belongs. In the official FET, each activity has a certain students set (or more, or no students set at all), teacher (or more, or no teacher at all), and subject. If this is your case, this is simple for FET in the Official mode. If FET needs to create the associations of students in groups, you can use also the Official mode FET only if these groups are allowed to change - you can use the constraints activities occupy max time slots from selection or activities max simultaneous in selected time slots, if you add more activities, each with a student and no teacher.

If you need the program to create stable groups among the same subject, you might need the FET Block planning mode or use Volker's suggestion, StElTo.

hoangtho892

Quote from: Volker Dirr on July 05, 2024, 01:03:10 PMYou can also use StElTo for this task:
https://lalescu.ro/liviu/fet/forum/index.php?board=40.0
I read about StElTo and think that it's suitable for my problem.
But I don't understand clearly about "LINE" although I read the "Hours" section in the manual.
Could you please explain how I understand the definition of "LINE"?

Volker Dirr

A bit difficult to explain.
Have a look at this timetable:
https://www.timetabling.de/StElTo/manual/StElTo-manual.en.html#id_11

A line contains at least one (bot normally more) hours in the timetable. In a line the students have a selected subject. It doesn't matter where the line is (so the day and hour doesn't matter). You can place the lines manually or by FET later.
You can also translate line a little bit like "an hour of a chosen subject of the student". Each line contains a chosen subject/activity of an student.
Maybe just download it and try an example (you can download an example or generate an example in the example generator)

"hours" are "only" needed if you want to place the "timetable".
If you only want to know if your data set is solve able, then you need to know the lines only.
As soon as i generate a data set with StElTo, it will tell you something like:
In line 1 is student A with subject S1 and student B with subject S2 and ...
In line 2 is student A with subject S3 and student B with subject S3 and ...
You you know that each student can have the selected subject.
Just try it.
If you don't get the difference between "hour" and "line" yet, then just place "1" and hour. In that case "hour" and "line" is the same.

hoangtho892

Thank you so much,

After generating the timetable from StElTo, I have 2 exported files (as attachments).
But when I import to FET, FET runs for more than 2 hours and I have not received results anymore.
Could you please check these files if they are correct?

Volker Dirr

How many lines did you allow in StElTo?
I guess you allowed too many lines there.
Can you also please attach the StElTo database?

hoangtho892

Actually, I still haven't known how to set lines in StElTo yet.
And I use a dataset that I import from .csv file, I don't have any database.

Volker Dirr

You should set the number of lines as low as possible.
I will read your file after lunch.

Volker Dirr

Thank you. I found a critical bug while importing the csv files.
Did you write the csv files yourself OR did you modify them?
If not, I need to hunt one more critical bug.

Can you please attach the database? see StElTo -> Settings -> Database -> SQLite (There is the file name and location of the data base. Probably database.dat in your StElTo directory)

hoangtho892

Thank you. I attached the database. Could you please help me to check?
In Tab Hours, Max Lines and Min Lines are default values. I have not changed anything yet.

Volker Dirr

Please view your "hours" tab.
Currently you have:
3 lines with 7 hours ( = 3*7 = 21 )
7 line with 1 hour ( = 7*1 = 7 )
4 lines with 4 hours ( = 4*4 = 16 )
2 lines with 2 hours ( = 2*2 = 4 )

Sadly you tried to place the hours with 2 hours into the slots with 1 hour. That is impossible. I should check this better and warn the user about this.
Please set always in "Place into" the same value as in "Hours" (Or, if you want to share the slots, place the hours with value 1 into 2. (So not like you done it, placing the 2 into 1. That doesn't fit))

So currently you need in worst case in FET 21 + 7 + 16 + 4 = 48 hours per week (~10 hours per day).


But you can reduce the "max lines" values and it is still solve able.
Reduce it to this:
2 lines with 7 hours ( = 2*7 = 14 )
1* line with 1 hour ( = 1*1 = 1 ) In fact you don't have a vote with 1 hour, so this will be empty
4 lines with 4 hours ( = 4*4 = 16 )
4 lines with 2 hours ( = 2*2 = 8 )

So you need in worst case in FET 14 + (+-1) + 16 + 8 = 38 hours per week (~8 hours per day).

You can also decrease the values for "Max Lower" and "Max Higher" with your current data set. You can reduce them nearly all to 0. Only for the hours with value 2 it look like you need value 1.

Volker Dirr

Thank you! I fixed the bug that I found with your sample set and i also added some new other stuff.
Get the latest version here:
https://lalescu.ro/liviu/fet/forum/index.php?board=40.0

hoangtho892

Thank you so much. Could you please guide me on how to manually arrange lines (subjects) to the timetable (without using FET)?