Scheduling with Individual Student Data

Started by mma, April 08, 2012, 07:44:09 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

mma

Hi,

I've been interested in using FET for a while, and now I've finally found the time to do it. I'm trying to schedule for a university department with approximately 900 students and 40 instructors.

This is where I am:
1. I've entered all teachers and subjects
2. I have setup various activity tags and put constraints on them to represent our situation (rooms, time slots, preferred starting times, instructors)
2. I'm ready to create activities (note that many subjects are popular, and have to be allocated multiple activities to accommodate the number of students)

Now, I cannot really see how to setup Students.
1. I have data about the subjects each student wants to take. How do I setup Students so that I give it each individual student? If you can show me one example, I can write code to output the relevant XML or CSV. We don't have the concept of years, groups, subgroups, and I'm unsure how to map to them.
2. For popular courses that have multiple sections/activities, I want to tell FET that if a student has selected a popular course, then the student must be assigned to at least one of the activities, but that FET is free to choose from any of the activities. How do I do that? I do not want to assign a student to an activity, because he/she would be fine to go in any of set of activities. Most of the time that set of activities cannot be scheduled at the same time, as it is taught by the same instructor.

Sorry if this type of question has already been answered, but I tried searching the forums with no luck.

Thanks for your help.

Regards
mma

Volker Dirr

Quote from: mma on April 08, 2012, 07:44:09 PM
1. I have data about the subjects each student wants to take. How do I setup Students so that I give it each individual student? If you can show me one example, I can write code to output the relevant XML or CSV. We don't have the concept of years, groups, subgroups, and I'm unsure how to map to them.

subgroups is similar to student name.
group is similar to a name of a group of students that are together in a group.
year can be used to arrange your groups.

Quote from: mma on April 08, 2012, 07:44:09 PM
2. For popular courses that have multiple sections/activities, I want to tell FET that if a student has selected a popular course, then the student must be assigned to at least one of the activities, but that FET is free to choose from any of the activities. How do I do that? I do not want to assign a student to an activity, because he/she would be fine to go in any of set of activities. Most of the time that set of activities cannot be scheduled at the same time, as it is taught by the same instructor.

That is call activity planning. You must do your activity planning before you enter the dataset into fet. you might think about using tricks to simulate that, normaly activity planning is done before scheduling activities.

Liviu Lalescu

Quote from: mma on April 08, 2012, 07:44:09 PM
2. For popular courses that have multiple sections/activities, I want to tell FET that if a student has selected a popular course, then the student must be assigned to at least one of the activities, but that FET is free to choose from any of the activities. How do I do that? I do not want to assign a student to an activity, because he/she would be fine to go in any of set of activities. Most of the time that set of activities cannot be scheduled at the same time, as it is taught by the same instructor.

A possible trick: a real student = a FET room, then assign activities to FET rooms.

mma

Thanks.

1. I'll do the activity planning (student->activity mapping) manually. Could you put this on your TODO list for the future? The advantage is that the software may find a mapping that permits a schedule, whereas my manual mapping may not. Also, the system could alter the mappings to try and improve satisfaction of other criteria (e.g. distribution of class hours over a week for individual students), which may not be satisfied well with a given manual mapping.

2. Liviu, I am already using rooms for constraints (for example, only some students+teachers have access to certain rooms), so I don't think I can use rooms as students (unless I use students as rooms???). Nevertheless, I didn't understand how I could use individual students as rooms? I see how this would ensure activities to do not overlap for a given student/room, but how could I assign multiple students/rooms to an activity? Or are you saying that pseudo activities be created for each student/room, and then constrained to be scheduled at the same time? If that is a possible way to get a solution I'll try it, but is there a way to easily hide all the pseudo activities when viewing the generated timetable?

Volker Dirr

Quote from: mma on April 10, 2012, 08:34:38 AM
1. I'll do the activity planning (student->activity mapping) manually. Could you put this on your TODO list for the future?

It is already in the TODO.

Liviu Lalescu

Quote from: mma on April 10, 2012, 08:34:38 AM
2. Liviu, I am already using rooms for constraints (for example, only some students+teachers have access to certain rooms), so I don't think I can use rooms as students (unless I use students as rooms???). Nevertheless, I didn't understand how I could use individual students as rooms? I see how this would ensure activities to do not overlap for a given student/room, but how could I assign multiple students/rooms to an activity? Or are you saying that pseudo activities be created for each student/room, and then constrained to be scheduled at the same time? If that is a possible way to get a solution I'll try it, but is there a way to easily hide all the pseudo activities when viewing the generated timetable?

Well, it was just an idea, to allocate activities to students. Indeed, I think you can add simultaneous activities. But you need to explore the situation, maybe by examples, to see how it fits. I think you can hide the dummy activities (you can hide each individual subject, by using Volker's XHTML output and by modifying the CSS file).

yush

Just an idea, haven't tried it, but may work:

Say you have classA, classB and classC. The same popular subject. Each class has a cap of 20 students
There are 50 students to be put into any 1 of the 3 classes.

Method:
- Create 3 activities: classA, classB, classC
- Create 20 dummy activities with same-day-time constraint for each of the 3 classes above
- Create 50 student "aliases" as room
- Assign the 50 room-student-aliases as preferred room for the all (20x3) the dummy activities
- Make sure you set the preferred_room constraint to LESS then 100%, unless you have exactly 60 students to fill up those 60 seats. The percentage, in theory, should be number of student/ number of available seats
- Set the max-diff-room constraint to 1 for each of the dummy activities (thanks God for 5.18!)

Basically, each dummy activity acts as a "seat" in the main activities (classA, classB, classC).

I supposed this concept of binding multiple dummy activities together allows us to leverage the different constraints available from different resources (teachers, rooms, students), mix and match them and use them as aliases.

Does it make sense?

Liviu Lalescu