max gaps between a set of activities?

Started by pnlshd, July 23, 2023, 06:40:24 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Liviu Lalescu

I have added the snapshot, here: https://lalescu.ro/liviu/fet/download/test/

Please let me know.

I hope to release a new official version of FET soon (in a few days).

pnlshd

Thank you so much.

I will apply it and let you know about the results and the the new file.

Best!

pnlshd

Update 1:

It worked! I have added ~187 constraints of that type to my file (the activities of each subject of each teacher) to ensure they are consecutive.

I removed unnecessary grouping constraints that I used previously to "fix" some activities that were two or three.

It worked and no gaps have been found and if a teacher had 2 subjects in a certain day he will have the activities of each subject ordered as required.

Thank you so much for this work of genius!

I am still trying to use it to replace the activities occupy max time slots from selection constraints and I will keep you updated when I reach something.

Currently it gets stuck on some activities so I get back to them and try to modify constraints and repeat.

Liviu Lalescu

Quote from: pnlshd on July 23, 2023, 11:54:07 AMI have just noticed that this will solve another problem I had solved before using activities occupy max time slots from selection constraint where I would select all of the available slots for all the activities of each subject and limit it to the max number any teacher has so to maximize overlapping and finish earlier this day for the subject (a requirement).

Using the new constraint I will set the same value for it on all of the subject activities for each subject (no dummy select all available slots here) and also apply it again for the activities of each subject for each teacher to achieve consecutiveness.

I am sorry, but the above paragraphs remain a mystery to me. I don't understand :)

If it is working with occupy max constraints, it is good. You may of course experiment replacing them with the new constraint, but it is not critical.

Thank you for the appreciation! Time to sleep now, after a hard day. :)

pnlshd

Oh, my bad. I will try to explain them better.

I want all activities of any subject (with all of its teachers) to be all in the same day and this got solved using max days between activities = 0 (or same starting day).

But I also want these activities to not be spread over all the slots of the day. If I have like 20 activities with 5 teachers without other constraints than being in the same day they may be placed over the 7 slots of the day.

What I want is to limit this spread to the lowest possible which is the max number of activities any teacher has in this subject (because the might not be equal). So if one of them has 4 activities I want all of them to occupy max 4 slots of the day (and overlap that is fine).

That is why I used activities occupy max slots from selection constraint. And here the selection was all of the available slots in all days (pretty dummy) because I don't know the exact day that fet will place this subject activities on.

Here comes Activities max hourly span magic! I could use it for this requirement too and it would be set to the same values for each subject's activities that is the max number of activities any teacher in this activity has.

When I tried this at the beginnig there was some things I missed on my side but when I corrected them the result was MAGIC!!!!

The timetable that previously took 15 mins (before and after applying the new constraint but before it had gaps) now was fully generated with all other constraints the same in an impressive 1m 27s!!!!

What is more impressive is that I could even remove a day to make it only 6 days and it still generated a timetable in 8m 47s!!!!!

Liviu, you are a genius and you really should be proud of this work, I am utterly thankful for you.

I will be sending you the two input files (before and after replacement).

Get a well deserved sleep!

Liviu Lalescu

#20
Thank you for your kind words! :)

I understand now. However, there is no problem if you use occupy max with all the slots selected, it is normal usage, but it is maybe slower. But it is looking better if you use the new constraint.

Sometimes there are alternatives uses of constraints. I am not sure exactly which ones are definitely faster, that is why I am not decided on which ones to use. But I think occupy max is slower.

I hope to release in a few days the new official version.

As a personal request, maybe you could talk to your institution about how badly this project needs financial support.

pnlshd

Words really are the least one can give 🙏

I believe occupy max is slower than the new constraint yeah. It would be really a good thing if one can know which constraints are faster than which but I think in the end there are not many cases that you can solve with more than one constraint type so I think it is not that critical.

Maybe we could have something like constraint analyser in the future to detect possible conflict between constraints before generation.

Especially with those input files where it spends half the generation time on the last few activities.

I will be sending the files for your reference.


I would suggest that you make financial support at the fingertips of users.

I mean you may put your patreon, buy me a coffee ...etc links everywhere or at least in visible places in the app website or even the app itself as a reminder (that can be turned off if you like).

This would remind users more of supporting this great work and I would be the first to support!

I think this is a more sustainable way of getting support (by counting on the users) because most institutions are self-centered businesses and will just use the free versions.

Thank you again for your work and I hope you are rewarded for it the way you deserve!

All the best!

Liviu Lalescu

Thank you!

There are some tests done before the generation to check the feasibility, but it is impossible more than that. We need to try to generate to check.

Liviu Lalescu

Hello, @pnlshd ,

We just released the new FET version, 6.9.4, with your constraint in it. Thank you for suggesting it!

pnlshd

Hello,

Congratulations! Thank you for all your efforts!

It has been a pleasure.

All the best 🙏