public class TimeOverlapsCounter extends ExtensionWithContext<Request,Enrollment,TimeOverlapsCounter.TimeOverlapsCounterContext> implements CanInheritContext<Request,Enrollment,TimeOverlapsCounter.TimeOverlapsCounterContext>
SctAssignment.isAllowOverlap()) can overlap. This class counts
how many overlapping slots there are so that this number can be minimized.
| Modifier and Type | Class and Description |
|---|---|
static class |
TimeOverlapsCounter.Conflict
A representation of a time overlapping conflict
|
class |
TimeOverlapsCounter.TimeOverlapsCounterContext |
| Modifier and Type | Field and Description |
|---|---|
static boolean |
sDebug
Debug flag
|
sMaxSize| Constructor and Description |
|---|
TimeOverlapsCounter(Solver<Request,Enrollment> solver,
DataProperties properties)
Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
afterAssigned(Assignment<Request,Enrollment> assignment,
long iteration,
Enrollment value)
Called after a value is assigned to a variable.
|
void |
afterUnassigned(Assignment<Request,Enrollment> assignment,
long iteration,
Enrollment value)
Called after a value is unassigned from a variable.
|
Set<TimeOverlapsCounter.Conflict> |
allConflicts(Assignment<Request,Enrollment> assignment,
Enrollment enrollment)
The set of all conflicts (
TimeOverlapsCounter.Conflict objects) of the given
enrollment and other enrollments that are assigned to the same student. |
void |
beforeAssigned(Assignment<Request,Enrollment> assignment,
long iteration,
Enrollment value)
Called before a value is assigned to a variable.
|
void |
checkTotalNrConflicts(Assignment<Request,Enrollment> assignment) |
Set<TimeOverlapsCounter.Conflict> |
conflicts(Enrollment enrollment)
Return a set of free and unavailability time conflict of the given enrollment.
|
Set<TimeOverlapsCounter.Conflict> |
conflicts(Enrollment e1,
Enrollment e2)
Return a set of time overlapping conflicts (
TimeOverlapsCounter.Conflict objects) between
given (course) enrollments. |
TimeOverlapsCounter.TimeOverlapsCounterContext |
createAssignmentContext(Assignment<Request,Enrollment> assignment)
Create a new assignment context for the given assignment.
|
Set<TimeOverlapsCounter.Conflict> |
freeTimeConflicts(Enrollment enrollment)
Return a set of free time conflict of the given enrollment.
|
Set<TimeOverlapsCounter.Conflict> |
getAllConflicts(Assignment<Request,Enrollment> assignment)
Return a set of all time overlapping conflicts (
TimeOverlapsCounter.Conflict objects). |
int |
getTotalNrConflicts(Assignment<Request,Enrollment> assignment)
Actual number of all time overlapping conflicts
|
boolean |
inConflict(SctAssignment a1,
SctAssignment a2)
Return true if the given two assignments are overlapping.
|
TimeOverlapsCounter.TimeOverlapsCounterContext |
inheritAssignmentContext(Assignment<Request,Enrollment> assignment,
TimeOverlapsCounter.TimeOverlapsCounterContext parentContext)
Create a new assignment context for the given assignment.
|
Set<TimeOverlapsCounter.Conflict> |
notAvailableTimeConflicts(Enrollment enrollment)
Return a set of unavailability time conflict of the given enrollment.
|
int |
nrConflicts(Enrollment e1,
Enrollment e2)
Return number of time overlapping conflicts that are between two enrollments.
|
int |
nrFreeTimeConflicts(Enrollment enrollment)
Total sum of all free time conflict of the given enrollment.
|
int |
nrNotAvailableTimeConflicts(Enrollment enrollment)
Total sum of all unavailability time conflict of the given enrollment.
|
int |
share(SctAssignment a1,
SctAssignment a2)
If the two sections are overlapping, return the number of slots of the overlap.
|
String |
toString() |
getAssignmentContextReference, getContext, getContext, init, setAssignmentContextReference, unregisterbeforeUnassigned, constraintAdded, constraintRemoved, getModel, getProperties, getSolver, isRegistered, register, variableAdded, variableRemovedpublic static boolean sDebug
public TimeOverlapsCounter(Solver<Request,Enrollment> solver, DataProperties properties)
StudentSectioningModel.setTimeOverlaps(TimeOverlapsCounter) to
set the this instance to the model.solver - constraint solverproperties - configurationpublic boolean inConflict(SctAssignment a1, SctAssignment a2)
a1 - an assignmenta2 - an assignmentpublic int share(SctAssignment a1, SctAssignment a2)
a1 - an assignmenta2 - an assignmentpublic int nrConflicts(Enrollment e1, Enrollment e2)
e1 - an enrollmente2 - an enrollmentpublic Set<TimeOverlapsCounter.Conflict> conflicts(Enrollment e1, Enrollment e2)
TimeOverlapsCounter.Conflict objects) between
given (course) enrollments.e1 - an enrollmente2 - an enrollmentpublic int nrFreeTimeConflicts(Enrollment enrollment)
enrollment - given enrollmentpublic Set<TimeOverlapsCounter.Conflict> freeTimeConflicts(Enrollment enrollment)
enrollment - given enrollmentpublic int nrNotAvailableTimeConflicts(Enrollment enrollment)
enrollment - given enrollmentpublic Set<TimeOverlapsCounter.Conflict> notAvailableTimeConflicts(Enrollment enrollment)
enrollment - given enrollmentpublic Set<TimeOverlapsCounter.Conflict> conflicts(Enrollment enrollment)
enrollment - given enrollmentpublic int getTotalNrConflicts(Assignment<Request,Enrollment> assignment)
assignment - current assignmentpublic void checkTotalNrConflicts(Assignment<Request,Enrollment> assignment)
public Set<TimeOverlapsCounter.Conflict> getAllConflicts(Assignment<Request,Enrollment> assignment)
TimeOverlapsCounter.Conflict objects).assignment - current assignmentpublic void beforeAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)
beforeAssigned in interface ModelListener<Request,Enrollment>beforeAssigned in class Extension<Request,Enrollment>assignment - current assignmentiteration - current iterationvalue - value to be assignedpublic void afterAssigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)
afterAssigned in interface ModelListener<Request,Enrollment>afterAssigned in class Extension<Request,Enrollment>assignment - current assignmentiteration - current iterationvalue - value to be assignedpublic void afterUnassigned(Assignment<Request,Enrollment> assignment, long iteration, Enrollment value)
afterUnassigned in interface ModelListener<Request,Enrollment>afterUnassigned in class Extension<Request,Enrollment>assignment - current assignmentiteration - current iterationvalue - value to be unassignedpublic Set<TimeOverlapsCounter.Conflict> allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)
TimeOverlapsCounter.Conflict objects) of the given
enrollment and other enrollments that are assigned to the same student.assignment - current assignmentenrollment - given enrollmentpublic TimeOverlapsCounter.TimeOverlapsCounterContext createAssignmentContext(Assignment<Request,Enrollment> assignment)
HasAssignmentContextcreateAssignmentContext in interface HasAssignmentContext<Request,Enrollment,TimeOverlapsCounter.TimeOverlapsCounterContext>assignment - an assignment for which there needs to be an assignment contextpublic TimeOverlapsCounter.TimeOverlapsCounterContext inheritAssignmentContext(Assignment<Request,Enrollment> assignment, TimeOverlapsCounter.TimeOverlapsCounterContext parentContext)
CanInheritContextinheritAssignmentContext in interface CanInheritContext<Request,Enrollment,TimeOverlapsCounter.TimeOverlapsCounterContext>assignment - an assignment for which there needs to be an assignment contextparentContext - context of the parent assignment