public class DistanceConflict extends ExtensionWithContext<Request,Enrollment,DistanceConflict.DistanceConflictContext> implements ModelListener<Request,Enrollment>, CanInheritContext<Request,Enrollment,DistanceConflict.DistanceConflictContext>
DistanceMetric
for more details.TimeLocation
,
Modifier and Type | Class and Description |
---|---|
static class |
DistanceConflict.Conflict
A representation of a distance conflict
|
class |
DistanceConflict.DistanceConflictContext |
Modifier and Type | Field and Description |
---|---|
static boolean |
sDebug
Debug flag
|
sMaxSize
Constructor and Description |
---|
DistanceConflict(DistanceMetric metrics,
DataProperties properties)
Alternative constructor (for online student sectioning)
|
DistanceConflict(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<DistanceConflict.Conflict> |
allConflicts(Assignment<Request,Enrollment> assignment,
Enrollment enrollment)
The set of all conflicts (
DistanceConflict.Conflict objects) of the given
enrollment and other enrollments that are assignmed to the same student. |
void |
beforeAssigned(Assignment<Request,Enrollment> assignment,
long iteration,
Enrollment value)
Called before a value is assigned to a variable.
|
void |
checkAllConflicts(Assignment<Request,Enrollment> assignment)
Checks the counter counting all conflicts
|
Set<DistanceConflict.Conflict> |
computeAllConflicts(Assignment<Request,Enrollment> assignment)
Compute a set of all distance conflicts (
DistanceConflict.Conflict objects). |
Set<DistanceConflict.Conflict> |
conflicts(Enrollment e1)
Return a set of distance conflicts (
DistanceConflict.Conflict objects) of a
(course) enrollment. |
Set<DistanceConflict.Conflict> |
conflicts(Enrollment e1,
Enrollment e2)
Return a set of distance conflicts (
DistanceConflict.Conflict objects) between
given (course) enrollments. |
int |
countTotalNrConflicts(Assignment<Request,Enrollment> assignment)
Compute the actual number of all distance conflicts.
|
DistanceConflict.DistanceConflictContext |
createAssignmentContext(Assignment<Request,Enrollment> assignment)
Create a new assignment context for the given assignment.
|
Set<DistanceConflict.Conflict> |
getAllConflicts(Assignment<Request,Enrollment> assignment)
Return a set of all distance conflicts (
DistanceConflict.Conflict objects). |
protected int |
getDistanceInMinutes(Placement p1,
Placement p2) |
protected int |
getDistanceInMinutes(RoomLocation r1,
RoomLocation r2) |
DistanceMetric |
getDistanceMetric() |
int |
getTotalNrConflicts(Assignment<Request,Enrollment> assignment)
Actual number of all distance conflicts
|
int |
getTotalNrShortConflicts(Assignment<Request,Enrollment> assignment)
Actual number of all distance conflicts of students that need short distances
|
boolean |
inConflict(Student student,
Section s1,
Section s2)
Return true if the given two sections are in distance conflict.
|
DistanceConflict.DistanceConflictContext |
inheritAssignmentContext(Assignment<Request,Enrollment> assignment,
DistanceConflict.DistanceConflictContext parentContext)
Create a new assignment context for the given assignment.
|
int |
nrConflicts(Enrollment e1)
Return number of distance conflict of a (course) enrollment.
|
int |
nrConflicts(Enrollment e1,
Enrollment e2)
Return number of distance conflicts that are between two enrollments.
|
String |
toString() |
getAssignmentContextReference, getContext, getContext, init, setAssignmentContextReference, unregister
beforeUnassigned, constraintAdded, constraintRemoved, getModel, getProperties, getSolver, isRegistered, register, variableAdded, variableRemoved
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
beforeUnassigned, constraintAdded, constraintRemoved, init, variableAdded, variableRemoved
public static boolean sDebug
public DistanceConflict(Solver<Request,Enrollment> solver, DataProperties properties)
StudentSectioningModel.setDistanceConflict(DistanceConflict)
to
set the this instance to the model.solver
- constraint solverproperties
- configurationpublic DistanceConflict(DistanceMetric metrics, DataProperties properties)
metrics
- distance metricsproperties
- configurationpublic DistanceMetric getDistanceMetric()
protected int getDistanceInMinutes(RoomLocation r1, RoomLocation r2)
protected int getDistanceInMinutes(Placement p1, Placement p2)
public boolean inConflict(Student student, Section s1, Section s2)
student
- a students1
- a sections2
- a sectionpublic int nrConflicts(Enrollment e1)
e1
- an enrollmentpublic int nrConflicts(Enrollment e1, Enrollment e2)
e1
- an enrollmente2
- an enrollmentpublic Set<DistanceConflict.Conflict> conflicts(Enrollment e1)
DistanceConflict.Conflict
objects) of a
(course) enrollment.e1
- an enrollmentpublic Set<DistanceConflict.Conflict> conflicts(Enrollment e1, Enrollment e2)
DistanceConflict.Conflict
objects) between
given (course) enrollments.e1
- an enrollmente2
- an enrollmentpublic Set<DistanceConflict.Conflict> allConflicts(Assignment<Request,Enrollment> assignment, Enrollment enrollment)
DistanceConflict.Conflict
objects) of the given
enrollment and other enrollments that are assignmed to the same student.assignment
- current assignmentenrollment
- given enrollmentpublic void checkAllConflicts(Assignment<Request,Enrollment> assignment)
assignment
- current assignmentpublic int getTotalNrConflicts(Assignment<Request,Enrollment> assignment)
assignment
- current assignmentpublic int getTotalNrShortConflicts(Assignment<Request,Enrollment> assignment)
assignment
- current assignmentpublic int countTotalNrConflicts(Assignment<Request,Enrollment> assignment)
getTotalNrConflicts(Assignment)
.assignment
- current assignmentpublic Set<DistanceConflict.Conflict> computeAllConflicts(Assignment<Request,Enrollment> assignment)
DistanceConflict.Conflict
objects).assignment
- current assignmentpublic Set<DistanceConflict.Conflict> getAllConflicts(Assignment<Request,Enrollment> assignment)
DistanceConflict.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 DistanceConflict.DistanceConflictContext createAssignmentContext(Assignment<Request,Enrollment> assignment)
HasAssignmentContext
createAssignmentContext
in interface HasAssignmentContext<Request,Enrollment,DistanceConflict.DistanceConflictContext>
assignment
- an assignment for which there needs to be an assignment contextpublic DistanceConflict.DistanceConflictContext inheritAssignmentContext(Assignment<Request,Enrollment> assignment, DistanceConflict.DistanceConflictContext parentContext)
CanInheritContext
inheritAssignmentContext
in interface CanInheritContext<Request,Enrollment,DistanceConflict.DistanceConflictContext>
assignment
- an assignment for which there needs to be an assignment contextparentContext
- context of the parent assignment