Now, these are all the activities that take place in the college:
We have teaching assistants and professors, and we have lectures and sections. We have two buildings. The lectures are held in designated and equipped auditoriums, and the sections are taught in specialized and equipped labs.
Importantly, we have six different years, each representing a different academic year. Each academic year is divided into several sections. Every academic year has a set number of subjects, and each subject has both a lecture and sections. The number of sections per subject equals the number of sections in the academic year in which it is taught.
As for the lectures, they are assigned to professors, with each professor handling one or more subjects, which are taught in auditoriums. Each professor is accompanied by a number of teaching assistants who will teach the subject, and it is known how many sections each teaching assistant will take.
Now, I want the program to distribute these sections randomly without assigning specific sections to specific teaching assistants.
For example, the subject of Statistics for the second year:
The year has one lecture and is divided into 22 sections.
The sections are numbered from 1 to 22 and have been entered into the program as groups.
The subject's professor is Dr. Mahmoud Ismail.
Teaching assistants:
Mohamed Emad - 8 sections
Dina Atef - 8 sections
Ahmed Hossam - 6 sections
Now, I want to distribute the sections among the teaching assistants randomly in the best possible way without assigning specific sections to each teaching assistant. Additionally, I would like the generated timetable to display which teaching assistant is assigned to which section.
I received your file.
I am sorry, I did not understand much from your file, because there are mainly Arabic letters. Also, I saw the "Probability and Statistics" subject, but it has only 11 activities/hours.
My idea for you: you add the activities as A (Subject, Students set, Professor), and add some activities without students: A1 (Subject, Teaching assistant). Then somehow constrain the A and A1 to overlap, with constraints activities occupy max time slots from selection, and maybe also use the constraint type activities min/max simultaneous in selected time slots. It depends on how these A-s overlap.
Thanks for your reply, maybe my previous file wasn't organized cause it is our final file so it contains so may information, so I created another file Example.fet as an example of the scenario in the post:
Quotethe subject: Probability and Statistics for the Year 2:
The year has one lecture.
the students are divided into 22 sections.
The sections are numbered 1 to 22 and have been entered into the program as groups.
The subject's professor is Dr. Mahmoud Ismail.
Teaching assistants:
Mohamed Emad - 8 sections
Dina Atef - 8 sections
Ahmed Hossam - 6 sections
I added the lecture and assigned it to the Dr. and give it the approbirate tag to take a place where the lectures were taught.
Now the problem is: how I add the 22 activities of the sections and assign each section to one of the TAs randomly.
the previous scenario I was following was like the picture:
Screenshot 2024-09-05 150349.png
to add the TA and the tag that tells this is section and the subject then select 8 sections
manually and enable Separately to add each section as an activity.
I want the TA to take the 8 sections randomly cause maybe the sections I selected manually wasn't good or sometimes the generation tells me that one of them is impossible to be placed.
Maybe like in the attached file. Note that the latest FET version is 6.24.1 (6.24.2 is only on my disk, even if you will get a warning). I think that you need to update your FET to the latest, 6.24.1, to be able to open my file.
OK, the file you created is good but has a problem maybe you may misunderstood me,
the whole year attend the lecture together -once a week, 1 activity- in the main hall with the professor then they are separated into sections to attend the practical part with the TAs,
so we have 1 Lecture assigned to Dr. Mahmoud Ismail only and tagged with Lecture, and 22 sections assigned to the TAs and marked as Lab-Practical,
So actually each group timetable Must Have 1 Lecture and 1 Lab-Practical.
the generated timetable for each group now contains only the Lecture. And the generated timetable for each TA contains the assigned sections but I don't know which one I should go to teach. I have 22 sections and I must be placed in exactly known 8 sections.
Section Timetable (Miss the practical Lab)
Screenshot 2024-09-05 150349.png
TA timetable (Miss the number or name of each section)
Screenshot 2024-09-05 150349.png
If the 22 labs are not allowed to overlap, it is simple. Are they allowed to overlap? (I think max level of overlapping is 3, because there are 3 engineers.)
ya max level of overlapping is 3.
overlap are allowed with same number of TAs, NO PROBLEM WITH THE SPACE we had more than 25 labs available each day.
So, maybe I'm teaching to Section 3 in Lab, and Eng Dina Atef is teaching to another Section in another lab at the same time.
I have thought. I think you need a custom new type of constraint, but I am not sure if it is possible. Unfortunately, it seems difficult.
Thank you for all your help.
We are implementing the software on a large scale within the Computer Science Faculty, which includes over 50 professors, 100 teaching assistants, and two buildings with 30 rooms. Occasionally, we encounter a challenging issue where the software becomes stuck during generation, indicating "impossible activities." As a result, we often have to manually reassign the sections for the teaching assistants repeatedly until it successfully generates.
I understand that implementing a custom constraint might be difficult. If it's not feasible within the current system, do you have any alternative approaches or workarounds that could help us achieve random section distribution more efficiently?
Once again, I truly appreciate your time and effort in assisting with this.
You are welcome! Unfortunately, I don't see any workaround for the problem with the official version of FET.
Quote from: Liviu Lalescu on September 05, 2024, 03:20:04 PMYou are welcome! Unfortunately, I don't see any workaround for the problem with the official version of FET.
Hello Liviu,
I hope you're doing well.
I wanted to kindly follow up and ask if there have been any updates or new ideas regarding the issue we discussed earlier, specifically about randomly assigning section activities to teaching assistants while ensuring each section is explicitly handled by one TA, and that each TA knows exactly which groups they're assigned to.
We're still facing some generation difficulties when assigning these sections manually, especially at scale, and I was wondering if there's any workaround or improvement in recent versions that could help address this constraint more efficiently.
This follow-up is particularly important as we are now preparing to work on the new timetable for the upcoming academic year, and we hope to resolve these assignment challenges ahead of time.
I appreciate your continued support and look forward to your insights.
Hello, Mohamed,
I am fine, thank you! :)
Please allow me some time to read and recall the problem. I will answer then.
Hello again, Mohamed,
I have these two ideas:
1) Use Block planning mode. You will have 5*6=30 FET hours, and each FET hour represents a real life time slot. You will have 150 FET days, and each FET day represents a teacher or lecturer.
You will add for each set of students an activity without teachers, and assign it to a FET day (teacher) and to a FET hour (real day and hour).
Problems: max days per week and max gaps per day constraints (which I checked and you have in your old file) need rewriting.
You have some BP mode examples in FET and detailed documentation.
2) For each real day add 3 FET days. So you will have 5 FET hours per FET day and 3*6=18 FET days. You consider each FET day as assigned to one out of three lecturers.
Problems: again max days per week and max gaps per day constraints might need rewriting.
For both alternatives, you have a lot of constraints to ensure the necessary number of activities for a real life student and teacher (or lecturer).