FET Forum

FET Development => Custom FET for Particular Needs => Topic started by: ChicagoPianoTuner on July 24, 2019, 01:36:30 PM

Title: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on July 24, 2019, 01:36:30 PM
I've used the standard FET program for several years, and I've used MAPR for two years to solve other little problems. Now I need help figuring out what version to use to help build a new type of timetable for my school. I'm thinking MAPR, but I don't know if there are other versions that are better, or if I am requesting a custom version. This is more for course planning than for actual timetabling.

The timetable has 7 blocks (A-G). Each block meets 5 times per cycle. So, in one cycle, there is A1, A2, ..., A5, B1, ..., B5, ... ,G1, ..., G5, not in that order. Most courses will meet during exactly one block (will occupy B1-B5 for example). A small number of courses meet for a fraction of one block (D1, D2, and D4, but not D3 or D5, for example). A small number of courses meet for one entire block and a fraction of another block (A1-A5 AND E3 and E4).

I need to place teachers and students in courses and place those courses in blocks. Here is my current plan for how to do it in MAPR:

FET hours are blocks (A-G)
FET days are the 5 meetings (1-5) forming a grid of A1 - G5
FET teachers are teachers
FET students are students, probably as subgroups, building groups in Excel and then importing them into FET
FET subjects are real subjects (e.g. physics)
FET rooms are sections of courses (physics_section_1, physics_section_2, etc.)
FET activities are students' choices and teachers choices. Each activity has a subject, and each subject is constrained to occur in a set of FET rooms (sections of courses above)
To teachers' choices I might include the constraint activities have the same starting time to make sure that each section occurs in the same block.
I will have to think about how to include the extra pieces for the courses that meet for more than one duration. I can think of a few ideas, but I don't know what's best.

Can anyone advise on which custom version would be best suited? Just MAPR?

For what it's worth, this model of scheduling is incredibly common in US schools. Developing a custom version that can fit this sort of schedule could have wide applications.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 24, 2019, 02:06:03 PM
I must admit I did not read very thoroughly your email, I am a bit busy implementing and checking a new FET-official constraint. But I hope I got the idea.

FET-mapr: I hate it, and I don't want to use it. It usually does not generate results, it does not converge. It is difficult to use.

I think we could try with modifying FET-aat, or designing it from the beginning for you, starting from the future FET-official 5.39.0, which is newer and better.

Jude G, who proposed it, used it successfully, as far as I know. I think his problem is similar to yours.

The FET days will be real teachers, and FET hours will be the 35 = 7 x 5 blocks x cycles. Allocate activities (subject, activity tags, students) to time slots.

You have constraints activities same starting time and more.

Please let me know what you think. You might want to play a bit with the current FET-aat with the provided example (I hope it has).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 26, 2019, 05:29:39 PM
OK, so here's my understanding:

Teachers are days, hours are 7x5 = 35 periods.
Students are students.
Set activities to duration = 5 if they occupy one full block.
If activities occupy less than one block, set duration = 3 or whatever.
If an activity occupies more than one block, I need two activities, one with duration = 5, and another with duration = 3 or whatever.
Constrain subjects to occur on specific days so if Mr. X and Mrs. Y teach physics then physics classes can only occur on their days.
Set activities preferred starting times to begin A1, B1, ... G1 for activities with duration = 5 so they only exist in one block. For shorter duration courses, they have no preferred starting time.
I need another activity with no students to represent a course. If there is only one section of that course, e.g. only one biology class for the entire school, then I can make sure the activities for students taking biology have the same starting time as the one above.
If there are two sections of a course, like physics above, I need to use one with Mr. X and one with Mrs. Y, and then use activities occupy max time slots from selection = 10 for Mr. X's course, Mrs. Y's, course, and all student activities for that course.

My question: how do I ensure that, if 35 students want to take physics, it doesn't end up with 30 in Mr. X's course and 5 in Mrs. Y's course?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 26, 2019, 07:27:10 PM
Quote from: ChicagoPianoTuner on July 26, 2019, 05:29:39 PM
OK, so here's my understanding:

Teachers are days, hours are 7x5 = 35 periods.
Students are students.
Set activities to duration = 5 if they occupy one full block.
If activities occupy less than one block, set duration = 3 or whatever.
If an activity occupies more than one block, I need two activities, one with duration = 5, and another with duration = 3 or whatever.
Constrain subjects to occur on specific days so if Mr. X and Mrs. Y teach physics then physics classes can only occur on their days.
Set activities preferred starting times to begin A1, B1, ... G1 for activities with duration = 5 so they only exist in one block. For shorter duration courses, they have no preferred starting time.
I need another activity with no students to represent a course. If there is only one section of that course, e.g. only one biology class for the entire school, then I can make sure the activities for students taking biology have the same starting time as the one above.
If there are two sections of a course, like physics above, I need to use one with Mr. X and one with Mrs. Y, and then use activities occupy max time slots from selection = 10 for Mr. X's course, Mrs. Y's, course, and all student activities for that course.

My question: how do I ensure that, if 35 students want to take physics, it doesn't end up with 30 in Mr. X's course and 5 in Mrs. Y's course?

I am not sure I understood all the problems in your data.

Yes, teachers are days, 35 hours per FET day. Then students, subjects, activity tags are for real. Students subgroups = real-life students.

Maybe I do not understand correctly the significance of blocks.

Yes, preferred time slots for Physics.

A very important question about something I do not understand: Do you need to have also the real-life times for the activities, or only the matrix teachers x 35 FET hours = organization into blocks?

Could you please download and use FET-aat, generate once for the provided example (see the examples directory)? And tell me the differences to your data?

Activities will have a subject and activity tags, and the involved students sets.

I think the duration of whole block activities will be 1+1+1+1+1, for duration 3: 1+1+1, then a possibly new constraint so that activities in a block will be on the same FET day = real teacher, and same block. Or two constraints: same starting day and a new constraint, same block.

I don't understand why activities without students.

I think you need this like FET-aat: - First customization: activities with common students cannot intersect in the real-life slots, so that
they cannot have overlapping FET hours.

One Biology activity for the entire school: add all the students in an activity.

I am not sure about your proposed occupy max 10 time slots. I need clarifications.

Your question: maybe two constraints activities occupy max time slots from selection, select a day of X (or Y), activities = all Physics of these 35 students, max occupied = 20 each.

I need some practical example, easy to understand. Maybe some very simple timetables. Or you could input some data and generate and tell me the problems which arise.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 26, 2019, 09:27:27 PM
Do you have a sample data set already. Maybe in the fet-MAPR csv file format? If yes: Please sent me the dataset if you can. (i am only talking about the "activities" that you need to enter in FET: so subject votes of students and maybe also teachers activity planning)
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 27, 2019, 02:59:46 AM
Thanks for your reply. I will try to explain more clearly.

None of the timetable help needs to be related to real time. Only course planning.

One of the attached files shows the school's schedule. It is very simple. All that is left is to assign students' courses to blocks.

Students get a list of which blocks their courses fall into on the first day of school. Most courses occupy exactly one full block, meaning they meet 5 times in the school's seven-day cycle. All five meetings should occur in the same block (A1-A5, or B1-B5, etc.). Some courses occupy LESS than one full block of time, meaning they meet three times in the seven day cycle, but all three of those meetings should also be in the same block (C3-C5, for example). Some courses occupy MORE than one full block of time, so they should have 5 meetings in the same block and 2 meetings from another block (e.g. F1-F5 AND G1-G2). Please let me know if I can explain this more.

Look at the other file showing student choices. Students request certain courses (e.g. student 1 requests chemistry, biology, art & design, physics, economics, and Spanish - higher). In the activity tags column, you see the student has ranked his choices in the order I listed. Some activities are mandatory, for example every student must choose a foreign language and physical education. But for the other 5 requests, each student will only be assigned 4 courses. In the past, when I have used MAPR to solve similar problems, I create 5 extra meeting times and allow "extra" courses to be placed in there (maybe the student's reserve choice if he gets everything he wants, but sometimes his 4th choice if he can't be fully satisfied). Let me know if I can explain more.

In the simplest possible case, a student ends up with a schedule that looks like this: A1-A5: History B1-B5: Spanish - Higher C1-C5: Geography D1-D5: no lessons E1-E2: physical education E3-E5: no lessons F1-F5: mathematics G1-G5: English. In that example, every course other than physical education meets 5 times. But you can imagine it gets more complicated if a student has a course that meets 7 times. Imagine in the example above Geography meets 7 times, so the extra 2 meetings can be anywhere in F1-F5, or they an be in E1-E2.

Once you start considering the courses that meet for duration 3 or 7, you can imagine there are many different scenarios - if there are 35 total meeting times, one student might meet 33 of those times, another student 28, another 35, etc.

Some courses, e.g. biology, are requested by many students (I think 44 in the data). Each biology class can only have max 20 students, so I need 3 different classes of biology. I need to make sure there are no more than 20 students in each section. If possible, I want to split the sections close to evenly (e.g. not 20-20-4).

Liviu, the answer to your question "why activities with no students?" Maybe you don't need it. I will think more.

In the FET-aat timetable, it appears each teacher is only working with one student at a time. I need multiple students assigned to a teacher simultaneously (creating a class).

Please let me know what other information I can provide.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 27, 2019, 09:26:15 AM
hmm... the datafile looks impossible, because for example student "1" selected 7 subjects, but 2 of them have got 7 hours. So 2 of them need 2 lines. So you need in total at least 7+2= 9 lines (so from A to I, but you have only from A to G).
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 27, 2019, 09:33:08 AM
ahh... i guess you want to place the 7 hours exactly where you placed the 3 hours so fill it up to 5.  ok.. now i understand. hmmm... a very special situation.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 27, 2019, 09:36:29 AM
hmm... but that also doesn't work, since student 1 have got only one activity with 3 hours, so you can save max 1 line. So you need at least from A to H. So that datafile should be impossible, isn't it?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 27, 2019, 06:51:32 PM
Volker: The students are only choosing only 4 out of 5 courses, + 2 mandatory.

CPT: (sorry if these initials are not nice, please let me know)

1) "so they should have 5 meetings in the same block and 2 meetings from another block (e.g. F1-F5 AND G1-G2)": do you mean D1-D5 and E3-E5?

2) In FET-aat the user Jude G inputted students as subgroups, then he has groups and years. We have a more clear and bigger example, I wrote an email to Jude G asking him if I can send it to you or here. Let me know if I can email you. Also, I wrote him about this topic.

3) In FET-aat you schedule activities (students, no teachers) to teachers (FET days) and times (FET hours). In FET-aap you schedule activities (no students, no teachers) to teachers (FET days) and students (FET hours). I understood better your data using the two CSV files, but please allow me more time to think. Today I was busy releasing the new official version, but I hope I will have more time now.

4) How many total students do you have? How many teachers? How many subjects?

5) Is it possible a timetable with the first student's choices, or absolutely impossible and we need to allow sometimes the 5th choice instead of the 1st, 2nd, 3rd, or 4th?
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 27, 2019, 09:34:32 PM
it looks like they must choose sports.

the stupid stuff is that some students have chosen only courses with 5 hours, while other have chosen up to 2 courses with 7 hours. that is complicating stuff very much. it is easier at German schools, since all must choose 2 courses with 5 hours and 8-10 courses with 3 hours.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 27, 2019, 09:39:24 PM
CPT: I hope it can be solved with an approach similar to FET-aat and some custom implemented constraints. FET days are real teachers, FET hours are the 35 time slots of the week. Each activity has a single students set (or more if you decide exactly the students in a set).

I am not sure if activities should be divided into components with duration 1 (so, 5 or 7 subactivities) or should have duration 5 (or 5+2). They can be forced to start at certain times, as you said.

So that a real teacher has maximum activities per real slot: all activities occupy max time slots from selection, select the whole FET day. It is possible to implement also minimum for this, as I did in FET-aap (not FET-aat).

Maximum 20 Biology activities per slot: activities max simultaneous in selected time slots. All Biology activities.

Minimum say 12 Biology activities per slot: might be possible with a custom constraint, derived from the above one.

What a teacher can teach: activities preferred time slots, for the subject.

A teacher is not teaching two or more activities at the same time: maybe the new constraint activity tags not overlapping or a custom constraint.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 27, 2019, 09:56:03 PM
Just because i am interested in: No maths at the school? So the other subjects must include needed math knowledge in their own hours?
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 27, 2019, 10:07:42 PM
hmm... i still think that the dataset is impossible with only 35 hours.

have a look at student 1:
he has selected 4 times 5 hours = 20 hours
1 time 3 hours  (sports) = will occupy a part of a 5 times slot
2 times 7 hours; that mean
the 1st 7 hour course need a 5 hours slot and the Rest 2 hours might be placed in the 5th hour slot from sports (3 hours)
the 2nd 7 hour course need one full and a half 5 hours slot.
so he need even in best case 4+1+1+2=8 slots with 5 hours = 40 hours.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 28, 2019, 10:33:06 AM
CPT: Jude G gave me permission to attach a more elaborate version of a FET-aat input file. See the attached file.

Unfortunately, he needs to allocate the students to groups by hand. He might still have the same problem as you. I'll invite him to join this discussion, we might obtain better results together.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 29, 2019, 02:19:10 PM
Thank you all for your work. Sorry to be quiet, I was traveling and I am now home so can help more. CPT is a fine abbreviation for my name :)

The data file that I gave is incomplete. Our school is moving to a new system so I used some existing data to help explain the concept, but it does not reflect actual student choices or options. It would have taken too long to prepare sample data for you so I hope what I provided is enough to illustrate the concept.

Mathematics and English are not listed; these subjects are also mandatory for students. In the new system, students will take mathematics, English, physical education, and either 3 or 4 other subjects depending on duration (roughly 20 hours of duration, so either 3x7 or 4x5, or maybe 2x7 and 1x5, 3x5 and 1x7, or, in the worst case, 2x5 and 2x7). Physical education will always meet for 3 hours. The idea is that courses that have duration = 7 are more advanced and thus require more time, but no student is required to take any courses with duration = 7.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 29, 2019, 02:25:28 PM
Quote from: Liviu Lalescu on July 27, 2019, 06:51:32 PM
1) "so they should have 5 meetings in the same block and 2 meetings from another block (e.g. F1-F5 AND G1-G2)": do you mean D1-D5 and E3-E5?

That would be 5 meetings from the same block and 3 meetings from another block (E3, E4, E5). The meetings in another block don't have to be sequential (e.g. could be E2 and E4 or E1 and E5).

Quote from: Liviu Lalescu on July 27, 2019, 06:51:32 PM
2) In FET-aat the user Jude G inputted students as subgroups, then he has groups and years. We have a more clear and bigger example, I wrote an email to Jude G asking him if I can send it to you or here. Let me know if I can email you. Also, I wrote him about this topic.

I have sent you data for one year of students. There would be 4 years total. Some courses would contain students from multiple years, some courses just contain students from one single year.


Quote from: Liviu Lalescu on July 27, 2019, 06:51:32 PM
3) In FET-aat you schedule activities (students, no teachers) to teachers (FET days) and times (FET hours). In FET-aap you schedule activities (no students, no teachers) to teachers (FET days) and students (FET hours). I understood better your data using the two CSV files, but please allow me more time to think. Today I was busy releasing the new official version, but I hope I will have more time now.

I think FET-aat is more appropriate, but maybe you understand better than me.

Quote from: Liviu Lalescu on July 27, 2019, 06:51:32 PM
4) How many total students do you have? How many teachers? How many subjects?

Roughly 60 students per year for 4 years, so 240. Number of subjects I'm not sure off the top of my head - maybe 50?

Quote from: Liviu Lalescu on July 27, 2019, 06:51:32 PM
5) Is it possible a timetable with the first student's choices, or absolutely impossible and we need to allow sometimes the 5th choice instead of the 1st, 2nd, 3rd, or 4th?
Sometimes we need to allow a 5th choice, but we must 100% respect students' 1st and 2nd choice (so they may end up with choices 1, 2, 5 or 1, 2, 4 but never missing choice 1 or 2).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 29, 2019, 02:35:32 PM
Quote from: Volker Dirr on July 27, 2019, 10:07:42 PM
hmm... i still think that the dataset is impossible with only 35 hours.

have a look at student 1:
he has selected 4 times 5 hours = 20 hours
1 time 3 hours  (sports) = will occupy a part of a 5 times slot
2 times 7 hours; that mean
the 1st 7 hour course need a 5 hours slot and the Rest 2 hours might be placed in the 5th hour slot from sports (3 hours)
the 2nd 7 hour course need one full and a half 5 hours slot.
so he need even in best case 4+1+1+2=8 slots with 5 hours = 40 hours.

No, remember if activity tag = 5th choice, that's a backup ("revote"). So student 1 has 2x7 hours (choices 1 and 4), 3x5 hours (choices 2, 3, and MFL), and 1x3 hours (PE) for a total of 32 hours. The solution would look something like this:

Block A - Choice 1 (chemistry)
Block B - Choice 2 (biology)
Block C - Choice 3 (art & design)
Block D - Choice 4 (physics)
Block E - MFL
Block F - PE
Block G - empty

Then the remaining 2x2 hours (from duration 7 choices) would have to fit either both in block G or 1 in block F and 1 in block G.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 29, 2019, 02:49:21 PM
Quote from: Volker Dirr on July 27, 2019, 09:56:03 PM
Just because i am interested in: No maths at the school? So the other subjects must include needed math knowledge in their own hours?
Just to be specific, math would be a course as well, but the data I am using is from a previous year when all students must take math and English, and these choices reflect their requests for other subjects. This data comes from a system with more than 35 periods. In the new system, math would fall in students' choices 1-4.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 29, 2019, 03:45:40 PM
1)
QuoteIn the simplest possible case, a student ends up with a schedule that looks like this: A1-A5: History B1-B5: Spanish - Higher C1-C5: Geography D1-D5: no lessons E1-E2: physical education E3-E5: no lessons F1-F5: mathematics G1-G5: English. In that example, every course other than physical education meets 5 times. But you can imagine it gets more complicated if a student has a course that meets 7 times. Imagine in the example above Geography meets 7 times, so the extra 2 meetings can be anywhere in F1-F5, or they an be in E1-E2.
do you mean "D1-D5 AND E3-E5"? Because in F1-F5 is mathematics and in E1-E2 is physical education.

2) How many maximum teachers?

3)
Quoteand either 3 or 4 other subjects depending on duration
: but you said the students choose 6 out from 7 variants, without mathematics and English.

4) 240 maximum students is a very acceptable situation. Maximum 240*24 activities or we can use less if we say that duration 5 is for a single activity.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 29, 2019, 04:41:46 PM
Quote from: Liviu Lalescu on July 29, 2019, 03:45:40 PM
do you mean "D1-D5 AND E3-E5"? Because in F1-F5 is mathematics and in E1-E2 is physical education.

Yes, that's what I mean. Sorry.
Quote
2) How many maximum teachers?

50 I think.

Quote
but you said the students choose 6 out from 7 variants, without mathematics and English.

I think we are confused because of mathematics and English. They are treated no differently than any other subject. The data set I provided happens to not include any math or English because it is a leftover data set from another exercise. There are in total maybe 50 different courses available for choice. Some courses contain multiple instances (e.g. two different instances of physics) to accommodate students' needs. Sometimes the school has flexibility and can offer courses according to needs. Say one teacher can teach physics and chemistry. One year there may be 2 physics courses and 1 chemistry course, while the next year it is the other way around depending on requests. (I do not need FET to help with this part.) In other courses, it may be different. For example, the art teacher can teach exactly 2 art classes, so if more than 2x20 = 40 students want to take art, then some of them will have to choose something else (reserve choice/revote).

In truth things will be a little bit different - more than 240 students. Maybe I should tell the full truth: the situation I have described is for our senior school (high school). There is also the middle school which contains about 180 more students in 3 years. There are some cross-over teachers who teach in both schools. All that is necessary to make the two schools compatible is the ability to keep the cross-over teachers free during the same blocks, e.g. all cross-over teachers teach middle school classes in blocks B and C, so they are unavailable for high school during that time. Does that make sense?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 29, 2019, 05:36:32 PM
50 teachers is very reasonable. I need to increase the FET days  per week (as in FET-aat). Also I hope FET will allow much more students than 240+180 with a reasonable time of solving the timetable.

I understand.

I think the best would be to generate the combined timetable data (middle + high-school) in a single file.

I am not sure of a way to allow choices for students. Maybe add all the 5 possible choices and create 40 FET hours (real-life time slots), and consider that the last 5 FET hours are invisible in the real timetable and preferred times 100% 1st and 2nd choices on FET hours 1..35, then 95% preferred choices 3rd and 4th choices on FET hours 1..35 (or something like this). (and the mandatory activities - preferred times only 1..35, 100%).

What do you think of this?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 29, 2019, 06:07:05 PM
Quote from: Liviu Lalescu on July 29, 2019, 05:36:32 PM
I think the best would be to generate the combined timetable data (middle + high-school) in a single file.
I can do that. We are trying to implement this new timetable 13 months from now so I have time to figure things out. Next week, I will compile a very realistic data set for all students in middle and high school.
Quote
I am not sure of a way to allow choices for students. Maybe add all the 5 possible choices and create 40 FET hours (real-life time slots), and consider that the last 5 FET hours are invisible in the real timetable and preferred times 100% 1st and 2nd choices on FET hours 1..35, then 95% preferred choices 3rd and 4th choices on FET hours 1..35 (or something like this). (and the mandatory activities - preferred times only 1..35, 100%).

