Main Menu

5 over 6 days

Started by metherington, March 20, 2018, 02:17:38 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

metherington

Hi there,

I've used FET to create school schedules several times. I am now in a school that uses a 6-day rotation. The "core classes" (Math, Science, Language Arts, and Social Studies) are taught by splitting the large class of 50 kids into thirds, teaching them 5 of the 6 days. There is always one extra day and we call it the "split day" where half the classes meet and the next day the other half meet. These "split days" must be consecutive. I don't know how to make this happen in FET - any ideas?

The attached image gives an example schedule, showing how the split day works.

Any tips appreciated!

Matthew

Liviu Lalescu

I am sorry, but I do not understand the picture.

Do you need to add two activities and say that they need to be in consecutive days? There is a constraint max days between activities which you can use, unfortunately without the cycle between the first and the last day. This can be easily solved in a custom version, making a minor modification to this constraint. Or I'll try to think of some trick, so that you can always use the latest version. I'll let you know if I will find a trick.

Maybe you could explain better the situation to me.

Please let me know.

Liviu Lalescu

If my assumption that you need two activities to be in adjacent days circularly is correct, I thought of a trick; in fact, I think it has been discussed here on other threads.

Add a fake teacher or students sets, each with activities: copies of the activities which should be in adjacent days, and an activity split into 4 subactivities with duration n_hours_per_day. For each teacher/students set, for these 4 subactivities, a constraint max days between activities, to make them adjacent (I think max 3 days, I hope I am not mistaking).

Then, use constraints activities same starting time, to make the copies of the activities which should be in adjacent days -> be simultaneous with the real activities which should be adjacent (a lot of constraints, one for each pair of activities).

This trick is difficult to implement (to input the data), and makes the timetable slower to generate.

metherington

Thanks for the replies - I'm not sure if the second idea is something that will work - I need to read it a few more times to see if I understand!

I wanted to post a clearer example of the pattern required. It applies to several classes at once, but in this example I am showing the impact on one math class. The color coding is to represent the same lesson taught to a group. Attached is an image of a pattern that works, and one that doesn't. Hopefully this is clearer...

thanks in advance!

Matthew

Liviu Lalescu

Oh, I think I understood correctly. You have more sets of activities. For each set you need all of them to be maximum 1 day apart, but circularly.

Not circularly - you can use the constraint max days between activities. Max days = 1, select all the corresponding activities for a students set.

Circularly - either the easy customization of the constraint max days between activities, or the difficult trick.

Please let me know.

metherington

Thanks again,

I'm not quite sure what you mean by "circularly". I'm attaching a pic of our actual full schedule with 4 grade levels (years). If you just look at the periods called "Core", you can see that there are 4 each day except the "split day" - 5th grade's split days are A and B, 6th grade's are D and E, 7th grade's are D and E, and 8th grade's are C and D.

I would typically schedule an Activity called "Math" for each of the three subgroups, and split it by 5 in a 6-day week.

Trying to make sure the split day is not separated by a regular day.

thanks

Matthew

Liviu Lalescu

#6
By circular I meant to allow also the A and F days.

Are all Core activities for say 5th Grade equivalent? Then you can add a (circular, customized?) constraint max 1 days between activities for a pair of your choice.

Or, if you know exactly the activities ids of the Core subject which need to be in adjacent (possibly circularly) days, the same constraint will do it.

If the activities are not equivalent and you need to say to the program: "place the activities and those 2 which remain single in a day need to be in adjacent days" - this might be possible also by customization, but more difficult.

metherington

I think it's the last option. To maintain flexibility, it would need to be a constraint. I wonder if I could split the 5 periods into different activities - the split day might have different rules than the consistent days?

There are 4 grade levels, each with 4 subjects (activities) that would need to follow this pattern - i.e. 16 different activities in the whole schedule.

thanks

Matthew

Volker Dirr

hmmm... maybe i misunderstand, but i think you should add the data different?!

Use a 5 days week only! Since in fact there are only 5 days and not 6 days.
Of course that mean you need to do a correct students structure. It won't work with the current one.
So you need to "split" the year.
Than all you core days (activities) will get all students, while the activities of the split days get only the split students.
Than just add a "max 1 day between with 100%" constraint between at least 2 of that activities (that also have got "a min 1 constraint with 100%")

metherington

except that we run a 6-day cycle...

Liviu Lalescu

#10
Quote from: metherington on March 26, 2018, 02:18:52 PM
I think it's the last option. To maintain flexibility, it would need to be a constraint.

OK, let me know if I should try a custom version for you. I will need details and example input file(s). Do you need the constraint to have an interface like all the other constraints which exist, or only a generic constraint for all activities say with total duration 20 (easier for me), or only to write this constraint in the .fet XML file (still a bit easier for me)?

Quote
I wonder if I could split the 5 periods into different activities - the split day might have different rules than the consistent days?

I am sorry, but I understand nothing here :)  You have 6 periods, not 5, in the picture, and I do not understand the rest. Could you try to use FET terminology (a real period = a FET hour, etc.)?

Quote
There are 4 grade levels, each with 4 subjects (activities) that would need to follow this pattern - i.e. 16 different activities in the whole schedule.

In your picture this is not visible? You have CORE for each year, so only 1 subject per year, so only 4 groups of activities for the input file.

Volker Dirr

Then do it with 6 days.

again: i think the students structure you are using is "incorrect".
why not doing it like my suggestion with the 6 days and just add an pseudo activity with duration = number of hours per say; maybe with subject "free". Similar to the other split group. Those 2 pseudo activities will get a min 1 day between with 100% and a max 1 day between with 100% constrait.

Liviu Lalescu

Sorry, Volker, but I don't get you. Matthew has 6 day per week, 4 students years.

Volker Dirr

#13
He only need to add a new division / category  per year. maybe with "split A" and "split b".
So the "normal" activities will still have the normal students, but the split days/activities need the "split x" students.
then only add 2 pseudo activities with duration "hours per day" for "split A" and also "split B" with a min 1 day between and a max 1 day between constraint.

Liviu Lalescu

Quote from: Volker Dirr on March 26, 2018, 06:07:29 PM
He only need to add a new division / category  per year. maybe with "split A" and "split b".
So the "normal" activities will still have the normal students, but the split days/activities need the "split x" students.
then only add 2 pseudo activities with duration "hours per day" for "split A" and also "split B" with a min 1 day between and a max 1 day between constraint.

What about circular allowed? (a split day on "A"  and the other split day on "F" - by "split day" I understand Matthew's notation).

If you think it works, you might want to show us a small example .fet file.