layout | title |
---|---|
default |
Additional Distribution Constraints |
The following additional distribution constraint types can be added into UniTime. They are not present in UniTime out of the box as they have either a special purpose or additional parameters that need to be provided before the distribution constraint can be registered. You can see the registered distribution constraint types on the Administration > Solver > Distribution Types page.
To register any of the following constraint types:
- Download the appropriate XML (also available in GitHub, see Documentation/Scripts)
- Use the Administration > Academic Sessions > Data Exchange page to import it. This will create a script that will register the appropriate distribution type(s).
- Use the Administration > Utilities > Scripts page to run the registration script. The script is named Distribution Types: Create XXX Constraints, where XXX is the constraint name.
- Verify that the distribution types have been registered using the Administration > Solver > Distribution Types page.
Script: Create Max Block Constraint.xml
The MaxBlock constraint checks for too big blocks of back-to-back classes of an instructor on a day.
It has two parameters: a maximal length of a back-to-back block that is allowed and a minimum length of a break between two classes not to be considered in the same block.
Reference _MaxBlock:120:30_
translates to a maximal block of at most 2 hours (120 minutes) with classes not more than 30 minutes apart.
Implemented by the MaxBlockFlexibleConstraint class.
Script: Create Max Break Constraint.xml
The MaxBreaks constraint limits the number of blocks of non back-to-back classes of an instructor on a day.
It has two parameters: a maximal number of breaks and a minimal length of a break between two classes not to be considered in the same block.
Reference _MaxBreaks:1:30_
translates to a maximum number of one break (two blocks) on a day of classes not more than 30 minutes apart.
Implemented by the MaxBreaksFlexibleConstraint class.
Script: Create Max Holes Constraint.xml
The MaxHoles constraint limits the number of free time (holes) for an instructor on a day.
It has one parameter: a maximal amount of free time in minutes (between the first and the last class on a day) that an instructor is allowed to have without a penalization.
For example, reference _MaxHoles:120_
translates to a maximum number of two hours of total free time between the first and the last class on a day.
If required, having more free time is prohibited. If preferred or strongly preferred, the excessive free time is penalized.
Implemented by the MaxHolesFlexibleConstraint class.
Script: Create Max Hours A Day Constraint.xml
The MaxHours constraint limits the number of hours that can be taught on a day.
Classes are to be placed in a way that there is no more than N hours in any day.
Implemented by the GroupConstraint class (see ConstraintType.MAX_HRS_DAY
).
Script: Create Work Day Constraints.xml
The WorkDay constraint limits the number of hours between the start of the first class and the end of the last class on a day.
Classes are to be placed in a way that there are no more than N hours between the start of the first class and the end of the last class on any day.
Implemented by the GroupConstraint class (see ConstraintType.WORKDAY
).
Script: Create Max Days Constraints.xml
Classes must / should be placed in no more than N week days.
The MaxDays constraint limits the number of days of week during which the given set of classes are taught.
It has one parameter: a maximal number of week days during which the given set of classes can be placed.
Reference _MaxDays:2_
translates to a maximum number of 2 days a week.
Implemented by the MaxDaysFlexibleConstraint class.
Script: Create Max Half-Days Constraints.xml
Classes must / should be placed in no more than N week half-days. A class starting before noon is considered a morning class, a class starting at noon or later is considered an afternoon class.
The MaxHalfDays constraint limits the number of half-days of week during which the given set of classes are taught.
It has one parameter: a maximal number of week half-days during which the given set of classes can be placed.
A day is split by noon (which can be changed using General.HalfDaySlot
parameter). A class starting before noon is considered a morning class (despite of its end), a class starting at noon or later is considered an afternoon class.
Reference _MaxHalfDays:4_
translates to a maximum number of 4 half-days a week.
Implemented by the MaxHalfDaysFlexibleConstraint class.
Script: Create Max Weeks Constraint.xml
The MaxWeeks constraint limits the number of weeks during which the given set of classes are taught.
It has two parameters: a maximal number of weeks during which the given set of classes can be placed and a day combination indicating what days of the week are considered.If no days of the week are selected, all days of the week are considered.
Reference _MaxWeeks:3:6_
translates to a maximum number of 3 weeks, but only for classes that are placed on Fridays and Saturdays (64 for Monday, 32 for Tuesday, 16 for Wednesday, 8 for Thursday, 4 for Friday, 2 for Saturday, and 1 for Sunday). If the second parameter is zero, all days of week are considered.
Implemented by the MaxWeeksFlexibleConstraint class.
Script: Create BTB-Following Weeks Constraints.xml
Back-To-Back Weeks: Given classes must be taught on weeks that are back-to-back (the gap between the two assigned date patterns is less than a week).
When prohibited or (strongly) discouraged: any two classes must have at least a week gap in between.
Following Weeks: Given classes must be taught on weeks that are back-to-back and in the given order.
When prohibited or (strongly) discouraged: given classes must be taught on weeks in the given order with at least one week between any two following classes.
Implemented by the GroupConstraint class (see ConstraintType.BTB_WEEKS
and ConstraintType.FOLLOWING_WEEKS
).
Script: Create Max Consecutive Days Constraints.xml
Classes must / should be placed on no more than N consecutive days each week.
Please note that individual weeks are considered when the solver parameter FlexibleConstraint.CheckWeeks
is set to true (defaults to false).
The MaxConsDays constraint limits the number of consecutive days of the week during which the given set of classes is taught.
It has one parameter: a maximal number of consecutive weekdays during which the given set of classes can be placed.
Reference _MaxConsDays:2_
translates to a maximum number of 2 consecutive days a week.
Implemented by the MaxConsecutiveDaysFlexibleConstraint class.
Script: Create Same Days-Room-Start Constraint.xml
Given classes must start at the same time of day, on the same days, and in the same room.
It is the combination of Same Days, Same Start, and Same Room distribution preferences.
When prohibited or (strongly) discouraged: Any pair of classes cannot be taught on the same days during the same time in the same room.
Implemented by the GroupConstraint class (see ConstraintType.SAME_DAYS_ROOM_START
).
Script: Create Daybreak Constraint.xml
The Daybreak constraint checks for cases when there is an evening class and a morning class the following day.
There should be at least the given number of hours between an evening class followed by a morning class the next day.
The constraint can also be parameterized by the distance between the two classes: The constraint only triggers when the distance between the two classes is over the provided distance.