What do you think of this?
What you describe is exactly how I solved the same problem using MAPR: set of activities has a set of preferred starting time, using activity tag as the criteria and then set the allowable periods. I first started with 1st choice = 100%, then 1st and 2nd = 100%, etc. Then finally 1st-3rd = 100% and 4th = 80%, 5th = 70% or something like that so FET does not treat 4th and 5th choices as equal.

There were two big problems with MAPR: first, there was no guess as to which activities should be scheduled first. Even if FET does not try to calculate the initial order, I would still request the ability to assign order of generation (as in the advanced option in standard FET).

The second problem is harder to explain. Assume students have 100% mandatory fulfillment for choices 1-3. Say FET places the activities by student, so student 1 has his activities placed first, then 2, etc. Maybe student 10 has to take 5th choice instead of 4th, but then when FET tries to schedule activities for student 50, now it is possible that student 10 can successfully take his preferred courses (e.g. 4th choice is now possible). FET has no way of knowing this since student 10's activities are successfully placed. The way I solved this problem is by going through the solved timetable again locking space/time for all choices 1-3 and allowing FET to try again choices 4-5 for best results, maybe changing the percentages for 4th/5th choice.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 29, 2019, 06:34:07 PM
Quote from: ChicagoPianoTuner on July 29, 2019, 06:07:05 PM
I can do that. We are trying to implement this new timetable 13 months from now so I have time to figure things out. Next week, I will compile a very realistic data set for all students in middle and high school.

OK, please consider that my analysis is not over. We might need to input in another way than you/we are thinking now.

Quote
What you describe is exactly how I solved the same problem using MAPR: set of activities has a set of preferred starting time, using activity tag as the criteria and then set the allowable periods. I first started with 1st choice = 100%, then 1st and 2nd = 100%, etc. Then finally 1st-3rd = 100% and 4th = 80%, 5th = 70% or something like that so FET does not treat 4th and 5th choices as equal.

Yes, I think I got this idea from you.

I think 1st-3rd 100%, 4th 99%, and 5th nothing.

Quote
There were two big problems with MAPR: first, there was no guess as to which activities should be scheduled first. Even if FET does not try to calculate the initial order, I would still request the ability to assign order of generation (as in the advanced option in standard FET).

I can customize in any way the initial order (like in students' order, subjects order, activity tags order, duration order, etc.). But I think there is no need.

Quote
The second problem is harder to explain. Assume students have 100% mandatory fulfillment for choices 1-3. Say FET places the activities by student, so student 1 has his activities placed first, then 2, etc. Maybe student 10 has to take 5th choice instead of 4th, but then when FET tries to schedule activities for student 50, now it is possible that student 10 can successfully take his preferred courses (e.g. 4th choice is now possible). FET has no way of knowing this since student 10's activities are successfully placed. The way I solved this problem is by going through the solved timetable again locking space/time for all choices 1-3 and allowing FET to try again choices 4-5 for best results, maybe changing the percentages for 4th/5th choice.

Yes, I know, this appears in FET official for preferred rooms <100% weight.

You can solve this by raising very much the weight for 4th, maybe to 99%.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on July 29, 2019, 08:07:22 PM
I have similar problem with my rooms.
physics should be in a special room, but there is not enough space. so in worst case it can be also in chemistry room.

since my table it very difficult i only do:
physics 100% preferred both rooms.

At the end i have the same problem like you.

But i didn't check the timetable manually. I let fet do it like this:
load the dataset from the results folder.
unlock all rooms.
now add a physics room constraint with 99.99999% and let it run.
now it is nearly always in pyhsics room.

i think you should try the same trick.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 29, 2019, 09:39:53 PM
Some more thoughts of this:

1) Maybe we should consider activities divided into 5 as duration 5, into 6(7) as duration 5+1(+1), and those into 3 as 1+1+1. Custom constraint same components without 5 should be on the same real-life block.

2) Number of FET hours per day: 35 (real-life) + 7 (invisible). Custom constraint component in one of those 7 invisible -> all of the container in those 7 invisible.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 29, 2019, 09:47:00 PM
Quote from: Liviu Lalescu on July 29, 2019, 09:39:53 PM
Some more thoughts of this:

1) Maybe we should consider activities divided into 5 as duration 5, into 6(7) as duration 5+1(+1), and those into 3 as 1+1+1. Custom constraint same components without 5 should be on the same real-life block.

2) Number of FET hours per day: 35 (real-life) + 7 (invisible). Custom constraint component in on of those 7 invisible -> all of the container in those 7 invisible.
Both of those suggestions make sense and would be helpful. You think 5+1+1 for duration 7 is better than just doing 5+2?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 29, 2019, 09:57:23 PM
Quote from: ChicagoPianoTuner on July 29, 2019, 09:47:00 PM
Both of those suggestions make sense and would be helpful. You think 5+1+1 for duration 7 is better than just doing 5+2?

I thought of this because by doing 5+2 we deny for instance (A1-A5 and C3,C5) for an activity with total duration 7. Are we losing feasible solutions? You know better than me. If there is a solution with (A1-A5 and C3,C5), is it very easy to swap and obtain (A1-A5 and C1-C2), considering also other activities?

I might sleep now.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 30, 2019, 01:28:20 AM
Quote from: Liviu Lalescu on July 29, 2019, 09:57:23 PM
Quote from: ChicagoPianoTuner on July 29, 2019, 09:47:00 PM
Both of those suggestions make sense and would be helpful. You think 5+1+1 for duration 7 is better than just doing 5+2?

I thought of this because by doing 5+2 we deny for instance (A1-A5 and C3,C5) for an activity with total duration 7. Are we losing feasible solutions? You know better than me. If there is a solution with (A1-A5 and C3,C5), is it very easy to swap and obtain (A1-A5 and C1-C2), considering also other activities?

I might sleep now.

You are right - we might lose feasible solutions. Your way is better.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 30, 2019, 05:58:34 PM
I have just thought about something that makes it easier to obtain a solution but harder to program. In the files I uploaded, look at the one with the school schedule that shows how A1, B1, etc. are distributed. I forgot that everything in the middle row (period 3) is actually TWICE AS MUCH TIME as the others. Now in the schedule it's a somewhat inconsistent grouping that has the extra time (C1, A2, F2, D3, B4, E4, G5), but I could just as easily make them A1, B1, etc. For now let's say that A1, B1, C1, ..., G1 are longer. Consider now there is an extra "hour" of real time in each block, even though there is not an extra period/lesson.

I am not yet certain of the effects of this on course length requirements. For example, I know that PE will still have duration = 3 hours (so either A1 and one of A2-A5 OR A2, A3, and A4), but I do not know if the PE teachers request specifically to have the long hour A1, or will request exactly the opposite, or one way for a certain year group and another for a different year group.

I know that courses that used to have duration = 5 will now be duration = 6 real hours, so they would still occupy one entire block A1-A5.

I know that courses that used to have duration = 7 will now have duration = 8 real hours. They can occupy all of one block (6 real hours) and either two short lessons from another block (B2 and B3) or one long lesson (B1). Perhaps different teachers would make different requests. Ideally FET could handle either request.

Is this possible? It doesn't sound incredibly difficult to me, but I can't quite see an easy trick.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 30, 2019, 07:14:49 PM
I think we should make the FET hours:

A1, A1', A2, A3, A4, A5, B1, B1', ..., G5 (6*7=42 FET hours) and additionally 8 fake hours for the refused activities (5th or 4th students' choices).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 30, 2019, 08:09:04 PM
Quote from: Liviu Lalescu on July 30, 2019, 07:14:49 PM
I think we should make the FET hours:

A1, A1', A2, A3, A4, A5, B1, B1', ..., G5 (6*7=42 FET hours) and additionally 8 fake hours for the refused activities (5th or 4th students' choices).

I was thinking the same thing. We would need a constraint: if an activity (subactivity) occupies A1, it must also occupy A1'. Or maybe we don't need it: for teachers who want extra time in a long chunk, use activities preferred starting times (with a tag) for A1-G1. For teachers who want short chunks, choose A2-A5, B2-B5, etc. But maybe the constraint I mentioned could be useful for teachers who don't have a preference.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 31, 2019, 09:38:54 AM
I think we need this new constraint. Because:

1) Your reason

2) If there are say 40 activities for students to be scheduled to 2 teachers, and one teacher wants long and the other two shorts, but we don't know which activities will go to T1 and which to T2.

I hope this new constraint is possible and feasible for the generation.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 31, 2019, 12:59:58 PM
Quote from: Liviu Lalescu on July 31, 2019, 09:38:54 AM
2) If there are say 40 activities for students to be scheduled to 2 teachers, and one teacher wants long and the other two shorts, but we don't know which activities will go to T1 and which to T2.
Good point.

I am working on the sample data set and hope to have it by next week. Is there anything I can do otherwise to help?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 31, 2019, 01:46:11 PM
So, to recapitulate:

1) FET days per week: maximum around real teachers 50. I'll put 200, as in FET-aap.

FET hours per day: A1, A1', ..., A5, ..., G5: 42 + Fake1,..., Fake8: 8. 50 in total.

2) Activities with duration:

5: 6
7: 6+1+1
3: 1+1+1.

3) Max say 20 Bio activities per FET slot - existing constraint

Min say 12 Bio activities per slot - new constraint

4) Real teacher max activities per real slot: activities occupy max time slots from selection, whole FET day

5) Same students cannot have activities both say (A2, T1) and (A2, T2) (same FET hour)

6) New constraint if activity occupies (A1 or A1'), occupies (A1' or A1):

duration:

5: no problem
7: for 1+1
3: for 1+1+1
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 31, 2019, 02:44:50 PM
That all sounds correct :)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 31, 2019, 07:26:57 PM
For the min 12 Biology activities per slot, I think we need to add for each subactivity:

7) Two activity tags: Subject+Component number, component number.

Like: Biology Component 1, Component 1
Biology Component 2, Component 2
Biology Component 3, Component 3 (two activity tags on each line)

Add then n_subjects constraints activity tags not overlapping (the new constraint in FET-5.39.0), Biology Component 1, BC2, BC3 (is this true?)

Then I need for the min simultaneous: the subject and the Component 1 (2,3).

Unfortunately, Components are individually for subactivities, might break CSV import. What can we do?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on July 31, 2019, 08:22:53 PM
Quote from: Liviu Lalescu on July 31, 2019, 07:26:57 PM
For the min 12 Biology activities per slot, I think we need to add for each subactivity:

7) Two activity tags: Subject+Component number, component number.

Like: Biology Component 1, Component 1
Biology Component 2, Component 2
Biology Component 3, Component 3 (two activity tags on each line)

Add then n_subjects constraints activity tags not overlapping (the new constraint in FET-5.39.0), Biology Component 1, BC2, BC3 (is this true?)
Yes, you have it right.
Quote
Then I need for the min simultaneous: the subject and the Component 1 (2,3).

Unfortunately, Components are individually for subactivities, might break CSV import. What can we do?
What do you mean "components are individually for subactivites?"
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on July 31, 2019, 08:37:10 PM
Quote
What do you mean "components are individually for subactivites?"

The activity tags "Component 1" and "Biology Component 1", then 2, then 3, should each two be added for only one component (if say Biology is 6+1+1).

In your example CSV, see line 2, Chemistry: You have a single line for 6+1+1 (in fact it is 7 there). But on a single line you can have a single variant of activity tags (any number of activity tags, which go to all the components - 6, 1, 1).

Can you create a complete .fet file? You will need anyway to input many constraints, so I think you need to develop some tools for automatically generating a .fet XML file.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 01, 2019, 06:52:49 PM
Quote from: Liviu Lalescu on July 31, 2019, 08:37:10 PM
The activity tags "Component 1" and "Biology Component 1", then 2, then 3, should each two be added for only one component (if say Biology is 6+1+1).

In your example CSV, see line 2, Chemistry: You have a single line for 6+1+1 (in fact it is 7 there). But on a single line you can have a single variant of activity tags (any number of activity tags, which go to all the components - 6, 1, 1).

Can you create a complete .fet file? You will need anyway to input many constraints, so I think you need to develop some tools for automatically generating a .fet XML file.
I don't know if I can create a complete .fet file - I do not have much practice with xml. For fet import can I give one subactivity multiple activity tags? Is that the problem?

I can create a csv file that has three lines for chemistry (chemistry duration 5, chemistry C1 ChemC1 duration 1, chemistry C2 ChemC2 duration 1) pretty easily. But can I give one subactivity two tags?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 01, 2019, 07:06:18 PM
Your CSV file is nice. On a single row you can put any number of activity tags, separated by "+". But this is not the problem I was telling you about. The problem is that these activity tags go to all the subactivities of that row (if there are for instance 6+1+1 all 3 component subactivities will have the same activity tags, you cannot change them for each component).

The solutions:

1) Add 3 lines instead of 1. But FET will not recognize that the 3 components are in the same split activity. Might lead to problems and does not look nice in the activities dialog.

2) Modify the CSV import/export. The export/import was done by Volker and I might have problems trying this.

3) You can directly create the activities .fet XML. It is not difficult at all, I will shortly post an example for you. We will need anyway to work with .fet XML to input the many constraints.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 01, 2019, 07:35:00 PM
I forgot: in the interface, to create different activity tags for subactivities (not the whole activity), you need to enter the subactivities dialog.

Now, I attach a small example.

And here is what interests you:


<Activities_List>
<Activity>
<Subject>Chemistry</Subject>
<Activity_Tag>Chemistry component 1</Activity_Tag>
<Activity_Tag>Component 1</Activity_Tag>
<Students>subgroup1</Students>
<Duration>6</Duration>
<Total_Duration>8</Total_Duration>
<Id>1</Id>
<Activity_Group_Id>1</Activity_Group_Id>
<Active>true</Active>
<Comments></Comments>
</Activity>
<Activity>
<Subject>Chemistry</Subject>
<Activity_Tag>Chemistry component 2</Activity_Tag>
<Activity_Tag>Component 2</Activity_Tag>
<Students>subgroup1</Students>
<Duration>1</Duration>
<Total_Duration>8</Total_Duration>
<Id>2</Id>
<Activity_Group_Id>1</Activity_Group_Id>
<Active>true</Active>
<Comments></Comments>
</Activity>
<Activity>
<Subject>Chemistry</Subject>
<Activity_Tag>Chemistry component 3</Activity_Tag>
<Activity_Tag>Component 3</Activity_Tag>
<Students>subgroup1</Students>
<Duration>1</Duration>
<Total_Duration>8</Total_Duration>
<Id>3</Id>
<Activity_Group_Id>1</Activity_Group_Id>
<Active>true</Active>
<Comments></Comments>
</Activity>
</Activities_List>
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 01, 2019, 07:37:29 PM
Quote from: Liviu Lalescu on August 01, 2019, 07:06:18 PM
Your CSV file is nice. On a single row you can put any number of activity tags, separated by "+". But this is not the problem I was telling you about. The problem is that these activity tags go to all the subactivities of that row (if there are for instance 6+1+1 all 3 component subactivities will have the same activity tags, you cannot change them for each component).

The solutions:

1) Add 3 lines instead of 1. But FET will not recognize that the 3 components are in the same split activity. Might lead to problems and does not look nice in the activities dialog.

2) Modify the CSV import/export. The export/import was done by Volker and I might have problems trying this.

3) You can directly create the activities .fet XML. It is not difficult at all, I will shortly post an example for you. We will need anyway to work with .fet XML to input the many constraints.
OK, I'll try to learn to use xml and create a fet file. Do you start in excel/sheets/whatever the open office version is?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 01, 2019, 07:39:21 PM
Quote from: Liviu Lalescu on August 01, 2019, 07:35:00 PM
Now, I attach a small example.

OK, I can do that. I should probably just create the activities part myself, and then just copy/paste into an existing fet file that has the days/general structure setup. Right? Or create everything from scratch?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 01, 2019, 07:40:38 PM
Quote from: ChicagoPianoTuner on August 01, 2019, 07:37:29 PM
OK, I'll try to learn to use xml and create a fet file. Do you start in excel/sheets/whatever the open office version is?

I created the attached example above in the FET interface. But you can open it / create a new one with any text or XML editor (an XML editor might be more difficult to use).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 01, 2019, 07:43:46 PM
Quote from: ChicagoPianoTuner on August 01, 2019, 07:39:21 PM
Quote from: Liviu Lalescu on August 01, 2019, 07:35:00 PM
Now, I attach a small example.

OK, I can do that. I should probably just create the activities part myself, and then just copy/paste into an existing fet file that has the days/general structure setup. Right? Or create everything from scratch?

You can do either variant. But considering that we/you need also constraints, you might want to generate the whole thing.

It would be good if you keep things opened, so for instance you can rename the tags to slightly different names for instance.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 01, 2019, 07:55:24 PM
OK. Should I make one now with the sample data in the file I uploaded earlier? Or is it better to wait until I have all the data next week?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 01, 2019, 08:43:56 PM
I might use the current data for some tests. But please keep in mind that we might need to change some minor things, so it should be automatic.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 01, 2019, 09:22:26 PM
OK, I will work on it today/tomorrow.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 01, 2019, 09:28:35 PM
OK. If it is not private, how are you writing the .fet XML structure? Christoph Voelker (FET-aap suggester) worked in Matlab and then switched to GNU Octave, getting the data from an Excel file and outputting the .fet XML. There is a GNU Octave script in FET-aap, you might get inspiration from it.

Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 01, 2019, 10:31:57 PM
Honestly I'm not very knowledgeable when it comes to things like that. I plan to write in VBA and output to a simple text file. My coding knowledge doesn't extend far beyond C#, Python, and VBA, and I figure since I already have the data in Excel then VBA is the easiest way.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 08:30:49 AM
Yes, of course.

Please tell me if you need me, when I put a testing version for you, to put the Windows executable, or sources tar.bz2 is enough for you.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 02, 2019, 01:18:06 PM
I've only ever used the Windows executable. Is it easy to learn to use the other format?

I am nearly finished writing the code to generate the FET file. I should have it later today.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 02, 2019, 03:00:30 PM
For fet xml, is the order of nodes within an activity important? Must it always go subject, tag, students, duration, id, ... or can it be any order?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 03:59:20 PM
Quote from: ChicagoPianoTuner on August 02, 2019, 01:18:06 PM
I've only ever used the Windows executable. Is it easy to learn to use the other format?

I am nearly finished writing the code to generate the FET file. I should have it later today.

This is good. I made a version with max 200 days per week (1) and forbidding students having activities at two slots same hour, like (A2, T1) and (A2, T2), which was (5) in our list. But this was the easy part for me. We might want to add the existing constraints (max say 20 biology activities per real slot and real teacher max activities per slot and not overlapping slots Component 1,2,3), skipping for now the difficult part of min say 12 biology activities per slot and if activity occupies (A1 or A1') it should occupy (A1' or A1). This just to see if the ideas work.

Install once Qt. Then each time I put a new snapshot you need to unpack the tar.bz2 and compile. It is written in the README file.

Quote from: ChicagoPianoTuner on August 02, 2019, 03:00:30 PM
For fet xml, is the order of nodes within an activity important? Must it always go subject, tag, students, duration, id, ... or can it be any order?

It can be any order.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 02, 2019, 04:11:21 PM
Here is the FET file I have made so far. Can you check quickly for any errors? Everything is automatically generated so I can change things quickly. The file is fairly self-explanatory except maybe the activity tags. These are the tags in use:

To denote preference, I use 1st-5th choice (5th is the backup choice). Probably don't even set constraints for these to begin - do that later.
MFL and PE are a 100% requirement to be scheduled in real time (not fake overflow time).
MustIncludeLongPeriod should have preferred starting time A1, A1', B1, B1', etc. = 100%. I think this should also include the fake time, H1 and H1'. The 1st-5th choice will regulate which courses end up in fake time.
MustAvoidLongPeriod should have preferred starting time A2, A3,...A5, B2, B3, ... B5, C2,... = 100% . Same here, I think this should include the fake time.
Subject_Component_# and Component_# are as you mentioned earlier in the thread.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 02, 2019, 04:20:07 PM
Quote from: Liviu Lalescu on August 02, 2019, 03:59:20 PM
We might want to add the existing constraints (max say 20 biology activities per real slot and real teacher max activities per slot and not overlapping slots Component 1,2,3), skipping for now the difficult part of min say 12 biology activities per slot and if activity occupies (A1 or A1') it should occupy (A1' or A1). This just to see if the ideas work.
OK - we can skip that for now.
Quote
Install once Qt. Then each time I put a new snapshot you need to unpack the tar.bz2 and compile. It is written in the README file.
I will download Qt and try it out.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 04:31:21 PM
To unpack: I use 7-zip to unpack from tar.bz2 to tar, and Total Commander to unpack from tar to the directory (in both, press Enter on the archive).

You might use official bunzip2 and untar from the internet.

These of the above are not written in the README.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 04:34:18 PM
Quote from: ChicagoPianoTuner on August 02, 2019, 04:11:21 PM
Here is the FET file I have made so far. Can you check quickly for any errors? Everything is automatically generated so I can change things quickly. The file is fairly self-explanatory except maybe the activity tags. These are the tags in use:

To denote preference, I use 1st-5th choice (5th is the backup choice). Probably don't even set constraints for these to begin - do that later.
MFL and PE are a 100% requirement to be scheduled in real time (not fake overflow time).
MustIncludeLongPeriod should have preferred starting time A1, A1', B1, B1', etc. = 100%. I think this should also include the fake time, H1 and H1'. The 1st-5th choice will regulate which courses end up in fake time.
MustAvoidLongPeriod should have preferred starting time A2, A3,...A5, B2, B3, ... B5, C2,... = 100% . Same here, I think this should include the fake time.
Subject_Component_# and Component_# are as you mentioned earlier in the thread.

1) I would better use a complete .fet file, so I can open it with FET. It is not difficult. For students - you might want to add some students from the FET interface and save and see the file.

2) In the beginning, you have "<Activiy_Tag> a few times (missing t)

3) Physical Education: should have 3 subactivities, not one, each duration 1, total duration 3.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 02, 2019, 04:43:35 PM
Quote from: Liviu Lalescu on August 02, 2019, 04:34:18 PM
1) I would better use a complete .fet file, so I can open it with FET. It is not difficult. For students - you might want to add some students from the FET interface and save and see the file.

OK. Should I just use regular FET to generate the file? Or aat? Or the version you're working on?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 04:47:19 PM
Quote from: ChicagoPianoTuner on August 02, 2019, 04:43:35 PM
OK. Should I just use regular FET to generate the file? Or aat? Or the version you're working on?

Not aat. Official or what I have now. I will now compile for Windows what I have so far, so you can input more FET days per week. I will announce you the new snapshot, probably in ~30 minutes.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 02, 2019, 05:32:35 PM
I have the FET file. Should I include constraints?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 05:44:59 PM
Quote from: ChicagoPianoTuner on August 02, 2019, 05:32:35 PM
I have the FET file. Should I include constraints?

I just put the Windows version. Get it from https://lalescu.ro/liviu/fet/download/custom/cpt/

I am not sure about the constraints. I could show you one from each kind, and you will add similarly more constraints. But you can also try yourself, and I will check.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 02, 2019, 07:11:14 PM
Thanks for the version. I am not finished, but I am done for the day. It looks like it's working well. I did not lock the file, but it generated in under 2 minutes on my very slow laptop. I cannot attach the file here as it is ~2.5 MB so I will email it to you.

There are some things I need to do still:
include 1st-5th choice in scheduling
use set of activities has the same starting day for one student's activities so he doesn't have multiple teachers
I have constraints set incorrectly for the FAKE hours
I have constraints set incorrectly for physical education

There are still some things we need to work out:
Right now, if a student has a course of duration 8 (6 + 1 + 1) and it is requested by the teacher that the extra 2 do NOT occupy the long period (A1 and A1'), it is currently possible that those two extra are placed in different blocks (e.g F2 and B4). They should be in the same block.
If a teacher teaches multiple subjects (e.g. one teacher for business studies and economics) those activities cannot be at the same time. Perhaps we can use FET teachers to solve this problem.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 08:12:35 PM
I will read and answer later this:
Quotesome things we need to work out:

I received your file. It solves also in ~2 minutes on my laptop, but I assumed my laptop is fast. I think we need to make it faster by these:

a) MustIncludeLongPeriod: choose second component for A,B,C,D,E,F,G, and choose third component for A',B',C',D',E',F',G'. You might want to add an additional activity tag, MustIncludeLongPeriodFirst, or MustIncludeLongPeriodSecond. But you know better than me if this is correct.

b) max simultaneous biology: select only the biology teachers slots

c) occupy max time slots from selection:
   c1) without FAKE1...8?
   c2) only chemistry activities for the chemistry teacher.

(c2) is very important for speed, but also (b) and maybe (a).

Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 09:07:33 PM
Quote from: ChicagoPianoTuner on August 02, 2019, 07:11:14 PM
There are still some things we need to work out:
Right now, if a student has a course of duration 8 (6 + 1 + 1) and it is requested by the teacher that the extra 2 do NOT occupy the long period (A1 and A1'), it is currently possible that those two extra are placed in different blocks (e.g F2 and B4). They should be in the same block.

I will try a customization. Assuming the 1+1 activities are one near each other in the activities list (id, id+1), they have total duration 8, duration 1, and same activity group id.

Quote
If a teacher teaches multiple subjects (e.g. one teacher for business studies and economics) those activities cannot be at the same time. Perhaps we can use FET teachers to solve this problem.

I think we can use the constraint activity tags not overlapping, introduced in the new FET-5.39.0. Add for business studies and economics activities an activity tag the same as the subject, then bs and e cannot overlap.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 10:08:04 PM
Quote from: Liviu Lalescu on August 02, 2019, 09:07:33 PM
Quote from: ChicagoPianoTuner on August 02, 2019, 07:11:14 PM
There are still some things we need to work out:
Right now, if a student has a course of duration 8 (6 + 1 + 1) and it is requested by the teacher that the extra 2 do NOT occupy the long period (A1 and A1'), it is currently possible that those two extra are placed in different blocks (e.g F2 and B4). They should be in the same block.

I will try a customization. Assuming the 1+1 activities are one near each other in the activities list (id, id+1), they have total duration 8, duration 1, and same activity group id.

I made it, seems to be working, even if it slowed even more the generation. I will put the new version in probably ~30 minutes.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 02, 2019, 10:45:24 PM
I have just put the new snapshot version on https://lalescu.ro/liviu/fet/download/custom/cpt/

In the future versions I will add your example instead of the official examples and update the readme-cpt.txt to reflect our latest customizations.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 03, 2019, 12:36:51 AM
Quote from: Liviu Lalescu on August 02, 2019, 08:12:35 PM
a) MustIncludeLongPeriod: choose second component for A,B,C,D,E,F,G, and choose third component for A',B',C',D',E',F',G'. You might want to add an additional activity tag, MustIncludeLongPeriodFirst, or MustIncludeLongPeriodSecond. But you know better than me if this is correct.
Done. Used set of subactivities has a set of preferred starting times, component 2 = A1, B1... component 3 = A1', B1', ...
Quote
b) max simultaneous biology: select only the biology teachers slots
Done. I was just being lazy.

Quote
c) occupy max time slots from selection:
   c1) without FAKE1...8?
   c2) only chemistry activities for the chemistry teacher.
(c2) is very important for speed, but also (b) and maybe (a).
Done. Again, me being lazy.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 03, 2019, 12:37:47 AM
Quote from: Liviu Lalescu on August 02, 2019, 09:07:33 PM
I think we can use the constraint activity tags not overlapping, introduced in the new FET-5.39.0. Add for business studies and economics activities an activity tag the same as the subject, then bs and e cannot overlap.
Done.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 03, 2019, 12:53:29 AM
Quote from: Liviu Lalescu on August 02, 2019, 10:45:24 PM
I have just put the new snapshot version on https://lalescu.ro/liviu/fet/download/custom/cpt/

In the future versions I will add your example instead of the official examples and update the readme-cpt.txt to reflect our latest customizations.
Thanks. I just used it. The new change seems to work. Some things still to do:

1. If any subactivity of falls in FAKE1-8, then all parts must move to FAKE1-8
2. Physical education needs the same treatment as you just gave the extra (1 + 1). All subactivities must fall within the same block.

I will send you the new FET file. On Monday, I hope to have all the data for all ~430 students and then we can really start testing!
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 03, 2019, 07:40:55 AM
Quote from: ChicagoPianoTuner on August 03, 2019, 12:53:29 AM
Quote from: Liviu Lalescu on August 02, 2019, 10:45:24 PM
I have just put the new snapshot version on https://lalescu.ro/liviu/fet/download/custom/cpt/

In the future versions I will add your example instead of the official examples and update the readme-cpt.txt to reflect our latest customizations.
Thanks. I just used it. The new change seems to work. Some things still to do:

1. If any subactivity of falls in FAKE1-8, then all parts must move to FAKE1-8
2. Physical education needs the same treatment as you just gave the extra (1 + 1). All subactivities must fall within the same block.

I will send you the new FET file. On Monday, I hope to have all the data for all ~430 students and then we can really start testing!

You forgot to send me the updated file.

I think you need in occupy max time slots to remove the FAKE hours. A solution will be easier to find.

I will try to solve (1) and (2).

I just saw now: for subactivities 6+1+1, I force the 1+1 to be in the same block no matter what, so no matter if a subactivity is say in A1 or C1', the other will be in A or C. Is this correct?

I just saw now: for activities which are not split (duration 6), the activity group id should be 0 in the .fet XML file. Please correct.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 03, 2019, 12:02:47 PM
I just put the new snapshot with your 1. and 2. problems solved (as usual: https://lalescu.ro/liviu/fet/download/custom/cpt/ )

I generated more times. Once it took 40 minutes! I hope time will decrease if you correct your file as I wrote you.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 03, 2019, 02:04:32 PM
Quote from: Liviu Lalescu on August 03, 2019, 07:40:55 AM
You forgot to send me the updated file.
Sorry, I will send it from my personal email account (not the same one we have been using).
Quote
I think you need in occupy max time slots to remove the FAKE hours. A solution will be easier to find.
I did this.

Quote
I will try to solve (1) and (2).

I just saw now: for subactivities 6+1+1, I force the 1+1 to be in the same block no matter what, so no matter if a subactivity is say in A1 or C1', the other will be in A or C. Is this correct?
That's true. The problem, at the moment, is when the 1+1 should not be in A1, A1', B1,B1', etc. but instead should be in the other short spots (A2-A5, B2-B5, etc.).
Quote
I just saw now: for activities which are not split (duration 6), the activity group id should be 0 in the .fet XML file. Please correct.

OK, I will fix that, but I am not going to make another FET file until I get all the data next week. I am still inputting constraints manually in FET for the moment so to do it for many different activities is time consuming.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 03, 2019, 02:09:49 PM
Quote from: ChicagoPianoTuner on August 03, 2019, 02:04:32 PM
Quote
I just saw now: for activities which are not split (duration 6), the activity group id should be 0 in the .fet XML file. Please correct.
OK, I will fix that, but I am not going to make another FET file until I get all the data next week. I am still inputting constraints manually in FET for the moment so to do it for many different activities is time consuming.

Not a big problem, fortunately, just to keep it the FET way. The constraints should remain the same, only the activities change the Activity_Group_Id. But do it when you have the power and time.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 03, 2019, 02:31:28 PM
In your new file, you have 3 constraints activities max simultaneous in selected time slots:

1) I think you could remove the FAKE hours?

2) The third (for Physics) has all the slots. It might be faster if you only leave the affected slots.

I am generating now and it is faster (because you improved the constraints). I hope it will generate for the complete file, and with additional constraints.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 03, 2019, 05:30:30 PM
I just thought of this: if you have a 4th choice activity divided into 3 and one divided into 1, FET will prefer to break the 99% constraint only once instead of three times.

Three constraints 99% in a row give a 99.999875% resultant, if I am not mistaking.

To obtain 99% for an activity divided into 3, you need, if I am not mistaking, 78.455653%. Because (1-0.78455653)^3 ~= 0.01

So, you might want to add for each activity an activity tag, 1SubactivityInTotalAnd4thChoice or 3SubactivitiesInTotalAnd4thChoice (in addition to all your tags which you correctly added), and for 3 give 78.455653% preferred times for 4th choice and for 1 give 99% preferred time for 4th choice (and remove 4th choice old). Otherwise FET will prefer to break 4th choice only for 1Subactivities.

You might know better than me.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 03, 2019, 06:59:34 PM
I made that observation in the previous post because I saw in your file's results the conflicts, and all that I saw had only Component 1 wrongly placed.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 03, 2019, 09:04:26 PM
Quote from: Liviu Lalescu on August 03, 2019, 05:30:30 PM
I just thought of this: if you have a 4th choice activity divided into 3 and one divided into 1, FET will prefer to break the 99% constraint only once instead of three times.

Three constraints 99% in a row give a 99.999875% resultant, if I am not mistaking.

To obtain 99% for an activity divided into 3, you need, if I am not mistaking, 78.455653%. Because (1-0.78455653)^3 ~= 0.01

So, you might want to add for each activity an activity tag, 1SubactivityInTotalAnd4thChoice or 3SubactivitiesInTotalAnd4thChoice (in addition to all your tags which you correctly added), and for 3 give 78.455653% preferred times for 4th choice and for 1 give 99% preferred time for 4th choice (and remove 4th choice old). Otherwise FET will prefer to break 4th choice only for 1Subactivities.

You might know better than me.

This makes sense. I can do that.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 03, 2019, 09:26:04 PM
Quote from: Liviu Lalescu on August 03, 2019, 02:31:28 PM
In your new file, you have 3 constraints activities max simultaneous in selected time slots:

1) I think you could remove the FAKE hours?

2) The third (for Physics) has all the slots. It might be faster if you only leave the affected slots.

I am generating now and it is faster (because you improved the constraints). I hope it will generate for the complete file, and with additional constraints.
I will fix that.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 05, 2019, 05:21:58 PM
Even though I do not have a completed FET file I wanted to give an update.

I am working on automatically generating the FET file. I am making good progress but it is taking me a while to get the constraints added correctly. I have already successfully added students, tags, days (real teachers), hours, activities, and some constraints.

There are two additional complications, one of which may require extra work. They both involve the middle school, so let me explain.

Middle school students (years 7-9) are divided into group called 7J, 7K, 7L, 8J, 8K, 8L, 9J, 9K, 9L in which they take 5 'core' courses (English, math, humanities, science, and MFL). Each core course occupies one full block (duration = 6). They also take 3 smaller courses of duration = 4 which must fit into the remaining blocks, e.g. activity 1 is in A1, A1', A2, and A3, activity 2 is in A4, A5, B1, and B1', and activity 3 is in B2, B3, B4, and B5. These courses are not with the same groups (J, K, L), but may be mixed.  I do not think we need any additional work here - I am just adding 4 subactivities as I did with PE for the other students. But I figured I would ask.

The major complication is that for the middle school it is desired that English, math, and humanities be in sequential blocks, possibly wrapping around, and also that in this 3-block span, each group within the year has those 3 courses. For example, for year 7, it is desired that the schedule looks like this:

Block A: 7J - humanities, 7K - English, 7L - math
Block B: 7J - English, 7K - math, 7L - humanities
Block C: 7J - math, 7K - humanities, 7L - English

It could be any 3 sequential blocks, including FGA or GAB.

Is this possible with current constraints? In FET, all core courses are comprised of 1 subactivity with duration = 6.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 05, 2019, 08:04:16 PM
For the first problem, I think it is solved automatically, but you need to add a single not split activity of duration 4. Please tell me if you get assertion failed, I am not sure if I allow durations other than 1 and 6 and total duration 6, 3, and 8.

For the second problem, I'll try to craft something. Maybe a modified three activities grouped with activities occupy max 18 time slots from selection.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 05, 2019, 11:06:13 PM
Quote from: Liviu Lalescu on August 05, 2019, 08:04:16 PM
For the first problem, I think it is solved automatically, but you need to add a single not split activity of duration 4. Please tell me if you get assertion failed, I am not sure if I allow durations other than 1 and 6 and total duration 6, 3, and 8.

OK I can do that. There won't be a problem with an activity of duration = 4 occupying 2 different blocks?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 06, 2019, 03:40:21 PM
Quote from: Liviu Lalescu on August 05, 2019, 08:04:16 PM
For the second problem, I'll try to craft something. Maybe a modified three activities grouped with activities occupy max 18 time slots from selection.
My current plan is to have every overlapping class have a dummy activity with same duration and constraint same starting hour (any day) constrained to start on a dummy day. We need the dummy activities because the teacher for 7J English might not be the same as 7K English. So for year 7, there are 9 dummy activities. Then use occupy max time slots from selection on dummy day = 18. Now, like you said, we just need an activities grouped constraint that appreciates the G->A continuity.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 06, 2019, 05:30:10 PM
Quote from: ChicagoPianoTuner on August 05, 2019, 11:06:13 PM
Quote from: Liviu Lalescu on August 05, 2019, 08:04:16 PM
For the first problem, I think it is solved automatically, but you need to add a single not split activity of duration 4. Please tell me if you get assertion failed, I am not sure if I allow durations other than 1 and 6 and total duration 6, 3, and 8.

OK I can do that. There won't be a problem with an activity of duration = 4 occupying 2 different blocks?

I think not, if I understood correctly. Because the FET hours are contiguous and on the same day.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 06, 2019, 06:36:13 PM
Quote from: ChicagoPianoTuner on August 06, 2019, 03:40:21 PM
Quote from: Liviu Lalescu on August 05, 2019, 08:04:16 PM
For the second problem, I'll try to craft something. Maybe a modified three activities grouped with activities occupy max 18 time slots from selection.
My current plan is to have every overlapping class have a dummy activity with same duration and constraint same starting hour (any day) constrained to start on a dummy day. We need the dummy activities because the teacher for 7J English might not be the same as 7K English. So for year 7, there are 9 dummy activities. Then use occupy max time slots from selection on dummy day = 18. Now, like you said, we just need an activities grouped constraint that appreciates the G->A continuity.

Oh, sure, I did not think of different teachers.

But this trick of yours with dummy activities might slow down the generation. I will try to craft something.

But I would like to see FET being able to solve your file with complete students before embarking on the difficult task of solving this.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 06, 2019, 07:31:18 PM
Quote from: Liviu Lalescu on August 06, 2019, 06:36:13 PM
But I would like to see FET being able to solve your file with complete students before embarking on the difficult task of solving this.

Makes sense. I am making progress. I hope to have the FET file by the end of the week. Sorry for the delay and thank you very much for your hard work so far :)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 06, 2019, 07:47:46 PM
 :)
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 06, 2019, 11:01:24 PM
Out of curiosity, how many activities do you think will be too much for FET in this situation? Just curious.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 07, 2019, 07:30:00 AM
Only practice will tell. I think I have a solvable difficult file with ~20,000 activities. But it depends on the difficulty.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 06:25:47 PM
OK. I have the file. I am still working on tuning some data (e.g. balancing teacher loads, making students' choices realistic) but I found a FET problem that we need to solve. Maybe you recall there's a teacher who teaches multiple courses (most teachers do) and FET was scheduling two students of different courses simultaneously. No problem - we solved this using the new constraint set of activity tags not overlapping. But here's a problem: this constraint prevents those courses from being placed in the FAKE hours as well. Perhaps a solution is to massively increase the number of fake hours, but maybe there's another way that you think is better.

I will send you the file after I feel like I have made it realistic and given it the highest likelihood of being solvable.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 06:47:06 PM
Good observation!

I did not check the code, but it should be easy to skip this constraint (activity tags not overlapping) if the activities are in the Fake hours.

I didn't check the code yet because I am hardly working on other things as well.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 06:54:55 PM
Quote from: Liviu Lalescu on August 09, 2019, 06:47:06 PM
Good observation!

I did not check the code, but it should be easy to skip this constraint (activity tags not overlapping) if the activities are in the Fake hours.
OK - I will temporarily implement lots of fake hours as a workaround and will wait for you to post a new snapshot whenever convenient
Quote
I didn't check the code yet because I am hardly working on other things as well.
I know English is a second(+) language for you, but "hardly working" means working very little  ;D
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 07:02:07 PM
Quote from: ChicagoPianoTuner on August 09, 2019, 06:54:55 PM
Quote from: Liviu Lalescu on August 09, 2019, 06:47:06 PM
Good observation!

I did not check the code, but it should be easy to skip this constraint (activity tags not overlapping) if the activities are in the Fake hours.
OK - I will temporarily implement lots of fake hours as a workaround and will wait for you to post a new snapshot whenever convenient

Oh, if it is a show stopper, I will try it now. Don't add lots of fake hours, please. I'll let you know when I'll have the new snapshot.

Maybe you could send me a file to test this new change? Not solvable with the current code, solvable with my new future modifications.

Quote
Quote
I didn't check the code yet because I am hardly working on other things as well.
I know English is a second(+) language for you, but "hardly working" means working very little  ;D

:-))

Every day you learn something.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 07:07:21 PM
Quote from: Liviu Lalescu on August 09, 2019, 07:02:07 PM
Oh, if it is a show stopper, I will try it now. Don't add lots of fake hours, please. I'll let you know when I'll have the new snapshot.

Maybe you could send me a file to test this new change? Not solvable with the current code, solvable with my new future modifications.

The timetable will definitely not solve without modifying that constraint. I just added 10 extra fake hours (as we already had 50 hours total and 60 is the max) temporarily but I can undo it very easily.

I have significantly relaxed the constraints to hopefully allow generation so I can then see what bugs remain. It looks like the file might solve with the 10 extra fake hours but I know things are still very relaxed. I will send you the file shortly.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 07:11:05 PM
Quote from: ChicagoPianoTuner on August 09, 2019, 07:07:21 PM
Quote from: Liviu Lalescu on August 09, 2019, 07:02:07 PM
Oh, if it is a show stopper, I will try it now. Don't add lots of fake hours, please. I'll let you know when I'll have the new snapshot.

Maybe you could send me a file to test this new change? Not solvable with the current code, solvable with my new future modifications.

The timetable will definitely not solve without modifying that constraint. I just added 10 extra fake hours (as we already had 50 hours total and 60 is the max) temporarily but I can undo it very easily.

I have significantly relaxed the constraints to hopefully allow generation so I can then see what bugs remain. It looks like the file might solve with the 10 extra fake hours but I know things are still very relaxed. I will send you the file shortly.

