End in sight, but there has to be a better way...

Started by bluebird, August 19, 2015, 07:25:51 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

bluebird

As I write this, FET is generating a lovely timetable for my school. I have spent quite a bit of time on it and I am confident it's the best possible solution. Last year the headmaster tried to generate a schedule manually and simply couldn't - he was banging his head against the wall and couldn't even get to a basic plan, let alone to a good one. FET came to the rescue and this year we are only attempting with FET. The task has proven to be a difficult one this year, more on me, the human, rather than one FET, the computer.

I have a unique problem and I think that FET could solve it, but I can't find anything on the forums that would suggest anyone else has had this problem. A little background: my school offers the International Baccalaureate Diploma Program, which is an international high school program for the last two years of secondary school. It's a great program, but creates lots of scheduling problems.

The program allows students to create their own individual path of learning. Each student selects their own courses from a range of categories. The end results is that some courses have only a few people while others have a lot of people and, as a result, need to be broken up into groups. This is where the program comes in: what is the optimal way of dividing up students across multiple course in the same subject? I believe the problem is similar to that faced by US high schools, so I tried to use the MAPR customization of FET, but 1) I just couldn't figure it out and 2) I am not convinced it's the same problem.

To better explain my problem....
I have around 110 students in the program that are in two different years. They don't share activities, but they share teachers. Each year takes courses in math, science, language, social sciences, etc. Some groups are small, for example French, around 10 people - there is no problem with these groups. However, some subjects are very popular, like Chemistry or Biology, and may have around 40 people who want to take them. These courses need to be divided into two separate courses taught by two different people or sometimes by the same person. There are also courses that everyone has to take, like English, and they need to be divided into 3-4 groups.

At the moment, I have to do "course planning" manually and assign the students as best as I think they should be assigned. (It involves a lot of spreadsheets and sorting.) However, what the optimal set up is depends on teacher availability and other courses. If I break up the groups the wrong way, it could make the job of FET very difficult. Sometimes it's just one person who is making a certain combination of courses impossible and if FET was "smarter" and move that single person to the other group, it would make everything much easier.

I have looked into using the MAPR customization of FET, but I can't figure it out. Perhaps there are some other strategies and tricks that can be used with the regular version of FET to solve this problem. I am open to suggestions and help. Also, I know Java and Javascript, so I believe I can contribute to solving the problem if extra code needs to be written for FET.

Thanks for the fantastic program and I hope to get some feedback soon :-)

Volker Dirr

Quote from: bluebird on August 19, 2015, 07:25:51 PM
[...] There are also courses that everyone has to take, like English, and they need to be divided into 3-4 groups.

At the moment, I have to do "course planning" manually and assign the students as best as I think they should be assigned. (It involves a lot of spreadsheets and sorting.) However, what the optimal set up is depends on teacher availability and other courses. If I break up the groups the wrong way, it could make the job of FET very difficult. Sometimes it's just one person who is making a certain combination of courses impossible and if FET was "smarter" and move that single person to the other group, it would make everything much easier.

I have looked into using the MAPR customization of FET, but I can't figure it out. Perhaps there are some other strategies and tricks that can be used with the regular version of FET to solve this problem. I am open to suggestions and help. [...]

You are right in this points:
- If you divide manualy, then you can use default FET version.
- Manualy assets might are sometimes difficult and might end up in impossible timetables very quick.
- If FET should set up the students itself, you need to use the MAPR version.

In fact there are not (much) more possibilities then that 2 ones.
The 3th and last possible is to the cousre planning by doing something like a "blockplanning". That is "better" then the FET default version. But not as "good" then the MAPR version. In fact it is only a simplification of the MAPR version. The advantage of the simplifications is that it reduce the data pretty much. The disadvantage of that version that it might fail. (but in fact all 3 version might fail. The default version will fail most. The "blockplanning" will fail second most. The MAPR version will fail third most.)
In fact the "blockplanning" is already ready. It is the simplified MAPR version.
I need to know how many hours your activities has got if i should tell you how to do it. But you can also have a look at other timetabling programms. All other timetabling programms call it also "blockplanning" or "courseplanning". You can do the same with the MAPR version. Don't forget: In that case you will only get a possible asset of the students as an answer. After you done the blockplanning, you still need to enter your results into default FET to schedule your timetable.

Since you are a coder yourself, i recommend to convert the students choice from your school administration software into a MAPR file (fet or csv). That will be the easiest how to enter the data and it will give you the best results.

bluebird

Hi Volker,

Thanks for the quick response and all your work on the software. Between my message and your response, FET generated a plan that looks really good and will probably be the one we use this year. Well done!

Back to the question at hand, I am open to using MAPR, but I honestly don't understand it. For example, when looking at the example file, why are there 5 versions of the same course? I generated a sample schedule with it and I really couldn't figure out how to make it work for me.

Here's an example of what I need:
All students are required to take a course called Theory of Knowledge (TOK). In the immediate year, there are 54 students and they need to be spread across three groups. One groups taught by me, the other two taught by another teacher. Each of use has their own availability to take into consideration as well.

I have already tried importing data via a CSV into FET and then set up proper rooms linked to the teacher... Up to that point I was optimistic. However, the students were not being grouped together - they were all over the place. I needed to limit them to three meetings, but I don't want to specify when those meetings will happen exactly - FET should optimize this.  I am afraid that if I placed the constraint that all activities had to have the same day/hour, then it would place them all into the same group, which is not what I wanted to happen at all.

Any tips on using MARP in this case would be useful.

Volker Dirr

Quote from: bluebird on August 19, 2015, 08:48:21 PMFor example, when looking at the example file, why are there 5 versions of the same course?

5 versions: Because there there are too many students. Maybe 100 students selected that course. 100 students in a single room are too many. So it is divided into 5 courses. So the avarage size is only 20 students per course/room. That is fine.
all the same: Because he haven't got enough different teachers that can teach that subject. So all courses must be teached by the same teacher. So 5 times the same course.

Quote from: bluebird on August 19, 2015, 08:48:21 PMI generated a sample schedule with it and I really couldn't figure out how to make it work for me.

If you check example-mapr-1.fet:
All activities without teachers (activity 1 to 6830) are students.
Please go to FET -> Data -> Activities -> Filter (students) and select a random student. Now you can see the courses that are selected by that student.

All activities with a teacher (activity 6831 to 7295 are the courses of teachers.
Please go to FET -> Data -> Activities -> Filter (teacher) and select a random teacher. Now you can see the courses that will be teached by that teacher

Volker Dirr

ahh... maybe i misunderstood.

You maybe mean the 5 subactivities?
There are 5 subactivities, because the the course got 5 hours per day.

That is the difference between MAPR and other timetabling course planning software.

MAPR also know the exact number of hours per week and give you a final timetable.

Other course planning software only schedule the blocks. You can do that also with MAPR if you want. In that case you don't add 5 subactivities. Only a single activity. But in that case you won't get the final table, because you also need to set only 1 hour per day and the days per week are not the real day names; you need to the the number of blocks. then FET MAPR will chedule a block planning and you need to set the blocks in a timetable yourself (or use the default FET version for that).

Liviu Lalescu

I was away with no internet. I am back. I will read and try to answer a bit later, or tomorrow, if I find a good answer.

Liviu Lalescu

Please see also: http://lalescu.ro/liviu/fet/forum/index.php?topic=1113.msg6526#msg6526

The mapr version is tricky to use. I did it a long time ago and I forgot some features. But if you really need it, I'll try to remember.