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.
Max Block
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.
Max Break
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.
Max Holes
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.
Max Hours A Day
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).
Work 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).
Max Days
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.
Max Half-Days
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.
Max Weeks
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.
Back-To-Back/Following Weeks
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).