Awaiting a file with only 50 hours (8 Fake hours).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 07:13:50 PM
The constraints of type activities not overlapping and activity tags not overlapping are treated together. May I assume that you have no constraints activities not overlapping, or that it does not matter that these are broken in the Fake hours?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 07:15:57 PM
Quote from: Liviu Lalescu on August 09, 2019, 07:13:50 PM
The constraints of type activities not overlapping and activity tags not overlapping are treated together. May I assume that you have no constraints activities not overlapping, or that it does not matter that these are broken in the Fake hours?
Correct. Sending you the file right now.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 07:17:20 PM
Please do not include the new file I am sending with the snapshot as it contains teachers' real names. I will provide an anonymous file later in testing.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 07:19:40 PM
Quote from: ChicagoPianoTuner on August 09, 2019, 07:17:20 PM
Please do not include the new file I am sending with the snapshot as it contains teachers' real names. I will provide an anonymous file later in testing.

OK.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 07:53:10 PM
I saw a mistake in your activities: the last ones, physical education, are 1+1+1 with total duration 4. They should be 2+1+1? (or 4 - a single activity?) The PE_PGY subject, if I remember correctly.

I am done with the new modification. I tried to test it on your file, but it does not finish. I will create a small file for me. I will then compile for Windows and put the new version for you (with activities and activity tags not overlapping exception in the Fake hours).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 08:04:49 PM
You are right - they should be duration 3. I fixed it.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 08:11:12 PM
I thought of another thing I had not considered: at the moment, it may be the case that a student does not get his last choice NOR his reserve choice (there is no constraint preventing this). I could solve it with activities occupy max slots from selection = 8, activities selected = all of the student's activities, slots = all fake slots. Is there a better way?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 08:28:59 PM
1) On my written notes and in some post above and in the readme-cpt.txt, there is point (5), same students cannot have activities both (A2, T1) and (A2, T2) (same FET hour). I did this in the code. I examined now the code and it seems that this works also for Fake hours. If not, let me know.

I hope I am not wrong, I am tired.

2) It is best to solve the file now, and then add more constraints, if it is still solvable.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 08:41:17 PM
I just added the new snapshot: https://lalescu.ro/liviu/fet/download/custom/cpt/
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 09:00:55 PM
Thanks for the new version - I will test it.

I think one of the problems now is for duration = 8 classes (6+1+1) fet places the duration 6 piece and then waits many activities in the generation order to place the (1+1). Do you think this is a problem?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 09:09:38 PM
I need to think about this. Tomorrow, because now it is late and I am tired.

You might want to add (automatically, by your script/program) many group activities in the initial order options, for the 6+1+1 and 1+1+1. To see how an item like this appears, enable this advanced usage in FET and save a file containing it.

Each such item will have 3 subactivities, those of a split activity.

But I am not sure it is necessary. I need to think, tomorrow.

Please check that the group activities in the generation items places the activities in the initial order as you desire (6, then 1, then 1, then 6, then 1, then 1, etc).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 09:22:33 PM
Quote from: Liviu Lalescu on August 09, 2019, 09:09:38 PM
I need to think about this. Tomorrow, because now it is late and I am tired.

You might want to add (automatically, by your script/program) many group activities in the initial order options, for the 6+1+1 and 1+1+1. To see how an item like this appears, enable this advanced usage in FET and save a file containing it.

Each such item will have 3 subactivities, those of a split activity.

But I am not sure it is necessary. I need to think, tomorrow.

Please check that the group activities in the generation items places the activities in the initial order as you desire (6, then 1, then 1, then 6, then 1, then 1, etc).

Yes, I was thinking the same thing. But I will wait until you think about it some more. No rush :)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 09, 2019, 09:28:21 PM
Maybe theory will not be enough and we'll need also to test. So maybe you could extend your script to output XML .fet with group activities in the initial order. If you have them, it is easy to remove all of them with a text editor. They are at the end.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 09, 2019, 10:00:06 PM
OK, I am done working for the day but will try tomorrow.

As often is the case with timetables, the initial order of generation is incredibly important. I know FET performs internal calculations to determine the order in which activities are placed. How easy is it to modify those calculations? Can it be a parameter passed from the .fet file so I can try different options?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 11:52:45 AM
Quote from: ChicagoPianoTuner on August 09, 2019, 10:00:06 PM
OK, I am done working for the day but will try tomorrow.

As often is the case with timetables, the initial order of generation is incredibly important. I know FET performs internal calculations to determine the order in which activities are placed. How easy is it to modify those calculations? Can it be a parameter passed from the .fet file so I can try different options?

It is possible to change the initial order like this, but it depends on what you intend to do.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 11:57:11 AM
Quote from: ChicagoPianoTuner on August 09, 2019, 09:00:55 PM
Thanks for the new version - I will test it.

I think one of the problems now is for duration = 8 classes (6+1+1) fet places the duration 6 piece and then waits many activities in the generation order to place the (1+1). Do you think this is a problem?

I tend to think this is not a problem, but we need to test practically.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 03:14:59 PM
I am working on a bunch of problems simultaneously but I cannot figure this one out.

The middle school elective activities have duration = 4. Each middle school student takes 3 of these total so that they combine to have duration 12 and occupy 2 full blocks. The lessons should span, for example, A1-A3, A4-B1', B2-B5.

Take drama for example. There are 2 classes of year 7 drama. At the moment, it is possible for one student to have drama A1, A1', A2, A3, and another student to have drama A4, A5, B1, and B1'. All good.

But it is also possible for one student to have drama A1, A1', A2, A3, and another student to have it A2, A3, A4, A5 with the same teacher. This is not good.

At the moment, the activities are entered as one subactivity with duration = 4. If they were 4 subactivities with duration 1, then I could use a tag for each subactivity (Drama_7_Component_1, 2, etc.) and use tags not overlapping. But is there a way to solve it without changing the structure?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 03:23:16 PM
Quote from: Liviu Lalescu on August 10, 2019, 11:52:45 AM
It is possible to change the initial order like this, but it depends on what you intend to do.
If I talk about a conflict matrix, do you know what I mean, or do I need to explain?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 03:43:20 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 03:23:16 PM
Quote from: Liviu Lalescu on August 10, 2019, 11:52:45 AM
It is possible to change the initial order like this, but it depends on what you intend to do.
If I talk about a conflict matrix, do you know what I mean, or do I need to explain?

An activity conflicts with another one if they have common teachers or students. A conflict matrix is a Boolean matrix n_activities x n_activities, with false if they do not conflict and true if they conflict. Sort them in the decreasing number of conflicting activities.

FET does this. In addition, it will multiply the number of conflicting activities with the duration of the activity (not total duration). I might not do this multiplication, in your case.

If this is not what you mean, please explain.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 03:46:07 PM
Quote from: Liviu Lalescu on August 10, 2019, 03:43:20 PM
An activity conflicts with another one if they have common teachers or students. A conflict matrix is a Boolean matrix n_activities x n_activities, with false if they do not conflict and true if they conflict. Sort them in the decreasing number of conflicting activities.

FET does this. In addition, it will multiply the number of conflicting activities with the duration of the activity (not total duration). I might not do this multiplication, in your case.
You have it exactly right. But not all conflicting activities are treated evenly when (traditionally) doing this sort of schedule. For example, courses with only one section should be scheduled earlier than courses with multiple sections. Does FET do something like this?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 04:02:47 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 03:14:59 PM
I am working on a bunch of problems simultaneously but I cannot figure this one out.

The middle school elective activities have duration = 4. Each middle school student takes 3 of these total so that they combine to have duration 12 and occupy 2 full blocks. The lessons should span, for example, A1-A3, A4-B1', B2-B5.

Take drama for example. There are 2 classes of year 7 drama. At the moment, it is possible for one student to have drama A1, A1', A2, A3, and another student to have drama A4, A5, B1, and B1'. All good.

But it is also possible for one student to have drama A1, A1', A2, A3, and another student to have it A2, A3, A4, A5 with the same teacher. This is not good.

At the moment, the activities are entered as one subactivity with duration = 4. If they were 4 subactivities with duration 1, then I could use a tag for each subactivity (Drama_7_Component_1, 2, etc.) and use tags not overlapping. But is there a way to solve it without changing the structure?

1) I would like firstly to generate on a not finished and easier file (but with all the activities), just to make sure it solves. The we will add more constraints.

2) With a single activity with duration 4, it should be easier to FET than with 4 subactivities, each with duration 1.

3) I am not sure I understand why you can't use not overlapping. Maybe because the activities are allowed to overlap if they start at the same time?

4) If (3) is correct, it should be possible to develop a further customization on this.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 04:05:06 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 03:46:07 PM
Quote from: Liviu Lalescu on August 10, 2019, 03:43:20 PM
An activity conflicts with another one if they have common teachers or students. A conflict matrix is a Boolean matrix n_activities x n_activities, with false if they do not conflict and true if they conflict. Sort them in the decreasing number of conflicting activities.

FET does this. In addition, it will multiply the number of conflicting activities with the duration of the activity (not total duration). I might not do this multiplication, in your case.
You have it exactly right. But not all conflicting activities are treated evenly when (traditionally) doing this sort of schedule. For example, courses with only one section should be scheduled earlier than courses with multiple sections. Does FET do something like this?

1) I do not remember exactly what means courses with one section and multiple sections? Could you remind me, and also maybe talk in parallel with FET notation?

2) I am not sure how FET takes care of this, because I do not know (1), but this should be possible to change in the code.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 05:53:00 PM
Quote from: Liviu Lalescu on August 10, 2019, 04:02:47 PM
1) I would like firstly to generate on a not finished and easier file (but with all the activities), just to make sure it solves. The we will add more constraints.
My current file generates. The solution is not very good, but it generates.
Quote
3) I am not sure I understand why you can't use not overlapping. Maybe because the activities are allowed to overlap if they start at the same time?

4) If (3) is correct, it should be possible to develop a further customization on this.
(3) is correct.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 05:55:10 PM
Quote from: Liviu Lalescu on August 10, 2019, 04:05:06 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 03:46:07 PM
Quote from: Liviu Lalescu on August 10, 2019, 03:43:20 PM
An activity conflicts with another one if they have common teachers or students. A conflict matrix is a Boolean matrix n_activities x n_activities, with false if they do not conflict and true if they conflict. Sort them in the decreasing number of conflicting activities.

FET does this. In addition, it will multiply the number of conflicting activities with the duration of the activity (not total duration). I might not do this multiplication, in your case.
You have it exactly right. But not all conflicting activities are treated evenly when (traditionally) doing this sort of schedule. For example, courses with only one section should be scheduled earlier than courses with multiple sections. Does FET do something like this?

1) I do not remember exactly what means courses with one section and multiple sections? Could you remind me, and also maybe talk in parallel with FET notation?

2) I am not sure how FET takes care of this, because I do not know (1), but this should be possible to change in the code.

1) If 50 students want (or need) to take biology (duration 6), 50 students is too many for one section because the max students per section is 20. So there must be three sections, possibly assigned to 1 or 2 or 3 teachers. For FET terms, that means 18 total possible slots (activities max slots from selection), spread between teachers appropriately. The sections may meet at the same hour if they are taught by different teachers (FET days).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 06:04:18 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 05:53:00 PM
Quote from: Liviu Lalescu on August 10, 2019, 04:02:47 PM
1) I would like firstly to generate on a not finished and easier file (but with all the activities), just to make sure it solves. The we will add more constraints.
My current file generates. The solution is not very good, but it generates.
This is great news! I was worried about this. We'll move on with the customizations, then.

PS: The grammar correction here shows me (with a red underline) that customization has no plural. How should I write, then?

Quote
Quote
3) I am not sure I understand why you can't use not overlapping. Maybe because the activities are allowed to overlap if they start at the same time?

4) If (3) is correct, it should be possible to develop a further customization on this.
(3) is correct.

OK, I'll try this. Please let me know: you will add constraints activity tags not overlapping, and if the activities are not split, have duration=total duration=4, they are allowed to overlap if they have the same starting day+hour, and not allowed to overlap if they have same day but not same starting hour?

I mean it is important not to have other activities of this type which are not allowed to overlap at all (not even when they start at the same time).

I could make an interface checkbox or something, but I prefer a quick fix, because it is much easier and anyway there are many hacks in your version's code.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 06:12:42 PM
Quote from: Liviu Lalescu on August 10, 2019, 06:04:18 PM
OK, I'll try this. Please let me know: you will add constraints activity tags not overlapping, and if the activities are not split, have duration=total duration=4, they are allowed to overlap if they have the same starting day+hour, and not allowed to overlap if they have same day but not same starting hour?
Correct.
Quote
I mean it is important not to have other activities of this type which are not allowed to overlap at all (not even when they start at the same time).
I think we are safe - there are none of these.
Quote
I could make an interface checkbox or something, but I prefer a quick fix, because it is much easier and anyway there are many hacks in your version's code.
Whatever you think is easiest.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 06:24:23 PM
Quote from: Liviu Lalescu on August 10, 2019, 06:04:18 PM
This is great news! I was worried about this. We'll move on with the customizations, then.

PS: The grammar correction here shows me (with a red underline) that customization has no plural. How should I write, then?
Customizations is correct. No problem :)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 06:31:29 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 05:55:10 PM
Quote from: Liviu Lalescu on August 10, 2019, 04:05:06 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 03:46:07 PM
Quote from: Liviu Lalescu on August 10, 2019, 03:43:20 PM
An activity conflicts with another one if they have common teachers or students. A conflict matrix is a Boolean matrix n_activities x n_activities, with false if they do not conflict and true if they conflict. Sort them in the decreasing number of conflicting activities.

FET does this. In addition, it will multiply the number of conflicting activities with the duration of the activity (not total duration). I might not do this multiplication, in your case.
You have it exactly right. But not all conflicting activities are treated evenly when (traditionally) doing this sort of schedule. For example, courses with only one section should be scheduled earlier than courses with multiple sections. Does FET do something like this?

1) I do not remember exactly what means courses with one section and multiple sections? Could you remind me, and also maybe talk in parallel with FET notation?

2) I am not sure how FET takes care of this, because I do not know (1), but this should be possible to change in the code.

1) If 50 students want (or need) to take biology (duration 6), 50 students is too many for one section because the max students per section is 20. So there must be three sections, possibly assigned to 1 or 2 or 3 teachers. For FET terms, that means 18 total possible slots (activities max slots from selection), spread between teachers appropriately. The sections may meet at the same hour if they are taught by different teachers (FET days).

The most difficult activities must be scheduled firstly. I am not sure which of 3 sections or 1 section are more difficult. They depend on the other activities. I think for now we can let FET do its usual job, since it managed to generate successfully.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 06:33:14 PM
I'll try now the customization that activities with duration=total duration=4 may overlap if they have the same starting time. Should not be difficult (but I did not examine the code, yet). I will let you know after I'll put the new snapshot (I hope soon).

I assume I can allow partial overlapping in the Fake hours?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 07:00:27 PM
Quote from: Liviu Lalescu on August 10, 2019, 06:33:14 PM
I'll try now the customization that activities with duration=total duration=4 may overlap if they have the same starting time. Should not be difficult (but I did not examine the code, yet). I will let you know after I'll put the new snapshot (I hope soon).

I assume I can allow partial overlapping in the Fake hours?
Yes, anything goes in the fake hours =P
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 07:01:12 PM
Quote from: Liviu Lalescu on August 10, 2019, 06:31:29 PM
The most difficult activities must be scheduled firstly. I am not sure which of 3 sections or 1 section are more difficult. They depend on the other activities. I think for now we can let FET do its usual job, since it managed to generate successfully.
I feel very strongly that courses of 1 section should be scheduled first.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 07:23:15 PM
Quote from: ChicagoPianoTuner on August 10, 2019, 07:01:12 PM
Quote from: Liviu Lalescu on August 10, 2019, 06:31:29 PM
The most difficult activities must be scheduled firstly. I am not sure which of 3 sections or 1 section are more difficult. They depend on the other activities. I think for now we can let FET do its usual job, since it managed to generate successfully.
I feel very strongly that courses of 1 section should be scheduled first.

OK, even if I disagree, I'll try something. We might need to fork FET custom CPT into two, because I want to check also the official ordering of the activities.

Do you have ideas on how to sort them 1 section before 3 sections? You can add activity tags, and simply put all the "1 section" before all the "3 sections"?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 07:54:43 PM
Quote from: Liviu Lalescu on August 10, 2019, 07:23:15 PM
OK, even if I disagree, I'll try something. We might need to fork FET custom CPT into two, because I want to check also the official ordering of the activities.

Do you have ideas on how to sort them 1 section before 3 sections? You can add activity tags, and simply put all the "1 section" before all the "3 sections"?
I could easily add an activity tag. I will do that.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 10, 2019, 08:05:08 PM
I added a new snapshot, with allow overlap if duration 4 and same starting hour/time: https://lalescu.ro/liviu/fet/download/custom/cpt/

Could you send me the solvable file? I want to see the miracle  :)  (because it was unsolvable yesterday). And send me also a locked file (a solution, data_and_timetable.fet) if you have it.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 10, 2019, 11:57:59 PM
I think the new modification for duration = 4 subjects does not work the way I hoped it would. And in thinking about it a bit more, of course it doesn't work - the courses that are overlapping (that I wish not to be overlapping) have the same tags, so they won't be caught by the constraint. What the constraint really needs to look like is "if any of the periods in the duration = 4 overlap, then all 4 of the periods must overlap."
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 02:21:21 AM
I do not know how difficult this would be, but could you temporarily put a version where, for subgroups days horizontal, empty columns (FET days) are hidden in the html timetables? The file is very, very large and difficult to load. It is very difficult to look through and try to figure out errors.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 02:55:55 AM
Quote from: ChicagoPianoTuner on August 10, 2019, 11:57:59 PM
I think the new modification for duration = 4 subjects does not work the way I hoped it would. And in thinking about it a bit more, of course it doesn't work - the courses that are overlapping (that I wish not to be overlapping) have the same tags, so they won't be caught by the constraint. What the constraint really needs to look like is "if any of the periods in the duration = 4 overlap, then all 4 of the periods must overlap."
A clunky workaround is to add constraint activities not overlapping, putting all duration 4 subjects in. Or many constraints, for activities of each class.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 08:11:32 AM
Quote from: ChicagoPianoTuner on August 11, 2019, 02:55:55 AM
Quote from: ChicagoPianoTuner on August 10, 2019, 11:57:59 PM
I think the new modification for duration = 4 subjects does not work the way I hoped it would. And in thinking about it a bit more, of course it doesn't work - the courses that are overlapping (that I wish not to be overlapping) have the same tags, so they won't be caught by the constraint. What the constraint really needs to look like is "if any of the periods in the duration = 4 overlap, then all 4 of the periods must overlap."
A clunky workaround is to add constraint activities not overlapping, putting all duration 4 subjects in. Or many constraints, for activities of each class.

I think this workaround is good. Activities not overlapping, and in it all the duration 4 activities. Efficient, not "clunky".

But each activity in the constraint will not overlap with all the other activities in the constraint (or begins at the same time). So you might need more constraints, and in a constraint add for instance the activities of year 7 drama, in another constraint the activities of year 8 drama, etc.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 08:13:23 AM
Quote from: ChicagoPianoTuner on August 11, 2019, 02:21:21 AM
I do not know how difficult this would be, but could you temporarily put a version where, for subgroups days horizontal, empty columns (FET days) are hidden in the html timetables? The file is very, very large and difficult to load. It is very difficult to look through and try to figure out errors.

OK, I'll try, maybe a bit later today.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 12:05:31 PM
Quote from: ChicagoPianoTuner on August 11, 2019, 02:21:21 AM
I do not know how difficult this would be, but could you temporarily put a version where, for subgroups days horizontal, empty columns (FET days) are hidden in the html timetables? The file is very, very large and difficult to load. It is very difficult to look through and try to figure out errors.

I did this, please get it from the usual location: https://lalescu.ro/liviu/fet/download/custom/cpt/
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 02:04:06 PM
Thank you so much, that makes it much easier to see what's going on!!
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 02:04:35 PM
Quote from: Liviu Lalescu on August 11, 2019, 08:11:32 AM
But each activity in the constraint will not overlap with all the other activities in the constraint (or begins at the same time). So you might need more constraints, and in a constraint add for instance the activities of year 7 drama, in another constraint the activities of year 8 drama, etc.
Yes, that's what I did. Good.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 02:48:11 PM
I am glad it works! Unfortunately, it is generating very slow, in about 7 hours (!) as you wrote me privately.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 08:18:53 PM
OK - an update. With a slightly modified file, I managed to get a very near solution in ~1 hour. But then no progress for ~2+ more hours when FET was trying to schedule physical education.

