Additional Distribution Constraints

The following additional distribution constraints 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 type:
  1. Download the appropriate XML (also available in GitHub, see Documentation/Scripts)
  2. Use the Administration > Academic Sessions > Data Exchange page to import it. This will create a script that will register the appropriate distribution type(s).
  3. 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.
  4. Verify that the distribution types have been registered using the Administration > Solver > Distribution Types page.
Max Block


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 minimal 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


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


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


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


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


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


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


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.