FET Forum

FET Development => Custom FET for Particular Needs => Topic started by: Liviu Lalescu on October 02, 2017, 03:43:55 PM

Title: Custom FET allowing max 150 days per 'week'
Post by: Liviu Lalescu on October 02, 2017, 03:43:55 PM
There is a custom version of FET, allowing a maximum of 150 days per 'week' instead of only 35. You can get it from the Custom FET versions section (direct download links: http://lalescu.ro/liviu/fet/download/custom/max-150-days-per-week/ or, mirror: http://timetabling.de/download/custom/max-150-days-per-week/ ).

This version is probably useful for multiple-week scheduling.

Please report problems/bugs, or successful work.

This is a kind of test for the FET algorithm. It might be too slow for this - even if I hope not. That is why feed-back is important.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: alxgudea on October 03, 2017, 11:53:02 AM
made an attempt...
this is how I did it...
made 70 days (14 weeks with Mo to Fr) 14*5
inserted a activity splited in 14 parts of 2 hours
it computes and makes a timetable with random placement of the activities...
when trying to add a option like "a set of activities have same starting time/day/hour" (trying to reproduce the lectures that should be held the same day/hour...))  it jams....
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on October 03, 2017, 02:17:26 PM
It is not that easy, considering what you need.

I made an example for only one activity split into 14, see the attached .fet file.

You need to add a same starting hour constraint for all 14 components.

You need to add min+max days between each component. 2*(14*13/2)=182 constraints, like I added. I even made a small C++ program for this (attached). You need to add exactly like me, for efficiency of generation (you should not add less constraints).

You need to add the allowed week for each activity. I added with tags (and modified subactivities, to add a tag to each one). We need to think about this if an activity is split into less than 14 components per week. Maybe something similar, but this step is again a very important one, making the generation efficient.

Don't worry that there are too many constraints. The only problem is the human operator, inputting them.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: alxgudea on October 03, 2017, 07:56:34 PM
started to realize that is a hell of a job.....
I have managed to use the main constraint- same hour start but cannot reproduce the even distribution (same day exactly) even if I used the min 5 days/max 69 day between activities.(still very necessary for a part of the activities)
As you know Liviu, the timetable I used in the normal week version had more than 1000 activities (6 years of students, basically each year dividend into a minimum of 12-13 groups)+ 6 years*3 groups+6 years *2 groups.....all sharing same sets of rooms and most of the teachers...
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on October 03, 2017, 08:18:10 PM
Quote from: alxgudea on October 03, 2017, 07:56:34 PM
started to realize that is a hell of a job.....

We can work it out, with a bit of work.

Quote
I have managed to use the main constraint- same hour start but cannot reproduce the even distribution (same day exactly) even if I used the min 5 days/max 69 day between activities.(still very necessary for a part of the activities)

Say you add an activity split into 8. Then you need to add 8*(8-1)/2 constraints min days between activities and the same number of max days between activities constraints. Each min days = 5, 10, 15, ..., 35 has a corresponding max days with the same number. So, 5 min days, 5 max days for first pair, then 10 min days, 10 max days for activities 1 and 3, etc, ending with activities 7 and 8, min 5, max 5.

Then you add another split activity, split into 12. The first constraints will be min+max 5 days between id=8+1 and id=8+2. Last will be min 5+max 5 between id=8+11 and id=8+12.

Don't forget to add (redundant) preferred time slots of activities, probably using tags. It helps the generation to be (much) faster.

Quote
As you know Liviu, the timetable I used in the normal week version had more than 1000 activities (6 years of students, basically each year dividend into a minimum of 12-13 groups)+ 6 years*3 groups+6 years *2 groups.....all sharing same sets of rooms and most of the teachers...

FET allows 30000 activities and I have a file with 15000 I think which is solved in about 20 minutes on my (very old) computer.

We might solve even your data, but we'll need to put some work in this if we want to realize it. Of course not adding the constraints by hand - but rather automatically, like I did, or even easier, if I develop some more tools. With a script or I may further customize the FET interface for you, to add automatically the constraints. Also, you need to understand that this is a kind of research and is not guaranteed to be successful.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on October 04, 2017, 10:12:45 PM
After some talk with alxgudea, we came up with an improved multiple week version. See it on the link in the first post.

There are two very small example files and the Help menu has an entry for this multiple week scheduling. This custom version is not very easy to use, but might be manageable. Maybe further feed-back will make it easier to use.

Please let me know.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: alxgudea on October 05, 2017, 09:22:26 AM
made the first test....it seems like working...I will keep on testing with incomplete activities in accordance with our faculty demands and let you know
Thanks Liviu!
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on October 05, 2017, 10:40:22 AM
I added a new version, 3. The only change is the improved Help menu for this max 120 days version (to explain better to the user the steps he needs to take).
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on October 06, 2017, 01:45:12 PM
I added version 4, allowing activities from a group to be anywhere in the timetable, not constrained to be at the same day in the real week. Suggested by alxgudea.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on October 06, 2017, 04:38:59 PM
I added version 5, fixing a freezing bug if generating with single component activities (reported by alxgudea).
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on March 02, 2018, 01:06:04 PM
I added version 6, with minor source cleanup.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on March 03, 2018, 04:13:19 PM
I added version 7, fixing a crash bug, reported by alxgudea and Volker Dirr.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Coralie on June 04, 2018, 04:53:33 PM
Hello,
It's been 3 years that I use FET for a schedule over several weeks. It compiles in about 1 hour and the file of the last semester is about 8Mo.
Would you like me to send it to you, and if so, how?
I will now experience your special version ;)
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on June 04, 2018, 05:11:40 PM
Hello,