So I stopped the simulation, locked all activities except physical education and tried to generate - and it got stuck. I realized what happened: for some students, they were successfully assigned all their choices, and ALSO their reserve choice was assigned to real hours. Since physical education is constrained to be in real hours (because it's a mandatory course), FET was unable to place it.

So I stopped the simulation again and also unlocked everything with tag = "reserve", and resumed generation, and it generated instantly.

I think we need to implement a constraint that, for every student, exactly one of his choices (possibly duration 6, possibly duration 8) falls in the "fake" block. In addition to making the generation successful from a FET point of view, this is a very important constraint to ensure students get the courses they want.

I can do it using max slots from selection twice for each student: one constraint where selection is all fake slots, activities are all of the student's choices, and max occupied = 8; and a second constraint where selection is all real slots, activities are all of the student's choices, and max occupied = (total number of activities - 8). Is there a cleaner way?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 10:17:53 PM
Quote from: ChicagoPianoTuner on August 11, 2019, 08:18:53 PM
I can do it using max slots from selection twice for each student: one constraint where selection is all fake slots, activities are all of the student's choices, and max occupied = 8; and a second constraint where selection is all real slots, activities are all of the student's choices, and max occupied = (total number of activities - 8). Is there a cleaner way?

I think the second constraint should be max occupied = (total duration of activities - 6).

The file size might become quite large.

Please allow me to think some more, I hope I'll be able to answer tonight, maybe soon. I need to see the code of the constraint activities occupy max time slots from selection.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 10:21:02 PM
Quote from: Liviu Lalescu on August 11, 2019, 10:17:53 PM
I think the second constraint should be max occupied = (total duration of activities - 6).
You are right - duration.
Quote
The file size might become quite large.
Right again - it will become VERY large. I could reduce the number of selected slots by only choosing those that correspond to potential teachers that go with the student's choices.
Quote
Please allow me to think some more, I hope I'll be able to answer tonight, maybe soon. I need to see the code of the constraint activities occupy max time slots from selection.
OK :)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 10:29:31 PM
Quote from: ChicagoPianoTuner on August 11, 2019, 10:21:02 PM
Quote from: Liviu Lalescu on August 11, 2019, 10:17:53 PM
I think the second constraint should be max occupied = (total duration of activities - 6).
You are right - duration.

How about my 6 instead of your 8?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 10:34:32 PM
Right again :)

Some very good news - I changed the input file slightly by changing the requirements of a few unusual students and it solved in less than 10 minutes. There are still some problems, specifically with middle school courses of duration 4, but I have a workaround until you say whether or not we can implement a G->A wraparound constraint.

I will start to add back some of the complexity I removed earlier.

I was thinking once more about FAKE hours. I think it might be best to delete all fake hours and have a fake DAY, only allow activities to happen in the first 8 hours of the fake day (block A) and then work there. Would this change make FET faster?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 10:39:17 PM
Great news  :)

I hope I will be able to implement G->A wraparound. Now, since we have a working file.

Hmm, Fake day - you have preferred times for activities for a teacher, which may fall on the Fake hours and their day. This is a new idea, I must let it mellow a bit until I process it (is mellow the right word?).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 10:45:56 PM
Quote from: Liviu Lalescu on August 11, 2019, 10:39:17 PM
Great news  :)

I hope I will be able to implement G->A wraparound. Now, since we have a working file.

Hmm, Fake day - you have preferred times for activities for a teacher, which may fall on the Fake hours and their day.
Yes, so for physics (taught by Mr. X and Mrs. Y), it could occur on Mr. X's day (all hours), Mrs. Y's day (all hours), and Fake day hours 1-8. But by getting rid of fake hours 1-8 you remove 8x(number of teachers) =~ 200 hours from the timetable and just add 40 (for the extra day).
Quote
This is a new idea, I must let it mellow a bit until I process it (is mellow the right word?).
Maybe simmer or marinate is better than mellow. Mellow means relax :)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 10:54:23 PM
I will think about Fake day instead of Fake hours. I think it won't speed up things too much.

I just discovered now a bug of mine, and maybe this was a problem: for each student, I make him not able to study on same hour with different teachers, but including the Fake hours!! I need to correct this. Please tell me if there are students with at least two activities in the Fake hours. This is a situation which was denied by FET. I will correct right now and put a new snapshot, unless you consider otherwise.

So please let me know as soon as possible if this correction must be made.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 11:00:55 PM
Quote from: Liviu Lalescu on August 11, 2019, 10:54:23 PM
I just discovered now a bug of mine, and maybe this was a problem: for each student, I make him not able to study on same hour with different teachers, but including the Fake hours!! I need to correct this. Please tell me if there are students with at least two activities in the Fake hours. This is a situation which was denied by FET. I will correct right now and put a new snapshot, unless you consider otherwise.

So please let me know as soon as possible if this correction must be made.
No - this is a good thing! I want for each student to have EXACTLY ONE activity (for middle school duration = 4, for high school duration = 6 or 8) in the fake hours. Your mistake did not solve the problem, as currently it is possible for fet to place zero activities in the fake hours, but it is useful.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 11:23:49 PM
Good. Less work to do :)

So, you only need the activities occupy max real (total_duration_of_all_activities-6) slots from all real slots? (the first constraint you suggested is done by my "bug"?). I will try to make something faster and automatic.

I need you to tell me, all the activities of a student must be like that, or only some? If only some, please decide on a fixed activity tag for them and I'll try to do this automatically (compute the durations and make the code faster than the occupy max, which behaves bad if there are many slots selected).

I also saw that each student has only about 10 activities. I thought of a speed improvement when checking that each student has a single activity at a real life time slots. I'll try it (probably tomorrow).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 11:30:01 PM
Before I answer your last post, I have a problem. This is the second time this has happened. FET generates successfully, I lock all activities and Save As..., then open that file and try to generate and FET cannot (it gets stuck). Any ideas why?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 11, 2019, 11:38:24 PM
Quote from: Liviu Lalescu on August 11, 2019, 11:23:49 PM
So, you only need the activities occupy max real (total_duration_of_all_activities-6) slots from all real slots? (the first constraint you suggested is done by my "bug"?). I will try to make something faster and automatic.

I need you to tell me, all the activities of a student must be like that, or only some? If only some, please decide on a fixed activity tag for them and I'll try to do this automatically (compute the durations and make the code faster than the occupy max, which behaves bad if there are many slots selected).

I also saw that each student has only about 10 activities. I thought of a speed improvement when checking that each student has a single activity at a real life time slots. I'll try it (probably tomorrow).
I'm afraid I do not understand. Let me try to explain the true real-life situation and you can translate to FET :)

I use the tag "Required" to specify that a course must 100% happen in real hours. Students MUST take these courses.

First, middle school students. They have 5 "Required" courses, each with duration = 6. Then they have 3 courses with duration = 4, one of which is PE. The other two can be art, music, drama, computing, DT, and public speaking. For these two courses, a student makes 3 choices with the following FET tags: "Middle_First" for his top choice, "Middle_Second" for his second choice, and "Middle_Reserve" for his backup choice if one of the other two cannot be scheduled. So a middle school student must have exactly one activity of duration = 4 found in FAKE hours, and it should hopefully be the one with the tag "Middle_Reserve."

The senior school students are more complicated. Some students have 4 required courses, some have 2, depending on many factors. But every student chooses a "Reserve" course that must be scheduled if one of his other choices (not "Required" choices) cannot be scheduled.

Perhaps you would like me to have a tag called "Not_Required", and then you can say exactly 1 "Not_Required" course must be found in fake hours. For middle school students (years 7, 8, and 9), all "Not_Required" courses will have duration = 4, but for senior school, they may be duration = 6 or duration = 8. But since there are no courses of duration = 2, I think you can essentially have max occupied in real slots = total duration - 6.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 11:40:04 PM
Quote from: ChicagoPianoTuner on August 11, 2019, 11:30:01 PM
Before I answer your last post, I have a problem. This is the second time this has happened. FET generates successfully, I lock all activities and Save As..., then open that file and try to generate and FET cannot (it gets stuck). Any ideas why?

Please carefully save such files and send them. It is a FET bug which I need to correct.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 11, 2019, 11:51:37 PM
Yes, please add "Not_Required" or similar. This will be probably just to help FET, because the other activities are required.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 12, 2019, 03:57:05 AM
I have sent you the new FET file where every activity is tagged either "Required" or "Not_required".
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 12, 2019, 07:53:20 AM
Quote from: Liviu Lalescu on August 11, 2019, 11:40:04 PM
Quote from: ChicagoPianoTuner on August 11, 2019, 11:30:01 PM
Before I answer your last post, I have a problem. This is the second time this has happened. FET generates successfully, I lock all activities and Save As..., then open that file and try to generate and FET cannot (it gets stuck). Any ideas why?

Please carefully save such files and send them. It is a FET bug which I need to correct.

It is not a FET bug, it is your bug:

In short, the activities with duration 4 (I saw id 389) is allowed to start at G4. It should only start at max G2. Please correct. If you make activities not allowed to start at obvious slots, it is faster for FET and avoids bugs like this.

Explanation: in the long generation, FET placed firstly activity of 8_53 (in G4), then of 8_51 (in Fake). OK, because I assumed 8_53 is total in real. Then, at generating the fixed timetable, it puts first 8_51 in Fake and 8_53 is not OK, overlaps with 8_51 and is not (entirely) in Fake.

Please let me know when you fix this. Maybe send me the updated files.

There are two constraints preferred times: preferred starting times and preferred time slots (all the slots of the activity are in the allowed slots). You might want to use also preferred time slots instead of starting times, for these (but not for everything, like (sub)activities with duration 6).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 12, 2019, 10:47:44 AM
I just added a new version, occupy max real slots "Not_required" <= dur - 6. I think this is not for generating correct solutions, but to help FET. Isn't it?

Same location: https://lalescu.ro/liviu/fet/download/custom/cpt/
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 12, 2019, 12:14:52 PM
Quote from: Liviu Lalescu on August 12, 2019, 10:47:44 AM
I just added a new version, occupy max real slots "Not_required" <= dur - 6. I think this is not for generating correct solutions, but to help FET. Isn't it?

Same location: https://lalescu.ro/liviu/fet/download/custom/cpt/
I think it's for both.

To clarify, I mean that the old solution was correct by FET rules, but really this is implementing a new rule that makes the solution more like one that I want.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 12, 2019, 12:17:27 PM
Quote from: Liviu Lalescu on August 12, 2019, 07:53:20 AM
In short, the activities with duration 4 (I saw id 389) is allowed to start at G4. It should only start at max G2. Please correct. If you make activities not allowed to start at obvious slots, it is faster for FET and avoids bugs like this.

OK, I will change it. I allowed G4 prematurely. It should eventually be allowed because an activity of duration 4 may occupy G4, G5, A1, and A1', but I do not know if FET will be able to do that, even with a new constraint. Perhaps it should be 2 activities of duration 2.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 12, 2019, 04:07:30 PM
Quote from: ChicagoPianoTuner on August 12, 2019, 12:17:27 PM
Quote from: Liviu Lalescu on August 12, 2019, 07:53:20 AM
In short, the activities with duration 4 (I saw id 389) is allowed to start at G4. It should only start at max G2. Please correct. If you make activities not allowed to start at obvious slots, it is faster for FET and avoids bugs like this.

OK, I will change it. I allowed G4 prematurely. It should eventually be allowed because an activity of duration 4 may occupy G4, G5, A1, and A1', but I do not know if FET will be able to do that, even with a new constraint. Perhaps it should be 2 activities of duration 2.

I think we need to input an activity split into two: 2+2. And I'll modify the constraint two activities grouped to allow G4,G5 and A1,and A1' for them. Only for activities split into two, duration 2 each, total duration 4. So you need to add also constraints two activities grouped for these. I just checked the code - they will be placed together in the initial order automatically.

Let me know when I should start working on this customization.

We have remaining that with three activities grouped allowing wraparound. And maybe other thing, but I want to see it is solving now. I would like to see it solving after doing two activities grouped (and you modifying those activities and adding constraints two activities grouped) and before doing three activities grouped.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 12, 2019, 04:42:39 PM
Quote from: Liviu Lalescu on August 12, 2019, 10:47:44 AM
I just added a new version, occupy max real slots "Not_required" <= dur - 6. I think this is not for generating correct solutions, but to help FET. Isn't it?

Same location: https://lalescu.ro/liviu/fet/download/custom/cpt/

I have been testing and there is a problem with how this constraint has been implemented. For senior students, it works fine, but for middle school students, it fails because of their duration 4 activities. Perhaps I could add "Not_required_senior" and the constraint works as you have above, and also "Not_required_middle", occupy max real slots <= dur - 4. Is that OK?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 12, 2019, 04:46:02 PM
Quote from: ChicagoPianoTuner on August 12, 2019, 04:42:39 PM
Quote from: Liviu Lalescu on August 12, 2019, 10:47:44 AM
I just added a new version, occupy max real slots "Not_required" <= dur - 6. I think this is not for generating correct solutions, but to help FET. Isn't it?

Same location: https://lalescu.ro/liviu/fet/download/custom/cpt/

I have been testing and there is a problem with how this constraint has been implemented. For senior students, it works fine, but for middle school students, it fails because of their duration 4 activities. Perhaps I could add "Not_required_senior" and the constraint works as you have above, and also "Not_required_middle", occupy max real slots <= dur - 4. Is that OK?

Actually, forget it. The middle school is much easier. For each student, we can just use max slots from selection, all activities with duration = 4, slots = FAKE hours, number occupied = 4. No special tag required.

Though if we change from 4 to (2 + 2), we might need to modify. Or is it the case, as with senior duration 8 activities, that if one subactivity from the group falls in FAKE then all must fall in fake? If so, we will not need to modify other than to select all activities with duration = 2.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 12, 2019, 04:48:30 PM
Quote from: Liviu Lalescu on August 12, 2019, 04:07:30 PM
I think we need to input an activity split into two: 2+2. And I'll modify the constraint two activities grouped to allow G4,G5 and A1,and A1' for them. Only for activities split into two, duration 2 each, total duration 4. So you need to add also constraints two activities grouped for these. I just checked the code - they will be placed together in the initial order automatically.

Let me know when I should start working on this customization.
I can get you the file in 15 minutes if you want it.
Quote
We have remaining that with three activities grouped allowing wraparound. And maybe other thing, but I want to see it is solving now. I would like to see it solving after doing two activities grouped (and you modifying those activities and adding constraints two activities grouped) and before doing three activities grouped.
The three activities grouped wraparound is low priority - for my school, I can schedule those activities manually and I do not think it will affect FET. Though it may be useful for others to have this flexibility (perhaps me too).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 12, 2019, 05:03:44 PM
Quote from: ChicagoPianoTuner on August 12, 2019, 04:46:02 PM
Quote from: ChicagoPianoTuner on August 12, 2019, 04:42:39 PM
Quote from: Liviu Lalescu on August 12, 2019, 10:47:44 AM
I just added a new version, occupy max real slots "Not_required" <= dur - 6. I think this is not for generating correct solutions, but to help FET. Isn't it?

Same location: https://lalescu.ro/liviu/fet/download/custom/cpt/

I have been testing and there is a problem with how this constraint has been implemented. For senior students, it works fine, but for middle school students, it fails because of their duration 4 activities. Perhaps I could add "Not_required_senior" and the constraint works as you have above, and also "Not_required_middle", occupy max real slots <= dur - 4. Is that OK?

Actually, forget it. The middle school is much easier. For each student, we can just use max slots from selection, all activities with duration = 4, slots = FAKE hours, number occupied = 4. No special tag required.

Though if we change from 4 to (2 + 2), we might need to modify. Or is it the case, as with senior duration 8 activities, that if one subactivity from the group falls in FAKE then all must fall in fake? If so, we will not need to modify other than to select all activities with duration = 2.

So, I'll:

1) 2+2 must be in Fake or not Fake both. Customization.

2) Improve activities occupy max time slots for all Fake hours selected, so that it is internally faster. Customization.

3) Two activities grouped - allow G4,G5,A1,A1'. Customization.

Yes, I could use a file with 2+2 and these two grouped.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 12, 2019, 05:15:11 PM
Quote from: Liviu Lalescu on August 12, 2019, 05:03:44 PM
So, I'll:

1) 2+2 must be in Fake or not Fake both. Customization.

2) Improve activities occupy max time slots for all Fake hours selected, so that it is internally faster. Customization.

3) Two activities grouped - allow G4,G5,A1,A1'. Customization.

Yes, I could use a file with 2+2 and these two grouped.
I think that all sounds good. Emailing you the file now.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 12, 2019, 06:14:38 PM
In your file you forgot to add the activities occupy max with all Fake slots, and I saw 3 constraints occupy max with only 1 activity.

I intend to optimize the activities occupy max if the selected slots are all the Fake slots. The other two changes are done.

Or you don't need occupy max with all Fake selected anymore? Should I put the snapshot as it is now?

Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 12, 2019, 08:03:23 PM
I have an idea to speed things up in general and in the case of activities occupy max time slots from selection when there are all the Fake slots selected. This idea is derived from yours: add a break in all Fake slots but those of the first day.

I tried it, but it stops after around 280 activities placed on your file. You need for each activity preferred times to allow also the first day Fake1...Fake8

Will this work?

I will now compile for Windows the latest snapshot (~30 minutes needed) and put it for you. You can work either with all available Fake hours or use our trick with only 8 Fake hours (in which case you need to update all the preferred times for activities), which is recommended by me.

Unfortunately, I cannot generate too much on my available computer because it heats up and I am afraid of wrecking it, and its speed is also quite slow. So please generate and tell me if the new snapshot works OK.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 12, 2019, 08:43:05 PM
I have just put the new snapshot: https://lalescu.ro/liviu/fet/download/custom/cpt/
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 13, 2019, 01:05:46 AM
Quote from: Liviu Lalescu on August 12, 2019, 06:14:38 PM
In your file you forgot to add the activities occupy max with all Fake slots
Sorry, I did not do this - I wanted to wait for you to tell me it is best.
Quote
and I saw 3 constraints occupy max with only 1 activity.
My mistake, I will fix it.
Quote
I intend to optimize the activities occupy max if the selected slots are all the Fake slots. The other two changes are done.

Or you don't need occupy max with all Fake selected anymore? Should I put the snapshot as it is now?
I will make the changes tonight or tomorrow morning my time and send you a new file.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 13, 2019, 02:40:04 PM
Quote from: Liviu Lalescu on August 12, 2019, 08:03:23 PM
I have an idea to speed things up in general and in the case of activities occupy max time slots from selection when there are all the Fake slots selected. This idea is derived from yours: add a break in all Fake slots but those of the first day.

I tried it, but it stops after around 280 activities placed on your file. You need for each activity preferred times to allow also the first day Fake1...Fake8
For FET reasons, must it be the first day? Or can it be any day?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 13, 2019, 02:58:10 PM
It can be any day.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 13, 2019, 03:26:30 PM
OK, I will also add a break for every student during every fake hour other than the 8 on that day.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 13, 2019, 03:31:21 PM
Quote from: ChicagoPianoTuner on August 13, 2019, 03:26:30 PM
OK, I will also add a break for every student during every fake hour other than the 8 on that day.

I don't understand. Constraint break means no teacher/students set available. So break includes students set not available. The input file will be smaller my way (but this should not be a very important issue for generation).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 13, 2019, 03:43:19 PM
Right - I had never used break before! Nearly finished and will send you the file soon.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 13, 2019, 04:04:35 PM
Nearly finished creating the XML .fet file or FET solving the file?

I would like a solved file, as I prefer not to generate it myself as I wrote in a previous topic. If hopefully the file is solvable (fingers crossed).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 13, 2019, 04:07:49 PM
I just sent you the new file. I think it is correct. Please see the second file as I sent you the wrong one initially. The second one does not have the "Not_required" tag for middle school students - only senior school students.

It is currently running on my computer right now (only 5 minutes) so it has not yet generated, but I think it will.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 13, 2019, 04:08:42 PM
Quote from: Liviu Lalescu on August 13, 2019, 04:04:35 PM
Nearly finished creating the XML .fet file or FET solving the file?

I would like a solved file, as I prefer not to generate it myself as I wrote in a previous topic. If hopefully the file is solvable (fingers crossed).
OK, I will send you a locked file once it has solved. I think it is solvable.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on August 13, 2019, 04:21:38 PM
Your file has wrong break. X for most of the teachers (FET days), without one in the middle (correct) and without break in the last 9 teachers (I refer to Fake hours).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on August 25, 2019, 03:07:20 PM
I wanted to give a quick update. We last left it with me realizing (via email) that there was a problem with the input data that required some thought on my end. My colleagues and I have decided how best to proceed but we must run our proposal by the school's administration. I do not want to put extra burden on Liviu until I am 100% confident how our input data will look. I expect to revisit this project in a few months, but this custom version of FET is very close to being finished.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on January 23, 2020, 09:10:08 PM
Hello again!

Our school administration has approved a schedule for our next academic year. It is much more straightforward than this version that we had been working toward, but this one might be needed in the future. I do not know if I even need an additional custom version or if I can just use aat. I am hoping you can help tell me. I will describe our new schedule and maybe you can tell me what version you think will be best. It is again about course planning - no "real time" scheduling necessary.

