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.

ChicagoPianoTuner

OK. I have the file. I am still working on tuning some data (e.g. balancing teacher loads, making students' choices realistic) but I found a FET problem that we need to solve. Maybe you recall there's a teacher who teaches multiple courses (most teachers do) and FET was scheduling two students of different courses simultaneously. No problem - we solved this using the new constraint set of activity tags not overlapping. But here's a problem: this constraint prevents those courses from being placed in the FAKE hours as well. Perhaps a solution is to massively increase the number of fake hours, but maybe there's another way that you think is better.

I will send you the file after I feel like I have made it realistic and given it the highest likelihood of being solvable.

Liviu Lalescu

Good observation!

I did not check the code, but it should be easy to skip this constraint (activity tags not overlapping) if the activities are in the Fake hours.

I didn't check the code yet because I am hardly working on other things as well.

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 09, 2019, 06:47:06 PM
Good observation!

I did not check the code, but it should be easy to skip this constraint (activity tags not overlapping) if the activities are in the Fake hours.
OK - I will temporarily implement lots of fake hours as a workaround and will wait for you to post a new snapshot whenever convenient
Quote
I didn't check the code yet because I am hardly working on other things as well.
I know English is a second(+) language for you, but "hardly working" means working very little  ;D

Liviu Lalescu

#93
Quote from: ChicagoPianoTuner on August 09, 2019, 06:54:55 PM
Quote from: Liviu Lalescu on August 09, 2019, 06:47:06 PM
Good observation!

I did not check the code, but it should be easy to skip this constraint (activity tags not overlapping) if the activities are in the Fake hours.
OK - I will temporarily implement lots of fake hours as a workaround and will wait for you to post a new snapshot whenever convenient

Oh, if it is a show stopper, I will try it now. Don't add lots of fake hours, please. I'll let you know when I'll have the new snapshot.

Maybe you could send me a file to test this new change? Not solvable with the current code, solvable with my new future modifications.

Quote
Quote
I didn't check the code yet because I am hardly working on other things as well.
I know English is a second(+) language for you, but "hardly working" means working very little  ;D

:-))

Every day you learn something.

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 09, 2019, 07:02:07 PM
Oh, if it is a show stopper, I will try it now. Don't add lots of fake hours, please. I'll let you know when I'll have the new snapshot.

Maybe you could send me a file to test this new change? Not solvable with the current code, solvable with my new future modifications.

The timetable will definitely not solve without modifying that constraint. I just added 10 extra fake hours (as we already had 50 hours total and 60 is the max) temporarily but I can undo it very easily.

I have significantly relaxed the constraints to hopefully allow generation so I can then see what bugs remain. It looks like the file might solve with the 10 extra fake hours but I know things are still very relaxed. I will send you the file shortly.

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 09, 2019, 07:07:21 PM
Quote from: Liviu Lalescu on August 09, 2019, 07:02:07 PM
Oh, if it is a show stopper, I will try it now. Don't add lots of fake hours, please. I'll let you know when I'll have the new snapshot.

Maybe you could send me a file to test this new change? Not solvable with the current code, solvable with my new future modifications.

The timetable will definitely not solve without modifying that constraint. I just added 10 extra fake hours (as we already had 50 hours total and 60 is the max) temporarily but I can undo it very easily.

I have significantly relaxed the constraints to hopefully allow generation so I can then see what bugs remain. It looks like the file might solve with the 10 extra fake hours but I know things are still very relaxed. I will send you the file shortly.

Awaiting a file with only 50 hours (8 Fake hours).

Liviu Lalescu

The constraints of type activities not overlapping and activity tags not overlapping are treated together. May I assume that you have no constraints activities not overlapping, or that it does not matter that these are broken in the Fake hours?

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 09, 2019, 07:13:50 PM
The constraints of type activities not overlapping and activity tags not overlapping are treated together. May I assume that you have no constraints activities not overlapping, or that it does not matter that these are broken in the Fake hours?
Correct. Sending you the file right now.

ChicagoPianoTuner

Please do not include the new file I am sending with the snapshot as it contains teachers' real names. I will provide an anonymous file later in testing.

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 09, 2019, 07:17:20 PM
Please do not include the new file I am sending with the snapshot as it contains teachers' real names. I will provide an anonymous file later in testing.

OK.

Liviu Lalescu

I saw a mistake in your activities: the last ones, physical education, are 1+1+1 with total duration 4. They should be 2+1+1? (or 4 - a single activity?) The PE_PGY subject, if I remember correctly.

I am done with the new modification. I tried to test it on your file, but it does not finish. I will create a small file for me. I will then compile for Windows and put the new version for you (with activities and activity tags not overlapping exception in the Fake hours).

ChicagoPianoTuner

You are right - they should be duration 3. I fixed it.

ChicagoPianoTuner

I thought of another thing I had not considered: at the moment, it may be the case that a student does not get his last choice NOR his reserve choice (there is no constraint preventing this). I could solve it with activities occupy max slots from selection = 8, activities selected = all of the student's activities, slots = all fake slots. Is there a better way?

Liviu Lalescu

1) On my written notes and in some post above and in the readme-cpt.txt, there is point (5), same students cannot have activities both (A2, T1) and (A2, T2) (same FET hour). I did this in the code. I examined now the code and it seems that this works also for Fake hours. If not, let me know.

I hope I am not wrong, I am tired.

2) It is best to solve the file now, and then add more constraints, if it is still solvable.

Liviu Lalescu