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 2 Guests are viewing this topic.

ChicagoPianoTuner

Sorry for the silence - we've been on break for a week. I do not think I need this customization anymore - I wrote a script that makes the sort of output file I need from the activities fet file after the timetable has been generated. I will post here if there are any other customizations that may be useful for my school and others. If there is, then perhaps we can work on a contract basis. Thanks again for your help thus far!

Liviu Lalescu

I am glad you found a solution! It is good that the output files are easy to read by a script. Did you find good timetables?

ChicagoPianoTuner

Yes, the timetables were very good! I was just working with sample data to show a proof of concept, but I think the data was realistic. The true test will happen in about two months when I start using real data based on staffing and student requests for next year. But I'm optimistic. Thanks again :)

Liviu Lalescu

You are welcome! I am glad it works!  :)  Thank you as well!

Darren McDonald

Hi everyone, thanks for your work on this custom version! I'm in the process of preparing a block timetable, and it looks like FET-aatv2 will work for this.

Given that this version is particularly suited for planning block timetables, it might be worth considering renaming the version to make this more apparent. Perhaps something like FET-blocks or FET-block-planning? I agree with ChicagoPianoTuner that this version may have wide appeal.

Liviu Lalescu

#215
Thank you for your feed-back, Darren! It is great that it works!

I am very eager to make this a major custom version, near Algeria and Morocco. I am waiting for the best name, suggested by the users. FET-block-planning might be too long and contains the word "planning", which is maybe redundant to "timetabling". But FET-blocks - isn't it a bit dangerous to name the version "blocks", which might mean something like "the program locks"?

I hope more institutions will use this and provide feed-back.

There are maximum 60 FET "hours per day", which are in fact the maximum real time slots per week. Should we increase this number?

Darren McDonald

#216
60 hours per day is fine for my usage (in my current testing I only require 7), since the "blocks" themselves will typically span several hours. For example, in my school we have a two-week timetable, and each day (well, most days) will have a combination of 5 blocks. On Monday students may have blocks A, B, D, E, and C, on Tuesday B, A, C, F and G, etc., but for planning I only need to determine which courses should run in Block A, which in Block B, etc. So, even with a two-week timetable, we only need to work with 7 blocks.

For the name, what about fet-bp? I think it would be helpful to give some indication of the typical use case (block planning) in the name, since otherwise users may find it difficult to determine which custom version they should use to solve this sort of problem.

I also think it might be helpful to include something like ChicagoPianoTuner's instructions below in the readme file for that version - I found it very helpful in choosing the appropriate constraints.

Quote from: ChicagoPianoTuner on January 23, 2020, 09:10:08 PM
[...]
FET days are real teachers.

FET students are real students.

FET subjects are real subjects. Subjects preferred starting day can be used to link real teachers (FET days) to subjects.

Each activity has 1 student. It is placed on a FET day based on its subject.

