public class MultiCriteriaBranchAndBoundSelection extends Object implements OnlineSectioningSelection
SuggestionSelection
, however, the {link OnlineSelection
is used to compare two solutions and for branching.Modifier and Type | Class and Description |
---|---|
static interface |
MultiCriteriaBranchAndBoundSelection.SelectionComparator
Enrollment comparator
|
static interface |
MultiCriteriaBranchAndBoundSelection.SelectionCriterion
Multi-criteria selection interface.
|
Modifier and Type | Field and Description |
---|---|
protected Assignment<Request,Enrollment> |
iAssignment |
protected Enrollment[] |
iBestAssignment
Best assignment
|
protected boolean |
iBranchWhenSelectedHasNoConflict |
protected MultiCriteriaBranchAndBoundSelection.SelectionCriterion |
iComparator |
protected Enrollment[] |
iCurrentAssignment
Current assignment
|
protected OnlineSectioningModel |
iModel |
protected Student |
iStudent
Student
|
protected long |
iT0
Start time
|
protected long |
iT1
End time
|
protected int |
iTimeout |
protected boolean |
iTimeoutReached
Was timeout reached
|
protected HashMap<CourseRequest,List<Enrollment>> |
iValues
Value cache
|
Constructor and Description |
---|
MultiCriteriaBranchAndBoundSelection(DataProperties config) |
Modifier and Type | Method and Description |
---|---|
void |
backTrack(int idx)
branch & bound search
|
boolean |
canAssign(Request request,
int idx)
True if the given request can be assigned
|
protected boolean |
canLeaveUnassigned(Request request)
Returns true if the given request can be left unassigned
|
long |
getTime()
Time (in milliseconds) the branch & bound did run
|
boolean |
inConflict(int idx,
Enrollment enrollment)
True if the enrollment is conflicting
|
boolean |
isAllowed(int idx,
Enrollment enrollment) |
boolean |
isTimeoutReached()
Was timeout reached
|
void |
saveBest()
Save the current schedule as the best
|
BranchBoundSelection.BranchBoundNeighbour |
select()
Execute branch & bound, return the best found schedule for the selected
student.
|
BranchBoundSelection.BranchBoundNeighbour |
select(Assignment<Request,Enrollment> assignment,
Student student)
Compute student schedule
|
BranchBoundSelection.BranchBoundNeighbour |
select(Assignment<Request,Enrollment> assignment,
Student student,
MultiCriteriaBranchAndBoundSelection.SelectionCriterion comparator) |
void |
setMaxOverExpected(double maxOverExpected)
Set hard limit on the
OverExpectedCriterion penalty. |
void |
setModel(OnlineSectioningModel model)
Set online sectioning model
|
void |
setPreferredSections(Hashtable<CourseRequest,Set<Section>> preferredSections)
Set preferred sections
|
void |
setRequiredFreeTimes(Set<FreeTimeRequest> requiredFreeTimes)
Set required free times
|
void |
setRequiredSections(Hashtable<CourseRequest,Set<Section>> requiredSections)
Set required sections
|
void |
setRequiredUnassinged(Set<CourseRequest> requiredUnassignedRequests)
Set course requests that are to be left unassigned
|
void |
setTimeout(int timeout) |
protected List<Enrollment> |
values(CourseRequest request)
Returns list of available enrollments for a course request
|
protected int iTimeout
protected OnlineSectioningModel iModel
protected Assignment<Request,Enrollment> iAssignment
protected MultiCriteriaBranchAndBoundSelection.SelectionCriterion iComparator
protected boolean iBranchWhenSelectedHasNoConflict
protected long iT0
protected long iT1
protected boolean iTimeoutReached
protected Enrollment[] iCurrentAssignment
protected Enrollment[] iBestAssignment
protected HashMap<CourseRequest,List<Enrollment>> iValues
public MultiCriteriaBranchAndBoundSelection(DataProperties config)
public void setModel(OnlineSectioningModel model)
OnlineSectioningSelection
setModel
in interface OnlineSectioningSelection
model
- online sectioning modelpublic void setPreferredSections(Hashtable<CourseRequest,Set<Section>> preferredSections)
OnlineSectioningSelection
setPreferredSections
in interface OnlineSectioningSelection
preferredSections
- preferred sections for each course requestpublic void setTimeout(int timeout)
public void setRequiredSections(Hashtable<CourseRequest,Set<Section>> requiredSections)
OnlineSectioningSelection
setRequiredSections
in interface OnlineSectioningSelection
requiredSections
- required sections for each course requestpublic void setRequiredFreeTimes(Set<FreeTimeRequest> requiredFreeTimes)
OnlineSectioningSelection
setRequiredFreeTimes
in interface OnlineSectioningSelection
requiredFreeTimes
- required free timespublic BranchBoundSelection.BranchBoundNeighbour select(Assignment<Request,Enrollment> assignment, Student student, MultiCriteriaBranchAndBoundSelection.SelectionCriterion comparator)
public BranchBoundSelection.BranchBoundNeighbour select(Assignment<Request,Enrollment> assignment, Student student)
OnlineSectioningSelection
select
in interface OnlineSectioningSelection
assignment
- current assignmentstudent
- student in questionpublic BranchBoundSelection.BranchBoundNeighbour select()
public boolean isTimeoutReached()
public long getTime()
public void saveBest()
public boolean inConflict(int idx, Enrollment enrollment)
public boolean canAssign(Request request, int idx)
public boolean isAllowed(int idx, Enrollment enrollment)
protected boolean canLeaveUnassigned(Request request)
protected List<Enrollment> values(CourseRequest request)
public void backTrack(int idx)
public void setRequiredUnassinged(Set<CourseRequest> requiredUnassignedRequests)
OnlineSectioningSelection
setRequiredUnassinged
in interface OnlineSectioningSelection
requiredUnassignedRequests
- course requests that are required to be left unassignedpublic void setMaxOverExpected(double maxOverExpected)
OnlineSectioningSelection
OverExpectedCriterion
penalty.setMaxOverExpected
in interface OnlineSectioningSelection
maxOverExpected
- max over-expected limit