Main Menu
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - GEA_user

#1
Hello,
Your explanation of FET's internal mechanism regarding "min days between a set of activities" is very clear; I'll definitely need to improve my strategy for activating/deactivating "level 1", "level 2," ...

I'll illustrate my point about "a set of activities has a set of preferred time slots" with an example:
If "Teacher 1" is scheduled to have 3 activities per week and tells me their preferences for time slots—for example, Monday afternoons from H4 to H6, as well as Tuesday mornings from H1 to H3 and all day Wednesday (H1 to H3 and H4 to H6, with the remaining hour being the lunch break P)—
He also tells me that he would prefer Tuesday morning first (as choice 1), and if that's not possible, Monday afternoon (as choice 2), and finally, if there's really no other option, Wednesday (as choice 3).
So I create the following constraints "a set of activities has a set of preferred time slots" (without specifying any particular activities, but for "teacher 1"):
First, at "level 1": I set Monday afternoon, Tuesday morning, and Wednesday with a high weight of 99%;
then, at "level 2": I set Monday afternoon and Tuesday morning, but with a lower weight of 95% because this is more difficult;
finally, at "level 3": I set only Tuesday morning, but with a weight of 90% because this is even more difficult.

But maybe my strategy is wrong?
#2
Hello Liviu,
Thank you for your answers and your prompt response. :D

Quote from: Liviu Lalescu on July 12, 2026, 05:38:23 PMHello, Anthony!

The board for this post is correct.

1) Please open the fet file with an XML editor or text editor. Search for <Time_Constraints_List> and </Time_Constraints_List>. Between these two are the time constraints, such as: <ConstraintTeacherNotAvailableTimes> ... </ConstraintTeacherNotAvailableTimes>. Please see an example of how this constraint is written in XML. Just add new constraints in this section, anywhere, but not inside an existing constraint.
I used VScode for the xml files, no pb, I'm just surprise about the "anywhere" but ok.

Quote from: Liviu Lalescu on July 12, 2026, 05:38:23 PM2) Min days between activities constraints accumulate weight (the weight is stronger on two or more constraints for the same activities). You need to enable level 1, XOR level 2, XOR level 3, not two or more simultaneously. The reason for accumulation is that FET checks each constraint in turn.
Does this mean that doing this (which is what I've been doing so far) distorts the intended meaning of the constraints, or does it "only" increase the computation time for the FET generator?

Quote from: Liviu Lalescu on July 12, 2026, 05:38:23 PMYou can activate/deactivate all constraints of a level with an advanced filter for comments, select all of them, and click activate/deactivate.
I know it's possible to filter by the items in the comments, but I now need to distinguish between "level 1" constraints that must remain (since they have no "level 2" equivalents) and "level 1" constraints that need to be disabled (since they are followed by "level 2" equivalents). Need to look into this further.

Quote from: Liviu Lalescu on July 12, 2026, 05:38:23 PMActivities preferred times constraints: for each activity, each cell of a table n_days x n_hours takes the maximum of each constraint as the final weight of not allowed, and FET only checks once the constraint for each activity.
If I understand correctly, it's therefore not a problem to have "multiple versions" of such constraints active simultaneously—is that right?
And does that mean my idea of using decreasing weights for increasingly smaller time ranges is correct after all?

Thanks,
#3
Hello,
I'm posting these questions here because they relate to my specific situation, and this thread seems like the most appropriate place for them, but please feel free to move this post if necessary.

I'm currently using FET (official version) to generate a schedule with approximately 4,000 activities, approximately 100 teachers, 3 academic years with 6 student groups each and 2 subgroups per group (for a total of 36 subgroups), over 16 academic weeks of 7 days each (112 days total) with 7 time slots per day.
I imported my 4,000 activities via CSV, then began entering my constraints one by one (and I'm entering them teacher by teacher to ensure that the overall schedule makes sense).
Just entering a "teacher's unavailable time" constraint into the FET interface takes a long time given the 112 days per week, so entering all the constraints is very tedious.
I'm therefore considering copying and pasting directly into the FET file, using the constraints I've already entered as a template.
My first question is this:
Are there any forum threads that explain what you need to know about directly importing into the FET XML file? I'm particularly wondering about the correct places to put specific constraints, since simply placing them one after another at the end of the existing file probably doesn't work.

I also have a completely different question about the accumulation of constraints.
Given the large number of constraints, I use a strategy based on constraint priority levels to maintain control and clarity. So for each constraint, I've added a comment such as "level 1," "level 2," and so on, and I start the generation process by enabling only the "level 1" constraints; then, if that works, I add the "level 2" constraints, and so on.
Not all of my teachers have constraints at multiple levels, so it's easier for me to enable "level 2" constraints without disabling the "level 1" ones.
This means that for a single set of activities, I might have, for example, "min days between a set of activities=7" with a weight of 90% ("level 1") and "min days between a set of activities = 7" with a weight of 95% ("level 2"), and "min days between a set of activities = 7" with a weight of 99% ("level 3").
Or, again for the same set of activities, "a set of activities has a set of preferred time slots" with a weight of 99% ("level 1") for a certain range of time slots and "a set of activities has a set of preferred time slots" with a weight of 95% ("level 2") for a certain, more restricted range of time slots, and again "a set of activities has a set of preferred time slots" with a weight of 90% ("level 3") for a certain, even more restricted range of time slots (I assigned decreasing weights so that the combination of these constraints would be logically consistent).
Are such somewhat redundant constraints problematic? Do they take a long time to generate?

Thanks for reading all the way to the end :).
#4
Quote from: Liviu Lalescu on July 02, 2026, 10:54:41 AMActivity = subactivity  :)
Ok I understand,
The fact is that when importing large numbers of activities spanning several actual weeks—as I do—it's much easier to import, for example, a single activity labeled 1+1+1+1+1+1 with the tags week1|week2|week3|week4|week5|week6 rather than six separate activities, each with the tag week xxx.
I'll see how I can "automatically" modify my import file to use the second method instead.
In any case, thanks for everything.
#5
Quote from: Liviu Lalescu on July 02, 2026, 05:49:44 AMHello,

