net.sf.cpsolver.coursett.constraint
Enum GroupConstraint.ConstraintType

java.lang.Object
  extended by java.lang.Enum<GroupConstraint.ConstraintType>
      extended by net.sf.cpsolver.coursett.constraint.GroupConstraint.ConstraintType
All Implemented Interfaces:
Serializable, Comparable<GroupConstraint.ConstraintType>
Enclosing class:
GroupConstraint

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

Group constraint type.


Enum Constant Summary
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.
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.
CH_NOTOVERLAP
          Children Cannot Overlap: If parent classes do not overlap in time, children classes can not overlap in time as well.
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).
LINKED_SECTIONS
          Classes (of different courses) are to be attended by the same students.
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.
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
          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_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).
 
Method Summary
static GroupConstraint.ConstraintType get(String reference)
          Constraint type from reference
 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(GroupConstraint gc, Placement plc1, Placement plc2)
          True if a required or preferred constraint is satisfied between a pair of placements
 boolean isViolated(GroupConstraint gc, Placement plc1, Placement plc2)
          True if a prohibited or discouraged constraint is satisfied between a pair of placements
 String reference()
          Constraint reference
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_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.


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.

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

reference

public String reference()
Constraint reference


getName

public String getName()
Constraint name


getMin

public int getMin()
Minimum (gap) parameter


getMax

public int getMax()
Maximum (gap, hours a day) parameter


is

public boolean is(GroupConstraint.Flag f)
Flag check (true if contains given flag)


get

public static GroupConstraint.ConstraintType get(String reference)
Constraint type from reference


isSatisfied

public boolean isSatisfied(GroupConstraint gc,
                           Placement plc1,
                           Placement plc2)
True if a required or preferred constraint is satisfied between a pair of placements


isViolated

public boolean isViolated(GroupConstraint gc,
                          Placement plc1,
                          Placement plc2)
True if a prohibited or discouraged constraint is satisfied between a pair of placements



Copyright © 2014 UniTime LLC. All Rights Reserved.