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.

Liviu Lalescu

#165
I have an idea to speed things up in general and in the case of activities occupy max time slots from selection when there are all the Fake slots selected. This idea is derived from yours: add a break in all Fake slots but those of the first day.

I tried it, but it stops after around 280 activities placed on your file. You need for each activity preferred times to allow also the first day Fake1...Fake8

Will this work?

I will now compile for Windows the latest snapshot (~30 minutes needed) and put it for you. You can work either with all available Fake hours or use our trick with only 8 Fake hours (in which case you need to update all the preferred times for activities), which is recommended by me.

Unfortunately, I cannot generate too much on my available computer because it heats up and I am afraid of wrecking it, and its speed is also quite slow. So please generate and tell me if the new snapshot works OK.

Liviu Lalescu


ChicagoPianoTuner

Quote from: Liviu Lalescu on August 12, 2019, 06:14:38 PM
In your file you forgot to add the activities occupy max with all Fake slots
Sorry, I did not do this - I wanted to wait for you to tell me it is best.
Quote
and I saw 3 constraints occupy max with only 1 activity.
My mistake, I will fix it.
Quote
I intend to optimize the activities occupy max if the selected slots are all the Fake slots. The other two changes are done.

Or you don't need occupy max with all Fake selected anymore? Should I put the snapshot as it is now?
I will make the changes tonight or tomorrow morning my time and send you a new file.

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 12, 2019, 08:03:23 PM
I have an idea to speed things up in general and in the case of activities occupy max time slots from selection when there are all the Fake slots selected. This idea is derived from yours: add a break in all Fake slots but those of the first day.

I tried it, but it stops after around 280 activities placed on your file. You need for each activity preferred times to allow also the first day Fake1...Fake8
For FET reasons, must it be the first day? Or can it be any day?

Liviu Lalescu


ChicagoPianoTuner

OK, I will also add a break for every student during every fake hour other than the 8 on that day.

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 13, 2019, 03:26:30 PM
OK, I will also add a break for every student during every fake hour other than the 8 on that day.

I don't understand. Constraint break means no teacher/students set available. So break includes students set not available. The input file will be smaller my way (but this should not be a very important issue for generation).

ChicagoPianoTuner

Right - I had never used break before! Nearly finished and will send you the file soon.

Liviu Lalescu

Nearly finished creating the XML .fet file or FET solving the file?

I would like a solved file, as I prefer not to generate it myself as I wrote in a previous topic. If hopefully the file is solvable (fingers crossed).

ChicagoPianoTuner

I just sent you the new file. I think it is correct. Please see the second file as I sent you the wrong one initially. The second one does not have the "Not_required" tag for middle school students - only senior school students.

It is currently running on my computer right now (only 5 minutes) so it has not yet generated, but I think it will.

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 13, 2019, 04:04:35 PM
Nearly finished creating the XML .fet file or FET solving the file?

I would like a solved file, as I prefer not to generate it myself as I wrote in a previous topic. If hopefully the file is solvable (fingers crossed).
OK, I will send you a locked file once it has solved. I think it is solvable.

Liviu Lalescu

Your file has wrong break. X for most of the teachers (FET days), without one in the middle (correct) and without break in the last 9 teachers (I refer to Fake hours).

ChicagoPianoTuner

I wanted to give a quick update. We last left it with me realizing (via email) that there was a problem with the input data that required some thought on my end. My colleagues and I have decided how best to proceed but we must run our proposal by the school's administration. I do not want to put extra burden on Liviu until I am 100% confident how our input data will look. I expect to revisit this project in a few months, but this custom version of FET is very close to being finished.

ChicagoPianoTuner

Hello again!

Our school administration has approved a schedule for our next academic year. It is much more straightforward than this version that we had been working toward, but this one might be needed in the future. I do not know if I even need an additional custom version or if I can just use aat. I am hoping you can help tell me. I will describe our new schedule and maybe you can tell me what version you think will be best. It is again about course planning - no "real time" scheduling necessary.

If you want me to move this to another thread, I will (or you can - I don't mind).

I will base everything on FET-aat.

In our new schedule, there are 8 "blocks," sort of like before (there used be 7 in the previous version). Blocks are A, B, C, ..., H. Every course a student takes must occupy either 1 or 0.5 blocks. So I am thinking there should be 18 hours in FET-aat: A1, A2, B1, B2, ... , H2, and FAKE-1 and FAKE-2. Every activity has either duration 1 (0.5 blocks) and can start in any of the 16 blocks, or has duration 2 (1 block) and must start in A1, B1, C1... (not A2, B2, C2...). Easy enough to activities preferred starting times here.

Example of a finished student timetable:
A1 and A2 - math
B1 and B2 - English
C1 and C2 - Spanish
D1 and D2 - no lessons (free)
E1 - music, E2 - gym (half a block each)
F1 and F2 - history
G1 - drama, G2 - free
H1 and H2 - computing
FAKE1 and FAKE2 - physics (reserve choice - see below)

Students have "required" courses like before (must not be in FAKE hours), and of non-required courses have preferences (1st_Choice, 2nd_Choice, ..., Reserve) with different allowed starting hours to make sure reserve only exists outside of FAKE if absolutely necessary. Weights are based on tags.

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". Is this the correct use of the constraint?

I want some sort of constraint to make sure that a teacher doesn't end up with too many activities. Maybe I can create non-overlapping "free" activities and make sure that there are some minimum number occurring on each FET day (teacher).

Thank you for your thoughts.

Liviu Lalescu

Hello, after a long time!

FET-AAT is a custom version.

QuoteConstraint "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". Is this the correct use of the constraint?

I think yes.

QuoteI want some sort of constraint to make sure that a teacher doesn't end up with too many activities.

I think you can select all the activities in a constraint activities occupy max time slots from selected = all slots of that teacher. One constraint for each teacher.

Note: Current official FET (starting from 5.41.0) has constraints activities occupy min time slots from selection and min simultaneous in selected time slots allowing empty slots. Might be useful.