Constraint "set of activities occupies max time slots from selection" is used to make sure that activities all overlap to make a course. E.g. if 8 students want art (1 block, FET duration = 2), I can add all 8 art activities to the constraint and make max time slots = 2 (selecting only art teacher's FET day).

Constraint "activity tags not overlapping" (each tag = the subject) ensures that activities with different subjects aren't placed at the same hour on the same FET day (real teacher).

Constraint "max simultaneous from a set in selected time slots" can be used to make sure that no section of a subject has too many students enrolled. My notation: a "section" is an instance of a subject. So the subject is "physics" and if there are 40 students taking physics, that is too big for one group. So there must be two "sections" of that subject. They may be with the same teacher or different teachers - it depends on what is desired. If I want the maximum number of students to be 22, I can use "max simultaneous from a set in selected time slots".

Along with your suggestion that

Constraint "a set of activities occupies max time slots from selected" can be used to ensure that a teacher doesn't have too many blocks of activities assigned.

Liviu Lalescu

#217
OK, I will try to make it soon. I will read more thoroughly your message and try to follow. I will add a suggestive name, I think I'll choose between bp, blocks, and block-planning (the name can be changed later). I think I will use as base the new FET-5.43.2 just released today and update to it.

I think I'll add then it as the third custom versions entry, after Morocco and Algeria and before mapr and the others. And I need to remove aatv2 (which will be obsolete).

I will try to read your message above, which is very difficult for me to understand, since I never did blocks in Romania. But please let me know: you need to use only FET-BP, or you need to use FET-BP in a first phase and FET official in a second phase using the FET-BP output?

Edit: maximum 60 FET-BP hours per day, which in this case represent the maximum number of real slots per week (so if you have 7 real hours per day in a 10 days cycle you need 70 FET-BP hours per day, which is too much and we need to increase the maximum allowed). So, please let me know if there is a misunderstanding or 60 hours per FET-BP day are enough.

Darren McDonald

60 hours per FET day are more than enough for my usage, and I am planning to use a two-stage process: using the custom version to plan blocks, then using the standard version to prepare a final timetable. A little bit more detail about my timetabling situation may help explain.

My school offers the International Baccalaureate Diploma programme (as do many international schools), which is a two year programme offered in the final two years of high school, and block timetabling is useful for this group. Students choose 6 subjects to study over two years, and will choose 3 HL (Higher Level) courses, and 3 SL (standard level) courses. (HL courses require more time each week, but this isn't important at this stage.) Enrolment in courses will not be very uniform—for example, we may have only 5 students taking Music SL, but 14 students taking Geography SL, and 50 students taking Mathematics SL, so, there's only need for one section (one standard FET activity) for both Music SL and Geography SL, but 3 sections (3 standard FET activities) for Mathematics SL (since our class sizes are capped at 17). In a standard FET timetable, each of these activities would have several subactivities (without going into the details, SL courses would have 5, HL courses 7, in a two-week timetable).

Now if Geography SL and Music SL have no students (or teachers) in common, they can occur at the same time, on the same day (say, at 9am on Monday) in the standard FET timetable. However, if they have no students in common, all of their subactivities can be timetabled together (Tuesday at 12pm, Wednesday at 11am, etc.), which then forms a block, a group of courses that run simultaneously in all of their instances. The question, then, is which other courses can added to that block? Well, one section of Mathematics SL could also join that block, but only if that section of Mathematics SL has no students in common with Geography SL and Music SL. Because we need to run multiple sections of several courses (Chemistry SL, Biology SL, Mathematics SL, etc.), the block timetabling question to be answered has two parts: which assignments of students to sections allows us to form blocks (subject/section groups) in which each student is able to take the courses they've selected, and what are the resulting blocks?

To answer that question, the aatv2 custom version can be used, using constraints as suggested by ChicagoPianoTuner. At my school we are using seven blocks, so in aatv2 I need only 7 hours per day. Geography SL is a subject, with one activity for each student enrolled in the course. Similarly, Mathematics SL is a subject, with one activity for each student. At this stage, then, there is no need to take into account the number of times a course meets in a week, etc., so one activity per student per course is all that's required. A successfully generated custom timetable will allow me to identify which courses should go in Block A (custom FET Hour 1), Block B (custom FET Hour 2), etc., and which students should be allocated to each section. (This actually needs to be done only for Grade 11, since students in Grade 12 can keep the same blocks they had in the previous year.)

With that information, I could move to the official version to generate the real timetable: Block A becomes an activity tag which could be used to ensure activities in the same block get the same actual time, and I know that students assigned to a section have no conflicts within the blocks.

Liviu Lalescu

I think I understand (or begin to understand  :)  ).

I think I will do this BP soon. I'll add CPT's and your words in a "Help for BP" dialog.

Liviu Lalescu

#220
I just added the new FET-BP version. Please see the "Custom versions" section of the FET homepage and let me know if it is OK.

Edit: FET-BP direct download link: https://lalescu.ro/liviu/fet/download/custom/bp/  (but please also read the "Custom versions" information for more details).

Please let me know if you have any suggestions for improvements of the description.

Darren McDonald

I've tested FET-BP and it seems to be working well.

For the description, I would suggest adding some reference to International Baccalaureate Schools as well, since that would have a wider reach than just North America. How about

This variant might be useful for North American and International Baccalaureate institutions, and does allocation of activities (subject+students set(s)) to teachers and time slots (which can be identified with blocks).

Liviu Lalescu

#222
OK, Darren, good suggestions. I did this, and also added a section in the "Downloads" section of the FET homepage, and also made available a GNU/Linux executable version.

Volker Dirr

I think it will be better if we write it much more commen. Like "schools that use block/lines (for example many schools in North American or International Baccalaureate institutions)".
I "hate" those location names, since they are bad/wrong (like algerien and mocco custom version. That names are also bad and should be renamed)

What about a more realistic sample file? I guess/think many users will not understand the existing sample file. A "real" sample file will be much more helpful to understand how to use that version.

Liviu Lalescu

It is "a version for block planning".

The sample file is very simple, to illustrate the idea. The rest should come from the Help menu, but we could of course use more elaborate examples.