Feedback for a potential problem

Started by fred, May 19, 2022, 03:49:54 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

fred

Dear all,

I'm using FET-CL to generate timetables from my own data source, so I build the XML completely and process the returned data. This is not part of the question but just for background information.

I've been asked if it is possible to have different year groups use different period times and number of periods in a day, so for example:
Year 1: Period length 40 minutes, 9 periods per day
Year 6: Period length 60 minutes, 6 periods per day
Teachers and students will mix across these years (they are not isolated)

Now I understand this on it's own is not solvable by FET, or probably any other timetabler.

The only idea I have is as follows:
  • Work out lowest common denominator (in this case 20 minutes)
  • Multiply Period lengths when generating the XML depending on year group
  • Generate Sub Periods, e.g. 1.1, 1.2, 1.3 for all academic periods

My question is really this:
If I look into this approach, which will be a fair amount of work and add significant complexity, what are the implications from a timetabling perspective?

I am worried about (in this case thirds) fractional gaps in teachers, and potentially, students timetables that would either lower the quality of the final timetable, or leave gaps that are impossible to fill.

If anyone has any insight into this before I actually start the work it would be immensely appreciated


Liviu Lalescu

Dear fred,

This situation indeed looks complicated. I am thinking of maybe a customization or maybe using many constraints activities occupy max time slots from selection, so that the teachers won't have two activities in a real-life time slot.

Maybe for instance create 15 periods per day. The first 9 for year 1 and the last 6 for year 6. Not available constraints for students as necessary. Then as the above, so that teachers won't have two activities in the same real-life slots. This takes care of students gaps OK, but teachers might have gaps.

I will think some more of your problem, but I am waiting for you to tell me if you care of teachers' gaps, and also if you could please send me your last year's timetable (by email if private) so that I can have a look.

fred

Dear Liviu,

Thanks for the response.

I don't have an actual timetable for this particular problem, I can provide the current XML for the active timetable being used, but this is only the 6 academic periods discussed.

All the periods would run at the same time, so I'm not sure I understand splitting the periods into the separate groups, but then my knowledge here I feel is limited.

Teacher gaps won't ever be a problem, but student gaps would.

I'm thinking that from FET's perspective if would be a 'normal' timetable, just with activity lengths multiple of 2 or 3 depending on the year group and FET would happily solve.

The main problem is really on my side to make the relevant changes, FET itself should be happy to process, but I do wonder about the quality of the timetable from the student perspective with these inevitable 3rds popping in.

I could probably hack in something to test the theory and go from there.

If you still feel the timetable is relevant I will send it to you, but it doesn't contain any of the points discussed.

Liviu Lalescu

Hello, fred,

I just arrived and read your post. Please allow me some time to try to make a very small example file for you, so that you can make an idea of what I am talking about. I hope it will work, if teachers' gaps are not a problem.

Liviu Lalescu

Dear fred,

I hope this should work. See my attached file. I only cared about teacher t1 not having more activities at the same real time. For this, I added 60 constraints activities occupy max time slots from selection. For each teacher you need to add all his activities (and careful, if you add more activities for the teacher after this, all the 60 constraints must be modified), select a pair of conflicting real-life slots (like Monday Y1 09:20 and Monday Y6 09:00), and max occupied = 1.

It should not be a problem that there are so many constraints for the algorithm, only for the user to input them.

Or, I could make a customization for you, which might be faster in generation, I am not sure, but anyway the burden of manually adding so many constraints will be lifted.

fred

Dear Liviu,

Sorry for the delay in getting back to you.

I was prepping my system to handle different period profiles in an academic year so I could conduct some tests correctly.

Your example file is a great solution, but I was looking for something that kept the periods the same across the different year groups.

I now almost have a working test where all academic periods are 20 min long and I pre-multiply the split durations by either 2 or 3 depending on the year groups, so for FET is doesn't really care.

I think I have one possible hang up that my test number of academic periods isn't a divisor of 2 or 3 so I end up with single period gaps.

As soon as I have something presentable I'll share with you.

Thanks for you support on this!


Liviu Lalescu

Hello, fred,

Absolutely no problem!

It would be interesting to see your solution. Note that adding a constraint students set not available will not count as a gap, so you can use this constraint.

fred

Dear Liviu,

I've emailed you the FET file with my solution of split periods and pre multiplied split times.

I couldn't see how to attach files on PM so emailed instead.

Best regards,

Fred.

Liviu Lalescu

Dear Fred,

I saw your file. Indeed, I think your approach might work, even if I cannot guarantee. But if everything is OK, then it's good.

The only problems you should take care is that the timetable might be more constrained than it should.

You have a possible efficiency bug in your file: you have 5 days per week and some constraints min days between activities with more than 5 activities in them (even 9 or 10). Please add a split activity in the FET interface in this incorrect way and FET will tell you the correct way to add it.