Thank you for your information!

So, you were/are using the official FET for a schedule of a timetable on maximum 35 days? (because the official FET permits this number of days per "week".) Yes, of course I am interested in such a file and, if permitted, I will add it into the official FET examples. Let me know the desired directory, in this case (see the other example files). You can attach it on the forum, archived (maybe on the dedicated forum section), if the archived size of the file is maximum 512 KB, or send it to me by email.

I will wait for your comments about the special 120 days per week version here. Please keep in mind that it might not be too useful, as only two persons seemed to have worked with it and I am not sure they obtained the desired results. But we can talk about it and improve it.

Also, note that the special 120 days per week version was designed to make the timetable on each real week be quite similar to the timetable in the other real weeks.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Coralie on June 04, 2018, 08:45:26 PM
Yes, I used the "normal" version of 35 days, which I extended to 150. By the way, 120 is not quite enough for me, but I know how to expand;)

That's the file.

And you can set it as an example if you want, even if I'm not sure it's very readable for a non-expert.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on June 04, 2018, 09:02:23 PM
So, you modify MAX_DAYS_PER_WEEK to 150 and recompile?

OK then, I think I will increase the maximum number of days per week for the custom max-120-days-per-week from 120 to 150. I will let you know. Please tell me if you think I should increase it even more (in other words, what is the highest demand other people might need)?

Thank you for the file! But I am not sure I understand, its header says it is saved by the custom max-120-days-per-week FET version. I will try to open it also with the official FET (compiled with max days 150), to see if it works.

I can add it as an example, but I think not in the official, since one needs to recompile FET to be able to open your file. But anyway, please tell me the country and city and institution, as in the other examples you can see in the official FET, so I know how to add your file.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on June 04, 2018, 09:23:15 PM
It seems that I have a faster computer. See the attached screenshot - I ran your example in both the official and the custom (but both re-compiled with maximum 150 days per "week").

Please let me know if 150 max days per week for the custom 120-days version would be enough, or you think more would be better. I think I might do this change soon.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Coralie on June 04, 2018, 11:23:25 PM
I live in Bordeaux, France and I work for La Prépa des INP in Bordeaux INP.

I think 150 days is enough for a semester schedule, but I do not know if some people are doing schedule over the whole year at once.

I looked again at my old schedule with FET 120 days, I might have to saved it with, hence the heading. But I did it well 6 months ago with another version :

<fet version="5.29.4">

The particularity that I have of the code beside is the alternation, for the same teaching of whole class course (CM) and work directed by groups (TD) with a very precise rhythm (for example CM-TD- TD CM-TD-CM-TD-TD-CM-TD-TD-TD) depending on each course.

If you have questions about the reasons for my choices, I am ready to answer and explain my need;) Maybe you will have better solutions than mine.
Title: Re: Custom FET allowing max 120 days per 'week'
Post by: Liviu Lalescu on June 05, 2018, 07:28:08 PM
Quote from: Coralie on June 04, 2018, 11:23:25 PM
I live in Bordeaux, France and I work for La Prépa des INP in Bordeaux INP.

I think 150 days is enough for a semester schedule, but I do not know if some people are doing schedule over the whole year at once.

I looked again at my old schedule with FET 120 days, I might have to saved it with, hence the heading. But I did it well 6 months ago with another version :

<fet version="5.29.4">

The particularity that I have of the code beside is the alternation, for the same teaching of whole class course (CM) and work directed by groups (TD) with a very precise rhythm (for example CM-TD- TD CM-TD-CM-TD-TD-CM-TD-TD-TD) depending on each course.

If you have questions about the reasons for my choices, I am ready to answer and explain my need;) Maybe you will have better solutions than mine.

I will make maximum 150 days in the custom version.

I am not sure I understand your input file but, if it works, then everything is OK :)
Title: Re: Custom FET allowing max 150 days per 'week'
Post by: Liviu Lalescu on June 06, 2018, 11:20:24 AM
I updated to maximum 150 days per 'week'. Thank you for your feed-back!
Title: Re: Custom FET allowing max 150 days per 'week'
Post by: kieronsalmon on March 30, 2021, 12:49:18 PM
Is it possible to have an updated version of FET-Max 150 days per week?  The current version is 5.35.7, but FET is now on version 5.49.1 (with a number of new useful features).  I use FET to timetable for a University and no day is ever the same so the max 35 days is too restrictive.  Many thanks for considering this, Kieron.
Title: Re: Custom FET allowing max 150 days per 'week'
Post by: Liviu Lalescu on March 30, 2021, 12:56:50 PM
The new future FET-6.0.0 will have probably maximum 1000 days per week. Please see the news and announcements section (my messages from yesterday) for download link to the snapshot. It should be usable enough, I hope.

Note that the current snapshot is stable, but there is no guarantee in the future. I might change it.

The only thing I am working now on is to add generate multiple on more threads each generation. The other things seem OK.
Title: Re: Custom FET allowing max 150 days per 'week'
Post by: YOUSSEF HOUIET on March 31, 2021, 01:44:05 AM
it means simultaneous multiple generation (in parallel) ?
Title: Re: Custom FET allowing max 150 days per 'week'
Post by: Liviu Lalescu on March 31, 2021, 06:23:51 AM
If you have 8 processors: If you generate 100 timetables, it starts 8 generations, each on a processor, then when one processor finishes, it starts the 9th generation on that processor, and so on.