Custom FET allowing max 150 days per 'week'

Started by Liviu Lalescu, October 02, 2017, 03:43:55 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Liviu Lalescu

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.

alxgudea

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....

Liviu Lalescu

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.

alxgudea

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...

Liviu Lalescu

#4
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.

Liviu Lalescu

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.

alxgudea

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!

Liviu Lalescu

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).

Liviu Lalescu

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.

Liviu Lalescu

I added version 5, fixing a freezing bug if generating with single component activities (reported by alxgudea).

Liviu Lalescu

I added version 6, with minor source cleanup.

Liviu Lalescu

I added version 7, fixing a crash bug, reported by alxgudea and Volker Dirr.

Coralie

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 ;)

Liviu Lalescu

#13
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.

Coralie

#14
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.