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, unregister
beforeUnassigned, constraintAdded, constraintRemoved, getModel, getProperties, getSolver, isRegistered, register, variableAdded, variableRemoved
public 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)
HasAssignmentContext
createAssignmentContext
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)
CanInheritContext
inheritAssignmentContext
in interface CanInheritContext<Request,Enrollment,TimeOverlapsCounter.TimeOverlapsCounterContext>
assignment
- an assignment for which there needs to be an assignment contextparentContext
- context of the parent assignment