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, sTimeFormatsMaxSize| Constructor and Description |
|---|
StudentSectioningModel(DataProperties properties)
Constructor
|
| Modifier and Type | Method and Description |
|---|---|
void |
addGlobalConstraint(GlobalConstraint<Request,Enrollment> constraint)
Adds a global constraint to the model
|
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() |
DependentCourses |
getDependentCoursesConstraint() |
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 |
removeGlobalConstraint(GlobalConstraint<Request,Enrollment> constraint)
Removes a global constraint from the model
|
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, setContextUpdateTypeaddConstraint, addCriterion, 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, removeModelListener, removeReference, restoreBest, restoreBest, saveBest, setBestValue, setDefaultAssignment, toString, unassignedHardConstraints, unassignedVariables, unassignedVariables, variables, variablesWithInitialValue, weakenprotected 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)
ModeladdVariable 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)
ModelremoveVariable 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)
LinkedSectionsmustBeUsed - 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)
LinkedSectionssections - a linked section constraint to be added into the problempublic void addLinkedSections(boolean mustBeUsed, Collection<Section> sections)
LinkedSectionsmustBeUsed - 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)
LinkedSectionssections - 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)
ModelrestoreBest in class Model<Request,Enrollment>assignment - current assignmentpublic void recomputeTotalValue(Assignment<Request,Enrollment> assignment)
public void saveBest(Assignment<Request,Enrollment> assignment)
ModelsaveBest in class Model<Request,Enrollment>assignment - current assignmentpublic double getBestAssignedCourseRequestWeight()
public String toString(Assignment<Request,Enrollment> assignment)
ModeltoString 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)
HasAssignmentContextcreateAssignmentContext 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)
ModelcreateInheritedAssignment 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)
CanInheritContextinheritAssignmentContext in interface CanInheritContext<Request,Enrollment,StudentSectioningModel.StudentSectioningModelContext>assignment - an assignment for which there needs to be an assignment contextparentContext - context of the parent assignmentpublic void addGlobalConstraint(GlobalConstraint<Request,Enrollment> constraint)
ModeladdGlobalConstraint in class Model<Request,Enrollment>constraint - a global constraintpublic void removeGlobalConstraint(GlobalConstraint<Request,Enrollment> constraint)
ModelremoveGlobalConstraint in class Model<Request,Enrollment>constraint - a global constraintpublic DependentCourses getDependentCoursesConstraint()