FET Forum

FET Support (English) => Get Help => Topic started by: Estuardo on April 01, 2018, 06:41:03 PM

Title: Estuardo
Post by: Estuardo on April 01, 2018, 06:41:03 PM
Please any suggestions.
We have two recesses (one for children and one for adults) and there should be no overlap with the teachers who work at both levels.
Thank you.
Title: Re: Estuardo
Post by: Volker Dirr on April 01, 2018, 07:34:54 PM
I am not 100% sure if i understood your question.

So you do currently 2 timetables. One for adults and one for children, but some teachers need to teach in both tables?

i think there are 2 variants with different advantages and disadvanatges:
a) enter all data into a single timetable instead of using 2 timetables.
b) do an "agreement" for those teachers. Maybe teacher A is only allowed to teach the adults at Tuesday and Thursday while he teach the childrens at the other times. So you can stay at 2 different timetables, you only need to use "not availabe times" to that teachers at the "correct" days.
Title: Re: Estuardo
Post by: Estuardo on April 02, 2018, 01:26:19 AM
Thanks for answering.

If we have a single schedule for both levels, the children's recess overlaps with adult classes.

The problem that I can not solve is to prevent teachers working at both levels from having
collisions during breaks.
Title: Re: Estuardo
Post by: Volker Dirr on April 02, 2018, 09:22:49 AM
i am still not 100% sure.
they are overlapping because they have different times? (for example children from 08:00-08:45 while adults have got 08:10-08:55)

you already thought about giving both similar times, but it is "impossible"?
you already thought about doing a "better" activity table by avoiding teachers in children and adults planning?

how about adding room constraints to all activities. set all activities of the adults in building "adult". set all activities of children in building "children".
add a room constraint: min 1 hour between building changes.

in fact this might be too strict, since you maybe need only 1 hour free from "children" to "adult", but not from "adult" to "children".

Liviu: i remember there was already such an request several times. currently you do the "min hours between building" constraint by checking if building 1 != building 2.
how about adding a check box in that constraint. maybe called "only in increasing order of the buildings". so you only need to check if building 1 < building 2. that will help all guys that need only one direction.

hmmm.. i think there was also i solution with an other constraint (the max from a selection one?); i don't remeber exactly anymore. i sadly have no time to search in the forum right now.
Title: Re: Estuardo
Post by: Liviu Lalescu on April 02, 2018, 10:51:01 AM
Quote from: Estuardo on April 02, 2018, 01:26:19 AM
The problem that I can not solve is to prevent teachers working at both levels from having
collisions during breaks.

If you have two time slots and you want a teacher not to have activities at both of these time slots, you can add a constraint activities occupy max time slots from selection. Select all the activities of this teacher, selected slots = these two, max occupied = 1. But you need to add a lot of constraints.
Title: Re: Estuardo
Post by: Volker Dirr on April 02, 2018, 11:05:19 AM
Ah... Yes Liviu. That was the other trick i was missing.

Livius trick is (maybe) easier to add if you don't have room constraints yet. But be careful, since you always need to "update" this constraint if you do changes in the number of activities of that teacher. So at least every years.

My trick (with the rooms) is (maybe) a bit more work if you didn't used room constraints yet, but the advantage is that you don't need to "update" this if you do changes (as long as you selected the room constraint "clever")

Liviu: Both suggestion might be too strict if the time are overlapping just because maybe "adults" starts 10 minutes later. So what do you think about my suggestion of improving the gaps between building changes constraint?
Title: Re: Estuardo
Post by: Liviu Lalescu on April 02, 2018, 04:23:07 PM
Volker, what if he uses real rooms? Also, we need to differentiate two categories of buildings, not an ordering of buildings.
Title: Re: Estuardo
Post by: Volker Dirr on April 02, 2018, 05:16:22 PM
If he use real rooms, then my suggestion if even better, because it is much less work to do.

I am not 100% sure how you want to do it with 2 categories of buildings. The ordering idea will be very easy to code and you don't need different categories of buildings by that.
In fact that varaint will even help if you have 3 kinds of shifted times. Lets assume they have kindergarten starts at 07:50, childern starts at 08:00 and adults start at 08:10.
In that case the simple order (compare <) of buildings will also help! I am not sure about your "2 different categories of buildings" idea. Will it work also?
Title: Re: Estuardo
Post by: Liviu Lalescu on April 02, 2018, 05:20:40 PM
OK, maybe I was wrong.

I am willing to add this in the TODO, but please send me a resume of this topic (the form in which I will add it).
Title: Re: Estuardo
Post by: Estuardo on April 03, 2018, 04:54:15 AM

I thank you for the suggestions.
I think it is better to illustrate the situation that I face:

Schedule:
7:00 class 1 children and adults
7:40 class 2 children and adults
8:20 rest children and adults class 3
8:40 class 3 children and adults continue class 3 (until 9:00)
9:00 adults rest and children continue class 3
9:20 class 4 children and adults ...

(classes last 40 minutes and breaks are 20 minutes)

As you can see the children's rest should go parallel to the class 3 of adults and then the rest of adults should go parallel to the class 3 of children (it is crazy but this way it has always been used)

The problem is to avoid the collision of teachers who teach at both levels.
Thank you in advance for the time you invest in reading.
Title: Re: Estuardo
Post by: Volker Dirr on April 03, 2018, 08:43:16 AM
In my opinion it is very difficult to see the exact problem.
are students and children in the same room? Or are they seperated?

i think it is better to wtite down a schedule with times of children.
and to write down a second schedule of the times of the adults.

