Equally distribute students among all dates and times for exam timetable

Started by Nagendra, June 14, 2019, 06:25:36 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Nagendra

In the attached sample exam timetable, more events are scheduled in Day-1 as compared to that of Day-2.

1) How do I constrain the activities to be distributed evenly (with some weight) among all the FET days
2) Similarly, how do I constrain the activities to be distributed evenly (with some weight) among all FET hours of any FET day?


even if the above two are not possible, its OK. But the below one is much needed.

3) How do I constrain the number of activities of all FET hours of all days in such a way that the total number of students (unique subgroups) will be equal (with some weight)?
i.e: for example, the number of students giving exam on Day-1 in Slot-1 should be approximately equal to the number of students giving exam on Day-5 in Slot-2.....

PS: Currently I don't have any rooms assigned, I prefer not to assign rooms because four different student groups will be sitting in every room while giving exams.

Liviu Lalescu

I think for (3) you can use a constraint activities max simultaneous in selected time slots, or even add 4 or 5 rooms and constrain activities to these rooms.

Nagendra

I think I haven't explained clearly.

For example there are 10 activities. Say 3 FET days, 2 FET hours each day.
A-1 (Activity-1) is attended by 8 students (8 unique subgroups
A-2 by 15
A-3 by 10
A-4 by 5
A-5 by 6
A-6 by 10
A-7 by 9
A-8 by 4
A-9 by 12
A-10 by 11

So, I want to schedule it on such a way that, total no of students on any day any hour (say Day 1 hour 2) remains almost same

So the possibile combination is
Day-1 Hour-1: A1 & A5     : Total students 14
Day-1 Hour-2: A2              : 15
Day-2 Hour-1: A3 & A4     : 15
Day-2 Hour-2: A6 & A8     : 14
Day-3 Hour-1: A7 & A10   : 20
Day-3 Hour-2: A9               : 12

I want FET to choose the best possible combination respecting other constraints  :). If at all possible with any existing constraint.

Liviu Lalescu

For the number of students is impossible with current FET. You can do for the number of activities (max 2 activities at each slot), with the constraint I wrote above.

ChicagoPianoTuner

My only idea is using buildings or rooms with a max capacity. If you have 80 subgroups and 6 meeting times, maybe set a maximum building occupancy to ~22 (tune this number). I'm not sure if it's the best way, as it wouldn't guarantee any sort of balance (e.g. using max occupancy wouldn't avoid 22/22/22/14/0/0), but it would probably avoid serious imbalance. You would of course have to add constraints like activities occupy a set of rooms, maybe a room's not available times depending on how you structure things.

Liviu Lalescu

Quote from: ChicagoPianoTuner on June 14, 2019, 07:57:35 PM
My only idea is using buildings or rooms with a max capacity. If you have 80 subgroups and 6 meeting times, maybe set a maximum building occupancy to ~22 (tune this number). I'm not sure if it's the best way, as it wouldn't guarantee any sort of balance (e.g. using max occupancy wouldn't avoid 22/22/22/14/0/0), but it would probably avoid serious imbalance. You would of course have to add constraints like activities occupy a set of rooms, maybe a room's not available times depending on how you structure things.

Unfortunately a single room can host a single activity at a certain slot, and you have no max capacity constraints on buildings.

Nagendra

Some subjects might have 200 students, some might have only 5. Suppose, If 5 activities with 200 students each are placed in any time slot, then I may not be able to accommodate them in proper rooms. On the other hand, if 5 activities with 10 students each are placed in any time slot, it is wastage of resources. This is the reason why I wanted to place activities on the basis of total no of unique students (subgroups) giving exam in any time slot.

My idea is once FET gives the timetable (of course with no rooms) then I will run my Matlab code to generate seating plan and allot them in rooms. A sample seating plan of a room is attached (generated from MATLAB). Room capacity is 80. Students from 5 different groups are giving the exam in the same room. (Subject code is mentioned against every roll number)

Liviu Lalescu

You could then add an activity only for a student. And use max simultaneous in selected time slots.

Too many activities, then? (you can increase from max 30,000 activities by recompiling).

Nagendra

Quote from: Liviu Lalescu on June 15, 2019, 06:49:28 AM
You could then add an activity only for a student. And use max simultaneous in selected time slots.

Sounds interesting  :D.

Then I need to add the following constraints:-
1) Maximum hours per day for all student sets
2) Minimum gaps between activities for every student (I already coded this) (No of constraints = no of individual students)
3) Maximum simultaneous activities in the selected time slots (ie. = Total activities / total slots) (No of constraints = no of time slots)
4) A set of activities has the same starting time and day (to ensure that all the students will give an exam at the same time) (No of constraints = no of subjects)

Looks like it will work.  ;D

And it is doable too.... ;D

Quote
Too many activities, then? (you can increase from max 30,000 activities by recompiling).
Will see...in the actual case, it might go beyond 30000...5000+ students with 6 regular subjects each: so 30000 activities and then some students who are giving some exam again as they didn't get a passing grade. So, it might go upto 50000

let me code it and test it for a small set.

By the way how difficult it is for you to add a constraint to limit the maximum number of subgroups in any given time slot?

Liviu Lalescu

Quote from: Nagendra on June 15, 2019, 11:12:23 AM
By the way how difficult it is for you to add a constraint to limit the maximum number of subgroups in any given time slot?

Maybe not very difficult.

Nagendra

Quote from: Liviu Lalescu on June 15, 2019, 11:40:59 AM
Quote from: Nagendra on June 15, 2019, 11:12:23 AM
By the way how difficult it is for you to add a constraint to limit the maximum number of subgroups in any given time slot?

Not very difficult.

May I request you to add it (In case, other users also feel is useful). So, The no of constraints and activities will be less and my timetables look good ;).

Liviu Lalescu

I added it in the TODO for now. I am not sure it will be useful for other users.


Nagendra

Quote from: Liviu Lalescu on June 15, 2019, 06:49:28 AM
You could then add an activity only for a student. And use max simultaneous in selected time slots.

Too many activities, then? (you can increase from max 30,000 activities by recompiling).

Done!

Working perfectly.

Having the following issues/queries

Query:-
1) How do I check how many activities are placed on any given slot?

Issues:-
I don't see an option to modify "all the constraints at once" for the following constraints (Like it is there for minimum days between a set of activities)
  a) A set of activities has same starting time (however, I don't need to change this. it is always 100%)
  b) Maximum simultaneous activities from a set in selected timeslots (This can be handled manually): But it is preferable to have such option here also.



Liviu Lalescu

(1): By manually viewing the HTML results "All activities" timetable, or a customization (I think cannot add this in the official FET, because I think nobody else would use).

(a) and (b): unfortunately, min days between activities is the only one allowing multiple change from FET. The other constraints are not so critical to change multiple, I consider.