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

#120
Quote from: ChicagoPianoTuner on August 10, 2019, 05:53:00 PM
Quote from: Liviu Lalescu on August 10, 2019, 04:02:47 PM
1) I would like firstly to generate on a not finished and easier file (but with all the activities), just to make sure it solves. The we will add more constraints.
My current file generates. The solution is not very good, but it generates.
This is great news! I was worried about this. We'll move on with the customizations, then.

PS: The grammar correction here shows me (with a red underline) that customization has no plural. How should I write, then?

Quote
Quote
3) I am not sure I understand why you can't use not overlapping. Maybe because the activities are allowed to overlap if they start at the same time?

4) If (3) is correct, it should be possible to develop a further customization on this.
(3) is correct.

OK, I'll try this. Please let me know: you will add constraints activity tags not overlapping, and if the activities are not split, have duration=total duration=4, they are allowed to overlap if they have the same starting day+hour, and not allowed to overlap if they have same day but not same starting hour?

I mean it is important not to have other activities of this type which are not allowed to overlap at all (not even when they start at the same time).

I could make an interface checkbox or something, but I prefer a quick fix, because it is much easier and anyway there are many hacks in your version's code.

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 10, 2019, 06:04:18 PM
OK, I'll try this. Please let me know: you will add constraints activity tags not overlapping, and if the activities are not split, have duration=total duration=4, they are allowed to overlap if they have the same starting day+hour, and not allowed to overlap if they have same day but not same starting hour?
Correct.
Quote
I mean it is important not to have other activities of this type which are not allowed to overlap at all (not even when they start at the same time).
I think we are safe - there are none of these.
Quote
I could make an interface checkbox or something, but I prefer a quick fix, because it is much easier and anyway there are many hacks in your version's code.
Whatever you think is easiest.

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 10, 2019, 06:04:18 PM
This is great news! I was worried about this. We'll move on with the customizations, then.

PS: The grammar correction here shows me (with a red underline) that customization has no plural. How should I write, then?
Customizations is correct. No problem :)

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 10, 2019, 05:55:10 PM
Quote from: Liviu Lalescu on August 10, 2019, 04:05:06 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 03:46:07 PM
Quote from: Liviu Lalescu on August 10, 2019, 03:43:20 PM
An activity conflicts with another one if they have common teachers or students. A conflict matrix is a Boolean matrix n_activities x n_activities, with false if they do not conflict and true if they conflict. Sort them in the decreasing number of conflicting activities.

FET does this. In addition, it will multiply the number of conflicting activities with the duration of the activity (not total duration). I might not do this multiplication, in your case.
You have it exactly right. But not all conflicting activities are treated evenly when (traditionally) doing this sort of schedule. For example, courses with only one section should be scheduled earlier than courses with multiple sections. Does FET do something like this?

1) I do not remember exactly what means courses with one section and multiple sections? Could you remind me, and also maybe talk in parallel with FET notation?

2) I am not sure how FET takes care of this, because I do not know (1), but this should be possible to change in the code.

1) If 50 students want (or need) to take biology (duration 6), 50 students is too many for one section because the max students per section is 20. So there must be three sections, possibly assigned to 1 or 2 or 3 teachers. For FET terms, that means 18 total possible slots (activities max slots from selection), spread between teachers appropriately. The sections may meet at the same hour if they are taught by different teachers (FET days).

The most difficult activities must be scheduled firstly. I am not sure which of 3 sections or 1 section are more difficult. They depend on the other activities. I think for now we can let FET do its usual job, since it managed to generate successfully.

Liviu Lalescu

#124
I'll try now the customization that activities with duration=total duration=4 may overlap if they have the same starting time. Should not be difficult (but I did not examine the code, yet). I will let you know after I'll put the new snapshot (I hope soon).

I assume I can allow partial overlapping in the Fake hours?

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 10, 2019, 06:33:14 PM
I'll try now the customization that activities with duration=total duration=4 may overlap if they have the same starting time. Should not be difficult (but I did not examine the code, yet). I will let you know after I'll put the new snapshot (I hope soon).

