FET with five terms / for Finland (Five 7 weeks terms in a school year)

Started by mathmake, January 11, 2020, 12:45:20 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


Hi all folks in FET forum,

I've searched all over the forum but  haven't find a solution to my timetabling problem. I'm working in a ordinary comprehensive school in Finland with students from 7th to 9th grade. In each grade there is 9 classes (subgroups). They have different teachers in different subjects.

In our school we have divided a school year to five terms that will last 7 weeks each. Working days are from Monday to Friday and each of them has 5 lessons (periods) maximum. Many of the subjects have many different courses. For example 7th graders have 3 math courses. That means three hours in a week in three different term. The teacher will not change between the courses. Different subjects have different number of courses.

Math: 3 courses
Finnish: 3 courses
English: 2 courses
Music: 1 course
Home Economics: 2 courses
History: 2

What would be most effective way to take advantage of great FET to distribute also activities (teachers, classes and courses of subjects) to different terms? Should I make a week of 5*5 days or could I use tags like course 1, course 2 or something? Most important thing would be that there can't be running two courses of one subject at the same time.

I would be glad to have some suggestions how to do this without dividing courses to different terms manually and running FET with each term separately.

Liviu Lalescu


I just saw your message now. I will read more thoroughly. Until then, I have some preliminary things:

1) In the official FET, you schedule activities (each activity has a specified students set, teacher, and subject) to time slots. If you want to allocate (students+subject) to a teacher, it is more difficult, maybe possible with tricks, but not guaranteed. So please tell me if you know for each activity the students, the subject, and the teacher.

2) I come from a country in which the timetable is weekly (5 days x n hours). If you would help me with an example of your institution's timetable I could imagine better. I will try to read your post more thoroughly and answer, but maybe you could send me such an example. If it is private, maybe you could send by email. In this way I will be sure that I will understand correctly the difficulties in your timetable.

Additional question: English will take place in 2 terms, 2 hours in each week?

Edit: I think I begin to understand, hopefully. So in term 1, each week's timetable (each week out of the 7 weeks in this term) is the same? And in each term (2...5) correspondingly each week's timetable is the same?

I think that the important thing that two courses with the same subject cannot be run at the same time might be done with a customization, if we'll use a 25 days timetable, as you suggested.

Yes, maybe we could think of a 25 days timetable or a 5 days timetable with some tags. I will think some more.

Maybe we could do a FET 5 days timetable if for each real-life students set we add 5 students sets, one for each term.


Hi Liviu,

first of all thank you for a really quick answer.

For activities teacher, subject and student set (ex. 7A, 7B, 7C and so on) is known. One course means that a subject is studied three hours in a week during one period, two courses means that it is studied three hours in a week during two separate periods (like English, for example) and so on. It is not important that which term courses of subjects rhat have many courses are in. Only thing that matters is that they are not in same term. A certain teacher will teach a certain group in all courses in a specific subject.

You understood our term right.

In advance I planned to solve this problem so that I were about to make separate subjects from separate courses (ex. instead just subject Math there would be Math1, Math2 and Math3). After that I planned to have a constraint that a set of those subjects cannot be in a same time set of five days.

I can send you our current timetables, if they are needed.

Liviu Lalescu

Hello, mathmake,

It is very good that the activities have the teacher specified.

I am trying to understand your data. But please send me your current timetables.

"period" and "periods" - what does this mean in your third paragraph of your previous post?

Pleas do not make subjects Math1, Math2, Math3, but add activity tags (Math1, Math2, Math3, or simply 1, 2, 3, which maybe you can use in all the subjects). But I would like to see firstly your current timetables to make sure.

I think we'll need a customization so that Math1 is in the same term, Math2 is in the same term, and Math3 is in the same term, and Math1 and Math2 cannot be in the same term, 1 and 3, and 2 and 3, and the same for all the subjects/activity tags. This should be possible.


Hi Liviu,

and thank you for your reply. I used the word "period" instead of "term" by mistake. We use to call our term to "jakso" in Finnish, which is period in English. I should have used the word term. With words lesson or hour I've ment period in FET.

I attached my own schedules of all 5 terms and I did the same thing with two groups of students (8B and 8F). Please don't mind 5th or 6th lessons since they are always on the same slot. I have to also mention that 8th and 9th graders have 4 courses of Math (MA in schedules). The first row of the each period in schedules is a subject, the second row is a teacher and the last one is a class room. Rooms can be ignored in FET, because most of the teachers will give their lessons always in the same room.

