net.sf.cpsolver.coursett.constraint
Enum GroupConstraint.ConstraintType
java.lang.Object
java.lang.Enum<GroupConstraint.ConstraintType>
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). |
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.
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.