I assume I can allow partial overlapping in the Fake hours?
Yes, anything goes in the fake hours =P

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 10, 2019, 06:31:29 PM
The most difficult activities must be scheduled firstly. I am not sure which of 3 sections or 1 section are more difficult. They depend on the other activities. I think for now we can let FET do its usual job, since it managed to generate successfully.
I feel very strongly that courses of 1 section should be scheduled first.

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 10, 2019, 07:01:12 PM
Quote from: Liviu Lalescu on August 10, 2019, 06:31:29 PM
The most difficult activities must be scheduled firstly. I am not sure which of 3 sections or 1 section are more difficult. They depend on the other activities. I think for now we can let FET do its usual job, since it managed to generate successfully.
I feel very strongly that courses of 1 section should be scheduled first.

OK, even if I disagree, I'll try something. We might need to fork FET custom CPT into two, because I want to check also the official ordering of the activities.

Do you have ideas on how to sort them 1 section before 3 sections? You can add activity tags, and simply put all the "1 section" before all the "3 sections"?

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 10, 2019, 07:23:15 PM
OK, even if I disagree, I'll try something. We might need to fork FET custom CPT into two, because I want to check also the official ordering of the activities.

Do you have ideas on how to sort them 1 section before 3 sections? You can add activity tags, and simply put all the "1 section" before all the "3 sections"?
I could easily add an activity tag. I will do that.

Liviu Lalescu

#129
I added a new snapshot, with allow overlap if duration 4 and same starting hour/time: https://lalescu.ro/liviu/fet/download/custom/cpt/

Could you send me the solvable file? I want to see the miracle  :)  (because it was unsolvable yesterday). And send me also a locked file (a solution, data_and_timetable.fet) if you have it.

ChicagoPianoTuner

I think the new modification for duration = 4 subjects does not work the way I hoped it would. And in thinking about it a bit more, of course it doesn't work - the courses that are overlapping (that I wish not to be overlapping) have the same tags, so they won't be caught by the constraint. What the constraint really needs to look like is "if any of the periods in the duration = 4 overlap, then all 4 of the periods must overlap."

ChicagoPianoTuner

I do not know how difficult this would be, but could you temporarily put a version where, for subgroups days horizontal, empty columns (FET days) are hidden in the html timetables? The file is very, very large and difficult to load. It is very difficult to look through and try to figure out errors.

ChicagoPianoTuner

Quote from: ChicagoPianoTuner on August 10, 2019, 11:57:59 PM
I think the new modification for duration = 4 subjects does not work the way I hoped it would. And in thinking about it a bit more, of course it doesn't work - the courses that are overlapping (that I wish not to be overlapping) have the same tags, so they won't be caught by the constraint. What the constraint really needs to look like is "if any of the periods in the duration = 4 overlap, then all 4 of the periods must overlap."
A clunky workaround is to add constraint activities not overlapping, putting all duration 4 subjects in. Or many constraints, for activities of each class.

Liviu Lalescu

#133
Quote from: ChicagoPianoTuner on August 11, 2019, 02:55:55 AM
Quote from: ChicagoPianoTuner on August 10, 2019, 11:57:59 PM
I think the new modification for duration = 4 subjects does not work the way I hoped it would. And in thinking about it a bit more, of course it doesn't work - the courses that are overlapping (that I wish not to be overlapping) have the same tags, so they won't be caught by the constraint. What the constraint really needs to look like is "if any of the periods in the duration = 4 overlap, then all 4 of the periods must overlap."
A clunky workaround is to add constraint activities not overlapping, putting all duration 4 subjects in. Or many constraints, for activities of each class.

I think this workaround is good. Activities not overlapping, and in it all the duration 4 activities. Efficient, not "clunky".

But each activity in the constraint will not overlap with all the other activities in the constraint (or begins at the same time). So you might need more constraints, and in a constraint add for instance the activities of year 7 drama, in another constraint the activities of year 8 drama, etc.

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 11, 2019, 02:21:21 AM
I do not know how difficult this would be, but could you temporarily put a version where, for subgroups days horizontal, empty columns (FET days) are hidden in the html timetables? The file is very, very large and difficult to load. It is very difficult to look through and try to figure out errors.

OK, I'll try, maybe a bit later today.