Not every teacher has so few lessons than I do here in Finland. :) I'm the assistant headmaster in our school, so one of my offical duties is to make all schedules to teachers and students. I'll start to make them not until May, so there is no hurry yet.


Liviu Lalescu

Hello, Markus, nice to meet you!  :)

1) Isn't there a mistake in your 8B timetables for MA? Week 7 and Week 17 have MA on Tuesday 11:30-12:40, but you said same subject cannot overlap. Hmm, also vRUA2.1 on week 50 and week 17, they occupy the same 3 positions? Could you clarify for me your sentence "Most important thing would be that there can't be running two courses of one subject at the same time." in your first post?

2) It might be easy and possible to use the official FET, without customizations, if I understood correctly. We just need to create for each real students set and teacher 5 copies. Then, to constrain the subjects for the real students set not to overlap, we could simply add a constraint activities not overlapping for each subject x real students set pair.

If this does not work, we could also try with a 25 days FET "week", with a customization.

No, this is not correct. You don't know ahead the repartition of subjects over the terms (as you said in your first post). So we need to do a 25 FET-days-per-week timetable, with the customizations that:

a) The subjects cannot be in the same time (but see my question (1)).

b) The courses cannot overlap (so you cannot have more than 3 subjects in the same real 5 days week or, if each 3 divisions of a subject must be in the same real 5-days week, constrain this).

3) Yes, there is no hurry, but it is always best to be prepared for the worst. It is also best to check that it works correctly and there are no bugs in our ideas/implementation. I would also advise you to make some small tests before inputting too much data, so you/we don't work in vain.

4) Please clarify (it is a bit difficult for me to check every subject): a subject is either 3 or 0 times (periods) on a real week? (so, not 1 on one week and 2 on other week?) I see that BM for 8B allows 2 in a week and 1 in another week, so I think it is allowed to split them.

I will now read and think some more and modify my message or post a new reply if I think of something else.

Liviu Lalescu

I made a sum by term of the prominent subjects for 8B:

MU: 2+1,   TE: 3+1,   LI: 1+2+2+2+2,   HI: 3+3,   MA: 3+3+3+3,   vRUA2.1: 3+3,   UEEV.2: 3,   OP: 1,   ENA1: 3+1,   BM: 2+1+3,   RUB1.2: 1+1.

Need clarification for TE, OP, and RUB1.2 (sum is not divisible by 3), and also how much can be a subject be divided by terms.



1) what I ment was that in same term considering one class of students. Another classes can have same subject exactly same time given by different teacher. Courses of same subject of one class can be at the same period, but not in the same term. All the courses of a subject are in different terms. Week 7 is a timetable of 4th term and week 17 is a timetable of 5th term. Week 50 is a timetable of 3th term. They all are followed roughly seven real-life weeks .

2) For example there is 4 courses of Math to a class of 9th graders. This mean that some 9th class might have it in 1st (3 hours in a rel-life week), 2nd (3 h/wk), 3rd((3 h/wk) and 5th (3 h/wk) term. Another class could have it 2nd , 3rd, 4th and 5th term. If those classes have different teachers, lessons can be exactly at the same time.

In a 25 days FET week Math (duration 12) would be splitted for example like in the table below.


3) I really appreciate your help, but I'm sure you have lot to do.

4) There are few courses splitted to different terms nowadays, but it's not desirable. This is a case with RUA. We would like to have schedules that if a course of some subject is in a term then there would be three lessons (periods, 75 minutes in our case) of it in a week in real-life. There are few subjects that are studied few lessons every week, like Athletics (LI), OP (Student Counselling) and TE (Healthy Life). OP and TE are combined , so the will make 2 courses together (TE: 1 + 0.5 and OP 0.5). Subjects starting with UE are different religions. In Finland we study different religions in different groups. Please don't take them into account because they can be added to the timetables later on.


Liviu Lalescu


Actually, in the past couple of months I did only minor FET improvements and was getting kind of bored  :)  . I also like challenges, like Finland institutions' timetables, which were not proposed until now. But we'll do as you consider best, of course, and continue only on your option.

(Note: see my Edit below, which might be a better solution instead of this.) Maybe the mainly needed new constraints are max/min number of activities from a subject+students set (or from a selected set of activities) in a real-life week (FET days 1-5, 6-10, 11-15, 16-20, and 21-25), with a variable weight, probably near 100%, but allowed <100% (with 100% only is available now, selecting the slots - see the constraints activities occupy max/min time slots from selection, but you need to add 5 constraints for each real-life week).

