FET Forum

FET Support (English) => General Stuff => Topic started by: Duncan Parks on February 07, 2009, 08:26:38 PM

Title: when most students have unique course requests
Post by: Duncan Parks on February 07, 2009, 08:26:38 PM
Forgive me if this is obvious, but I'm looking at FET as a way to minimize class conflicts in a small college (200 students).

We have terrible class conflict problems, because many of our students come in with transfer credits and need to take our quite structured program (lots of required courses) in perhaps 2 years rather than 4. We also have non-native speakers of English who have to take only part of the required schedule for their year. In sum, everyone has unique needs, and with lots of required courses, it's proven impossible for our human registrar to construct schedules where students can attend all the courses they need. We further have the problem that our campus is remote, and most professors have very long commutes, so we are only on campus 3 or so days a week.

Will it be really cumbersome to enter separate constraints (i.e. courses needed) in FET for each student, as well as unavailable days for faculty, plus blocked out times for everyone? For each student, this is all entered manually at this time, but for enrollment, not scheduling.

I hope my post makes sense - I'm hopeful we can use a good optimization algorithm to find better scheduling solutions than our registrar can create manually.

I like the idea of doing a pre-registration run with FET after a survey to set a schedule for actual registration. That would help me sell the idea to the old traditionalists on the faculty!

Thanks in advance for any advice!

Duncan
Title: Re: when most students have unique course requests
Post by: Liviu Lalescu on February 07, 2009, 08:40:07 PM
First of all, FET can be used only if a solution exists. FET cannot do partial timetables. Each activity must be completely specified (write the students and the teachers) and each activity must be scheduled at a certain time.

I think it is possible for you to input the data. Just add each student (as a year, group or subgroup - as you wish). I would prefer each student to be a subgroup and add a year Y and a group G, containing all students. Then, you can define arbitrary other groups, with arbitrary students. I think you should also see the FET XML file structure, it may be easier than from the interface.

As for constraints - yes, you'll find everything you need.

Suppose you have year Y with group G with subgroups S1, S2, S3. Teachers T1 and T2. Then add activities, like A(S1, S2, T1), etc.

Please let me know.
Title: Re: when most students have unique course requests
Post by: Duncan Parks on February 08, 2009, 07:02:00 PM
Thanks for the update. We might have a tough time if there can be no partial solution; we may be unable to get every student into every course they want given the other constraints of professor times, other courses, etc. Am I remembering seeing another package somewhere that did give partial solutions - I remember a graph of "fulfilled student requests" as a comparison between algorithms, where fulfilled requests was not 100%.

On the other hand, perhaps we could use constraint weighting to get to a workable solution. For a tough problem, will FET simply break weakly weighted constraints first until a complete solution is reached? I wonder if we could weight student course requests as less than 100% so that they might not get all their courses if it restricted the schedule too much. In other words, using lower weights for things that can be relaxed, and higher weights for the really inviolable stuff. Does that make sense?

Thanks again for the quick response!
Title: Re: when most students have unique course requests
Post by: Liviu Lalescu on February 08, 2009, 07:11:37 PM
Unfortunately, you cannot put a lower weight on students choices. These are basic constraints, which must have 100% weight. You can interrupt FET while generating - you will obtain a partial timetable, but it is not useful. Why? FET puts the activities in an order, like: A5, A2, A3, A4, A1. If the first 3 activities (most difficult ones) are impossible to schedule correctly, FET will not go further than these 3 activities.

About half of the constraints have modifiable weight, many need 100% weight.

You have teacher not available and students set not available and room not available constraints. The rooms have weight 0-100%, but the teachers and students have 100%. You can use however another constraint - activities preferred time slots, for a teacher or students, which is equivalent to not available constraints - with weight 0-100%.

You can also have a progressive approach - for instance make a teacher have max days per week 4, then lower to 3 if you have a possible solution.

Yes, FET will skip impossible constraints with weight <100.0%.
Title: Re: when most students have unique course requests
Post by: mrpaul on June 15, 2009, 12:24:03 PM
at our school students need to take certain classes and then can select electives,  usually we like to give everybody what they want, but we are a small school (<100) and limited resources, but some students might not get exactly all they want. when i did a manual schedule we typically give the oldest students first priority and the youngest students last priority,

couldn't some groups of students get a lesser weight than 100% to allow that priority?  
Title: Re: when most students have unique course requests
Post by: Liviu Lalescu on June 15, 2009, 12:51:44 PM
Each activity must have specified the exact students, you cannot let FET choose (you cannot do cover planning with FET). Or didn't I understand correctly your need?

Maybe you can use a progressive approach, letting half of students (older ones) have what they need, then, if still possible, let 3/4 of older students have what they need. A binary search (or maybe a linear search).
Title: Re: when most students have unique course requests
Post by: yotam on August 11, 2010, 08:17:43 PM
A friend (hila also a member of this forum) and myself are now working on a school time table. We probably hit a  problem similar to the one this thread presents. Since the last post was published a year ago, I wonder whether new versions of FET provide a new functionality to let activity fulfill just a partial subset of the students wishing to participate.

Idealy, I would like to be able to assign each pair of
  (subgroup [=student] , activity ) = (S, A)
with a weight  reflecting how important for S to be in A.

Any hint or tip would be appreciated.
-- yotam
Title: Re: when most students have unique course requests
Post by: Liviu Lalescu on August 11, 2010, 08:32:21 PM
No, there is no new functionality in this direction.

Maybe some tricks are possible, I am not sure.
Title: Re: when most students have unique course requests
Post by: hila on August 11, 2010, 10:54:50 PM
after 24 hours of gloomliness, I tried the trick that was written in the 'help' window when I generate... to reduce some of the students or even cancel the activities that the program get stuck in...
it worked, but I guess if FET would be able to point on the weak places or suggest what causes the 'short circuit' it would help.
Title: Re: when most students have unique course requests
Post by: Liviu Lalescu on August 11, 2010, 11:17:07 PM
Quoteafter 24 hours of gloomliness, I tried the trick that was written in the 'help' window when I generate... to reduce some of the students or even cancel the activities that the program get stuck in...
it worked, but I guess if FET would be able to point on the weak places or suggest what causes the 'short circuit' it would help.

I cannot show difficult students, only difficult activities. The algorithm is made that way.