If you want me to move this to another thread, I will (or you can - I don't mind).

I will base everything on FET-aat.

In our new schedule, there are 8 "blocks," sort of like before (there used be 7 in the previous version). Blocks are A, B, C, ..., H. Every course a student takes must occupy either 1 or 0.5 blocks. So I am thinking there should be 18 hours in FET-aat: A1, A2, B1, B2, ... , H2, and FAKE-1 and FAKE-2. Every activity has either duration 1 (0.5 blocks) and can start in any of the 16 blocks, or has duration 2 (1 block) and must start in A1, B1, C1... (not A2, B2, C2...). Easy enough to activities preferred starting times here.

Example of a finished student timetable:
A1 and A2 - math
B1 and B2 - English
C1 and C2 - Spanish
D1 and D2 - no lessons (free)
E1 - music, E2 - gym (half a block each)
F1 and F2 - history
G1 - drama, G2 - free
H1 and H2 - computing
FAKE1 and FAKE2 - physics (reserve choice - see below)

Students have "required" courses like before (must not be in FAKE hours), and of non-required courses have preferences (1st_Choice, 2nd_Choice, ..., Reserve) with different allowed starting hours to make sure reserve only exists outside of FAKE if absolutely necessary. Weights are based on tags.

FET days are real teachers.

FET students are real students.

FET subjects are real subjects. Subjects preferred starting day can be used to link real teachers (FET days) to subjects.

Each activity has 1 student. It is placed on a FET day based on its subject.

Constraint "set of activities occupies max time slots from selection" is used to make sure that activities all overlap to make a course. E.g. if 8 students want art (1 block, FET duration = 2), I can add all 8 art activities to the constraint and make max time slots = 2 (selecting only art teacher's FET day).

Constraint "activity tags not overlapping" (each tag = the subject) ensures that activities with different subjects aren't placed at the same hour on the same FET day (real teacher).

Constraint "max simultaneous from a set in selected time slots" can be used to make sure that no section of a subject has too many students enrolled. My notation: a "section" is an instance of a subject. So the subject is "physics" and if there are 40 students taking physics, that is too big for one group. So there must be two "sections" of that subject. They may be with the same teacher or different teachers - it depends on what is desired. If I want the maximum number of students to be 22, I can use "max simultaneous from a set in selected time slots". Is this the correct use of the constraint?

I want some sort of constraint to make sure that a teacher doesn't end up with too many activities. Maybe I can create non-overlapping "free" activities and make sure that there are some minimum number occurring on each FET day (teacher).

Thank you for your thoughts.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on January 23, 2020, 09:41:56 PM
Hello, after a long time!

FET-AAT is a custom version.

QuoteConstraint "max simultaneous from a set in selected time slots" can be used to make sure that no section of a subject has too many students enrolled. My notation: a "section" is an instance of a subject. So the subject is "physics" and if there are 40 students taking physics, that is too big for one group. So there must be two "sections" of that subject. They may be with the same teacher or different teachers - it depends on what is desired. If I want the maximum number of students to be 22, I can use "max simultaneous from a set in selected time slots". Is this the correct use of the constraint?

I think yes.

QuoteI want some sort of constraint to make sure that a teacher doesn't end up with too many activities.

I think you can select all the activities in a constraint activities occupy max time slots from selected = all slots of that teacher. One constraint for each teacher.

Note: Current official FET (starting from 5.41.0) has constraints activities occupy min time slots from selection and min simultaneous in selected time slots allowing empty slots. Might be useful.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on January 23, 2020, 10:38:04 PM
Oh those constraints sound very useful - are they in the most recent aat version too?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on January 24, 2020, 07:50:17 AM
Unfortunately latest FET-AAT is based on FET-5.37.5, so the answer is no.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on January 24, 2020, 12:07:37 PM
OK, thanks. Can you think of any reason why I couldn't just use the official FET for my needs? What advantage does AAT have?
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on January 24, 2020, 12:23:34 PM
The customizations of FET-AAT are explained in the corresponing readme: https://lalescu.ro/liviu/fet/download/custom/aat/readme-aat.txt
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on January 24, 2020, 12:46:47 PM
Thank you! Can you explain a bit?
Quote
- First customization: activities with common students cannot intersect in the real-life slots, so that they cannot have overlapping FET hours.

How is this a customization? Isn't this just a basic time constraint?

Never mind, I understand. This means that a student can only have a course in one real hour, no matter the day (teacher), e.g. if I have Mrs. X's science class during lesson 1, then I can't have anything else in lesson 1 on any day (teacher).

I think that is the most important constraint for me. So I must use AAT. But I think it is the only AAT customization that I need.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on January 24, 2020, 01:06:10 PM
Hmm, I actually wonder if this one might be a problem:

Quote
- Fourth customization: activities split into 2 or 3 per week won't have all the components consecutive. Assuming real days = 5 and real hours = 6. Assuming the activities split into 2 have durations 2+1 and those split into 3 have durations 2+1+1.

But maybe I'll have to see.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on January 24, 2020, 01:13:40 PM
Indeed, FET-AAT was designed for a very specialized purpose.

Quote
Never mind, I understand. This means that a student can only have a course in one real hour, no matter the day (teacher), e.g. if I have Mrs. X's science class during lesson 1, then I can't have anything else in lesson 1 on any day (teacher).

I think this was the explanation.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on January 24, 2020, 05:45:23 PM
It's a bit depending on the rules how a student can select subject.
But it look very close to German course planing. So in that case you might do the course planning with StElTo, export that into official FET and use offical FET for timetabling.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on January 30, 2020, 10:08:10 PM
I hope I have not used up my credit for custom versions, but I have a request. I tried using AAT for my new application, but I have more than 35 teachers/days (perhaps as many as 80). There may be other changes as well - I can't really know yet. I think that the second AAT customization about FET hours per day = 30 will not work for me either.

Could you possibly post a custom version based on the current version of FET (or whatever is easiest for you) with:
- first AAT customization: activities with common students cannot intersect in the real-life slots, so that they cannot have overlapping FET hours and just increased number of days.
- maximum number of FET days (real teachers) = 100

I would be very grateful if you can help :)

Thank you!
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on January 31, 2020, 12:17:12 PM
Maybe I should mention: if it is easier for you to base this version on the same FET version that AAT is based on, that would work just as well. Whatever is easiest for you!
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 02:40:26 PM
Hello again, CPT,

I am not sure I can help now. I might consider your request in the future, but I cannot promise.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 01, 2020, 03:58:56 PM
OK - I understand. You have helped me very much in the past. I can try to figure some things out on my own. Can I just ask this: may I have access to version 1 of AAT, with only that one constraint implemented? I can only download AAT-6.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 04:20:27 PM
I searched and found the old versions on the external backup hard disk I have. I have put them on https://lalescu.ro/liviu/fet/download/custom/aat/old/ . Please let me know when I can delete them. But I don't know if they are of any use.

I thought some more on your request. Might your request be useful also for other institutions as well? I luckily just released the official FET, which was a bit stressful.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 01, 2020, 04:35:12 PM
I will look through them - thank you. I tried looking through the FET source code in an IDE - I think it will take me a while to understand everything :)

Congratulations on releasing the new FET version!

The core concept behind my custom version is the same used at very, very many North American schools. It is called a "block schedule," though this term means different things to different people. But the details will be different from one school to the next. For example, in the custom version you helped me with over the summer, there were 7 blocks, with 5 partitions (partitions is my word - there is no official term for this). I tried explaining it to my administration and they found it too complicated (they were correct), so we designed a simpler system using 8 blocks with only 2 partitions. Some schools do 8 blocks with 1 partition. Some do 4 blocks with 2 partitions. Each school uses the same principle, but varies the theme slightly. So, in principle, a custom version would be very useful if it allowed users to vary a theme. If you would like, I would commit to writing a guide on how to use it, using terms that many North American schools would find familiar.

It is essentially just course planning done in a specific way, which is why AAT is the right tool.

I am trying to make this system very simple. For example, successfully got AAT to generate one year group of students, but it raise an assert error after the last activity had been placed, I think because of the timetable export customization in AAT. That is why I ask for only the primary AAT customization. The increase in teachers (FET days) is so I can do all students at once, and not just one year group.

Please let me know if I need to explain anything more.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 01, 2020, 04:51:36 PM
Great - I just downloaded the first version of AAT and it did not crash upon generation. Perfect :) I think you can delete it now.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 04:57:47 PM
OK, I will delete it soon  :)

Please tell me the max number of hours per week you have (real n_days_per_week x real n_hours_per_day). This will be the FET hours per day in the new AAT. And the max number of FET days per week will be 100 (real teachers).

I think I will start from the official FET 5.42.3 (just released). How could we name the version? AATV2?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 01, 2020, 05:03:44 PM
AATV2 sounds good to me.

For FET hours per week, my particular application will have 16 real, and 8 fake in which to place "reserve" choices - so 24 total. It probably could be reduced to 2 fake, if we applied the customization from the old CPT version "activities tags not overlapping unless in fake FET hours." But with 8 fake, that constraint is not required. I do not think having 24 will make generation too hard.

This number (24) is the part I mentioned that other schools would need to customize the most. But for me, 24 is a safe number.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 05:12:20 PM
Do you mean FET AATV2 hours per day = real hours per week = 24?

Max FET hours per day is 60, so we can leave this untouched. We'll need to increase the number of FET days per week (in FET-AATV2) to 100 (real-life teachers).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 01, 2020, 05:15:05 PM
Quote from: Liviu Lalescu on February 01, 2020, 05:12:20 PM
Do you mean FET AATV2 hours per day = real hours per week = 24?

Max FET hours per day is 60, so we can leave this untouched. We'll need to increase the number of FET days per week (in FET-AATV2) to 100 (real-life teachers).

Yes, that is what I mean, sorry. AATV2 hours per day = real hours per week = 24. It is very unlikely that any school would need more than 60.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 05:18:55 PM
OK, I'll see hopefully in a few hours or less, because I need to take a rest now, after some difficult work with the new official release. I'll let you know.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 08:47:40 PM
I did it easily, using the old code to make 216 days per week from a custom version and the old code from AAT.

Please get it from: https://lalescu.ro/liviu/fet/download/custom/aatv2/ NOTE: This aatv2 version is deprecated in favor of the BP version (Block Planning), whose link is available in the "Custom versions" of the FET homepage or directly here: https://lalescu.ro/liviu/fet/download/custom/bp/

There is a simple example there in the "examples" directory.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 01, 2020, 08:56:53 PM
Great! I am glad it wasn't too difficult.

I will try it out within the next day or two once I have a full set of data instead of just one year group. I expect it will work well.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 08:59:38 PM
Maybe you could try on your file with only one year of students and let me know if it is OK?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 01, 2020, 09:46:27 PM
Sorry - I did not see your message. I just tried - it works! I will email you the FET file for your reference.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 01, 2020, 10:09:45 PM
Thank you!

Do you think we should post this custom version as a prominent one, near the Algeria, Morocco, mapr, AAT, AAP, and the few others on https://lalescu.ro/liviu/fet/custom.html ? (maybe after you test for your complete data?)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 02, 2020, 04:08:19 PM
I just added a new entry in the custom versions, as I said, and released a final version (without the word "snapshot" in its name - the rest is identical).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 04, 2020, 12:18:56 PM
Great - thanks very much! I am still working on the input file, but have run it through FET with more of the data than before (but still not the full set of data). It is still generating very quickly without any errors, so good news so far. I will keep working throughout the week and update you when I have a full file. I will then start adding constraints, though I do not anticipate many constraints.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 04, 2020, 12:58:39 PM
Good news! Thanks for the update!
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 07, 2020, 10:44:27 AM
Another update: I have all the data in and am starting to add constraints. Things are going well!

As was the case with the CPT version, I am finding it difficult to view the timetables for subgroups because the files are so big and the data is sparse. For the CPT version, you implemented a feature that, for subgroups, a FET day was only included in the timetable file for the subgroup if the day was not empty. Ideally the same thing would be true for subjects. Is that a possible addition you could make? It is important because there are ~500 subgroups and ~50 days. If it is easy for you, that would be great for me!

I will keep you posted with my progress.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 07, 2020, 05:26:18 PM
That is good. So the whole data is generating in a reasonable time (without the preference constraints)?

What you are requesting is possible. In fact, for Jude G, who requested the AAT version, I did another customization: after the generation FET will save an official .fet file, and you can generate on that file with the official FET, and obtain a "compressed" timetable with the real-life appearance. Or we could compress the timetable in a single phase, though it is a bit more difficult.

But for now I would consider making this customization on a contract base (me and Volker we'll retain the copyright, but it will remain free software, GNU AGPL).
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 18, 2020, 02:36:55 AM
Sorry for the silence - we've been on break for a week. I do not think I need this customization anymore - I wrote a script that makes the sort of output file I need from the activities fet file after the timetable has been generated. I will post here if there are any other customizations that may be useful for my school and others. If there is, then perhaps we can work on a contract basis. Thanks again for your help thus far!
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 18, 2020, 06:57:06 AM
I am glad you found a solution! It is good that the output files are easy to read by a script. Did you find good timetables?
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on February 20, 2020, 12:18:12 PM
Yes, the timetables were very good! I was just working with sample data to show a proof of concept, but I think the data was realistic. The true test will happen in about two months when I start using real data based on staffing and student requests for next year. But I'm optimistic. Thanks again :)
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 20, 2020, 02:04:08 PM
You are welcome! I am glad it works!  :)  Thank you as well!
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on February 27, 2020, 10:46:04 PM
Hi everyone, thanks for your work on this custom version! I'm in the process of preparing a block timetable, and it looks like FET-aatv2 will work for this.

Given that this version is particularly suited for planning block timetables, it might be worth considering renaming the version to make this more apparent. Perhaps something like FET-blocks or FET-block-planning? I agree with ChicagoPianoTuner that this version may have wide appeal.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 27, 2020, 11:00:10 PM
Thank you for your feed-back, Darren! It is great that it works!

I am very eager to make this a major custom version, near Algeria and Morocco. I am waiting for the best name, suggested by the users. FET-block-planning might be too long and contains the word "planning", which is maybe redundant to "timetabling". But FET-blocks - isn't it a bit dangerous to name the version "blocks", which might mean something like "the program locks"?

I hope more institutions will use this and provide feed-back.

There are maximum 60 FET "hours per day", which are in fact the maximum real time slots per week. Should we increase this number?
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on February 28, 2020, 12:53:36 AM
60 hours per day is fine for my usage (in my current testing I only require 7), since the "blocks" themselves will typically span several hours. For example, in my school we have a two-week timetable, and each day (well, most days) will have a combination of 5 blocks. On Monday students may have blocks A, B, D, E, and C, on Tuesday B, A, C, F and G, etc., but for planning I only need to determine which courses should run in Block A, which in Block B, etc. So, even with a two-week timetable, we only need to work with 7 blocks.

For the name, what about fet-bp? I think it would be helpful to give some indication of the typical use case (block planning) in the name, since otherwise users may find it difficult to determine which custom version they should use to solve this sort of problem.

I also think it might be helpful to include something like ChicagoPianoTuner's instructions below in the readme file for that version - I found it very helpful in choosing the appropriate constraints.

Quote from: ChicagoPianoTuner on January 23, 2020, 09:10:08 PM
[...]
FET days are real teachers.

FET students are real students.

FET subjects are real subjects. Subjects preferred starting day can be used to link real teachers (FET days) to subjects.

Each activity has 1 student. It is placed on a FET day based on its subject.

