org.cpsolver.coursett.constraint

## Enum GroupConstraint.ConstraintType

- java.lang.Object
- - java.lang.Enum<GroupConstraint.ConstraintType>
  - - org.cpsolver.coursett.constraint.GroupConstraint.ConstraintType

- All Implemented Interfaces:
    Serializable, Comparable<GroupConstraint.ConstraintType>, GroupConstraint.AssignmentPairCheck, GroupConstraint.ConstraintTypeInterface
  Enclosing class:
    GroupConstraint

      public static enum GroupConstraint.ConstraintType
      extends Enum<GroupConstraint.ConstraintType>
      implements GroupConstraint.ConstraintTypeInterface

  Group constraint type.

- - ### Enum Constant Summary

    Enum Constants
    Enum Constant and Description
    `BTB` Back-To-Back & Same Room: Classes must be offered in adjacent time segments and must be placed in the same room.
    `BTB_DAY` Back-To-Back Day: Classes must be offered on adjacent days and may be placed in different rooms.
    `BTB_PRECEDENCE` Back-To-Back Precedence: Given classes have to be taught in the given order, on the same days, and in adjacent time segments.
    `BTB_TIME` Back-To-Back: Classes must be offered in adjacent time segments but may be placed in different rooms.
    `BTB_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).
    `CAN_SHARE_ROOM` Can Share Room: Given classes can share the room (use the room in the same time) if the room is big enough.
    `DIFF_TIME` Different Time: Given classes cannot overlap in time.
    `EVERY_OTHER_DAY` Two Days After: The second class has to be placed two days after the first class (Monday → Wednesday, Tuesday → Thurday, Wednesday → Friday, Thursday → Monday, Friday → Tuesday).
    `FOLLOWING_DAY` Next Day: The second class has to be placed on the following day of the first class (if the first class is on Friday, second class have to be on Monday).
    `FOLLOWING_WEEKS` Given classes must be taught on weeks that are back-to-back and in the given order.
    `CH_NOTOVERLAP` Children Cannot Overlap: If parent classes do not overlap in time, children classes can not overlap in time as well.
    `LINKED_SECTIONS` Classes (of different courses) are to be attended by the same students.
    `MAX_HRS_DAY` At Most X Hours A Day: Classes are to be placed in a way that there is no more than given number of hours in any day.
    `MAX_HRS_DAY_10` At Most 10 Hours A Day: Classes are to be placed in a way that there is no more than ten hours in any day.
    `MAX_HRS_DAY_3` At Most 3 Hours A Day: Classes are to be placed in a way that there is no more than three hours in any day.
    `MAX_HRS_DAY_4` At Most 4 Hours A Day: Classes are to be placed in a way that there is no more than four hours in any day.
    `MAX_HRS_DAY_5` At Most 5 Hours A Day: Classes are to be placed in a way that there is no more than five hours in any day.
    `MAX_HRS_DAY_6` At Most 6 Hours A Day: Classes are to be placed in a way that there is no more than six hours in any day.
    `MAX_HRS_DAY_7` At Most 7 Hours A Day: Classes are to be placed in a way that there is no more than seven hours in any day.
    `MAX_HRS_DAY_8` At Most 8 Hours A Day: Classes are to be placed in a way that there is no more than eight hours in any day.
    `MAX_HRS_DAY_9` At Most 9 Hours A Day: Classes are to be placed in a way that there is no more than nine hours in any day.
    `MEET_WITH` Meet Together: Given classes are meeting together (same as if the given classes require constraints Can Share Room, Same Room, Same Time and Same Days all together).
    `MEET_WITH_WEEKS` Meet Together & Same Weeks: Given classes are meeting together (same as if the given classes require constraints Can Share Room, Same Room, Same Time, Same Days and Same Weeks all together).
    `MIN_GAP`
    `NDB_GT_1` More Than 1 Day Between: Given classes must have two or more days in between.
    `NHB_1` 1 Hour Between: Given classes must have exactly 1 hour in between the end of one and the beginning of another.
    `NHB_1_5` 1.5 Hour Between: Given classes must have exactly 90 minutes in between the end of one and the beginning of another.
    `NHB_2` 2 Hours Between: Given classes must have exactly 2 hours in between the end of one and the beginning of another.
    `NHB_3` 3 Hours Between: Given classes must have exactly 3 hours in between the end of one and the beginning of another.
    `NHB_4` 4 Hours Between: Given classes must have exactly 4 hours in between the end of one and the beginning of another.
    `NHB_4_5` 4.5 Hours Between: Given classes must have exactly 4.5 hours in between the end of one and the beginning of another.
    `NHB_5` 5 Hours Between: Given classes must have exactly 5 hours in between the end of one and the beginning of another.
    `NHB_6` 6 Hours Between: Given classes must have exactly 6 hours in between the end of one and the beginning of another.
    `NHB_7` 7 Hours Between: Given classes must have exactly 7 hours in between the end of one and the beginning of another.
    `NHB_8` 8 Hours Between: Given classes must have exactly 8 hours in between the end of one and the beginning of another.
    `NHB_GTE_1` At Least 1 Hour Between: Given classes have to have 1 hour or more in between.
    `NHB_LT_6` Less Than 6 Hours Between: Given classes must have less than 6 hours from end of first class to the beginning of the next.
    `PRECEDENCE` Precedence: Given classes have to be taught in the given order (the first meeting of the first class has to end before the first meeting of the second class etc.)
    `SAME_DATES` Given classes must be taught on the same dates.
    `SAME_DAYS` Same Days: Given classes must be taught on the same days.
    `SAME_DAYS_ROOM_TIME` Same Days-Room-Time: Given classes must be taught at the same time of day, on the same days and in the same room.
    `SAME_DAYS_TIME` Same Days-Time: Given classes must be taught at the same time of day and on the same days.
    `SAME_INSTR` Same Instructor: Given classes are treated as they are taught by the same instructor, i.e., they cannot overlap in time and if they are back-to-back the assigned rooms cannot be too far (instructor limit is used).
    `SAME_ROOM` Same Room: Given classes must be taught in the same room.
    `SAME_START` Same Start Time: Given classes must start during the same half-hour period of a day (independent of the actual day the classes meet).
    `SAME_STUDENTS` Same Students: Given classes are treated as they are attended by the same students, i.e., they cannot overlap in time and if they are back-to-back the assigned rooms cannot be too far (student limit is used).
    `SAME_TIME` Same Time: Given classes must be taught at the same time of day (independent of the actual day the classes meet).
    `SAME_WEEKS` Given classes must be taught during the same weeks (i.e., must have the same date pattern).
    `WORKDAY` Work Day: Classes are to be placed in a way that there is no more than given number of hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_10` 10 Hour Work Day: Classes are to be placed in a way that there is no more than ten hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_11` 11 Hour Work Day: Classes are to be placed in a way that there is no more than eleven hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_12` 12 Hour Work Day: Classes are to be placed in a way that there is no more than twelve hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_4` 4 Hour Work Day: Classes are to be placed in a way that there is no more than four hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_5` 5 Hour Work Day: Classes are to be placed in a way that there is no more than five hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_6` 6 Hour Work Day: Classes are to be placed in a way that there is no more than six hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_7` 7 Hour Work Day: Classes are to be placed in a way that there is no more than seven hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_8` 8 Hour Work Day: Classes are to be placed in a way that there is no more than eight hours between the start of the first class and the end of the class one on any day.
    `WORKDAY_9` 9 Hour Work Day: Classes are to be placed in a way that there is no more than nine hours between the start of the first class and the end of the class one on any day.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `static GroupConstraint.ConstraintType` | `get(String reference)` Deprecated. use `GroupConstraint.getConstraintType(String)` instead
    `int` | `getMax()` Maximum (gap, hours a day) parameter
    `int` | `getMin()` Minimum (gap) parameter
    `String` | `getName()` Constraint name
    `boolean` | `is(GroupConstraint.Flag f)` Flag check (true if contains given flag)
    `boolean` | `isSatisfied(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)` True if a required or preferred constraint is satisfied between a pair of placements
    `boolean` | `isViolated(Assignment<Lecture,Placement> assignment, GroupConstraint gc, Placement plc1, Placement plc2)` True if a prohibited or discouraged constraint is satisfied between a pair of placements
    `String` | `reference()` Constraint reference
    `GroupConstraint.ConstraintType` | `type()` Constraint type
    `static GroupConstraint.ConstraintType` | `valueOf(String name)` Returns the enum constant of this type with the specified name.
    `static GroupConstraint.ConstraintType[]` | `values()` Returns an array containing the constants of this enum type, in the order they are declared.

    - ### Methods inherited from class java.lang.Enum

      `clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

    - ### Methods inherited from class java.lang.Object

      `getClass, notify, notifyAll, wait, wait, wait`

