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

Thanks for the new version - I will test it.

I think one of the problems now is for duration = 8 classes (6+1+1) fet places the duration 6 piece and then waits many activities in the generation order to place the (1+1). Do you think this is a problem?

Liviu Lalescu

I need to think about this. Tomorrow, because now it is late and I am tired.

You might want to add (automatically, by your script/program) many group activities in the initial order options, for the 6+1+1 and 1+1+1. To see how an item like this appears, enable this advanced usage in FET and save a file containing it.

Each such item will have 3 subactivities, those of a split activity.

But I am not sure it is necessary. I need to think, tomorrow.

Please check that the group activities in the generation items places the activities in the initial order as you desire (6, then 1, then 1, then 6, then 1, then 1, etc).

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 09, 2019, 09:09:38 PM
I need to think about this. Tomorrow, because now it is late and I am tired.

You might want to add (automatically, by your script/program) many group activities in the initial order options, for the 6+1+1 and 1+1+1. To see how an item like this appears, enable this advanced usage in FET and save a file containing it.

Each such item will have 3 subactivities, those of a split activity.

But I am not sure it is necessary. I need to think, tomorrow.

Please check that the group activities in the generation items places the activities in the initial order as you desire (6, then 1, then 1, then 6, then 1, then 1, etc).

Yes, I was thinking the same thing. But I will wait until you think about it some more. No rush :)

Liviu Lalescu

Maybe theory will not be enough and we'll need also to test. So maybe you could extend your script to output XML .fet with group activities in the initial order. If you have them, it is easy to remove all of them with a text editor. They are at the end.

ChicagoPianoTuner

OK, I am done working for the day but will try tomorrow.

As often is the case with timetables, the initial order of generation is incredibly important. I know FET performs internal calculations to determine the order in which activities are placed. How easy is it to modify those calculations? Can it be a parameter passed from the .fet file so I can try different options?

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 09, 2019, 10:00:06 PM
OK, I am done working for the day but will try tomorrow.

As often is the case with timetables, the initial order of generation is incredibly important. I know FET performs internal calculations to determine the order in which activities are placed. How easy is it to modify those calculations? Can it be a parameter passed from the .fet file so I can try different options?

It is possible to change the initial order like this, but it depends on what you intend to do.

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 09, 2019, 09:00:55 PM
Thanks for the new version - I will test it.

I think one of the problems now is for duration = 8 classes (6+1+1) fet places the duration 6 piece and then waits many activities in the generation order to place the (1+1). Do you think this is a problem?

I tend to think this is not a problem, but we need to test practically.

ChicagoPianoTuner

I am working on a bunch of problems simultaneously but I cannot figure this one out.

The middle school elective activities have duration = 4. Each middle school student takes 3 of these total so that they combine to have duration 12 and occupy 2 full blocks. The lessons should span, for example, A1-A3, A4-B1', B2-B5.

Take drama for example. There are 2 classes of year 7 drama. At the moment, it is possible for one student to have drama A1, A1', A2, A3, and another student to have drama A4, A5, B1, and B1'. All good.

But it is also possible for one student to have drama A1, A1', A2, A3, and another student to have it A2, A3, A4, A5 with the same teacher. This is not good.

At the moment, the activities are entered as one subactivity with duration = 4. If they were 4 subactivities with duration 1, then I could use a tag for each subactivity (Drama_7_Component_1, 2, etc.) and use tags not overlapping. But is there a way to solve it without changing the structure?

ChicagoPianoTuner

Quote from: Liviu Lalescu on August 10, 2019, 11:52:45 AM
It is possible to change the initial order like this, but it depends on what you intend to do.
If I talk about a conflict matrix, do you know what I mean, or do I need to explain?

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 10, 2019, 03:23:16 PM
Quote from: Liviu Lalescu on August 10, 2019, 11:52:45 AM
It is possible to change the initial order like this, but it depends on what you intend to do.
If I talk about a conflict matrix, do you know what I mean, or do I need to explain?

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.

If this is not what you mean, please explain.

ChicagoPianoTuner

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?

Liviu Lalescu

Quote from: ChicagoPianoTuner on August 10, 2019, 03:14:59 PM
I am working on a bunch of problems simultaneously but I cannot figure this one out.

The middle school elective activities have duration = 4. Each middle school student takes 3 of these total so that they combine to have duration 12 and occupy 2 full blocks. The lessons should span, for example, A1-A3, A4-B1', B2-B5.

Take drama for example. There are 2 classes of year 7 drama. At the moment, it is possible for one student to have drama A1, A1', A2, A3, and another student to have drama A4, A5, B1, and B1'. All good.

But it is also possible for one student to have drama A1, A1', A2, A3, and another student to have it A2, A3, A4, A5 with the same teacher. This is not good.

At the moment, the activities are entered as one subactivity with duration = 4. If they were 4 subactivities with duration 1, then I could use a tag for each subactivity (Drama_7_Component_1, 2, etc.) and use tags not overlapping. But is there a way to solve it without changing the structure?

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.

2) With a single activity with duration 4, it should be easier to FET than with 4 subactivities, each with duration 1.

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.

Liviu Lalescu

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.

ChicagoPianoTuner

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.
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.

ChicagoPianoTuner

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).