Constraint "set of activities occupies max time slots from selection" is used to make sure that activities all overlap to make a course. E.g. if 8 students want art (1 block, FET duration = 2), I can add all 8 art activities to the constraint and make max time slots = 2 (selecting only art teacher's FET day).

Constraint "activity tags not overlapping" (each tag = the subject) ensures that activities with different subjects aren't placed at the same hour on the same FET day (real teacher).

Constraint "max simultaneous from a set in selected time slots" can be used to make sure that no section of a subject has too many students enrolled. My notation: a "section" is an instance of a subject. So the subject is "physics" and if there are 40 students taking physics, that is too big for one group. So there must be two "sections" of that subject. They may be with the same teacher or different teachers - it depends on what is desired. If I want the maximum number of students to be 22, I can use "max simultaneous from a set in selected time slots".

Along with your suggestion that

Constraint "a set of activities occupies max time slots from selected" can be used to ensure that a teacher doesn't have too many blocks of activities assigned.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on February 29, 2020, 10:02:11 PM
OK, I will try to make it soon. I will read more thoroughly your message and try to follow. I will add a suggestive name, I think I'll choose between bp, blocks, and block-planning (the name can be changed later). I think I will use as base the new FET-5.43.2 just released today and update to it.

I think I'll add then it as the third custom versions entry, after Morocco and Algeria and before mapr and the others. And I need to remove aatv2 (which will be obsolete).

I will try to read your message above, which is very difficult for me to understand, since I never did blocks in Romania. But please let me know: you need to use only FET-BP, or you need to use FET-BP in a first phase and FET official in a second phase using the FET-BP output?

Edit: maximum 60 FET-BP hours per day, which in this case represent the maximum number of real slots per week (so if you have 7 real hours per day in a 10 days cycle you need 70 FET-BP hours per day, which is too much and we need to increase the maximum allowed). So, please let me know if there is a misunderstanding or 60 hours per FET-BP day are enough.
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on March 01, 2020, 07:07:13 PM
60 hours per FET day are more than enough for my usage, and I am planning to use a two-stage process: using the custom version to plan blocks, then using the standard version to prepare a final timetable. A little bit more detail about my timetabling situation may help explain.

My school offers the International Baccalaureate Diploma programme (as do many international schools), which is a two year programme offered in the final two years of high school, and block timetabling is useful for this group. Students choose 6 subjects to study over two years, and will choose 3 HL (Higher Level) courses, and 3 SL (standard level) courses. (HL courses require more time each week, but this isn't important at this stage.) Enrolment in courses will not be very uniform—for example, we may have only 5 students taking Music SL, but 14 students taking Geography SL, and 50 students taking Mathematics SL, so, there's only need for one section (one standard FET activity) for both Music SL and Geography SL, but 3 sections (3 standard FET activities) for Mathematics SL (since our class sizes are capped at 17). In a standard FET timetable, each of these activities would have several subactivities (without going into the details, SL courses would have 5, HL courses 7, in a two-week timetable).

Now if Geography SL and Music SL have no students (or teachers) in common, they can occur at the same time, on the same day (say, at 9am on Monday) in the standard FET timetable. However, if they have no students in common, all of their subactivities can be timetabled together (Tuesday at 12pm, Wednesday at 11am, etc.), which then forms a block, a group of courses that run simultaneously in all of their instances. The question, then, is which other courses can added to that block? Well, one section of Mathematics SL could also join that block, but only if that section of Mathematics SL has no students in common with Geography SL and Music SL. Because we need to run multiple sections of several courses (Chemistry SL, Biology SL, Mathematics SL, etc.), the block timetabling question to be answered has two parts: which assignments of students to sections allows us to form blocks (subject/section groups) in which each student is able to take the courses they've selected, and what are the resulting blocks?

To answer that question, the aatv2 custom version can be used, using constraints as suggested by ChicagoPianoTuner. At my school we are using seven blocks, so in aatv2 I need only 7 hours per day. Geography SL is a subject, with one activity for each student enrolled in the course. Similarly, Mathematics SL is a subject, with one activity for each student. At this stage, then, there is no need to take into account the number of times a course meets in a week, etc., so one activity per student per course is all that's required. A successfully generated custom timetable will allow me to identify which courses should go in Block A (custom FET Hour 1), Block B (custom FET Hour 2), etc., and which students should be allocated to each section. (This actually needs to be done only for Grade 11, since students in Grade 12 can keep the same blocks they had in the previous year.)

With that information, I could move to the official version to generate the real timetable: Block A becomes an activity tag which could be used to ensure activities in the same block get the same actual time, and I know that students assigned to a section have no conflicts within the blocks.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 01, 2020, 07:15:48 PM
I think I understand (or begin to understand  :)  ).

I think I will do this BP soon. I'll add CPT's and your words in a "Help for BP" dialog.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 01, 2020, 10:36:59 PM
I just added the new FET-BP version. Please see the "Custom versions" section of the FET homepage and let me know if it is OK.

Edit: FET-BP direct download link: https://lalescu.ro/liviu/fet/download/custom/bp/  (but please also read the "Custom versions" information for more details).

Please let me know if you have any suggestions for improvements of the description.
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on March 02, 2020, 01:07:26 AM
I've tested FET-BP and it seems to be working well.

For the description, I would suggest adding some reference to International Baccalaureate Schools as well, since that would have a wider reach than just North America. How about

This variant might be useful for North American and International Baccalaureate institutions, and does allocation of activities (subject+students set(s)) to teachers and time slots (which can be identified with blocks).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 02, 2020, 12:30:38 PM
OK, Darren, good suggestions. I did this, and also added a section in the "Downloads" section of the FET homepage, and also made available a GNU/Linux executable version.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on March 02, 2020, 04:09:44 PM
I think it will be better if we write it much more commen. Like "schools that use block/lines (for example many schools in North American or International Baccalaureate institutions)".
I "hate" those location names, since they are bad/wrong (like algerien and mocco custom version. That names are also bad and should be renamed)

What about a more realistic sample file? I guess/think many users will not understand the existing sample file. A "real" sample file will be much more helpful to understand how to use that version.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 02, 2020, 09:05:53 PM
It is "a version for block planning".

The sample file is very simple, to illustrate the idea. The rest should come from the Help menu, but we could of course use more elaborate examples.
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on March 03, 2020, 11:19:37 PM
I should be able to provide an example at some point, but I probably won't have anything ready for another month or so (and I would need to anonymize the data as well). I'll let you know when I've got something.

One other suggestion: for those who would be using both the official FET and the custom version, it might be nice if the custom version had a slightly different icon (perhaps using another colour for the text, or another colour for the cube). Both versions look identical on the dock on a Mac (see below).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 04, 2020, 07:28:15 AM
OK, Darren, I'll try later today some icons and let you know, so you can give me your opinion, and then I'll hopefully add it in the FET-BP version.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 04, 2020, 08:15:13 PM
Darren, I managed to make something (after a long work, since I forgot how to, and because the old font I had is no longer accessible simply enough, and because Inkscape updated to a version which opens the old versions badly).

Please use the attached icons: get yourself the fet-bp.tar.bz2, unpack, rename the attached files to fet.icns, fet.ico, fet.png, and fet.svg and overwrite to icons/ and compile (fresh compile, start with an empty archive just downloaded). Then let me know.

You might use other methods to check if my new icons are good for you (as you like). You may request other changes just by seeing them.
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on March 05, 2020, 02:38:50 AM
I've downloaded the icons and they work to distinguish between the two versions, but I'd suggest using a solid colour for the text, particularly one that would also show well on darker backgrounds (see the image I've attached, the font outline isn't easily viewed on a darker background, and this makes the text hard to read). It might be better to just colour the box differently—people using a custom version should be able to remember which colour is used for the custom version.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 05, 2020, 03:28:54 PM
Sorry for the long wait, today I had some other work. I am also very low-skilled in Inkscape.

I attach some tries. Only the last two are additionally in the png format. The rest are svg only.

The 4 variant (png) has a transparent box, the 5 variant (png) has a solid color box.
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on March 05, 2020, 07:51:54 PM
The colours of Darren Version are difficult to read.
The colours of your 3rd version are to monotonous.

In my opinion the best variants are (orderd from "good" too "bad"):
version 1
version 2
version 5
version 4
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on March 06, 2020, 06:25:59 PM
I've gone ahead and used version 5 myself (only because it is so easily distinguished from the other versions), but I don't mind any of the options.

However, after having looked into some of Apple's suggested guidelines (https://developer.apple.com/design/human-interface-guidelines/macos/icons-and-images/app-icon/), I've had some thoughts about the FET app icon (both the standard and custom versions).

What do you all think about a text-free icon? (So, perhaps just the box, with a different coloured box for the custom versions.) In any event, it would be useful to have higher resolution icons (even if the icon design goes unchanged), so this might also be an opportunity to refresh the icon design itself. I'm afraid I'm not much help here, since I've only dabbled in Inkscape myself.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 06, 2020, 08:28:32 PM
I prefer to have a single icon file (for each format), and I think 128x128 is for now an acceptable compromise. I also cannot generate 256x256 or higher because new Inkscape won't open correctly/exactly the old fet.svg file (which is scalable and is the source).

Unfortunately, my artistic talent is very low.

I'll keep your suggestions in mind and maybe try something in the future. I think I'll add your suggestions in the TODO for now.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on March 28, 2020, 07:29:33 PM
I updated to the latest, FET-5.44.0. There are some important bug fixes for the future Qt 5.15.0 - the combo boxes won't update in FET-5.43.v.
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on March 29, 2020, 02:23:59 AM
The Mac version of 5.44.0-bp is available for download here (https://abmathematics.com/?attachment_id=2837).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on April 18, 2020, 10:09:30 PM
I updated to the latest, FET-5.44.2. A rare but important bug reported by Darren McDonald (if using special characters &, >, <, ", or ' in the names of the activity tags and using constraints activity tags not overlapping, the file will be saved corrupted).
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on April 18, 2020, 10:31:32 PM
The Mac version of 5.44.2-bp is now available for download here (https://abmathematics.com/?page_id=966).

Thanks for this update Liviu!
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on April 22, 2020, 05:57:43 PM
I'm glad this is of use to other people! The challenge for me at the moment is creating the FET files, because there will end up being TONS of constraints that sometimes need to be added. For scale, my current FET file has ~1700 activities and the FET file is 300,000 lines long. I know that number of lines in a file is not indicative of number of constraints, but still, there's a lot going on.

The way I have things structured now involves 2 pieces, each of which is just a CSV:
I have the python scripts that create FET files from these tables, but they're quite specific to my use case. I'm working on getting everything into a github repo that others may find useful. I'll let you know how it's going as I make progress.
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on April 22, 2020, 06:16:42 PM
Thank you for the information, CPT!

The constraints in the .fet XML format are unfortunately taking a lot of characters/space. The real information might have been even 100 times lower if I used a personalized data format (for instance containing integers instead of names) instead of XML text; the speed of generation is not affected by the length of the .fet file so I preferred a simple format.
Title: Re: Need help choosing a custom version
Post by: ChicagoPianoTuner on April 22, 2020, 08:19:03 PM
I agree that customization might make the input files smaller, but it's definitely much easier to read this way; there is no ambiguity or uncertainty about what anything means. I like it!
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on May 02, 2020, 12:55:47 PM
I just released a new version, updated from the official 5.44.4, and with a new constraint suggested by Darren McDonald, using ideas from CPT and me: max total activities from set in selected time slots. This way the user can make progressive approach to minimize the activities scheduled in the fake/overflow slots.
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on May 02, 2020, 03:51:45 PM
The Mac version of FET 5.44.4-BP is now available for download here (https://abmathematics.com/?page_id=966).
Title: Re: Need help choosing a custom version
Post by: Liviu Lalescu on June 04, 2020, 06:29:49 PM
I released version 5.44.9-bp. It has a different icon than the official (suggested by Darren McDonald) and searches for crtversion-bp.txt (so it has a dedicated search for updates on startup).
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on June 04, 2020, 07:54:58 PM
The Mac version of FET 5.44.9-BP is now available for download here (https://abmathematics.com/?page_id=966).
Title: Re: Need help choosing a custom version
Post by: Volker Dirr on June 05, 2020, 05:09:13 PM
Not sure if needed, but i compiled the 32 bit version:
https://timetabling.de/download/32bit/
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 16, 2020, 08:36:19 PM
I am not sure if this is the right place for this question as it is about FET in general, but I will ask it here anyway. Let me know if you want me to move it.

Let's say FET has scheduled N activities, and it goes to schedule activity N + 1. Activity N + 1 has some constraint with weight < 100%, let's say 95% for example. Let's also assume that it is impossible for FET to schedule the activity in such a way that it satisfies the constraint without altering any of the first N activities. Let's also say that there's some other activity, maybe activity N - 1, with a constraint of weight 99% that has been satisfied.

Moreover, let's say that FET "realizes" it can EITHER break the constraint associated with activity N + 1, or it can break the constraint associated with activity N - 1. Will it always break the constraint with the lower weight (N + 1), or will it break the constraint of the first activity it scheduled (N - 1) to accommodate the new activity?

I hope that question is clear. I'll rephrase if not.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Volker Dirr on June 16, 2020, 08:42:50 PM
it will place N+1 and unallocate N-1, no matter if the weight of N-1 is 0% or 100%, since in that moment the algorithm don't know if it can place N-1 at an other location with or without breaking a constraint.
But Liviu knows better than me.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 16, 2020, 08:58:48 PM
Ah, okay, if that is true, it might lead to some solutions that are 'less good' than others, right? I think you and I have spoken about this in the past regarding room placements.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 16, 2020, 09:02:11 PM
Yes, as Volker said. In 95% of cases it places N+1 without breaking its constraint, in 5% of cases it breaks N+1's constraint. It does not care about the other activities' constraints.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 16, 2020, 09:24:30 PM
Thank you for clarifying. I will explain my use case (it is simpler than before) and my plan for using constraints. If you can think of a better way, can you please tell me?

The only strategy I can think of is, for those 4 remaining courses, set activities preferred starting time "first choice" = 99.9% in real hours, "second choice" = 99% real hours, "third choice" = 98%, "fourth choice" = 95% or something like that. But it might be the case that FET places "fourth choice" in real hours by unscheduling "second choice". Moreover, it may be the case that FET places all four in fake hours. As I mentioned above, I could use activities occupy max slots from selection, select each student's ten choices, max occupied hours = 2, selected hours = fake hours, but some students may have made impossible choices. I could try this approach and manually changing constraints for students/activities that cause FET to 'get stuck,' but the activity where FET 'gets stuck' may not be on the activity that is actually impossible, if you know what I mean.

My best plan is to not use activities occupy min/max slots at all, and just generate multiple timetables, and choose the one with the lowest weighted conflict score.

Is there a better way?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 16, 2020, 09:55:11 PM
Did you see in the latest FET-BP the new constraint "max total activities in selected time slots"? Might help with a progressive approach.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 16, 2020, 10:36:05 PM
Following Liviu's suggestion to consider the "max total activities in selected time slots" constraints, you might try something like the following.

Set up 8 "real" blocks A–H, then have 4 "overflow" blocks, say F1–F4. (This would allow a student to get their 6 mandatory courses in "real" blocks, with the worst case scenario of 4 unallocated courses occupying F1–F4.)

Using "A set of activities has a set of preferred starting times" constraints, restrict all compulsory courses to blocks A–H, restrict all preference 1 choices to be allowed in A–H and F1, preference 2 choice to fall in A–H and F2, etc. So, a preference two choice that isn't timetabled will appear in block F2.

Now you can use four "max total activities in selected time slots" constraints. Assuming you've got 300 students, if you select all block F1 slots and set "max total activities in selected time slots" to allow at most 50 activities in block F1, you're tolerating at most 50 students not getting their preference 1 choices. Lower this number until timetables are impossible to generate, and you've got your optimal preference 1 arrangement. Then, use this same constraint approach on blocks F2–F4 in that order, and you should get optimal blocks.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 16, 2020, 11:07:00 PM
Quote from: Darren McDonald on June 16, 2020, 10:36:05 PM
Using "A set of activities has a set of preferred starting times" constraints, restrict all compulsory courses to blocks A–H, restrict all preference 1 choices to be allowed in A–H and F1, preference 2 choice to fall in A–H and F2, etc. So, a preference two choice that isn't timetabled will appear in block F2.

Now you can use four "max total activities in selected time slots" constraints. Assuming you've got 300 students, if you select all block F1 slots and set "max total activities in selected time slots" to allow at most 50 activities in block F1, you're tolerating at most 50 students not getting their preference 1 choices. Lower this number until timetables are impossible to generate, and you've got your optimal preference 1 arrangement. Then, use this same constraint approach on blocks F2–F4 in that order, and you should get optimal blocks.
This is a very clever approach and is not one I thought of. Thank you for your suggestion - I'll try it tomorrow. I didn't totally understand the use of "max total activities in selected time slots," but now I do. Very helpful - thanks all!
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 16, 2020, 11:33:11 PM
Thanks for your input here too—when I was working on my block plan for this year, Liviu suggested that it might be possible to use a "fake" overflow block for courses that couldn't be timetabled—a strategy that he mentioned you had used. It was through working with that approach (when trying to optimize the resulting block plans) that led to the development of that new constraint. So, it's appropriate that the new constraint is now useful to you!  :)
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 16, 2020, 11:40:01 PM
It's definitely a team effort :)

I just thought of something. Right now, for example, teacher T1 (really a FET day) teaches subjects S1, S2, and S3. Constraint "activity tags not overlapping," where the subject = the tag, prevent those subjects from, well, overlapping. So it's impossible that teacher T1 teaches S1 and S2 simultaneously.

The problem is those constraints (tags not overlapping) also exist in F1-F4, but we don't want that to be the case in those slots - anything should be able to overlap in fake blocks. Any suggestions for how to achieve the same result?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 12:10:41 AM
Quote from: ChicagoPianoTuner on June 16, 2020, 11:40:01 PMI just thought of something. Right now, for example, teacher T1 (really a FET day) teaches subjects S1, S2, and S3. Constraint "activity tags not overlapping," where the subject = the tag, prevent those subjects from, well, overlapping. So it's impossible that teacher T1 teaches S1 and S2 simultaneously.

The problem is those constraints (tags not overlapping) also exist in F1-F4, but we don't want that to be the case in those slots - anything should be able to overlap in fake blocks. Any suggestions for how to achieve the same result?

Hmm... strangely, I didn't run into this issue with my block plan, but now that I think about this, perhaps I was just lucky!

It's not a very elegant approach, but if, say, you have 40 distinct courses, you could add extra teacher slots (FET days) so that there are 40 days. Then, adjust your "A set of activities has a set of preferred starting times" constraints (which I'll assume you're using to make sure the right teachers get the right courses) so that, for example, all S1 courses have to fall on day T1 in Blocks A–H or in any of the F1–F4 time slots (on any day). Then all the unsatisfiable preference 1 choices could be distributed along that F1 "row" without overlapping tags.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 12:46:19 AM
That's one solution, yes. I could also add a number of "fake" hours equal to the number of choices (4 in this case) times the max number of unique courses taught by any teacher (3 in this toy example), so instead of 4 fake blocks, I have 12: F1_a, F1_b, F1_c, F2_a,... , F4_c. Then "first choice" could happen in F1_a, F1_b, or F1_c, and "second choice" in F2_a, etc. I don't necessarily think this solution is any more elegant than yours though.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 08:12:40 AM
Hello,

Please let me know if I should think of a solution, or these tricks work.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 10:28:31 AM
Liviu, any solutions you have are always helpful  :) I think the elegant way is to have some constraint "a set of activity tags are not overlapping in select time slots" or "a set of activities are not overlapping in select time slots" but I do not know how difficult a constraint like that would be to implement, nor do I know what sort of impact it would have on generation.

If you can think of any other tricks, please share! Also, do you have any suggestions for which method we proposed is easier for FET?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 10:45:20 AM
I prefer not to add these new constraints, if possible, for simplicity reasons. Also, they may in fact be slower in the generation.

But I think that adding more slots is nicer. I am not sure, but aren't your two methods kind of related/similar? The acceptable extra slots are the same in number, after adding preferred times constraints.

So, Darren, do you need to update your files? And you might obtain better timetables?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 10:52:04 AM
Understood - adding a constraint is probably not necessary. I just wanted to make sure that doing it this way wasn't going to slow down the generation too badly.

I was thinking and I like Darren's solution because if teacher T2 also teaches subjects S1 and S2 it might be nice to have all of the unscheduled activities in the same place and not split between the two teachers.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 02:54:29 PM
It may be worth noting that there may be an issue with max days for some users. There isn't in my case as I have ~40 real teachers and ~50 FET subjects that now require their own FET day, so I'm under the 216-day limit, but other users may not be.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 03:38:07 PM
Quote from: Liviu Lalescu on June 17, 2020, 10:45:20 AM
So, Darren, do you need to update your files? And you might obtain better timetables?

No, if this had been an issue with my file it would have failed to generate, though I may adopt one of the proposed solutions with my data next year. I think it wasn't a problem in my case this year because there were so few unavoidable conflicts with my data.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 05:33:43 PM
Quote from: ChicagoPianoTuner on June 17, 2020, 02:54:29 PM
It may be worth noting that there may be an issue with max days for some users. There isn't in my case as I have ~40 real teachers and ~50 FET subjects that now require their own FET day, so I'm under the 216-day limit, but other users may not be.

I thought Darren's proposal was to consider n_FET_days = max (40, 50) = 50. I consider the days' dialog too large, but in case some other user needs more, I could try something else in the interface. Or should I do that now? How many max FET days?

Quote from: Darren McDonald on June 17, 2020, 03:38:07 PM
No, if this had been an issue with my file it would have failed to generate, though I may adopt one of the proposed solutions with my data next year. I think it wasn't a problem in my case this year because there were so few unavoidable conflicts with my data.

Do you think I should add these two tricks to FET-BP help menu item "Instructions for the BP version" and make a new FET-BP release?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 05:53:41 PM
Quote from: Liviu Lalescu on June 17, 2020, 05:33:43 PM
I thought Darren's proposal was to consider n_FET_days = max (40, 50) = 50.
Yes, that's what I had in mind.

Quote from: Liviu Lalescu on June 17, 2020, 05:33:43 PM
Do you think I should add these two tricks to FET-BP help menu item "Instructions for the BP version" and make a new FET-BP release?

That might be a good idea, so if you're updating FET-BP to 5.45.0 it's probably worth including a note about this.

I've just had a look at the Instructions for the BP version help notes, and I think we should also note that the Break constraint in the Time tab can be used to mark blocks in which a teacher is unavailable.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 06:02:55 PM
OK, I will then update soon FET-BP to 5.45.0. Please, could you make a debate and a final decision to the exact text to add in the help, and I will add it? Maybe it is best to add both tricks. And don't worry, if there is some mistake in this text, we can release after that FET-5.45.0-BP2, and so on.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 08:23:22 PM
I made some quick edits to the FET-BP help text, and attached a potential new version here. I included both options, but simplified the description of each option to avoid mention of using several fake/overflow blocks to allow for student preferences, then added another use case (the most recent situation as described by ChicagoPianoTuner) at the end.

Please make edits/changes as you see fit!
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 08:31:27 PM
Thank you!

There are two things:

1) Could you make clear my remark above, that the number of FET days is max(40,50)=50, and not 40+50=90?
2) You forgot about your break constraint to make teacher not available?

Please make sure there are no special characters in your file, like special quotes or apostrophes (I think there are not).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 08:39:25 PM
Quote from: Liviu Lalescu on June 17, 2020, 08:31:27 PM1) Could you make clear my remark above, that the number of FET days is max(40,50)=50, and not 40+50=90?
You are correct - I misunderstood Darren's advice.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 08:43:51 PM
I have made lots of progress with my timetable today. I am now considering space. I do not believe there are any special constraints for rooms in FET-BP. It would be nice if rooms had the same custom basic constraint as students: they cannot be scheduled in the same FET hour on any day. Is that possible?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 08:51:52 PM
Also, maybe a trick worth adding to the help file, and one that Volker has mentioned in the past: in addition to having one activity per student choice, create one activity per teacher-section. E.g. if teacher T1 teaches subject S1, S2, S2, S2, and S3 (five hours, three unique subjects), create five activities, no FET students, FET teacher = real teacher, tag = "teacher_activity" or something like that, FET subject = [S1, S2, S2, S2, S3]. Use activities occupy max slots from selection to link each of these activities to student selections, e.g. if 15 students selected S1, then activities occupy max slots would contain those 15 activities, + 1 teacher activity, number of slots = 1, selected slots = real hours of FET day corresponding to real teacher. For S2, if 50 students requested that course, you would do 50 + 3 teacher activities, number of slots = 3, selected slots = real hours of FET day corresponding to real teacher.

In my use case, I generated a timetable with a conflict score of 80 in about 40 minutes. Then I locked all activities with tag = "teacher_activity," and then generated again. Doing this brought my conflicts from 80 down to 38, and the second generation took ~15 seconds. The reason is because of FET unscheduling N-1 to make room for N+1, as described in my questions about 10 posts ago.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 09:02:02 PM
OK, I've made all suggested changes, and removed special characters.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 09:16:46 PM
Quote from: ChicagoPianoTuner on June 17, 2020, 08:43:51 PM
I have made lots of progress with my timetable today. I am now considering space. I do not believe there are any special constraints for rooms in FET-BP. It would be nice if rooms had the same custom basic constraint as students: they cannot be scheduled in the same FET hour on any day. Is that possible?

Indeed. Darren, what is your opinion? If yes, could you add this as well in your text file, because it should be easy to implement (and if I cannot implement it, I will remove it from your text file).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 09:25:52 PM
Darren: I mean, if you think it would be a good addition, write about it as if it was a mandatory option, as for students.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 09:42:35 PM
Quote from: Liviu Lalescu on June 17, 2020, 09:25:52 PM
Darren: I mean, if you think it would be a good addition, write about it as if it was a mandatory option, as for students.

I wouldn't have a need for this constraint in my use (which doesn't mean it's not worthwhile!), as in my case teachers typically have their own rooms, so no other constraints are needed.

I've updated the help text to include mention of this, but I'm not sure how this would work in practice. For example, if I assign a room to an activity (say, subject S1 with student A has room R1), wouldn't this prevent subject S1 with student B and room R1 from being timetabled in the same teacher/block time slot? Or would FET be modified to allow overlapping room allocations in a single time slot?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 09:55:34 PM
Hmm, CPT, but indeed, as Darren says, we cannot apply rooms in FET-BP. Not even as it is now. Because there are more activities in the same time slot and room - impossible - room overused.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 10:08:50 PM
Quote from: Liviu Lalescu on June 17, 2020, 09:55:34 PM
Hmm, CPT, but indeed, as Darren says, we cannot apply rooms in FET-BP. Not even as it is now. Because there are more activities in the same time slot and room - impossible - room overused.

Ah, I think I now understand how ChicagoPianoTuner was thinking of using this constraint. If a "teacher" activity is added (as described by ChicagoPianoTuner earlier), then rooms could be assigned to the teacher activity, and there would only be one such activity in each time slot, so the constraint would then make sense.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 17, 2020, 10:10:28 PM
Quote from: Darren McDonald on June 17, 2020, 10:08:50 PM
Quote from: Liviu Lalescu on June 17, 2020, 09:55:34 PM
Hmm, CPT, but indeed, as Darren says, we cannot apply rooms in FET-BP. Not even as it is now. Because there are more activities in the same time slot and room - impossible - room overused.

Ah, I think I now understand how ChicagoPianoTuner was thinking of using this constraint. If a "teacher" activity is added (as described by ChicagoPianoTuner earlier), then rooms could be assigned to the teacher activity, and there would only be one such activity in each time slot, so the constraint would then make sense.
Yes, exactly this. Teacher activities get rooms; not student activities.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 10:15:52 PM
OK then, I will do it soon (I hope it to be easy). I apologize, I do not understand completely, but I will trust you.

Darren, should I use your latest text file, or do you need to modify it?

CPT, I would need an example test file (even if private). Could you help me with that?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 17, 2020, 10:24:20 PM
Quote from: Liviu Lalescu on June 17, 2020, 10:15:52 PM
Darren, should I use your latest text file, or do you need to modify it?

I've made a slight modification (mentioning that rooms should only be used for "teacher" activities).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 17, 2020, 10:33:04 PM
Thank you, Darren!  :)
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 12:37:49 AM
Liviu, I will send you an example file (privately) tomorrow. It has no room information on it - is that okay?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 08:19:01 AM
OK, but could you add rooms and preferred or home rooms constraints? Because I don't know how I should add these.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 11:40:22 AM
No problem - I'm working on it now.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 11:44:50 AM
Thank you!
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 02:07:30 PM
It's taking a bit longer than anticipated - adding rooming constraints brought up some other issues under the surface that I have to fix. I have to stop working for a few hours, but will definitely get you something later today.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 06:43:37 PM
Okay, I emailed you the file.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 06:48:48 PM
Thank you! File received.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 07:10:17 PM
Great!

