Hello. First of all, thank you so much for this fantastic software. It has really improved many areas of my work with scheduling. I have a very particular setting and I wanted to share it to see if you can come up with any ideas on to the extent to which FET might help (or not) within my context.
I work at a middle school in Norway. Students who have certain Special Education Needs might be given what we call "SEN hours". An "SEN hour" (in practical terms) means that the student is allocated a teacher that joins his/her class to support that student. Example: Johnny in Grade 6 has 3 SEN hours. This means that in 3 of his lessons during the week, Johnny will be joined in class by a teacher (a regular class teacher who already has his/her own timetable of classes that he/she teaches) that will provide individual support. Now, this teacher who joins Johnny does not have to be the same teacher all 3 times. It could be that, for example, teacher Joe joins Johnny's math class on Monday and Tuesday, and teacher Susan joins his Science class on Wednesday.
Now the options/constraints: not all teachers "do" SEN hours, only some of them. Also, teachers that do SEN hours are contracted to do a specific amount of hours (i.e. maybe teacher Joe has agreed to do 2 hours a week, while teacher Susan has agreed to do 6). In addition to this, there might be preferred classes for students to receive their SEN hours (i.e. if Johnny is awarded 6 SEN hours, it should be possible to say it is preferred that he gets a teacher for Math, or Science or Design, but not for Arts or PE because Johny does not need help there). Finally, teachers also have prefered subjects to do SEN hours for (so teacher Joe might be Ok with doing SEN hours for math, but not for Arts).
I have used FET to create my "normal" timetables, with teachers teaching their subjects. But I do not know if there is any creative way in which I could use FET for this context I just described, where I can now take the working timetables we have and do automatic assigning of the SEN hours so that all students get their SEN hours assigned taking into account the availability of teachers who have signed up to do a certain amount of SEN hours and class preferences from both students and teachers perspectives...
Thoughts?
Sorry if it is confusing!
I think there are several variants possible.
I think you should start/try first the "exact" way. So just modify the subactivities and add the SEN teacher into the activity and then try to generate a new timetable.
If you have an easy timetable this might be possible.
If it fails, then i think you should try workaround like limiting the number of SEN at the same time by a constraint like "Max simultaneously activities from a set" (select all timeslots and select all SEN hours). And then manually schedule the teachers.
on your data set and also on how many of those SEN hours do you have.
Hello,
@rozojc ,
Thank you for the appreciation! :)
I will read carefully your message and answer a bit later today.
Thanks
@Volker DirrThe issue with my context is that I don't want to add SEN teachers manually (that would defeat the purpose), but instead, I would like FET to automatically allocate teachers (who already have an assigned timetable with lessons) to any of the SEN students (who belong to a specific group which already has a timetable), into any of the lessons for any subjects that were marked as suitable, for the right amount of hours. Not sure if I am explaining it right. Example:
We have successfully generated timetables. They are actually easy, we have only four groups called A, B, C and D. Each group already has a timetable with activities and teachers.
We have a couple of SEN students in each one of these four groups. On the other hand, some of the teachers who teach regular classes (who already have their timetable) are willing to be allocated to some SEN hours for some students in some of these groups. I want this part to be done automatically. So if I know Johny is in group "A" and "Johny" needs 3 hours, and Johny can receive hours in Math, Science and Art, I want FET to look at which teachers are available in any 3 "activities" in A's timetable, and allocate them to "Johny", as long as these activities belong to Math, Science and Art (and as long as the teachers that were assigned to these hours have marked these subjects as within the ones they are willing to teach).
Hello,
@rozojc ,
I think it is possible without a customization, using official FET with the Official or Block planning mode, I am still not sure, this will come out as we will think.
Use the trick to allocate activities (subject+students) to FET slots (FET days = real-life time slots, and FET hours = real life teachers).
You can add for each column a constraint all activities occupy min/max time slots from selection (selection = column of that real teacher), for teachers' target of SEN hours. You will also have constraints activities preferred time slots with X where a student is not allowed to receive that activity; the same for teachers, where you add X-s on a corresponding column in a single constraint break.
You have also other constraints, like activities min/max simultaneous in selected time slots, I am not sure if these are useful.
It should work.
I will go out now for a couple of hours, I will answer when I'll get back. Meanwhile, you might want to read the Block planning help menu, and examine the provided example for this mode.
Yes, but the next table will come soon. And i think you should try the exact way first.
An other variant without a blockplanning might be simply this:
1. Add a room for each SEN-student.
2. Then add a constraint subject "SEN" need a "SEN"-room (see 1.)
3. Maybe add a constraint like max room changes.
So by this each teacher can see this "SEN"-student by the room name.
I was just thinking of something inspired on what you wrote. Please tell me if the following sounds worng:
I can do the timetable in two "phases". Phase 1, I do the regular timetable without SEN hours, and then I use the option of "Save data and timetable" to generate a FET file where all the existing activities are locked in place.
Phase 2, the allocation of SEN hours:
1. I create a new "subject" for each one of the teachers that will get SEN hours. So for teacher Joe I create a subject called "Joe SEN".
2. I create fake rooms, each one with the name of an SEN student.
3. I create activities, where teacher Joe is assigned subject "Joe SEN", for whatever amount of hours that teacher Joe should be allocated (so if Joe has 3 SEN hours a week, I create a split in 3 with each section of one hour)
4. I create a constraint saying that subject "Joe SEN" has to happen in one of the SEN rooms (students). The end result is that it will show up in Joe's timetable with the correct amount of hours, each hour showing the student they will be helping.
5. The only thing is that this would not allow me to make sure Joe doesn't end up added to a student during a class that does not really work (i.e. PE), but it would probably give me a good enough starting point...
Does this make sense?
Quote from: rozojc on November 14, 2023, 07:21:44 AMI was just thinking of something inspired on what you wrote. Please tell me if the following sounds worng:
Are you replying to Volker on this? Yes, these are interesting ideas, but I need to warn you that in the past we wanted to allocate activities to fake rooms to simulate allocating activities to teachers, and it resulted in the now-deprecated FET-MAPR version (https://lalescu.ro/liviu/fet/forum/index.php?topic=1633.0), which cannot solve difficult timetables. The successor of FET-MAPR is FET in the Block planning mode, which seems to be able to solve constrained/difficult timetables.
Allocating activities in time slots is more efficient than allocating activities in rooms, because of the algorithm.
Edit: allocating the activities to FET time slots = real time slots x teachers would be the second phase, as well.
Well, there is a big difference. In FET-MAPR, the FET-Blockplanning and in StElTo, you normally add a lot of students (20 - 30 students) to a single teacher and you do this with all students so a few 100 to a few thousands, and also with all teachers, so with also up to a few hundreds.
But if i understood the SEN hours correct, then it is very similar to our "Förderlehrer" (or even a bit similar to "on duty" hours), so teachers that care only about a single student in a whole class. So you already have a fixed timetable and only put 1 (random) teacher to only ONE student. So depending on your schools system you might have only 10 students in total. All in different classes and and each of them only get sometimes one random teacher. So we talk about a much lower number then in MAPR, Blockplanning or StElTo. So it is over the top to use a MARP, Blockplanning or StElTo here. I still think you should try it with the rooms with your current timetable.
We have a "not so difficult" timetable. We are a small school, and although we do have constraints, FET is currently taking less than 2 seconds to generate valid timetables. So I think if I try to do the idea of adding fake rooms, where each room represents a student, it should work. It is only a handful of students. It would also allow me to mark the room as not available for times in which they have classes for which we dont want them to receive an SEN teacher assigned. I will try it and report back. If it works, it would be really cool.
In short. The easiest approach for my situation seems to be to create FET activities where a teacher is assigned to a fake subject which can be "SEN-JOE", for teacher JOE. I would use rooms as students (about 10 of them). I create a constraint for subject "SEN-JOE" to have a set of preferred rooms (the students). That way teacher JOE will be assigned the correct number of hours I set on the FET activity and will be allocated a "room/student".
The only problem is that this does not take into account the fact that these students must have a specific maximum of hours per week. With my method, as it stands, teachers get the right amount of hours, but these are just randomly given to any student in the pool (the set of "preferred rooms") rather than making sure each student/room also gets the specific amount of hours they have to have. For this approach to work, I would need a space constraint where I can set that a specific room (student) can only be used for a maximum of X hours per week; this would effectively provide me with what I need, but this constraint currently does not exist.
Is it possible to create such a constraint?
hmm... not sure how difficult it is to code that constraint. I am also not sure if that constraint should be in official mode since it is a bit "strange" that a room needs a minimum number of hours.
Maybe you can sponsor Liviu to code a custom version.
But in fact i still think the "better" way (since you have only 10 students and a very easy data set) is do manually assign the SEN teachers to the students. So you will always have a good and fixed teacher-student-combination and also the correct subjects. Do that at least to most of of the SEN hours; If there are a few hours left where you don't have a preferred student-teacher combination, then just place those hours randomly after generating a timetable.
We can actually just do the SEN by hand. I was just hoping to get FET to do it for me ;)
With your method, the issue is that I would still be manually assigning teachers to students, when in reality, any given SEN teacher can be assigned to any number of SEN students. For example, teacher JOE has 3 hours, but I do not care with which student he has those 3 hours with. It could be just with one, or two, or three different students. If FET could do the allocation the way I am proposing, there would naturally be more combinations possible than if I hand-assign Teacher Joe to work specifically with student Jimmy, for example.
Regarding it being a strange constraint. Maybe, not sure. I did work in Sweden where the auditorium was shared between the primary and secondary and we were only allowed to use it X amount of times per week, so it would have been useful in that situation as well.
Regarding "sponsoring" Liviu, I wonder how that works. How much could it cost to request this additional constraint to be coded? Completely new at this, I literally started using FET about two weeks ago.
Hello,
@rozojc ,
I think we can do that on a contract, in which case we can talk by email about the cost. If you/your institution are not in the position for this contract, I can understand, and try to make a free custom version, but I cannot guarantee.
Well, I think it would come out of my own pocket, to be honest (timetables were being done by hand for many years, so me using FET is more of my thing, but not a priority). But sure, if you can reach out to me via email (same email I used to register to the forum) it would be great and maybe something can be done.
I understand. In this case, I'll try to do it benevolently. We can talk here about the new feature.
1) Are all the activities with duration 1?
2) To be easier for me, and maybe as a beginning test, we could add the maximum number of occupied time slots for each room in the room's comments, so that I don't need to add the implementation of a new constraint in the interface (which is a long and tedious process).
I will go now out for a walk; when I'll be back, probably in ~2 hours, I'll begin working.
Hi again, thank you, that is very kind of you.
Regarding duration. Do you mean the duration of these SEN activities I would add? They all would actually be of a duration of 2 periods (the way our timetable works is we have 30-min periods, with most classes taking two periods. For SEN, they would all be periods). However, I think it is fine to assume that they all have duration 1, because I could simply write down the number of hours the room can be used as twice what it really is (does this make sense?). The feature would have to be then that if the comment on a room is "4", it means that the room can only be used for a maximum of 4 lessons in a week (which in my case would equate to 2 lessons each one of two time slots).
I do use other rooms in our timetable, so this feature would have to run only on rooms where a comment is written, I imagine.
Not sure if I am over explaining, feel free to let me know if I am not making sense.
You are welcome!
So all the activities in your timetable have duration 2? Or only SEN, and the others can have duration 1 or 2?
I think it is best to write in the rooms the comments "2", for two activities. It is easiest for me.
Only rooms with an integer value comment.
I will begin work a bit later (now I need to do a bit of work on the official branch of FET) and let you know. Are you on Windows 10 or later, 64 bit?
In our timetable, regular classes have duration of 2, 1, and some have duration of 4. Each slot is 30 minutes. So for example, Math can have one 30-minute slot, one 1 hour class (so 2 slots) or even one 2 hour class (4 slots).
SEN hours for the most part would be 2 slots, but if it can simply be assumed that it is programed in a way that the comment "4" means that room/student can only be "used" for 4 slots in a week, it would be ideal. Because I can then type in the amount of hours as 30-min slots, and it would open more possibilities, where they could be allocated two different 1-slot lessons and that works fine for us as well.
OK, sure! I will try.
I will begin work in ~10 minutes, I hope.
You did not answer: do you need Windows 10 or later 64 bit executable?
ahh... I see "the teacher" problem. Sadly most teachers, like me, were pretty stupid. They bought many needed stuff themselves. They bought/buy books, paper, pencils, software ... themselves. Nearly all young teachers do it. But as soon as they get older they understand pretty fast that they only need to ask the school authorities for all this stuff. Of course some of them are short by money and might refuse the first time. The trick is to ask many times and in "worst" case say in a few classes something like "I like to do xxx with you, kids, but the school authorities don't want to pay for it". In normal case it doesn't take long then and you get the money for the needed stuff then. Of course it must be useful and not to expensive stuff. But books, software, computers, ... are useful. Teachers are normally not self-employed. They are employee and i never heard that for example a employed typist bought it's own computer or it's own software to do the work in an office.
Quote from: rozojc on November 15, 2023, 07:10:05 AMRegarding it being a strange constraint. Maybe, not sure. I did work in Sweden where the auditorium was shared between the primary and secondary and we were only allowed to use it X amount of times per week, so it would have been useful in that situation as well.
We also share rooms, but saying the number of hours doesn't help in most cases. In most cases you already know the number of hours per room before generating. If you want to share random slots, then you can just tell the free slots after generating. But in normal case we always must do it different, since we (both schools) might generate a timetable several times per year and in worst at the same time. So we always talk before generating and do "contracts" like "you can use the gym on Monday 1. - 4th hour and on Wednesday". So we only need "room not available" constraints to solve that problem.
I hope I did something good, download from here: https://lalescu.ro/liviu/fet/download/custom/rozojc/
I only have one test file, with all activities with duration 1.
I will add your suggestion for this new constraint (to be implemented in the official FET) in the TODO.
Please let me know.
Thanks. Is this an installer, and if so, can I have two instances of FET installed (normal and this one) at the same time?
Huge thanks again. I am almost done with my day but will try it out tomorrow.
You are welcome!
It is an usual FET archive. Just that it is based on the latest snapshot from the future version 6.13.0 from my hard disk, that's why the long name.
Yes, you can have any FET-s installed and opened.