Time table manual improvements

Started by Saad, October 27, 2008, 09:42:35 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Saad

Thanks for the effort on making this software. I would like to know if this is possible to do with fet:

After the automatic process is finished, is there a way to manually improve the schedule further by simple means. By simple, I mean when viewing one of the teachers' time table and clicking on one of his lectures, all possible lessons that accept placing the clicked subject are/is highlighted, with some info of the replacement, is it going to be simple (just replace teacher A's subject with teacher B's subject) or complicated (more than one teacher will be effected by that replacement).

Is that difficult to implement?

Thanks in advance

Volker Dirr

Yes.
Press fet->timetable->save data+time after you generated a timetable.
Load that file you just saved.
Search the time constraint of the locked activity and modify like you want. And "generate" the timetable again.

But in my opinion this is (in most cases) an incorrect way of timetabling, because you should add a constraint that care about that "missing improvement".

Liviu Lalescu

#2
QuoteThanks for the effort on making this software. I would like to know if this is possible to do with fet:

After the automatic process is finished, is there a way to manually improve the schedule further by simple means. By simple, I mean when viewing one of the teachers' time table and clicking on one of his lectures, all possible lessons that accept placing the clicked subject are/is highlighted, with some info of the replacement, is it going to be simple (just replace teacher A's subject with teacher B's subject) or complicated (more than one teacher will be effected by that replacement).

Is that difficult to implement?

Thanks in advance

I think you mean: "just replace teacher A's subject with another teacher A's subject"?

Yes, it is possible, not too difficult. But you might not need such a facility, as FET when generates the timetable examines all the possible swaps to improve the timetable.

Volker Dirr

#3
I think he manually want to swap 2 activities in a (view) teacher table by clicking an an activity and then press on an other one. If he click the first activity, he wants to highlight (maybe red) impossible swaps, because of basic time and space constraints.

But that is not good, because:
- what about all the other constraints? They must be marked also!
- if we do that (with all constraints), then in most cases (i guess more then 99,9999%) of a real dataset (i was thinking about my dataset) ALL activities of that teacher will marked as impossible swap partners!
- Also it will be not fair, because you maybe think you can remove a gap by that swap, but didn't see that you increase an other guys number of gaps (still under the added constraint limit)

So i advice to use constraints and schedule automatically, not manually. By that you will be much faster and get much better results.

Also simple "swap 2 activities" is in most cases not possible. You have to swap 10 activities or more AT THE SAME TIME. It will be (nearly) impossible to that manually.

Saad

Thanks for the replies.

I've worked with school time table for some time and IMHO swaps are a thing that can't be easily gone :-)

please see attached picture for actual swap of teacher (A) who can't attend the first lesson any more. Screen shots were taken from an old Arabic school time table program, as you see only 2 teachers were effected without badly altering them nor regenerating the whole time table. Of course this can be done manually on paper but the program can pinpoint those swaps easily and quickly.

Saad

#5
thanks for the advice Volker

regarding your points:
Quote
- what about all the other constraints? They must be marked also!
yes, if they are hard constraints the swap should skip them.

Quote
- if we do that (with all constraints), then in most cases (i guess more then 99,9999%) of a real dataset (i was thinking about my dataset) ALL activities of that teacher will marked as impossible swap partners!
of course not all .. but sometimes something comes up with a teacher and you have to deal with it even if it will break some constraints, and keep in mind that this should be done after generating the time table .. so most constrains should be left.

Quote
- Also it will be not fair, because you maybe think you can remove a gap by that swap, but didn't see that you increase an other guys number of gaps (still under the added constraint limit)
if FET can do it like what i've posted, no that cant be the case cuase I'll see the effected teacher and cancel the swap and look for another one.

Quote
Also simple "swap 2 activities" is in most cases not possible. You have to swap 10 activities or more AT THE SAME TIME. It will be (nearly) impossible to that manually.
a hard limit of 2-4 swaps for example could make the program not show that kind of swaps.

Volker Dirr

I understand your request and i know swapping 2 activities can be done with easy timetables.

But:
- it is nearly impossible with difficult timetables. Just to do do it with a difficult sample file. You will see that is in most cases not possible without breaking a constraint.
- it will be difficult to write that
- "normally" you need to swap no activity. Even if you must do it with maybe 2 activities, then you can already to it with the hint i wrote already. If you want to do it with maybe 100 activities, then in my opinion you should not use an automatic timetabling software, then choose a manual one (but i don't no a reason why you shouldn't do it automatically.) So i think this request has a very low priority (because nearly unneeded. There are other more important TODOs)

And the most important:
In my opinion it is (still) the incorrect way. Your request mean, that a time tablemaker should do things, that FET should do.
Just answer this:
Why do you want to swap activities? There must be a reason why you want to swap. The correct way is to add a constraint, that care about that reason.
So in my opinion the correct request must be a (missing) constraint. So what constraint is missing? Why do you want to swap? Add that constraint or write here what constraint is missing to you.

Saad

Not sure you are following me here Volker :-/ am talking about after the table is done while I guess you are talking about before its done.

I do agree with you that there is no need for swapping 95% of the time. But still, I can give you many situations where a swap is a much better than redoing the whole thing.

Time table is done, every one is happy, a month later Teacher (A) got some trouble attending his class at first period!

Your suggestion: add a new constrains, redo the whole thing and let all teachers' table be altered as well as all classes and start the next month from scratch!

Mine is, look for a simple swap, balance the constrains that will be broke (if any) do the swap with 2-3 teachers and leave the rest intact.

Again I do agree that most of the time those swaps are uncalled for, but having such feature (it's been done in many timetable programs already) will make things much easier ... at least for our educational system which I'll post a new topic regarding my suggested wizard :-)

Liviu Lalescu

You are right, Saad. I'll think of it.

Meanwhile, you might try this: lock the timetable, save data + timetable as k.fet, open k.fet. Now, remove a few locking constraints (constraints activity preferred starting time and preferred room). Now, generate again. The locking constraints which you let active will be respected. But you have to guess which constraints should be removed and which not.

Saad