OLD - FET-6.0.0-snapshot available

Started by Liviu Lalescu, April 01, 2021, 04:43:44 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Liviu Lalescu

After 2 weeks of hard work, I am pleased to say that I reached a stable FET-6.0.0, with this ChangeLog:

   - Increased the limits of the generation algorithm (the new limits are most probably more than enough for everybody).
   - Combined the most important custom versions into the official FET. The new feature is called "mode" and it can be:
   "official", "mornings-afternoons" (for Morocco and Algeria), "block planning", and "terms" (for Finland).
   - The multiple generation can be done on multiple threads, each timetable on a separate thread.

The download link: https://lalescu.ro/liviu/fet/download/test/

Please start with the same random seed your file on the old FET-5 (official or FET-MA18) and your file on the new FET-6.0.0-snapshot, the generations should be identical and the final random seeds should be equal. Please report as soon as possible a contrary situation, as a bug.

Volker Dirr


Liviu Lalescu

I have just added a new snapshot, the same usual link: https://lalescu.ro/liviu/fet/download/test/

I changed the mode of operation of the main form. Please test it and report visual/functional/crash bugs.

Darren McDonald

Quote from: Liviu Lalescu on April 02, 2021, 04:43:56 PM
I have just added a new snapshot, the same usual link: https://lalescu.ro/liviu/fet/download/test/

I changed the mode of operation of the main form. Please test it and report visual/functional/crash bugs.

I really like the new thread option for multiple generation! (I've only given it a quick test, but it worked as I expected.)

I think it will be necessary to add a new entry in the help text, as I think many users won't know what a "thread" is, and won't know which thread setting will be optimal for their computer. (Also, is it worth mentioning somewhere how users can check this on their own computers?)

I noticed one slight visual bug in when generating multiple timetables. The text at the top, "Current timetable:... and the text line Max placed..." shift in position slightly when the timetable tab is changed with multiple threads selected. That text is aligned for timetables 2 and above, but the text for the first thread is shifted slightly down to the left. I'll attach one image here, and another in the post below (they're too large to attach together).

Darren McDonald


Liviu Lalescu

I have just added a new snapshot, the same usual link: https://lalescu.ro/liviu/fet/download/test/  . No important changes.

Thank you, Darren, for the feed-back! I cannot solve the visual bug, it might be a Qt 6 bug, since in Qt 5 it does not appear (but I can observe it in Qt 6.0.3). The first tab is initialized in the designer file and the rest by code, but they are initialized identically.

I tried to add some explanation about the threads. If you think that you can improve this or add some better information, send me the text, please. Note: the minimum and default for the threads spin box is 1 and maximum is the Qt function QThread::idealThreadCount(), which returns on my computer -> 16 (I have 8 cores/16 threads) and on Volker's RPi-4 computer -> 4 (4 cores/4 threads, maybe).

Darren McDonald

I've had a look at the help text for multiple generation, and included a couple of suggestions below (a minor change in the section about threads, and a note about the new directories created within the target directory).

I wonder whether it might be worthwhile changing the default thread setting for new users to the value returned by QThread::idealThreadCount(). That way even users who don't understand the thread settings would produce multiple timetables that will be completed much more quickly than when using only one thread. What do you think?

You can see the generated timetables on the hard disk, in HTML and XML formats and the soft conflicts in text format, or the latest timetable (or the latest highest-stage timetable, if no timetable was completed) in the Timetable/View menu. The directory XX must be emptied and deleted before proceeding.

Note that, for large data, each timetable might occupy more megabytes of hard disk space, so make sure you have enough space (you can check the dimension of a single timetable as a precaution). Each attempted timetable will correspond to a folder in XX that contains information about the random seed that was used, but only completed timetables will contain the full set of timetable files.

For finished timetables, there are also saved the timetables in .fet format (data + constraints to lock the timetable), so that you can open each of them later.

If you get an impossible timetable, please enter menu Generate (single) and see the initial order of evaluation of activities, this might help.

You can limit the search time, by specifying the maximum number of minutes allowed to spend for each timetable (option 'Limit each'). The maximum and also the predefined value is 600000 minutes, which means 10000 hours, so virtually unlimited.

Note that if you start the multiple generation with the same seed, the timetables will be identical. The seed of the first thread will be the random seed from the advanced settings, for the second thread it will be this seed +1 in each component (modulo m1 and respectively m2), for the third thread it will be this seed +2 in each component, and so on; if all the first three components are 0 in the seed of a thread or all the last three are 0, each number of the all 0 part of the seed will be initialized with the number of selected threads.

The number of threads is limited by your computer processor(s). If you have for example an 8 core/16 thread processor, the maximum allowed number of threads is 16. In this case you can make a comparison of generation time with 8 threads or with 16 threads. If you generate on a single thread, the speed of generation of a timetable will be in general a bit better than that of obtaining a single timetable by generating on multiple threads, because the processor slows down if you are using more threads, but you will obtain more timetables in a comparable time.

Liviu Lalescu

I added a new snapshot: https://lalescu.ro/liviu/fet/download/test/  , with minor changes in the texts in the generate multiple. Maybe you can test it, generate multiple and let it finish or stop it. Check the report.txt file on the hard disk.

Thank you, Darren, for the suggestions! I added exactly your strings. About the default threads to be maximum allowed, this is unsafe/I don't like it. Because: 1) The speed on a single processor is better than when using more threads; 2) I have 8 cores but 16 threads and maximum is 16, but the best I think is to use 8 (I am not sure); and 3) The processor will work very hard and heat up, the user must know what he is doing.

Liviu Lalescu

#8
After some work, I hope I managed to obtain a stable multi generation. I have put a new snapshot: https://lalescu.ro/liviu/fet/download/test/

Please test the generate multiple dialog for crashes/bugs.

Test by leaving it finish, by interrupting it, with timetables complete or with no timetable complete.

Edit: It still crashes on Windows 10 when generating multiple  :(

Liviu Lalescu

I made some more changes. I hope I managed to obtain a stable multi generation. I have put a new snapshot: https://lalescu.ro/liviu/fet/download/test/

Please test the generate multiple dialog for crashes/bugs.

Test by leaving it finish, by interrupting it, with timetables complete or with no timetable complete.

Please let me know as soon as possible.

Liviu Lalescu

I have just added a new snapshot, minor improvements. No need to reget it.

Darren McDonald

#11
No crashes yet on Mac OS 11.2.3 (Big Sur, current version)! Looks good!

I do have one question about multiple timetable generation. At the moment, FET is counting both generated timetables, as well as timetables that have exceeded the time limit as "generated timetables." Is this the intended behaviour? (I think that timetables that exceed the time limit shouldn't be counted as "generated.")

Liviu Lalescu

Thank you!

It is an intended behavior, because it was the same in FET-5 and because otherwise this dialog might not finish.

Liviu Lalescu

I have put a new snapshot: https://lalescu.ro/liviu/fet/download/test/  , minor change in timetable generate single with success. No need to reget this version.

Liviu Lalescu

I have put a new snapshot: https://lalescu.ro/liviu/fet/download/test/ , I fixed a nasty memory leak bug in generate multiple, if no timetable was successfully generated and you started a new multiple generation.

I hope we reached a stable enough stage now. I apologize for the very frequent updates.