I have another question. I am trying to balance the number of students in each section of a course. Example: I have two teachers who teach the same FET subject, S; each teacher has one activity. If there are 40 students who request the subject, I want the balance to be 20/20, or maybe 15/25, but not 2/38. That's okay, I can do it with max simultaneous activities = 25 or something like that; this forces the other 15 into a different section. This works if the two sections are taught by the same teacher or different teachers - no matter.

But imagine I have the same two teachers, T1 and T2, teaching the same subject S, and T1 teaches one activity A1, but T2 teaches two activities, A2 and A3, both subject S. If I now have 48 students who request the subject, and if I use max simultaneous = 25, I could have 25 students in A1 and 23in A2 and 0 in A3. Or 22/22/4, or something similar. Imagine I want to have a minimum of 7 students in each activity.

I could solve it with tricks: in the case above, I could add a number of dummy activities 75 (max simultaneous * number activities) - 48 (number real requests) = 27, force all dummies to be in the same slots as the real courses (using the same basic set of constraints as I would usually use), and then do something like max simultaneous dummy activities in one slot = max students - min students = 25 - 7 = 18.

The same problem and solution work if there are 2 activities (either by the same teacher or different teachers) and there are, for example, max students per section + 1 who request the course, e.g. 26 in my example above. Create 50 - 26 = 24 dummy activities, allow max dummy activities = 25 - 7 = 18 in one slot, guaranteed to have 7 real students in each section.

Maybe there is a better trick. Can you think of one?

An ideal constraint would do something like "if there are ANY activities in this time slot, there must be at least SOME MINIMUM number of activities in this time slot." But I am not sure if such a constraint is very difficult to create, or would slow down generation a lot. But I can say (and maybe Darren can agree) that setting minimum class sizes would be a very useful feature.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 07:13:14 PM
I must admit I did not read carefully for now, but don't you have activities min simultaneous in selected time slots with allow empty slots = true?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 07:15:29 PM
Oh! I never noticed the "allow empty slots" there. I think that will work. Great. Thank you! :D
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 18, 2020, 07:16:32 PM
Quote from: Liviu Lalescu on June 18, 2020, 07:13:14 PM
I must admit I did not read carefully for now, but don't you have activities min simultaneous in selected time slots with allow empty slots = true?

This is what I did with mine too—using both max/min simultaneous activities from a set in selected time slots, with allow empty slots = true. You can add these on a subject by subject basis, and simply select all (real) block slots, since allowing empty slots means you don't have to worry when those classes get scheduled.

Doing this for the multi-section courses was handy, and it allows you to do course-by-course balancing.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 07:24:30 PM
Quote from: Darren McDonald on June 18, 2020, 07:16:32 PM
Quote from: Liviu Lalescu on June 18, 2020, 07:13:14 PM
I must admit I did not read carefully for now, but don't you have activities min simultaneous in selected time slots with allow empty slots = true?

This is what I did with mine too—using both max/min simultaneous activities from a set in selected time slots, with allow empty slots = true. You can add these on a subject by subject basis, and simply select all (real) block slots, since allowing empty slots means you don't have to worry when those classes get scheduled.

Doing this for the multi-section courses was handy, and it allows you to do course-by-course balancing.
Great - thanks Darren. Out of curiosity, did you have to deal with different courses in each semester? All of the courses for our senior school go for the entire school year, but some middle school courses only happen for half the year. I'm considering a few ways to tackle this problem, but I was wondering if you had to deal with it. Just to clarify, this is a separate issue to the one I just asked about :)
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 18, 2020, 07:42:27 PM
Quote from: ChicagoPianoTuner on June 18, 2020, 07:24:30 PM
Out of curiosity, did you have to deal with different courses in each semester? All of the courses for our senior school go for the entire school year, but some middle school courses only happen for half the year. I'm considering a few ways to tackle this problem, but I was wondering if you had to deal with it. Just to clarify, this is a separate issue to the one I just asked about :)

As it happens, I did have to deal with semester courses. We have a set of Humanities courses (Economics, Geography, History, and Philosophy) that are taken as half-year courses, and we do something similar for science classes. These courses all run at the same time (so, in the same "real" block), and students choose two to study (so Econ and Philosophy, etc.), and do one in Semester 1, the other in Semester 2. (They also make a backup choice, but we managed to give everyone their top two choices this year. If it's more complicated next year I may use your approach with multiple overflow blocks.)

To figure our the best arrangement, I set up a FET-BP file just for this "option" block. Each course was a "day", with two "hours," Semester 1 and Semester 2. Economics, for example, was offered in both Semester 1 and Semester 2, but there was also a third section offered only in Semester 2. So there were two Economics "days," with a break scheduled to prevent activities occurring in Semester 1 for Economics "day two" (and similarly for some other courses).

My scenario was pretty simple, so I don't know if this will be of any help in your case!
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 07:54:35 PM
Ahh, I see, yes, that's a bit simpler than my scenario.

Just to lay out my ideas here: I can think of two ways to do it. Both methods involve making 2 subactivities for each activity that lasts the full year, and just one subactivity for the half-year courses.

First, I could try to do it with tricks. FET days are still real teachers, but FET teachers are two versions of a real teacher - there's T1_sem1 and T1_sem2. All of T1_sem1s activities and T1_sem2s activities must fall on FET day T1. But I would also need dummy students to accommodate. And dummy rooms. Oof. Lots of tricks.

Second, I could double the number of hours while keeping the number of days the same. So hours are A_sem1, B_sem1, ..., A_sem2, ..., H_sem2. Now courses that happen for the full year are forced to be on the same FET day (real teacher) using activities same starting day (any hour), and I can force component 1 to be in the first semester/hours using set of subactivities has a set of preferred starting times. The problem is I don't know how to ensure that two subactivities that represent a full-year course are separated by precisely 11 hours (I have 8 real blocks and 3 fake blocks, so A_sem1 and A_sem2 are 11 hours apart). I can use min gaps between set of activities, but without max gaps between set of activities I don't know how to do it.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 08:06:47 PM
Hmm. Maybe I can use constraint three activities grouped, two activities are the subactivities from the full-year course, and the third activity is a dummy activity with duration = 10. And I can add this constraint only to the "teacher" course, not the choices students make, so there aren't that many constraints.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 08:13:53 PM
1) Maybe add also 2 constraints two activities are ordered if you add three grouped.
2) Min gaps between activities considers the number of slots between them, so I think it should be 10 (if the first activity has duration 1).
3) Maybe if you add for all the activities (including students) it will help FET better.
4) It might be slow if you use three activities are grouped for this trick.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 08:17:32 PM
Quote from: Liviu Lalescu on June 18, 2020, 08:13:53 PM
1) Maybe add also 2 constraints two activities are ordered if you add three grouped.
Yes, good point.
Quote
2) Min gaps between activities considers the number of slots between them, so I think it should be 10 (if the first activity has duration 1).
I won't need min gaps if I use three grouped with the middle one duration = 10
Quote
3) Maybe if you add for all the activities (including students) it will help FET better.
Okay, I can add more constraints.
Quote
4) It might be slow if you use three activities are grouped for this trick.
I'm not sure what my other options are :(
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 08:21:16 PM
(4): It is easy to add a constraint max gaps between activities. In theory. In practice it is tedious. If really needed and useful, I could add it.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 18, 2020, 08:24:36 PM
I am happy to use this method for now. Maybe if another user requests it, you can consider that it would make my problem easier to solve as well and that will be a good reason for you to implement the constraint.

Also, I can let you know if the generation is impossibly slow with this method and maybe that will be a reason to implement the new constraint. But definitely don't do it for me now - leave it until later.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 09:50:52 PM
I updated to FET-5.45.0-BP and made the rooms unique time stuff. It seems to be working. The rooms stuff was easy. CPT, now I am trying on your private file. If successful, I will send you a solution to check, otherwise I will leave more generations overnight.

I can put the snapshot version, but I assume you need the Windows executable version, which I only intend to release after testing and after adding the other new features (the readme by Darren and maybe I can do a max gaps between activities).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 18, 2020, 11:35:25 PM
I obtained three solutions for your input, with the rooms as needed, not occupying two real slots at the same time. I sent you two of them.

About the max gaps between activities, I would like firstly to make sure this constraint is useful. So, if possible, I would like from you a file with everything but these constraints of this type added. I will make a hack to make min gaps results also in max gaps. If it works, I might add it in the FET-BP official, but if it does not work, if there are some other problems, it is best not to add it.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 01:31:15 AM
Quote from: Liviu Lalescu on June 18, 2020, 09:50:52 PM
I updated to FET-5.45.0-BP and made the rooms unique time stuff. It seems to be working. The rooms stuff was easy. CPT, now I am trying on your private file. If successful, I will send you a solution to check, otherwise I will leave more generations overnight.

I can put the snapshot version, but I assume you need the Windows executable version, which I only intend to release after testing and after adding the other new features (the readme by Darren and maybe I can do a max gaps between activities).
I checked the files - they are correct. Thank you! I can compile the snapshot if need be, but I can also wait for the Windows executable - I have other work to do on my timetable in the meantime.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 01:33:12 AM
Quote from: Liviu Lalescu on June 18, 2020, 11:35:25 PM
I obtained three solutions for your input, with the rooms as needed, not occupying two real slots at the same time. I sent you two of them.

About the max gaps between activities, I would like firstly to make sure this constraint is useful. So, if possible, I would like from you a file with everything but these constraints of this type added. I will make a hack to make min gaps results also in max gaps. If it works, I might add it in the FET-BP official, but if it does not work, if there are some other problems, it is best not to add it.
Okay. I think I will send you a file soon. I am testing it with the large dummy activity and the constraint three activities grouped.

I'm not sure what you mean by "min gaps also results in max gaps" - does this mean a constraint "two activities are separated by exactly N gaps"?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 01:58:41 AM
Yes, exactly n gaps.

I think with 3 activities grouped will be slower than necessary. I would prefer us to try with the hack for exactly n gaps. I would like to have such a file from you soon, so that I can prepare FET-5.45.0-BP. You need to add everything and min gaps, and I will consider min gaps = exact gaps.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 02:20:31 AM
I will send you a file now.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 02:38:39 AM
Sent.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 10:41:39 AM
I obtained 3 solutions for your file in a larger time (45 minutes - 2 hours 17 minutes, and I have other generations running now for about 2 hours 30 minutes) (I sent some emails). Did you forget about activities same starting day, or they are unnecessary? Also, if you added redundant min gaps between activities for students it would be faster (but I am not sure you can do that?)
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 10:54:07 AM
Students do not need min gaps in my special use case because they do not have different activities in semester 1 vs. semester 2. I may not do a good job of explaining this, but I'll try.

Students in grades 6-8 (middle school students) do not choose their courses - they all are told what to do. Some of their courses are the same in semester 1 as semester 2, but others are not. When I create activities for these students, I do not need to make use of special BP features. I can just do an activity with a teacher with a student group (e.g. Mr. Smith teaches math to 8K, a 'class').

Some teachers teach both senior students and middle students. Students in grades 9-12 (senior school students) are the ones who primarily benefit from FET-BP - they choose their courses. Moreover, senior school students have the same schedule semester 1 as semester 2.

When I create "teacher activities" for senior school subjects, I create two activities, and place one in semester 1 and one in semester 2, and space them using 'exactly n gaps'. But when I create "student activities" I do not need to do this, because the students who correspond to these activities do not change their courses in semester 2. But their teachers might for the middle school courses they teach.

Let me know if that is unclear and I will provide a graphic :)
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 10:58:26 AM
I would also like to say that other users may very well have senior school students taking different courses in semester 1 vs. semester 2 (Darren's school did). My school may even do it next year. But this year, it is unnecessary.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 11:07:12 AM
OK, no problem, no need to explain, even if I don't understand perfectly I believe you  :)

So, activities same starting day are unneeded, because teachers have their activities on a separated day?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 11:13:43 AM
I don't see why same starting day would be necessary. The activities for real teacher T are already constrained to only occur on FET day T, and these are the only activities that will make use of exactly N gaps. Are you saying that, even though this constraint exists, we still need "same starting day" for A1 in semester 1 and A2 in semester 2 constrained by exactly N gaps? I can add those constraints if you think that will increase generation speed.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 11:17:48 AM
No, not needed. I just asked because you told before that you add same starting day, min and max gaps between activities.

Could you please write here (again), a help for the users regarding how to use same starting day (if adding for students), and min+max gaps between activities, for your situation?

I will have a small rest now and add then the new constraint max gaps between activities and hopefully put the new version soon (after testing again your file, which is taking much time).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 11:36:36 AM
Quote from: Liviu Lalescu on June 19, 2020, 11:17:48 AM
Could you please write here (again), a help for the users regarding how to use same starting day (if adding for students), and min+max gaps between activities, for your situation?
If your students have some different courses in semester 1 and semester 2, there are a few things you need to do. First, double the number of hours in your FET day, creating an hour for each block in semester 1, and another for semester 2, including fakes. The structure should be A_sem1, B_sem1, ..., FAKE_1_sem1, ... A_sem2, B_sem2, FAKE_1_sem2, ... FAKE_N_sem2. Now, for subjects that only last one semester, you can create one activity per student choice as you did before. If you care which semester it's in, use a set of activities has a set of preferred starting times and select the hours corresponding to the specific semester.

For subjects that last the entire year (both semesters), you need to create two activities for each student choice and corresponding teacher activity. They should already be constrained to occur on specific FET days corresponding to real teachers. If there are multiple teachers for the same subject, you need to add a constraint to each student activity must occur on the same day to ensure the students have the same teacher for semester 1 as semester 2. If you want those activities to occur in the same block in semester 1 as semester 2 (which you probably do to avoid confusion, but it is not strictly necessary in some cases), two constraints for each pair of activities: "min gaps (hours) between a set of activities," and "max gaps (hours) between a set of activities". The number of hours, N, should be the same for both constraints. N should be equal to the number of real blocks + number of fake blocks  - 1, assuming the courses have duration 1 (each activity occupies exactly one block). If your courses occupy more than one block, decrease the value of N by 1 for each course duration.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 11:41:14 AM
And we need to add that "exactly N gaps" is obtained by "min" and "max".
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 12:11:34 PM
I edited my previous post.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 03:25:29 PM
OK, I will  add it, thank you!

Out of my 9 simulations on your min+max gaps, I got solution in 6; 3 are still running after 7 hours. I will try to see if they finish. Also, I need to fix some critical bugs in another FET custom version (FET-MA) and compile it. After that, I hope to begin work on adding max gaps between activities in FET-BP and make the release of FET-BP.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 03:31:18 PM
Okay, great. It's possible that some of the trouble is coming from somewhere else. It's tough to explain. I can send you another file that will be much easier to test (simply removing a few activities) if you want.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 03:36:01 PM
Yes, thank you, please send. I need to stop your old generations now, unfortunately.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Volker Dirr on June 19, 2020, 03:45:37 PM
I can replace all teacher, room and student names by random names if you want to add a larger anonymous sample file as sample file. Just sent me and i will convert it (if you can't convert it yourself).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 03:49:06 PM
I sent it.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 03:50:09 PM
Thank you! Received. I will inform you of my progress or when it is ready.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 03:52:56 PM
Quote from: Volker Dirr on June 19, 2020, 03:45:37 PM
I can replace all teacher, room and student names by random names if you want to add a larger anonymous sample file as sample file. Just sent me and i will convert it (if you can't convert it yourself).
I think that's a good idea. Maybe we can wait until we're sure the constraints are correct from Liviu's point of view, and I add the new ones. But when the time comes, I will take you up on that offer.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 09:10:36 PM
On Friday, 19 June 2020, I released the latest version, FET-5.45.0-BP. Thank you, CPT and Darren!

https://lalescu.ro/liviu/fet/download/custom/bp/

PS: Darren, we might find problems and I might need to release FET-5.45.0-BP2 and so on. So please don't mind if you compile this for Mac OS X and a few hours later I find bugs and you need to compile again. You might want to wait. As you prefer.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 19, 2020, 09:17:20 PM
Thank you Liviu! I will download it in a few hours and do some work. I may not have anything new to share until tomorrow morning.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 19, 2020, 09:22:43 PM
OK, you are welcome!  :)
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on June 19, 2020, 09:33:03 PM
Quote from: Liviu Lalescu on June 19, 2020, 09:10:36 PM
PS: Darren, we might find problems and I might need to release FET-5.45.0-BP2 and so on. So please don't mind if you compile this for Mac OS X and a few hours later I find bugs and you need to compile again. You might want to wait. As you prefer.

I've got time now, so I'll go ahead and compile. I don't mind compiling again if an update comes out soon.  :)
Title: Re: Need help choosing a custom version
Post by: Darren McDonald on June 19, 2020, 10:11:04 PM
The Mac version of FET-5.45.0-BP is available for download here (https://abmathematics.com/?attachment_id=2837).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 20, 2020, 10:34:41 AM
Small typo in version 5.45.0: when opening the max gaps constraint, the text at the top (not on the menu bar, below it) says "...they must be separated by at most min gaps (hours)." It should say "...they must be separated by at most max gaps (hours)."
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 20, 2020, 10:45:15 AM
Thanks! Will be corrected in the next version.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 22, 2020, 11:25:30 AM
I am trying to implement the last piece of my timetable and I am having trouble. I would love to hear any suggestions!

There is one subject, S, that instead of meeting in one block, it meets in two blocks. It's not simply one activity with duration = 2, because I wish for those meetings to be once in blocks A-D, and the second time in blocks E-H. When creating the activities, for the teacher and students, I create two individual activities. To restrain them to the correct blocks, I use set of activities occupies max slots from selection, one activity allowed in A-D, and one in E-H.

So imagine that FET places the teacher activities in blocks B and H. How do I ensure that students are either placed in both matching blocks or both in FAKE?

The one trick I came up with was to actually use duration = 2 and force the activity to start in block D, that way it occupies blocks D and E and this fulfills my criteria. This isn't such a big deal this time around because there is only one such course, but if there are more in the future, this will not necessarily work.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 22, 2020, 02:21:55 PM
I think a customization/new constraint is needed for this.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 22, 2020, 02:43:41 PM
Okay. I'm glad there isn't a way that I was missing!

I think this constraint also falls into the category of something that does not need to be implemented now, but may be useful for other users in the future. I just spent 5 minutes thinking about what this constraint would be named and the best I came up with was "pairs of activities are simultaneous when they occur in selected slots," but that's a very bad name.

I can use the workaround for now. Thank you!
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on June 22, 2020, 03:29:51 PM
No, I think the constraint should be "pair of activities both in selected slots 1 or both in selected slots 2".

Or maybe I did not understand your constraint. Could you explain?
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: ChicagoPianoTuner on June 22, 2020, 03:52:35 PM
You understand correctly, and your name is better. We are trying to solve the same problem, but you are doing it in a better way. I was trying to find a way for the two student activities to overlap with both of the teacher activities, which are constrained to occur in real blocks, or none of the teacher activities and thus be held in fake blocks. You were trying to make sure that the two student activities occur either in real blocks or in fake blocks independent of their association with teacher activities. Your way is much better.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on November 24, 2020, 11:32:44 PM
On Wednesday, 25 November 2020, I released the latest version, FET-5.47.1-BP.

https://lalescu.ro/liviu/fet/download/custom/bp/ , as usual.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on November 25, 2020, 04:27:59 PM
The Mac version has also been updated, and is available here (https://abmathematics.com/?page_id=966).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on November 27, 2020, 04:38:36 PM
On Friday, 27 November 2020, I released the latest version, FET-5.48.0-BP.

https://lalescu.ro/liviu/fet/download/custom/bp/ , as usual.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Darren McDonald on November 27, 2020, 10:54:39 PM
The Mac version has also been updated to FET-5.48.0-BP, and is available here (https://abmathematics.com/?page_id=966).
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on December 06, 2020, 05:55:26 PM
On Sunday, 6 December 2020, I released the latest version, FET-5.48.1-BP.

https://lalescu.ro/liviu/fet/download/custom/bp/ , as usual.

In addition to the usual updates from the official FET, I corrected a potential ugly bug in the previous BP version (FET-5.48.0-BP): the max number of days per week was limited to 35, not 216. I apologize and please update!
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on February 19, 2021, 09:10:15 PM
On Friday, 19 February 2021, I released the latest version, FET-5.48.2-BP.

https://lalescu.ro/liviu/fet/download/custom/bp/ , as usual.

Minor updates, ported back from the official FET.
Title: Re: Custom FET BP - block planning (Need help choosing a custom version)
Post by: Liviu Lalescu on April 17, 2021, 06:30:56 PM
Starting with FET-6.0.0, released on 17 April 2021, FET-BP is integrated into the official FET. Please use official FET (6.0.0 or later).