Your first problem: indeed, it is difficult, there is no such constraint in FET. You must devise difficult tricks, and yours might be good. I will add a TODO item for new constraints for this.
Thanks for the response and the add to TODO list.
I've tried to do this on a broad scale rather than on a teacher-by-teacher basis, particularly by using tags, but so far without success.

Quote from: Liviu Lalescu on July 02, 2026, 05:49:44 AMAbout your second question: the two methods are equivalent in efficiency. It is only a matter of taste.
So I have a related question:
Currently, I first have to create an activity in the Activities menu and then edit its sub-activities in the sub-activities menu, which led me to think there was a conceptual difference between activities and sub-activities.
You seem to be saying that there isn't.
So why isn't it possible in FET to create or add sub-activities directly in the FET sub-activities menu?
#6
Hello,
I'm still encountering questions, in the same context, about the best way to handle constraints (again provided in the attachment):

In the case of teacher1: this is a teacher who has one activity each real week with students1 and students2. This teacher will therefore be occupied for 2 hours per real week. He would like his activity slots to be the same each real week, but not necessarily with the same students at the same times.
Currently, I handle this by creating a fictitious activity for teacher1 with no learners, then splitting it into 6 sub-activities (one per real week); I impose the following constraints:
– must begin or end teacher1's' day
– Minimum number of days=5 between two sub-activities
– Maximum number of days=25 between two sub-activities
– Activities must have the same starting hour

Finally, I specify:
 – Maximum days per week=6 for Teacher1 (to ensure the real activities occur on the same actual days as the fictitious activity);
 – Maximum gaps per day=0 for Teacher1 (to ensure that the real activities are scheduled right next to the fake activities)

This works, but I have to do this for all 80 of my teachers, so I'd like to know if there's a more efficient way to set these constraints.