- - ### Enum Constant Detail

    - #### SAME_TIME

          public static final GroupConstraint.ConstraintType SAME_TIME

      Same Time: Given classes must be taught at the same time of day (independent of the actual day the classes meet). For the classes of the same length, this is the same constraint as same start. For classes of different length, the shorter one cannot start before, nor end after, the longer one.
      When prohibited or (strongly) discouraged: one class may not meet on any day at a time of day that overlaps with that of the other. For example, one class can not meet M 7:30 while the other meets F 7:30. Note the difference here from the different time constraint that only prohibits the actual class meetings from overlapping.

    - #### SAME_DAYS

          public static final GroupConstraint.ConstraintType SAME_DAYS

      Same Days: Given classes must be taught on the same days. In case of classes of different time patterns, a class with fewer meetings must meet on a subset of the days used by the class with more meetings. For example, if one class pattern is 3x50, all others given in the constraint can only be taught on Monday, Wednesday, or Friday. For a 2x100 class MW, MF, WF is allowed but TTh is prohibited.
      When prohibited or (strongly) discouraged: any pair of classes classes cannot be taught on the same days (cannot overlap in days). For instance, if one class is MFW, the second has to be TTh.

    - #### BTB

          public static final GroupConstraint.ConstraintType BTB

      Back-To-Back & Same Room: Classes must be offered in adjacent time segments and must be placed in the same room. Given classes must also be taught on the same days.
      When prohibited or (strongly) discouraged: classes cannot be back-to-back. There must be at least half-hour between these classes, and they must be taught on the same days and in the same room.

    - #### BTB_TIME

          public static final GroupConstraint.ConstraintType BTB_TIME

      Back-To-Back: Classes must be offered in adjacent time segments but may be placed in different rooms. Given classes must also be taught on the same days.
      When prohibited or (strongly) discouraged: no pair of classes can be taught back-to-back. They may not overlap in time, but must be taught on the same days. This means that there must be at least half-hour between these classes.

    - #### DIFF_TIME

          public static final GroupConstraint.ConstraintType DIFF_TIME

      Different Time: Given classes cannot overlap in time. They may be taught at the same time of day if they are on different days. For instance, MF 7:30 is compatible with TTh 7:30.
      When prohibited or (strongly) discouraged: every pair of classes in the constraint must overlap in time.

    - #### NHB_1

          public static final GroupConstraint.ConstraintType NHB_1

      1 Hour Between: Given classes must have exactly 1 hour in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 1 hour in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_2

          public static final GroupConstraint.ConstraintType NHB_2

      2 Hours Between: Given classes must have exactly 2 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 2 hours in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_3

          public static final GroupConstraint.ConstraintType NHB_3

      3 Hours Between: Given classes must have exactly 3 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 3 hours in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_4

          public static final GroupConstraint.ConstraintType NHB_4

      4 Hours Between: Given classes must have exactly 4 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 4 hours in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_5

          public static final GroupConstraint.ConstraintType NHB_5

      5 Hours Between: Given classes must have exactly 5 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 5 hours in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_6

          public static final GroupConstraint.ConstraintType NHB_6

      6 Hours Between: Given classes must have exactly 6 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 6 hours in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_7

          public static final GroupConstraint.ConstraintType NHB_7

      7 Hours Between: Given classes must have exactly 7 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 7 hours in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_8

          public static final GroupConstraint.ConstraintType NHB_8

      8 Hours Between: Given classes must have exactly 8 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 8 hours in between. They may not overlap in time but must be taught on the same days.

    - #### SAME_START

          public static final GroupConstraint.ConstraintType SAME_START

      Same Start Time: Given classes must start during the same half-hour period of a day (independent of the actual day the classes meet). For instance, MW 7:30 is compatible with TTh 7:30 but not with MWF 8:00.
      When prohibited or (strongly) discouraged: any pair of classes in the given constraint cannot start during the same half-hour period of any day of the week.

    - #### SAME_ROOM

          public static final GroupConstraint.ConstraintType SAME_ROOM

      Same Room: Given classes must be taught in the same room.
      When prohibited or (strongly) discouraged: any pair of classes in the constraint cannot be taught in the same room.

    - #### NHB_GTE_1

          public static final GroupConstraint.ConstraintType NHB_GTE_1

      At Least 1 Hour Between: Given classes have to have 1 hour or more in between.
      When prohibited or (strongly) discouraged: given classes have to have less than 1 hour in between.

    - #### NHB_LT_6

          public static final GroupConstraint.ConstraintType NHB_LT_6

      Less Than 6 Hours Between: Given classes must have less than 6 hours from end of first class to the beginning of the next. Given classes must also be taught on the same days.
      When prohibited or (strongly) discouraged: given classes must have 6 or more hours between. This constraint does not carry over from classes taught at the end of one day to the beginning of the next.

    - #### NHB_1_5

          public static final GroupConstraint.ConstraintType NHB_1_5

      1.5 Hour Between: Given classes must have exactly 90 minutes in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 90 minutes in between. They may not overlap in time but must be taught on the same days.

    - #### NHB_4_5

          public static final GroupConstraint.ConstraintType NHB_4_5

      4.5 Hours Between: Given classes must have exactly 4.5 hours in between the end of one and the beginning of another. As with the back-to-back time constraint, given classes must be taught on the same days.
      When prohibited or (strongly) discouraged: classes can not have 4.5 hours in between. They may not overlap in time but must be taught on the same days.

    - #### SAME_STUDENTS

          public static final GroupConstraint.ConstraintType SAME_STUDENTS

      Same Students: Given classes are treated as they are attended by the same students, i.e., they cannot overlap in time and if they are back-to-back the assigned rooms cannot be too far (student limit is used).

    - #### SAME_INSTR

          public static final GroupConstraint.ConstraintType SAME_INSTR

      Same Instructor: Given classes are treated as they are taught by the same instructor, i.e., they cannot overlap in time and if they are back-to-back the assigned rooms cannot be too far (instructor limit is used).
      If the constraint is required and the classes are back-to-back, discouraged and strongly discouraged distances between assigned rooms are also considered.

    - #### CAN_SHARE_ROOM

          public static final GroupConstraint.ConstraintType CAN_SHARE_ROOM

      Can Share Room: Given classes can share the room (use the room in the same time) if the room is big enough.

    - #### PRECEDENCE

          public static final GroupConstraint.ConstraintType PRECEDENCE

      Precedence: Given classes have to be taught in the given order (the first meeting of the first class has to end before the first meeting of the second class etc.)
      When prohibited or (strongly) discouraged: classes have to be taught in the order reverse to the given one.

    - #### BTB_DAY

          public static final GroupConstraint.ConstraintType BTB_DAY

      Back-To-Back Day: Classes must be offered on adjacent days and may be placed in different rooms.
      When prohibited or (strongly) discouraged: classes can not be taught on adjacent days. They also can not be taught on the same days. This means that there must be at least one day between these classes.

    - #### MEET_WITH

          public static final GroupConstraint.ConstraintType MEET_WITH

      Meet Together: Given classes are meeting together (same as if the given classes require constraints Can Share Room, Same Room, Same Time and Same Days all together).

    - #### NDB_GT_1

          public static final GroupConstraint.ConstraintType NDB_GT_1

      More Than 1 Day Between: Given classes must have two or more days in between.
      When prohibited or (strongly) discouraged: given classes must be offered on adjacent days or with at most one day in between.

    - #### CH_NOTOVERLAP

          public static final GroupConstraint.ConstraintType CH_NOTOVERLAP

      Children Cannot Overlap: If parent classes do not overlap in time, children classes can not overlap in time as well.
      Note: This constraint only needs to be put on the parent classes. Preferred configurations are Required All Classes or Pairwise (Strongly) Preferred.

    - #### FOLLOWING_DAY

          public static final GroupConstraint.ConstraintType FOLLOWING_DAY

      Next Day: The second class has to be placed on the following day of the first class (if the first class is on Friday, second class have to be on Monday).
      When prohibited or (strongly) discouraged: The second class has to be placed on the previous day of the first class (if the first class is on Monday, second class have to be on Friday).
      Note: This constraint works only between pairs of classes.

    - #### EVERY_OTHER_DAY

          public static final GroupConstraint.ConstraintType EVERY_OTHER_DAY

      Two Days After: The second class has to be placed two days after the first class (Monday → Wednesday, Tuesday → Thurday, Wednesday → Friday, Thursday → Monday, Friday → Tuesday).
      When prohibited or (strongly) discouraged: The second class has to be placed two days before the first class (Monday → Thursday, Tuesday → Friday, Wednesday → Monday, Thursday → Tuesday, Friday → Wednesday).
      Note: This constraint works only between pairs of classes.

    - #### MAX_HRS_DAY_3

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_3

      At Most 3 Hours A Day: Classes are to be placed in a way that there is no more than three hours in any day.

    - #### MAX_HRS_DAY_4

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_4

      At Most 4 Hours A Day: Classes are to be placed in a way that there is no more than four hours in any day.

    - #### MAX_HRS_DAY_5

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_5

      At Most 5 Hours A Day: Classes are to be placed in a way that there is no more than five hours in any day.

    - #### MAX_HRS_DAY_6

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_6

      At Most 6 Hours A Day: Classes are to be placed in a way that there is no more than six hours in any day.

    - #### MAX_HRS_DAY_7

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_7

      At Most 7 Hours A Day: Classes are to be placed in a way that there is no more than seven hours in any day.

    - #### MAX_HRS_DAY_8

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_8

      At Most 8 Hours A Day: Classes are to be placed in a way that there is no more than eight hours in any day.

    - #### MAX_HRS_DAY_9

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_9

      At Most 9 Hours A Day: Classes are to be placed in a way that there is no more than nine hours in any day.

    - #### MAX_HRS_DAY_10

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY_10

      At Most 10 Hours A Day: Classes are to be placed in a way that there is no more than ten hours in any day.

    - #### MAX_HRS_DAY

          public static final GroupConstraint.ConstraintType MAX_HRS_DAY

      At Most X Hours A Day: Classes are to be placed in a way that there is no more than given number of hours in any day.

    - #### SAME_WEEKS

          public static final GroupConstraint.ConstraintType SAME_WEEKS

      Given classes must be taught during the same weeks (i.e., must have the same date pattern).
      When prohibited or (strongly) discouraged: any two classes must have non overlapping date patterns.

    - #### LINKED_SECTIONS

          public static final GroupConstraint.ConstraintType LINKED_SECTIONS

      Classes (of different courses) are to be attended by the same students. For instance, if class A1 (of a course A) and class B1 (of a course B) are linked, a student requesting both courses must attend A1 if and only if he also attends B1. This is a student sectioning constraint that is interpreted as Same Students constraint during course timetabling.

    - #### BTB_PRECEDENCE

          public static final GroupConstraint.ConstraintType BTB_PRECEDENCE

      Back-To-Back Precedence: Given classes have to be taught in the given order, on the same days, and in adjacent time segments. When prohibited or (strongly) discouraged: Given classes have to be taught in the given order, on the same days, but cannot be back-to-back.

    - #### SAME_DAYS_TIME

          public static final GroupConstraint.ConstraintType SAME_DAYS_TIME

      Same Days-Time: Given classes must be taught at the same time of day and on the same days. It is the combination of Same Days and Same Time distribution preferences. When prohibited or (strongly) discouraged: Any pair of classes classes cannot be taught on the same days during the same time.

    - #### SAME_DAYS_ROOM_TIME

          public static final GroupConstraint.ConstraintType SAME_DAYS_ROOM_TIME

      Same Days-Room-Time: Given classes must be taught at the same time of day, on the same days and in the same room. It is the combination of Same Days, Same Time and Same Room distribution preferences. Note that this constraint is the same as Meet Together constraint, except it does not allow room sharing. In other words, it is only useful when these classes are taught during non-overlapping date patterns. When prohibited or (strongly) discouraged: Any pair of classes classes cannot be taught on the same days during the same time in the same room.

    - #### WORKDAY_6

          public static final GroupConstraint.ConstraintType WORKDAY_6

      6 Hour Work Day: Classes are to be placed in a way that there is no more than six hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_7

          public static final GroupConstraint.ConstraintType WORKDAY_7

      7 Hour Work Day: Classes are to be placed in a way that there is no more than seven hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_8

          public static final GroupConstraint.ConstraintType WORKDAY_8

      8 Hour Work Day: Classes are to be placed in a way that there is no more than eight hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_9

          public static final GroupConstraint.ConstraintType WORKDAY_9

      9 Hour Work Day: Classes are to be placed in a way that there is no more than nine hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_10

          public static final GroupConstraint.ConstraintType WORKDAY_10

      10 Hour Work Day: Classes are to be placed in a way that there is no more than ten hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_11

          public static final GroupConstraint.ConstraintType WORKDAY_11

      11 Hour Work Day: Classes are to be placed in a way that there is no more than eleven hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_12

          public static final GroupConstraint.ConstraintType WORKDAY_12

      12 Hour Work Day: Classes are to be placed in a way that there is no more than twelve hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_4

          public static final GroupConstraint.ConstraintType WORKDAY_4

      4 Hour Work Day: Classes are to be placed in a way that there is no more than four hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY_5

          public static final GroupConstraint.ConstraintType WORKDAY_5

      5 Hour Work Day: Classes are to be placed in a way that there is no more than five hours between the start of the first class and the end of the class one on any day.

    - #### WORKDAY

          public static final GroupConstraint.ConstraintType WORKDAY

      Work Day: Classes are to be placed in a way that there is no more than given number of hours between the start of the first class and the end of the class one on any day.

    - #### MEET_WITH_WEEKS

          public static final GroupConstraint.ConstraintType MEET_WITH_WEEKS

      Meet Together & Same Weeks: Given classes are meeting together (same as if the given classes require constraints Can Share Room, Same Room, Same Time, Same Days and Same Weeks all together).

    - #### MIN_GAP

          public static final GroupConstraint.ConstraintType MIN_GAP

    - #### BTB_WEEKS

          public static final GroupConstraint.ConstraintType BTB_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

          public static final GroupConstraint.ConstraintType 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.

    - #### SAME_DATES

          public static final GroupConstraint.ConstraintType SAME_DATES

      Given classes must be taught on the same dates. If one of the classes meets more often, the class meeting less often can only meet on the dates when the other class is meeting.
      When prohibited or (strongly) discouraged: given classes cannot be taught on the same days (there cannot be a date when both classes are meeting).
      Note: unlike with the same days/weeks constraint, this constraint consider individual meeting dates of both classes.

  - ### Method Detail

    - #### values

          public static GroupConstraint.ConstraintType[] values()

      Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:

          for (GroupConstraint.ConstraintType c : GroupConstraint.ConstraintType.values())
              System.out.println(c);

      Returns:
        an array containing the constants of this enum type, in the order they are declared

    - #### valueOf

          public static GroupConstraint.ConstraintType valueOf(String name)

      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)
      Parameters:
        `name` - the name of the enum constant to be returned.
      Returns:
        the enum constant with the specified name
      Throws:
        `IllegalArgumentException` - if this enum type has no constant with the specified name
        `NullPointerException` - if the argument is null

    - #### type

          public GroupConstraint.ConstraintType type()

      Constraint type
      Specified by:
        `type` in interface `GroupConstraint.ConstraintTypeInterface`
      Returns:
        constraint type

    - #### reference

          public String reference()

      Constraint reference
      Specified by:
        `reference` in interface `GroupConstraint.ConstraintTypeInterface`
      Returns:
        constraint reference

    - #### getName

          public String getName()

      Constraint name
      Specified by:
        `getName` in interface `GroupConstraint.ConstraintTypeInterface`
      Returns:
        constraint name

    - #### getMin

          public int getMin()

      Minimum (gap) parameter
      Specified by:
        `getMin` in interface `GroupConstraint.ConstraintTypeInterface`
      Returns:
        minimum gap (first constraint parameter)

    - #### getMax

          public int getMax()

      Maximum (gap, hours a day) parameter
      Specified by:
        `getMax` in interface `GroupConstraint.ConstraintTypeInterface`
      Returns:
        maximum gap (second constraint parameter)

    - #### is

          public boolean is(GroupConstraint.Flag f)

      Flag check (true if contains given flag)
      Specified by:
        `is` in interface `GroupConstraint.ConstraintTypeInterface`
      Parameters:
        `f` - a flag to check
      Returns:
        true if present

    - #### get

          @Deprecated
          public static GroupConstraint.ConstraintType get(String reference)

      Deprecated. use `GroupConstraint.getConstraintType(String)` instead
      Constraint type from reference
      Parameters:
        `reference` - constraint reference
      Returns:
        constraint of the reference

    - #### isSatisfied

          public boolean isSatisfied(Assignment<Lecture,Placement> assignment,
                                     GroupConstraint gc,
                                     Placement plc1,
                                     Placement plc2)

      True if a required or preferred constraint is satisfied between a pair of placements
      Specified by:
        `isSatisfied` in interface `GroupConstraint.AssignmentPairCheck`
      Parameters:
        `assignment` - current assignment
        `gc` - current constraint
        `plc1` - first placement
        `plc2` - second placement
      Returns:
        true if the two placements are consistent with the constraint if preferred or required

    - #### isViolated

          public boolean isViolated(Assignment<Lecture,Placement> assignment,
                                    GroupConstraint gc,
                                    Placement plc1,
                                    Placement plc2)

      True if a prohibited or discouraged constraint is satisfied between a pair of placements
      Specified by:
        `isViolated` in interface `GroupConstraint.AssignmentPairCheck`
      Parameters:
        `assignment` - current assignment
        `gc` - current constraint
        `plc1` - first placement
        `plc2` - second placement
      Returns:
        true if the two placements are consistent with the constraint if discouraged or prohibited