Thread and Multiple Genreration

Started by Teck Hock, January 27, 2024, 11:24:38 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Teck Hock

I can understand the pro and con of using thread after reading the help.
I am trying 5 timetables with 6 thread.

I have the following questions.

1. Why are there 6 tabs? Isnt is 1 tab per time tables? or 1 tab per thread?
2. It show Time Table no 1. (Thread 1) completed. But why 1st tab is still generating.

Can help explain a bit more about multiple time table generation?

Thks

Liviu Lalescu

Wow! 128 hours for the first timetable (which is the fastest in 6 generations)!

The answer to (1) and (2) is combined: FET will generate on 6 threads, trying to obtain the 5 needed timetables as soon as possible. If one thread finishes, it starts a new generation. When you reach 5 timetables, all the threads will stop.

Volker Dirr

#2
If you have such a difficult timetable, then you might try a time limit to get a result faster.
see:
https://www.youtube.com/watch?v=rl5N_ZyBB6A

Volker Dirr

I was discussing with Liviu in the background a bit if the timelimit is a good hint or not. There are pro and cons.

If you use for example constraints with weight <100% and >0%, even they are impossible, then it is for example more clever to fix those bugs. There might be also other improvments possible, like adding same starting time constraints if you know that activities will be placed be at the same time even if you don't add such a constraint.

hmm... Since it is a difiicult data set, you or me might do some test with that file.
For example run it on as many cores as possible for 24 hours with a timelimit of 30min, 1h, 2h, 3h, 4h, ... and check if you can find solutions faster.

Maybe do it yourself. If you sent me your file, I might do it also, but i am a bit buys at the moemnt and it will take some time. I could do a nice Video about that (of course anonymous). If you sent me your data set, i will have a look at it.

Teck Hock

Thanks for the response.

I am a bit confused with core and thread.
My CPU is 10 Cores and 12 threads.
In FET (Generate multiple time tables), I can only specify the number of thread but not core.

1. How does increasing the number of thread help to get a faster solution?
2. Why setting time limit will get a faster results?
3. Mention "run it on as many cores as possible for 24 hours". How do I specify the number of cores?

Thks all.

Liviu Lalescu

FET will start nThreads processes in parallel, each trying to solve a timetable. When one is ready it will begin generating again. It is like starting nThreads FET programs.

I have 8 cores and 16 threads. I prefer to generate on 8 threads, because 16 threads is not really the parallel factor of my processor. Volker prefers to generate on 16 threads in this case.

If I were you, I would generate on 10 threads. But Volker would generate on 12.

On my computer, generating on 8 threads will yield the first timetable sooner than generating on 16 threads, but overall I think I get 100 timetables sooner with 16 threads (but also the processor heats more in 16 threads).

Volker Dirr

If you are interested in some more information about that, then watch this video:
https://www.youtube.com/watch?v=OMNvgEuyV-g&t=1s