Custom FET BP - block planning (Need help choosing a custom version)

Started by ChicagoPianoTuner, July 24, 2019, 01:36:30 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Darren McDonald

Quote from: ChicagoPianoTuner on June 16, 2020, 11:40:01 PMI just thought of something. Right now, for example, teacher T1 (really a FET day) teaches subjects S1, S2, and S3. Constraint "activity tags not overlapping," where the subject = the tag, prevent those subjects from, well, overlapping. So it's impossible that teacher T1 teaches S1 and S2 simultaneously.

The problem is those constraints (tags not overlapping) also exist in F1-F4, but we don't want that to be the case in those slots - anything should be able to overlap in fake blocks. Any suggestions for how to achieve the same result?

Hmm... strangely, I didn't run into this issue with my block plan, but now that I think about this, perhaps I was just lucky!

It's not a very elegant approach, but if, say, you have 40 distinct courses, you could add extra teacher slots (FET days) so that there are 40 days. Then, adjust your "A set of activities has a set of preferred starting times" constraints (which I'll assume you're using to make sure the right teachers get the right courses) so that, for example, all S1 courses have to fall on day T1 in Blocks A–H or in any of the F1–F4 time slots (on any day). Then all the unsatisfiable preference 1 choices could be distributed along that F1 "row" without overlapping tags.

ChicagoPianoTuner

That's one solution, yes. I could also add a number of "fake" hours equal to the number of choices (4 in this case) times the max number of unique courses taught by any teacher (3 in this toy example), so instead of 4 fake blocks, I have 12: F1_a, F1_b, F1_c, F2_a,... , F4_c. Then "first choice" could happen in F1_a, F1_b, or F1_c, and "second choice" in F2_a, etc. I don't necessarily think this solution is any more elegant than yours though.

Liviu Lalescu

Hello,

Please let me know if I should think of a solution, or these tricks work.

ChicagoPianoTuner

Liviu, any solutions you have are always helpful  :) I think the elegant way is to have some constraint "a set of activity tags are not overlapping in select time slots" or "a set of activities are not overlapping in select time slots" but I do not know how difficult a constraint like that would be to implement, nor do I know what sort of impact it would have on generation.

If you can think of any other tricks, please share! Also, do you have any suggestions for which method we proposed is easier for FET?

Liviu Lalescu

I prefer not to add these new constraints, if possible, for simplicity reasons. Also, they may in fact be slower in the generation.

But I think that adding more slots is nicer. I am not sure, but aren't your two methods kind of related/similar? The acceptable extra slots are the same in number, after adding preferred times constraints.

So, Darren, do you need to update your files? And you might obtain better timetables?

ChicagoPianoTuner

Understood - adding a constraint is probably not necessary. I just wanted to make sure that doing it this way wasn't going to slow down the generation too badly.

I was thinking and I like Darren's solution because if teacher T2 also teaches subjects S1 and S2 it might be nice to have all of the unscheduled activities in the same place and not split between the two teachers.

ChicagoPianoTuner

It may be worth noting that there may be an issue with max days for some users. There isn't in my case as I have ~40 real teachers and ~50 FET subjects that now require their own FET day, so I'm under the 216-day limit, but other users may not be.

Darren McDonald

Quote from: Liviu Lalescu on June 17, 2020, 10:45:20 AM
So, Darren, do you need to update your files? And you might obtain better timetables?

No, if this had been an issue with my file it would have failed to generate, though I may adopt one of the proposed solutions with my data next year. I think it wasn't a problem in my case this year because there were so few unavoidable conflicts with my data.

Liviu Lalescu

Quote from: ChicagoPianoTuner on June 17, 2020, 02:54:29 PM
It may be worth noting that there may be an issue with max days for some users. There isn't in my case as I have ~40 real teachers and ~50 FET subjects that now require their own FET day, so I'm under the 216-day limit, but other users may not be.

I thought Darren's proposal was to consider n_FET_days = max (40, 50) = 50. I consider the days' dialog too large, but in case some other user needs more, I could try something else in the interface. Or should I do that now? How many max FET days?

Quote from: Darren McDonald on June 17, 2020, 03:38:07 PM
No, if this had been an issue with my file it would have failed to generate, though I may adopt one of the proposed solutions with my data next year. I think it wasn't a problem in my case this year because there were so few unavoidable conflicts with my data.

Do you think I should add these two tricks to FET-BP help menu item "Instructions for the BP version" and make a new FET-BP release?

Darren McDonald

Quote from: Liviu Lalescu on June 17, 2020, 05:33:43 PM
I thought Darren's proposal was to consider n_FET_days = max (40, 50) = 50.
Yes, that's what I had in mind.

Quote from: Liviu Lalescu on June 17, 2020, 05:33:43 PM
Do you think I should add these two tricks to FET-BP help menu item "Instructions for the BP version" and make a new FET-BP release?

That might be a good idea, so if you're updating FET-BP to 5.45.0 it's probably worth including a note about this.

I've just had a look at the Instructions for the BP version help notes, and I think we should also note that the Break constraint in the Time tab can be used to mark blocks in which a teacher is unavailable.

Liviu Lalescu

OK, I will then update soon FET-BP to 5.45.0. Please, could you make a debate and a final decision to the exact text to add in the help, and I will add it? Maybe it is best to add both tricks. And don't worry, if there is some mistake in this text, we can release after that FET-5.45.0-BP2, and so on.

Darren McDonald

I made some quick edits to the FET-BP help text, and attached a potential new version here. I included both options, but simplified the description of each option to avoid mention of using several fake/overflow blocks to allow for student preferences, then added another use case (the most recent situation as described by ChicagoPianoTuner) at the end.

Please make edits/changes as you see fit!

Liviu Lalescu

Thank you!

There are two things:

1) Could you make clear my remark above, that the number of FET days is max(40,50)=50, and not 40+50=90?
2) You forgot about your break constraint to make teacher not available?

Please make sure there are no special characters in your file, like special quotes or apostrophes (I think there are not).

ChicagoPianoTuner

Quote from: Liviu Lalescu on June 17, 2020, 08:31:27 PM1) Could you make clear my remark above, that the number of FET days is max(40,50)=50, and not 40+50=90?
You are correct - I misunderstood Darren's advice.

ChicagoPianoTuner

I have made lots of progress with my timetable today. I am now considering space. I do not believe there are any special constraints for rooms in FET-BP. It would be nice if rooms had the same custom basic constraint as students: they cannot be scheduled in the same FET hour on any day. Is that possible?