Possible ideas for a possible new FET-6 version

Started by Vangelis Karafillidis, March 19, 2021, 08:39:11 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Vangelis Karafillidis

After reading Liviu's post, I would like to explain my perspective on FET development.

1) I think that implementing a multi-core version of FET would improve significantly the performance of timetable generation. Most modern computers have 4 or more cores. So, a multi-core version of FET would improve its performance. For example an 8 core CPU would solve the timetable in around 1/10 of the time.
2) About integrating (uniting) all FET variants into a single version: It seems really interesting but it might confuse the inexperienced user. On the other hand, FET would need a single executable.
3) About getting rid of the limits seems to be a very good generalization on FET's usage.
4) I think that FET works very well for solving timetables which do not need to be changed/modified during the school year. In my country (Greece), most of the time teachers are hired "incrementally". So, most Greek schools need to change/modify their timetables around 10-15 times even up until April! This means that one needs to be able to easily change/modify an already existing timetable. Under this perspective, a new feature of adding/removing/modifying constraints on a existing timetable (in addition to locking/unlocking activities) would be highly useful. What about other countries? Do you need to modify existing (FET generated) timetables during the school/academic year or not?
5) Sometimes, I needed to add identical constraints for the vast majority of teachers (for example max hours continuously = 4), while at the same time a couple of teachers were an exception. I think that a new feature for adding constraints for (predefined) groups of teachers/students/rooms would be highly useful.
6) The constraints teachers/students/rooms not available times sometimes cause problems. I think that adding a button for displaying a report for all teachers / all students / all rooms not available times would simplify the monitoring of these constraints. Especially, I think that for rooms not available times with a weight <100, displaying the weight percentage in each time slot would be very useful.

Vangelis.

Liviu Lalescu

Thank you, Vangelis!

About (1): It is impossible to generate a single timetable on multiple cores. I had in mind a multiple generation, so you can generate 8 timetables in parallel.

Vangelis Karafillidis

About multi-core:
1) What is the (practical) difference between generating 8 timetables in parallel and running 8 instances of FET simultaneously?
2) Why is it impossible to generate a single timetable on multiple cores? Isn't it possible to modify the code so that FET generates a single timetable utilizing all 8 cores?

Liviu Lalescu

(1) None, but single interface would be easier.
(2) It seems impossible to me. The algorithm is unfortunately linear.

Darren McDonald

As someone who uses FET and FET-BP, the possibility of combining them into a single version is very appealing, so I'm in favour of this idea. It would be nice (but a bigger job) to be able to export FET-BP timetables in a CSV format that could then be imported directly into the "regular" FET version. For example, to be able to export from FET-BP an activities CSV file with the "Days per week" data exported in the teachers column, and the Hour data exported as an activity tag (Block A, etc.). (Of course, these files would still need some manual work before import, with the split duration information adjusted, etc.)

I would also like the possibility of exporting/importing constraints. For example, sometimes I start a new year with a "fresh" FET file, and then import teacher lists, etc., from CSV files (usually exported from the previous year's FET file). Most teachers also have a homeroom (that typically doesn't change from year to year), but it isn't possible to export/import "A teacher has a home room" space constraints, so all of that information has to be re-entered. (Also, I sometimes have to share things like the teacher home room information with others, and so even just an export option for these constraints would be helpful.)

A few more Locking/Unlocking options would be helpful too. For example, "Lock all activities of a specified year group", "Lock all activities of a  specified teacher", etc. (I usually accomplish this with activity tags, but that has sometimes required me to create a new tag and then tag all the relevant activities in order to get this done, which can be time consuming.)

Liviu Lalescu

Quote from: Darren McDonald on March 20, 2021, 06:34:54 PM
As someone who uses FET and FET-BP, the possibility of combining them into a single version is very appealing, so I'm in favour of this idea. It would be nice (but a bigger job) to be able to export FET-BP timetables in a CSV format that could then be imported directly into the "regular" FET version. For example, to be able to export from FET-BP an activities CSV file with the "Days per week" data exported in the teachers column, and the Hour data exported as an activity tag (Block A, etc.). (Of course, these files would still need some manual work before import, with the split duration information adjusted, etc.)