In the current view it look like you could use a 20 minutes duration as a FET hour to solve your problems.
Title: Re: Estuardo
Post by: Volker Dirr on April 03, 2018, 08:52:11 AM
Liviu: Thinking some more about this i will withdraw my suggestion about the new constraint suggestion. even is very easy to code, it will also solve some problems of some users, but i think a more commen solution will be better even it is more difficult to code.

now my advanced suggestion is:
each building constraint need a radio box:
by default selected "each building change". this is similar to the current constraints.
the 2nd radio box should be "only if changing to special buildings": with 2 comboboxes for "origin" and "destination". (list of cuilding names). So if this is selected the constraint will be used only if it is a change from origin to destination.

the current saved files can be the same:
if there is no "origin" and "destination, than it is the "old" constraint.
if there is a "origin" and "destination" with 2 times an empty name, than it is also the "old" constraint. (this is only maybe needed so make it easier to save?!)
if there are different "origin" and "destination" saved, than it is of course the "new" constraint.

This variant will be more diffcult to code, but it will be easier to understand and it will also be more flexible than my old suggestion.
Title: Re: Estuardo
Post by: Liviu Lalescu on April 03, 2018, 01:01:57 PM
Volker: I will wait for your text to add in the TODO.

Estuardo: I am not sure I understand correctly. So, you have students sets of kind Children and of kind Adults. The Rests from 8:20 (Children) and 9:00 (Adults) are problematic?

So, you need to ensure that Class 3 teachers do not teach in both Children and Adults from 8:40 to 9:00? I think you can do this with the magic constraint activities occupy max time slots from selection. But you need to add a lot of constraints. n_teachers*n_days_per_week.

Maybe you could give us your input file, maybe locked, and show us a conflict like the above.
Title: Re: Estuardo
Post by: rodolforg on April 03, 2018, 10:03:15 PM
Quote from: Estuardo on April 03, 2018, 04:54:15 AM

I thank you for the suggestions.
I think it is better to illustrate the situation that I face:

Schedule:
7:00 class 1 children and adults
7:40 class 2 children and adults
8:20 rest children and adults class 3
8:40 class 3 children and adults continue class 3 (until 9:00)
9:00 adults rest and children continue class 3
9:20 class 4 children and adults ...

(classes last 40 minutes and breaks are 20 minutes)

As you can see the children's rest should go parallel to the class 3 of adults and then the rest of adults should go parallel to the class 3 of children (it is crazy but this way it has always been used)

The problem is to avoid the collision of teachers who teach at both levels.
Thank you in advance for the time you invest in reading.

You should make one FET hour represents (real life) 20min.
This way, one class shall last 2 (FET) hours (in better words: two time slots), and a recess lasts 1 (FET) hour.
Title: Re: Estuardo
Post by: Estuardo on April 04, 2018, 02:36:13 AM

I am very grateful for the patience you have had.

I share an image of the generated schedule so that they see better the
schedule situation.

https://drive.google.com/file/d/1M8A8ckMotY68Z6X1k8DXC4CWJnYU1nFZ/view?usp=sharing (https://drive.google.com/file/d/1M8A8ckMotY68Z6X1k8DXC4CWJnYU1nFZ/view?usp=sharing)


Each group of students has their own classroom (classrooms are not a problem)

Thank you very much.
Title: Re: Estuardo
Post by: Liviu Lalescu on April 04, 2018, 07:36:37 AM
So, teacher ANA (all teachers, in fact) should not be allowed to teach from both 8:20 and 8:40. I think this can be done like I said, with many constraints activities occupy max time slots from selection.

Could you also attach your .fet file? Preferably attach a locked .fet file, and show us an example of a broken such rule in this timetable (day, hour, teacher, activities).
Title: Re: Estuardo
Post by: Volker Dirr on April 04, 2018, 08:52:32 AM
Or, like we already said 2 times, make a fet hours = 20 minutes. Use Activity tags (maybe "c" for children" and "a" for adult; hide that tags later if you release the final table) and mark all activities. Set activities preferred time slots for this activity tags. In that case you don't need occupy max times slots.

i guess the max occupy time slots variant might generate a bit faster. But i am sure using the max occupy time slots constraint will more critical, because:
- doing a mistake while entering the data is no as eye-catching as in the other variant. so you might not see mistakes until it is too late.
- you always need to modify the max occupy time slots constraints if you do smaller changes in the activity planning.
Title: Re: Estuardo
Post by: Volker Dirr on April 04, 2018, 09:04:56 AM
oh... i just see a much easier variant:
why do you enter the break at all?
If you don't highly need them just call the hours "1", "2", "3,", ..."7". If i see it correct the teacher will NEVER overlap if you do it that way!
the times of "3" adult will be still "different" from "3" children! Just the names are the same.
That will be the easiest variant, less critical in doing mistakes and fasted generating.

if you need the breaks just because "it looks nicer": modify it after generating.
if you need that breaks only to do the supervision planing: think about adding them later, after generating, you can still do your supervision planning then.

if you still "need" that breaks: I still recommend using 20 minutes as fet hours (and enter both of course in ONE fet dataset.).
Title: Re: Estuardo
Post by: Estuardo on April 05, 2018, 03:22:32 AM

Eureka ..
Thank you very much Volker Dirr, excellent suggestion to remove the recess, this avoids using conditions and then I can export my schedule to PDF and edit it to add recesses.
I will prove it and tell you as soon as I achieve it.
Again, Many thanks to Volker Dirr and Liviu Lalescu for their patience and great ideas.