Also, I didn't understand the conceptual difference when, for example, modeling a class that takes place three times per real week over two real weeks.
Is it better to create a single activity divided into six sub-activities with the tags week1/week1/week1/week4/week4/week4, or to create two different activities (with the tags week1/week4) with three sub-activities each?
I must have missed some threads discussing the nuances of activities and sub-activities.
Thank you for your feedback.
#7
I understand your "sorry" better now.
Thanks for the suggestion to switch to French, but I think the forum will be easier to read if it stays in English.
Best regards,
#8
I'm not sure why you're sorry, but I'm the one who should be sorry. My text is automatically translated using an app (since my English is still pretty poor), so there might be some misunderstandings because of that.
In any case, thank you so much for your openness and responsiveness!
#9
It's up to you—I obviously don't know all the ins and outs of FET's internal coding.
I'm looking for alternatives that would be more acceptable to FET. Another idea might be to add a "Generate in a new instance" button in addition to the "Generate" button.
What do you think?
Best regards,
#10
I understand that too. Working for the sake of glory has never put food on the table.
Thanks for the TODO list.
Unfortunately, I'm tied to a French government agency that's very strict about external expenses.
Perhaps it would be easier to link multiple FET instances with a well-placed FET file reload button (for example, in the subwindow for generating timetables)?
#11
It is indeed possible to open two instances of FET on the same file, but the two instances are independent. Any changes (including saves) made in one instance will not be reflected in the other.
Currently, you must first close any child window of the second instance, then reload the FET file there so that the changes are visible, and then reopen the closed child window.
In other words, you can currently only have a single child window open on the same FET instance, whereas sometimes you might want to have several. And be able to generate a timetable in parallel.
Greetings,
#12
Hello,
I've noticed that to start generating a timetable, you have to open the dedicated window from the main window and then start the generation process.
Would it be possible for that dedicated window to operate independently of the main window?
The idea would be to be able to work on a FET file, save the file, start a generation, and continue working on the FET file at the same time (and perhaps not be able to save until the generation is finished). With timetable generations that take several minutes, this would save valuable time. It could also be used to simultaneously verify certain aspects of the selected constraints, as well as the teachers or students involved.
Greetings
#13
So that confirms what I thought—it's not possible at the moment.
Thanks for adding it to the TODO list. ;D
#14
Hello  :) ,
I'm encountering a problem in the same context that I don't know how to handle. I've attached a minimal file that illustrates my issue.
Let's say that teacher1 wants to have the same time slot every real week (except in exceptional cases) with the students1 group, and that Thursday in week2 is a holiday. Given that teacher2 teaches chemistry to the same group, students1, in two 3-hour blocks—either on Monday, Tuesday, or Thursday in week2.
My constraints are as follows:
teacher1's activities start at the same time (90% of the time(
minimum days between teacher1's activities is 5 (95% of the time)
maximum days between teacher1's activities is 25 (100% of the time)
The proposed percentages are to prevent FET from searching for a solution for too long.

The problem is that sometimes FET will propose a solution where Teacher1 has classes in the same time slot every actual week except week2 which is the expected behavior—but sometimes it may also propose a solution with classes on Tuesday in week1 and on Mondays in weeks 3 through 6.
To avoid this, I haven't found any other solution than to remove teacher1's activity in week 2 from the constraint "minimum days between teacher1 activities is 5 to 95%" and to add a constraint of the type "minimum days between teacher1's activities in week1 and week3 is 10."
However, I don't know in advance whether Teacher1 will have a problem with the holiday in week2; this is due to the scheduling of teacher2's class, which is constrained by the holiday.
In other words, I feel like I have to, by default, perform this adjustment for all activities in a given week whenever there's a specific issue like unavailable students or a holiday (which happens, in my case, every other week).
How can I use Terms mode to simulate a constraint like this: teacher1's activities are on the same real day (95% of time)?
Best regards,
#15
Hi,
I wasn't familiar with the "break" constraint; that's interesting.
Your idea of using constraints on sub-activities by specifying the index won't work in my case because there's no guarantee that the first sub-activity actually starts in week 1. For example, the chemistry activity with teacher3 is split into five sub-activities but doesn't start until week 3.
However, I will be able to use a CSV import that specifies a tag for each sub-activity indicating the actual week it applies to. It will then be possible to specify preferred time constraints that apply globally to all activities and are based solely on the actual week tags. I've checked, and this significantly reduces the number of constraints per course!

Thank you very much! :)  I'll look into this further for my imports and see how to automatically generate the correct tags.