I got rid of the limits, and now I began combining MA into official, which is terrifically hard. I am so tired  :)  . I don't know if I'll manage. But if I do, please keep this idea and remind me when I combine BP into the official (which should be easy).

Quote
I would also like the possibility of exporting/importing constraints. For example, sometimes I start a new year with a "fresh" FET file, and then import teacher lists, etc., from CSV files (usually exported from the previous year's FET file). Most teachers also have a homeroom (that typically doesn't change from year to year), but it isn't possible to export/import "A teacher has a home room" space constraints, so all of that information has to be re-entered. (Also, I sometimes have to share things like the teacher home room information with others, and so even just an export option for these constraints would be helpful.)

Did you see the XML .fet text for this? You might be able to create it with scripts.

Quote
A few more Locking/Unlocking options would be helpful too. For example, "Lock all activities of a specified year group", "Lock all activities of a  specified teacher", etc. (I usually accomplish this with activity tags, but that has sometimes required me to create a new tag and then tag all the relevant activities in order to get this done, which can be time consuming.)

I believe this is achievable now. Go to the timetable time horizontal view and select one or more rows, "Lock" or "Unlock".

Darren McDonald

Quote from: Liviu Lalescu on March 20, 2021, 06:46:07 PM
Did you see the XML .fet text for this? You might be able to create it with scripts.

Yes, I may look into this for the coming school year (although I'll probably just start from the current FET file and make modifications directly through the FET interface this time).

Quote from: Liviu Lalescu on March 20, 2021, 06:46:07 PM
I believe this is achievable now. Go to the timetable time horizontal view and select one or more rows, "Lock" or "Unlock".

Great tip! Thanks!

Alex Chernous

Quote from: Vangelis Karafillidis on March 19, 2021, 08:39:11 PM
What about other countries? Do you need to modify existing (FET generated) timetables during the school/academic year or not?
Usually I modify timetable twice during year (1 and 2 semester). But, in this year I have 6 (six!) official timetables. Unfortunately, places of the same activities are wery different, and, as a result, I have different timetables. (Russia, Crimea)

Alex Chernous

Quote3) Make multiple generation start on n threads, where the user can choose n between 1 and the number of cores of the computer.
In the summer I will have free time and I will be able to test the old and new FET on my timetable files.

Liviu Lalescu


Liviu Lalescu

I added a post: https://lalescu.ro/liviu/fet/forum/index.php?topic=4794.msg26575#msg26575 . It is unfortunately an admin section there, so reply here, in this topic.

I hope you'll like my work  :)

Liviu Lalescu

I added a new snapshot version, fixing a bug: the generated locked file was saved with mode "official" always. I changed the location of the snapshot (test) version: https://lalescu.ro/liviu/fet/download/test/

Alex Chernous

#12
In this tarball in file src/engine/generate.cpp:6210:20 typing error: "smhd" was not declarated in this scope, and before (in line 6204) this variable is "shmd". (h <-> m)

Liviu Lalescu

Thank you, Alex! Corrected, I added a new snapshot, only the tar.bz2 for now (keeping also the previous snapshot). The usual link now: https://lalescu.ro/liviu/fet/download/test/ , in the other directory (Backup-fet) on my server I prefer to keep personal snapshots, not public ones.

I compiled correctly on my computer because I use Qt 5.15.2 and the #ifdefs are taking a favorable turn. You are using an older Qt, and the #ifdefs pointed out this mistake of mine. If should be smhd (h in smhd means "half", d means "day").

Before the official release I will make sure to compile with Qt 4 to check errors like this.

Alex Chernous

You're right. I use older version Qt 5.11.3 (GCC 8.3.0, 64 bit). How and where I'll can know about new versions (snapshot) for testing them?