public class StudentSectioningModel extends ModelWithContext<Request,Enrollment,StudentSectioningModel.StudentSectioningModelContext> implements CanInheritContext<Request,Enrollment,StudentSectioningModel.StudentSectioningModelContext>
Modifier and Type | Class and Description |
---|---|
class |
StudentSectioningModel.StudentSectioningModelContext |
ModelWithContext.ContextUpdateType
Modifier and Type | Field and Description |
---|---|
protected double |
iProjectedStudentWeight |
protected static DecimalFormat |
sDecimalFormat |
sDoubleFormat, sPercentageFormat, sTimeFormat
sMaxSize
Constructor and Description |
---|
StudentSectioningModel(DataProperties properties)
Constructor
|
Modifier and Type | Method and Description |
---|---|
void |
addLinkedSections(boolean mustBeUsed,
Collection<Section> sections)
Link sections using
LinkedSections |
void |
addLinkedSections(boolean mustBeUsed,
Section... sections)
Link sections using
LinkedSections |
void |
addLinkedSections(Collection<Section> sections)
Deprecated.
|
void |
addLinkedSections(Section... sections)
Deprecated.
|
void |
addOffering(Offering offering)
Add an offering into the model
|
void |
addStudent(Student student)
Add a student into the model
|
void |
addVariable(Request request)
Adds a variable to the model
|
double |
avg(double w1,
double w2)
Quadratic average of two weights.
|
double |
avgNrRequests()
Average number of requests per student (see
Student.getRequests()
) |
double |
avgUnassignPriority(Assignment<Request,Enrollment> assignment)
Average priority of unassigned requests (see
Request.getPriority() ) |
void |
clearOnlineSectioningInfos()
Empty online student sectioning infos for all sections (see
Section.getSpaceExpected() and Section.getSpaceHeld() ). |
void |
computeOnlineSectioningInfos(Assignment<Request,Enrollment> assignment)
Compute online student sectioning infos for all sections (see
Section.getSpaceExpected() and Section.getSpaceHeld() ). |
StudentSectioningModel.StudentSectioningModelContext |
createAssignmentContext(Assignment<Request,Enrollment> assignment)
Create a new assignment context for the given assignment.
|
InheritedAssignment<Request,Enrollment> |
createInheritedAssignment(Solution<Request,Enrollment> solution,
int index)
Create a new inherited assignment from the given solution
|
double |
getBestAssignedCourseRequestWeight() |
int |
getDayOfWeekOffset() |
DistanceConflict |
getDistanceConflict()
Return distance conflict extension
|
DistanceMetric |
getDistanceMetric() |
Map<String,String> |
getExtendedInfo(Assignment<Request,Enrollment> assignment)
Model extended info.
|
Map<String,String> |
getInfo(Assignment<Request,Enrollment> assignment)
Model info
|
boolean |
getKeepInitialAssignments()
Return true if the inital assignments are to be kept unchanged
|
List<LinkedSections> |
getLinkedSections()
List of linked sections
|
int |
getMaxDomainSize()
Maximal domain size (i.e., number of enrollments of a course request), -1 if there is no limit.
|
int |
getNbrStudents(Student.StudentPriority priority) |
int |
getNrAssignedLastLikeRequests(Assignment<Request,Enrollment> assignment,
boolean precise)
Number of requests from projected (
Student.isDummy() equals true)
students that are assigned. |
int |
getNrAssignedRealRequests(Assignment<Request,Enrollment> assignment,
boolean precise)
Number of requests from real (
Student.isDummy() equals false)
students that are assigned. |
int |
getNrCompleteLastLikeStudents(Assignment<Request,Enrollment> assignment,
boolean precise)
Number of last like (
Student.isDummy() equals true) students with
a complete schedule (Student.isComplete(Assignment) equals true). |
int |
getNrCompleteRealStudents(Assignment<Request,Enrollment> assignment,
boolean precise)
Number of real (
Student.isDummy() equals false) students with a
complete schedule (Student.isComplete(Assignment) equals true). |
int |
getNrLastLikeRequests(boolean precise)
Number of requests from projected (
Student.isDummy() equals true)
students. |
int |
getNrLastLikeStudents(boolean precise)
Number of last like (
Student.isDummy() equals true) students. |
int |
getNrRealRequests(boolean precise)
Number of requests from real (
Student.isDummy() equals false)
students. |
int |
getNrRealStudents(boolean precise)
Number of real (
Student.isDummy() equals false) students. |
List<Offering> |
getOfferings()
List of offerings
|
DataProperties |
getProperties()
Configuration
|
boolean |
getReservationCanAssignOverTheLimit()
Return true if reservation that has
Reservation.canAssignOverLimit() can assign enrollments over the limit |
StudentQuality |
getStudentQuality() |
List<Student> |
getStudents()
Students
|
int |
getStudentsWithAccommodation(String acc)
Count students with given accommodation
|
StudentWeights |
getStudentWeights()
Return student weighting model
|
TimeOverlapsCounter |
getTimeOverlaps()
Return time overlaps extension
|
double |
getTotalRequestWeight()
Sum of weights of all requests (see
Request.getWeight() ). |
double |
getTotalValue(Assignment<Request,Enrollment> assignment)
Overall solution value
|
double |
getTotalValue(Assignment<Request,Enrollment> assignment,
boolean precise)
Overall solution value
|
double |
getUnassignedRequestWeight(Assignment<Request,Enrollment> assignment)
Sum of weights of all requests that are not assigned (see
Request.getWeight() ). |
StudentSectioningModel.StudentSectioningModelContext |
inheritAssignmentContext(Assignment<Request,Enrollment> assignment,
StudentSectioningModel.StudentSectioningModelContext parentContext)
Create a new assignment context for the given assignment.
|
boolean |
isMPP()
Return true if the problem is minimal perturbation problem
|
void |
recomputeTotalValue(Assignment<Request,Enrollment> assignment) |
void |
removeStudent(Student student)
Remove a student from the model
|
void |
removeVariable(Request request)
Removes a variable from the model
|
void |
requestWeightsChanged(Assignment<Request,Enrollment> assignment)
Recompute cached request weights
|
void |
restoreBest(Assignment<Request,Enrollment> assignment)
Restore the best ever found assignment into the current assignment
|
void |
saveBest(Assignment<Request,Enrollment> assignment)
Save the current assignment as the best ever found assignment
|
void |
setCourseRequestPriority(CourseRequest request,
Request.RequestPriority priority) |
void |
setDayOfWeekOffset(int dayOfWeekOffset) |
void |
setDistanceConflict(DistanceConflict dc)
Set distance conflict extension
|
void |
setMaxDomainSize(int maxDomainSize)
Maximal domain size (i.e., number of enrollments of a course request), -1 if there is no limit.
|
void |
setStudentQuality(StudentQuality q) |
void |
setStudentQuality(StudentQuality q,
boolean register) |
void |
setStudentWeights(StudentWeights weights)
Set student weighting model
|
void |
setTimeOverlaps(TimeOverlapsCounter toc)
Set time overlaps extension
|
String |
toString(Assignment<Request,Enrollment> assignment)
String representation -- returns a list of values of objective criteria
|
afterAssigned, afterUnassigned, beforeAssigned, beforeUnassigned, getAssignmentContextReference, getContext, getContext, getContextUpdateType, setAssignmentContextReference, setContextUpdateType
addConstraint, addCriterion, addGlobalConstraint, addModelListener, afterAssigned, afterUnassigned, assignedVariables, assignedVariables, beforeAssigned, beforeUnassigned, bestUnassignedVariables, bestUnassignedVariables, clearAssignmentContexts, clearBest, conflictConstraints, conflictValues, conflictValues, constraints, countConstraints, countGlobalConstraints, countVariables, createAssignmentContexts, createReference, getBestPerturbations, getBestUnassignedVariables, getBestValue, getCriteria, getCriterion, getDefaultAssignment, getEmptyAssignment, getExtendedInfo, getInfo, getInfo, getInfo, getInfoProviders, getModelListeners, getPerc, getPercRev, getTotalValue, getTotalValue, getTotalValue, globalConstraints, inConflict, inConflict, init, invalidateVariablesWithInitialValueCache, modelListenerOfType, nrAssignedVariables, nrAssignedVariables, nrUnassignedVariables, nrUnassignedVariables, perturbVariables, perturbVariables, perturbVariables, perturbVariables, perturbVariables, removeConstraint, removeCriterion, removeCriterion, removeGlobalConstraint, removeModelListener, removeReference, restoreBest, restoreBest, saveBest, setBestValue, setDefaultAssignment, toString, unassignedHardConstraints, unassignedVariables, unassignedVariables, variables, variablesWithInitialValue, weaken
protected static DecimalFormat sDecimalFormat
protected double iProjectedStudentWeight
public StudentSectioningModel(DataProperties properties)
properties
- configurationpublic boolean getReservationCanAssignOverTheLimit()
Reservation.canAssignOverLimit()
can assign enrollments over the limitReservation.canAssignOverLimit()
can assign enrollments over the limitpublic boolean isMPP()
public boolean getKeepInitialAssignments()
public StudentWeights getStudentWeights()
public void setStudentWeights(StudentWeights weights)
weights
- student weighting modelpublic List<Student> getStudents()
public void addStudent(Student student)
student
- a student to be added into the problempublic int getNbrStudents(Student.StudentPriority priority)
public void addVariable(Request request)
Model
addVariable
in class Model<Request,Enrollment>
request
- a variablepublic void setCourseRequestPriority(CourseRequest request, Request.RequestPriority priority)
public void requestWeightsChanged(Assignment<Request,Enrollment> assignment)
assignment
- current assignmentpublic void removeStudent(Student student)
student
- a student to be removed from the problempublic void removeVariable(Request request)
Model
removeVariable
in class Model<Request,Enrollment>
request
- a variablepublic List<Offering> getOfferings()
public void addOffering(Offering offering)
offering
- an instructional offering to be added into the problempublic void addLinkedSections(boolean mustBeUsed, Section... sections)
LinkedSections
mustBeUsed
- if true, a pair of linked sections must be used when a student requests both coursessections
- a linked section constraint to be added into the problem@Deprecated public void addLinkedSections(Section... sections)
LinkedSections
sections
- a linked section constraint to be added into the problempublic void addLinkedSections(boolean mustBeUsed, Collection<Section> sections)
LinkedSections
mustBeUsed
- if true, a pair of linked sections must be used when a student requests both coursessections
- a linked section constraint to be added into the problem@Deprecated public void addLinkedSections(Collection<Section> sections)
LinkedSections
sections
- a linked section constraint to be added into the problempublic List<LinkedSections> getLinkedSections()
public Map<String,String> getInfo(Assignment<Request,Enrollment> assignment)
getInfo
in class Model<Request,Enrollment>
assignment
- current assignmentpublic double getTotalValue(Assignment<Request,Enrollment> assignment, boolean precise)
assignment
- current assignmentprecise
- true if should be computedpublic double getTotalValue(Assignment<Request,Enrollment> assignment)
getTotalValue
in class Model<Request,Enrollment>
assignment
- current assignmentpublic DataProperties getProperties()
public void clearOnlineSectioningInfos()
Section.getSpaceExpected()
and Section.getSpaceHeld()
).public void computeOnlineSectioningInfos(Assignment<Request,Enrollment> assignment)
Section.getSpaceExpected()
and Section.getSpaceHeld()
).assignment
- current assignmentpublic double getUnassignedRequestWeight(Assignment<Request,Enrollment> assignment)
Request.getWeight()
).assignment
- current assignmentpublic double getTotalRequestWeight()
Request.getWeight()
).public void setDistanceConflict(DistanceConflict dc)
dc
- distance conflicts extensionpublic DistanceConflict getDistanceConflict()
public void setTimeOverlaps(TimeOverlapsCounter toc)
toc
- time overlapping conflicts extensionpublic TimeOverlapsCounter getTimeOverlaps()
public StudentQuality getStudentQuality()
public void setStudentQuality(StudentQuality q, boolean register)
public void setStudentQuality(StudentQuality q)
public double avgUnassignPriority(Assignment<Request,Enrollment> assignment)
Request.getPriority()
)assignment
- current assignmentpublic double avgNrRequests()
Student.getRequests()
)public int getNrLastLikeStudents(boolean precise)
Student.isDummy()
equals true) students.precise
- true if to be computedpublic int getNrRealStudents(boolean precise)
Student.isDummy()
equals false) students.precise
- true if to be computedpublic int getStudentsWithAccommodation(String acc)
public int getNrCompleteLastLikeStudents(Assignment<Request,Enrollment> assignment, boolean precise)
Student.isDummy()
equals true) students with
a complete schedule (Student.isComplete(Assignment)
equals true).assignment
- current assignmentprecise
- true if to be computedpublic int getNrCompleteRealStudents(Assignment<Request,Enrollment> assignment, boolean precise)
Student.isDummy()
equals false) students with a
complete schedule (Student.isComplete(Assignment)
equals true).assignment
- current assignmentprecise
- true if to be computedpublic int getNrLastLikeRequests(boolean precise)
Student.isDummy()
equals true)
students.precise
- true if to be computedpublic int getNrRealRequests(boolean precise)
Student.isDummy()
equals false)
students.precise
- true if to be computedpublic int getNrAssignedLastLikeRequests(Assignment<Request,Enrollment> assignment, boolean precise)
Student.isDummy()
equals true)
students that are assigned.assignment
- current assignmentprecise
- true if to be computedpublic int getNrAssignedRealRequests(Assignment<Request,Enrollment> assignment, boolean precise)
Student.isDummy()
equals false)
students that are assigned.assignment
- current assignmentprecise
- true if to be computedpublic Map<String,String> getExtendedInfo(Assignment<Request,Enrollment> assignment)
Model.getInfo(Assignment)
.getExtendedInfo
in class Model<Request,Enrollment>
assignment
- current assignmentpublic void restoreBest(Assignment<Request,Enrollment> assignment)
Model
restoreBest
in class Model<Request,Enrollment>
assignment
- current assignmentpublic void recomputeTotalValue(Assignment<Request,Enrollment> assignment)
public void saveBest(Assignment<Request,Enrollment> assignment)
Model
saveBest
in class Model<Request,Enrollment>
assignment
- current assignmentpublic double getBestAssignedCourseRequestWeight()
public String toString(Assignment<Request,Enrollment> assignment)
Model
toString
in class Model<Request,Enrollment>
assignment
- current assignmentAbstractCriterion.toString(Assignment)
public double avg(double w1, double w2)
w1
- first weightw2
- second weightpublic int getMaxDomainSize()
public void setMaxDomainSize(int maxDomainSize)
maxDomainSize
- maximal domain size, -1 if unlimitedpublic int getDayOfWeekOffset()
public void setDayOfWeekOffset(int dayOfWeekOffset)
public StudentSectioningModel.StudentSectioningModelContext createAssignmentContext(Assignment<Request,Enrollment> assignment)
HasAssignmentContext
createAssignmentContext
in interface HasAssignmentContext<Request,Enrollment,StudentSectioningModel.StudentSectioningModelContext>
assignment
- an assignment for which there needs to be an assignment contextpublic InheritedAssignment<Request,Enrollment> createInheritedAssignment(Solution<Request,Enrollment> solution, int index)
Model
createInheritedAssignment
in class Model<Request,Enrollment>
solution
- a solution that is using this modelindex
- thread index of the new assignmentpublic DistanceMetric getDistanceMetric()
public StudentSectioningModel.StudentSectioningModelContext inheritAssignmentContext(Assignment<Request,Enrollment> assignment, StudentSectioningModel.StudentSectioningModelContext parentContext)
CanInheritContext
inheritAssignmentContext
in interface CanInheritContext<Request,Enrollment,StudentSectioningModel.StudentSectioningModelContext>
assignment
- an assignment for which there needs to be an assignment contextparentContext
- context of the parent assignment