And maybe other needed customizations, which appear on the way.

We'll continue to work on this on/if it is your option, don't worry, and sorry if I was a bit hasty - this is my style  :)

Edit: I said above that activities occupy min time slots from selection is available with weight 100% now. But it won't work, since it cannot allow zero slots (which is permitted). I think that a better direction would be to add activities into components of 3, and add constraints with variable weights (to be implemented, as a custom version, if you want) to schedule them in the same term. And disallow activities from different components to be in the same term. This might be more efficient.



suggestion you made in your edit sounds to be good solution and it is easier to understand to me, too. And I really like your style. Things sill be completed that way.


Liviu Lalescu

OK, thank you! Let me know if and when you would like to begin the data input and customizations. And don't worry, we can stop or have a break at any time.

I think it might be a kind of trial-and-error in the beginning, not inputting too much data, until we make sure we got things right. Ideas might appear and replace other ideas. Because, as I told you, FET was created for a real week, not for 5.



I made a sample of two 8th classes. I wrote comments to the rightmost column how lessons should be divided between terms and few conditions considering two subjects, OP and TE. Will there be too much new constraints so that customation would be too complicated?

I made out that one way to do what I need is to run FET few times. First I could replace weekdays with "Term 1", "Term 2", ..., "Term 5" and periods with "Subject 1", "Subject 2", ... and set Duration of an activity same as number of courses of a subject. Then I could run FET the first time and let it make timetables that has courses of each class and teacher placed evenly between terms. After that terms would not include all subjects, because they are divided to different terms. According to results I could write separate activity sheet for each term and run FET with those to get timetables for each term.


Liviu Lalescu

Hello, Markus,

About your two-phase approach to the problem: yes, it is an idea, but it will not optimize perfectly, choosing from all the variants, as in a 25-days timetable. Because phase 1 will restrict the timetables. And you said that you don't want to restrict which subject goes to which term.

I think that in the two-phase approach you can use the official FET without requiring customizations.

About the one-phase customized FET: it is good that you showed me a complete example with all the activities and very clearly structured and explained.

I hope that the customizations will come with few constraints. Let me analyze below:

There will be min 1 days between each pair of (sub)activities, with 100%.

About VT and VP: consider (1+1+1+1+1)+1. So add the first part with max in each term = 1 and the second part without additional constraints.

About LI: consider (1+1+1+1+1)+(1+1+1+1). So add the first part with max in each term = 1 and the second part with max in each term = 1.

About MA (and similarly the other subjects): consider (1+1+1+1+1+1+1+1+1+1+1+1) (12 1s), max in each term = 3 and max terms occupied = 4.

About TE and OP: I think we can solve with constraints activities preferred time slots (to force some of them in the 4th or 5th term).

About RUA and RUB: I think we could add 2 subgroups in 8A: 8ARUA and 8ARUB. The rest will come naturally.

It is easier and more efficient to consider "max" constraints instead of "min".

So it seems that two new types of constraints is what we need: constraint activities max in a term and constraint activities occupy max terms.

Do we need to think of weights under 100%? It is easier with only allowing 100%.

The bad part is that you need to work with CSV, and the import/export was done by Volker. But I will try to modify his code there. Because we need to import the activities like: (split duration) (1+1+1+1+1)+(1+1+1+1), and add automatically these two new constraints, cleverly.

I can begin work on these two new constraints on your accept. It seems possible, not difficult. Then I need to customize the CSV import code.

Or you might want to choose to do your timetable in the two-phase approach, in which case you do not need my customizations.

Please let me know.



this two-phase approach was a plan B. I were trying to figure out how to make timetables to all terms with uncustomized FET in case that customization would be too complicated.

Your suggestion sounds great! Feel free to make any modifications to the file I sent you. Speaking of VT, VP and LI do this second part mean a second activity with the same name by practice. I guess two constraints you are considering are fine and they offer flexibility we might need in a future with this second part thing and constraints mentioned. Working with CSVs is fine to me.

Many thanks to you, Liviu!

Liviu Lalescu

OK then, I will begin implementing these two new constraints, which is not difficult for me, because I know this portion of code and the idea.

Then I will test, importing your provided CSV file and adding manually from the menu the two new constraints. This will prove that our approach works.

Then will come a maybe more difficult part for me, because I don't know exactly the CSV import code: to import your data with additional columns for the two new constraints.

I will write here informing you of the progress and put snapshots to test, when ready.