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

I updated to FET-5.45.0-BP and made the rooms unique time stuff. It seems to be working. The rooms stuff was easy. CPT, now I am trying on your private file. If successful, I will send you a solution to check, otherwise I will leave more generations overnight.

I can put the snapshot version, but I assume you need the Windows executable version, which I only intend to release after testing and after adding the other new features (the readme by Darren and maybe I can do a max gaps between activities).

Liviu Lalescu

I obtained three solutions for your input, with the rooms as needed, not occupying two real slots at the same time. I sent you two of them.

About the max gaps between activities, I would like firstly to make sure this constraint is useful. So, if possible, I would like from you a file with everything but these constraints of this type added. I will make a hack to make min gaps results also in max gaps. If it works, I might add it in the FET-BP official, but if it does not work, if there are some other problems, it is best not to add it.

ChicagoPianoTuner

Quote from: Liviu Lalescu on June 18, 2020, 09:50:52 PM
I updated to FET-5.45.0-BP and made the rooms unique time stuff. It seems to be working. The rooms stuff was easy. CPT, now I am trying on your private file. If successful, I will send you a solution to check, otherwise I will leave more generations overnight.

I can put the snapshot version, but I assume you need the Windows executable version, which I only intend to release after testing and after adding the other new features (the readme by Darren and maybe I can do a max gaps between activities).
I checked the files - they are correct. Thank you! I can compile the snapshot if need be, but I can also wait for the Windows executable - I have other work to do on my timetable in the meantime.

ChicagoPianoTuner

Quote from: Liviu Lalescu on June 18, 2020, 11:35:25 PM
I obtained three solutions for your input, with the rooms as needed, not occupying two real slots at the same time. I sent you two of them.

About the max gaps between activities, I would like firstly to make sure this constraint is useful. So, if possible, I would like from you a file with everything but these constraints of this type added. I will make a hack to make min gaps results also in max gaps. If it works, I might add it in the FET-BP official, but if it does not work, if there are some other problems, it is best not to add it.
Okay. I think I will send you a file soon. I am testing it with the large dummy activity and the constraint three activities grouped.

I'm not sure what you mean by "min gaps also results in max gaps" - does this mean a constraint "two activities are separated by exactly N gaps"?

Liviu Lalescu

Yes, exactly n gaps.

I think with 3 activities grouped will be slower than necessary. I would prefer us to try with the hack for exactly n gaps. I would like to have such a file from you soon, so that I can prepare FET-5.45.0-BP. You need to add everything and min gaps, and I will consider min gaps = exact gaps.



Liviu Lalescu

I obtained 3 solutions for your file in a larger time (45 minutes - 2 hours 17 minutes, and I have other generations running now for about 2 hours 30 minutes) (I sent some emails). Did you forget about activities same starting day, or they are unnecessary? Also, if you added redundant min gaps between activities for students it would be faster (but I am not sure you can do that?)

ChicagoPianoTuner

#308
Students do not need min gaps in my special use case because they do not have different activities in semester 1 vs. semester 2. I may not do a good job of explaining this, but I'll try.

Students in grades 6-8 (middle school students) do not choose their courses - they all are told what to do. Some of their courses are the same in semester 1 as semester 2, but others are not. When I create activities for these students, I do not need to make use of special BP features. I can just do an activity with a teacher with a student group (e.g. Mr. Smith teaches math to 8K, a 'class').

Some teachers teach both senior students and middle students. Students in grades 9-12 (senior school students) are the ones who primarily benefit from FET-BP - they choose their courses. Moreover, senior school students have the same schedule semester 1 as semester 2.

When I create "teacher activities" for senior school subjects, I create two activities, and place one in semester 1 and one in semester 2, and space them using 'exactly n gaps'. But when I create "student activities" I do not need to do this, because the students who correspond to these activities do not change their courses in semester 2. But their teachers might for the middle school courses they teach.

Let me know if that is unclear and I will provide a graphic :)

ChicagoPianoTuner

I would also like to say that other users may very well have senior school students taking different courses in semester 1 vs. semester 2 (Darren's school did). My school may even do it next year. But this year, it is unnecessary.

Liviu Lalescu

OK, no problem, no need to explain, even if I don't understand perfectly I believe you  :)

So, activities same starting day are unneeded, because teachers have their activities on a separated day?

ChicagoPianoTuner

I don't see why same starting day would be necessary. The activities for real teacher T are already constrained to only occur on FET day T, and these are the only activities that will make use of exactly N gaps. Are you saying that, even though this constraint exists, we still need "same starting day" for A1 in semester 1 and A2 in semester 2 constrained by exactly N gaps? I can add those constraints if you think that will increase generation speed.

Liviu Lalescu

No, not needed. I just asked because you told before that you add same starting day, min and max gaps between activities.

Could you please write here (again), a help for the users regarding how to use same starting day (if adding for students), and min+max gaps between activities, for your situation?

I will have a small rest now and add then the new constraint max gaps between activities and hopefully put the new version soon (after testing again your file, which is taking much time).

ChicagoPianoTuner

#313
Quote from: Liviu Lalescu on June 19, 2020, 11:17:48 AM
Could you please write here (again), a help for the users regarding how to use same starting day (if adding for students), and min+max gaps between activities, for your situation?
If your students have some different courses in semester 1 and semester 2, there are a few things you need to do. First, double the number of hours in your FET day, creating an hour for each block in semester 1, and another for semester 2, including fakes. The structure should be A_sem1, B_sem1, ..., FAKE_1_sem1, ... A_sem2, B_sem2, FAKE_1_sem2, ... FAKE_N_sem2. Now, for subjects that only last one semester, you can create one activity per student choice as you did before. If you care which semester it's in, use a set of activities has a set of preferred starting times and select the hours corresponding to the specific semester.

For subjects that last the entire year (both semesters), you need to create two activities for each student choice and corresponding teacher activity. They should already be constrained to occur on specific FET days corresponding to real teachers. If there are multiple teachers for the same subject, you need to add a constraint to each student activity must occur on the same day to ensure the students have the same teacher for semester 1 as semester 2. If you want those activities to occur in the same block in semester 1 as semester 2 (which you probably do to avoid confusion, but it is not strictly necessary in some cases), two constraints for each pair of activities: "min gaps (hours) between a set of activities," and "max gaps (hours) between a set of activities". The number of hours, N, should be the same for both constraints. N should be equal to the number of real blocks + number of fake blocks  - 1, assuming the courses have duration 1 (each activity occupies exactly one block). If your courses occupy more than one block, decrease the value of N by 1 for each course duration.

Liviu Lalescu

And we need to add that "exactly N gaps" is obtained by "min" and "max".