public class StudentSchedulingAssistantWeights extends Object implements StudentWeights
StudentWeights
model. It is either based on
PriorityStudentWeights
(when StudentWeights.PriorityWeighting=true) or
on EqualStudentWeights
. Following criteria are included:
CourseRequest.getSelectedChoices()
)
OverExpectedCriterion.getOverExpected(Assignment, Section, Request)
Section.getPenalty()
), using average penalty per request
StudentWeights.Implementation
Constructor and Description |
---|
StudentSchedulingAssistantWeights(DataProperties properties) |
Modifier and Type | Method and Description |
---|---|
void |
clearBestCache() |
double |
getBaseWeight(Assignment<Request,Enrollment> assignment,
Enrollment enrollment) |
double |
getBound(Request request)
Return lower bound for the given request
|
double |
getDistanceConflictWeight(Assignment<Request,Enrollment> assignment,
DistanceConflict.Conflict distanceConflict)
Deprecated.
|
double |
getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment,
Enrollment enrollment,
StudentQuality.Conflict conflict)
Return weight of a student quality conflict
|
double |
getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment,
Enrollment enrollment,
TimeOverlapsCounter.Conflict timeOverlap)
Deprecated.
|
double |
getWeight(Assignment<Request,Enrollment> assignment,
Enrollment enrollment)
Return base weight of the given enrollment
|
double |
getWeight(Assignment<Request,Enrollment> assignment,
Enrollment enrollment,
Set<DistanceConflict.Conflict> distanceConflicts,
Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)
Return weight of the given enrollment
|
double |
getWeight(Assignment<Request,Enrollment> assignment,
Enrollment enrollment,
Set<StudentQuality.Conflict> qualityConflicts)
Return weight of the given enrollment
|
boolean |
isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)
Compares two solutions.
|
boolean |
isFreeTimeAllowOverlaps()
Return true if free time requests allow overlaps
|
protected double |
round(double value) |
public StudentSchedulingAssistantWeights(DataProperties properties)
public void clearBestCache()
public double getBaseWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)
public double getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment)
StudentWeights
getWeight
in interface StudentWeights
assignment
- current assignmentenrollment
- given enrollmentpublic double getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<DistanceConflict.Conflict> distanceConflicts, Set<TimeOverlapsCounter.Conflict> timeOverlappingConflicts)
StudentWeights
getWeight
in interface StudentWeights
assignment
- current assignmentenrollment
- given enrollmentdistanceConflicts
- distance conflictstimeOverlappingConflicts
- time overlapping conflictsprotected double round(double value)
public boolean isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution)
SolutionComparator
Solution.saveBest()
and
Solution.restoreBest()
).isBetterThanBestSolution
in interface SolutionComparator<Request,Enrollment>
currentSolution
- given solutionpublic double getBound(Request request)
StudentWeights
getBound
in interface StudentWeights
request
- given request@Deprecated public double getDistanceConflictWeight(Assignment<Request,Enrollment> assignment, DistanceConflict.Conflict distanceConflict)
StudentWeights
getDistanceConflictWeight
in interface StudentWeights
assignment
- current assignmentdistanceConflict
- distance conflict@Deprecated public double getTimeOverlapConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, TimeOverlapsCounter.Conflict timeOverlap)
StudentWeights
getTimeOverlapConflictWeight
in interface StudentWeights
assignment
- current assignmentenrollment
- enrollment in questiontimeOverlap
- time overlapping conflictpublic boolean isFreeTimeAllowOverlaps()
StudentWeights
isFreeTimeAllowOverlaps
in interface StudentWeights
public double getWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, Set<StudentQuality.Conflict> qualityConflicts)
StudentWeights
getWeight
in interface StudentWeights
assignment
- current assignmentenrollment
- given enrollmentqualityConflicts
- student quality conflictspublic double getStudentQualityConflictWeight(Assignment<Request,Enrollment> assignment, Enrollment enrollment, StudentQuality.Conflict conflict)
StudentWeights
getStudentQualityConflictWeight
in interface StudentWeights
assignment
- current assignmentenrollment
- enrollment in questionconflict
- student quality conflict