Package | Description |
---|---|
net.sf.cpsolver.studentsct |
Student Sectioning Solver.
|
net.sf.cpsolver.studentsct.check |
Various checks of validity of a student sectioning solution.
|
net.sf.cpsolver.studentsct.constraint |
Student Sectioning: Constraints.
|
net.sf.cpsolver.studentsct.extension |
Student Sectioning: Various Extensions.
|
net.sf.cpsolver.studentsct.heuristics |
Student Sectioning: Heuristics.
|
net.sf.cpsolver.studentsct.heuristics.selection |
Student Sectioning: Various Neighbour Selection Criteria.
|
net.sf.cpsolver.studentsct.model |
Student Sectioning: Model.
|
net.sf.cpsolver.studentsct.reservation |
Student Sectioning: Reservations.
|
net.sf.cpsolver.studentsct.weights |
Student Sectioning Weightings: various students weight models
|
Modifier and Type | Method and Description |
---|---|
Request |
StudentSctBBTest.Message.getRequest()
Related course / free time request
|
protected Request |
StudentSectioningXMLLoader.loadRequest(Element requestEl,
Student student,
Map<Long,Offering> offeringTable,
Map<Long,Course> courseTable)
Load request
|
Modifier and Type | Method and Description |
---|---|
static Solution<Request,Enrollment> |
Test.batchSectioning(DataProperties cfg)
Batch sectioning test
|
Solution<Request,Enrollment> |
StudentSctBBTest.getSolution()
Compute and return the sectioning solution.
|
protected Solution<Request,Enrollment> |
StudentSectioningSaver.getSolution()
Solution to be saved
|
Solver<Request,Enrollment> |
StudentSectioningSaver.getSolver()
Solver
|
static Solution<Request,Enrollment> |
Test.onlineSectioning(DataProperties cfg)
Online sectioning test
|
static Solution<Request,Enrollment> |
Test.solveModel(StudentSectioningModel model,
DataProperties cfg)
Solve the student sectioning problem using IFS solver
|
Modifier and Type | Method and Description |
---|---|
void |
StudentSectioningModel.addVariable(Request request) |
double |
StudentPreferencePenalties.getMaxPenalty(Request request)
Maximal penalty of a course request
|
double[] |
StudentPreferencePenalties.getMinMaxAvailableEnrollmentPenalty(Request request)
Minimal and maximal available enrollment penalty of a request
|
double[] |
StudentPreferencePenalties.getMinMaxEnrollmentPenalty(Request request)
Minimal and maximal available enrollment penalty of a request
|
double |
StudentPreferencePenalties.getMinPenalty(Request request)
Minimal penalty of a course request
|
protected Enrollment |
StudentSectioningXMLLoader.loadEnrollment(Element enrollmentEl,
Request request)
Load enrollment
|
void |
StudentSectioningModel.removeVariable(Request request) |
protected void |
StudentSectioningXMLSaver.saveRequest(Element studentEl,
Request request)
Save request
|
Modifier and Type | Method and Description |
---|---|
void |
Test.TestSolutionListener.bestCleared(Solution<Request,Enrollment> solution) |
void |
Test.TestSolutionListener.bestRestored(Solution<Request,Enrollment> solution) |
void |
Test.TestSolutionListener.bestSaved(Solution<Request,Enrollment> solution) |
void |
Test.TestSolutionListener.getInfo(Solution<Request,Enrollment> solution,
Map<String,String> info) |
void |
Test.TestSolutionListener.getInfo(Solution<Request,Enrollment> solution,
Map<String,String> info,
Collection<Request> variables) |
void |
Test.TestSolutionListener.getInfo(Solution<Request,Enrollment> solution,
Map<String,String> info,
Collection<Request> variables) |
static void |
Test.printInfo(Solution<Request,Enrollment> solution,
boolean computeTables,
boolean computeSectInfos,
boolean runChecks)
Print some information about the solution
|
static void |
Test.saveInfoToXML(Solution<Request,Enrollment> solution,
HashMap<String,String> extra,
File file)
Save solution info as XML
|
void |
Test.TestSolutionListener.solutionUpdated(Solution<Request,Enrollment> solution) |
Constructor and Description |
---|
Message(int level,
Request request,
String message)
Constructor
|
Constructor and Description |
---|
StudentSectioningSaver(Solver<Request,Enrollment> solver)
Constructor
|
StudentSectioningXMLSaver(Solver<Request,Enrollment> solver)
Constructor
|
Modifier and Type | Method and Description |
---|---|
boolean |
InevitableStudentConflicts.StudentCheck.canAssign(Request request,
int idx)
True if the given request can be assigned
|
Constructor and Description |
---|
StudentCheck(List<Request> requests)
Constructor
|
Modifier and Type | Method and Description |
---|---|
Enrollment |
LinkedSections.Assignment.getEnrollment(Request request,
int index)
Return enrollment of the given request
|
Enrollment |
LinkedSections.CurrentAssignment.getEnrollment(Request request,
int index)
Return
Variable.getAssignment() |
static double |
ConfigLimit.getEnrollmentWeight(Config config,
Request request)
Enrollment weight of a config if the given request is assigned.
|
static double |
CourseLimit.getEnrollmentWeight(Course course,
Request request)
Enrollment weight of a course if the given request is assigned.
|
static double |
SectionLimit.getEnrollmentWeight(Section section,
Request request)
Enrollment weight of a section if the given request is assigned.
|
static double |
ReservationLimit.getUnreservedSpace(Config config,
Request request)
Remaining unreserved space in a config if the given request is assigned.
|
static double |
SectionLimit.getUnreservedSpace(Section section,
Request request)
Remaining unreserved space in a section if the given request is assigned.
|
Constructor and Description |
---|
LinkedSectionsConstraint(Student student,
Collection<Request> requests)
Constructor
|
Modifier and Type | Method and Description |
---|---|
Request |
DistanceConflict.Conflict.getR1()
First request
|
Request |
TimeOverlapsCounter.Conflict.getR1()
First request
|
Request |
DistanceConflict.Conflict.getR2()
Second request
|
Request |
TimeOverlapsCounter.Conflict.getR2()
Second request
|
Modifier and Type | Method and Description |
---|---|
boolean |
DistanceConflict.init(Solver<Request,Enrollment> solver)
Initialize extension
|
boolean |
TimeOverlapsCounter.init(Solver<Request,Enrollment> solver)
Initialize extension
|
Constructor and Description |
---|
DistanceConflict(Solver<Request,Enrollment> solver,
DataProperties properties)
Constructor.
|
StudentConflictStatistics(Solver<Request,Enrollment> solver,
DataProperties properties) |
TimeOverlapsCounter(Solver<Request,Enrollment> solver,
DataProperties properties)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
Request |
RouletteWheelRequestSelection.selectVariable(Solution<Request,Enrollment> solution)
Variable selection.
|
Modifier and Type | Method and Description |
---|---|
protected RouletteWheelSelection<Request> |
RouletteWheelRequestSelection.getRoulette(Solution<Request,Enrollment> solution)
Populate roulette wheel selection, if null or empty.
|
Neighbour<Request,Enrollment> |
TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.selectNeighbour(Solution<Request,Enrollment> solution)
Return all (removed) dummy students into the problem
|
Modifier and Type | Method and Description |
---|---|
Enrollment |
EnrollmentSelection.selectValue(Solution<Request,Enrollment> solution,
Request selectedVariable)
Value selection
|
protected Iterator<Enrollment> |
RandomizedBacktrackNeighbourSelection.values(Request variable)
List of values of a variable.
|
Modifier and Type | Method and Description |
---|---|
void |
StudentSctNeighbourSelection.changeSelection(Solution<Request,Enrollment> solution) |
protected RouletteWheelSelection<Request> |
RouletteWheelRequestSelection.getRoulette(Solution<Request,Enrollment> solution)
Populate roulette wheel selection, if null or empty.
|
void |
EnrollmentSelection.init(Solver<Request,Enrollment> solver)
Initialization
|
void |
RouletteWheelRequestSelection.init(Solver<Request,Enrollment> solver)
Initialization
|
void |
StudentSctNeighbourSelection.init(Solver<Request,Enrollment> solver) |
void |
TwoPhaseStudentSctNeighbourSelection.init(Solver<Request,Enrollment> solver)
Initialization -- also remove all the dummy students from the problem
|
void |
TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.init(Solver<Request,Enrollment> solver) |
Neighbour<Request,Enrollment> |
TwoPhaseStudentSctNeighbourSelection.RestoreDummyStudents.selectNeighbour(Solution<Request,Enrollment> solution)
Return all (removed) dummy students into the problem
|
Enrollment |
EnrollmentSelection.selectValue(Solution<Request,Enrollment> solution,
Request selectedVariable)
Value selection
|
Request |
RouletteWheelRequestSelection.selectVariable(Solution<Request,Enrollment> solution)
Variable selection.
|
void |
StudentSctNeighbourSelection.setup(Solver<Request,Enrollment> solver) |
Modifier and Type | Method and Description |
---|---|
Neighbour<Request,Enrollment> |
PriorityConstructionSelection.branchAndBound(Solution<Request,Enrollment> solution)
Find best solution for the next student using
BranchBoundSelection . |
Neighbour<Request,Enrollment> |
BacktrackSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
Neighbour<Request,Enrollment> |
BranchBoundSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbour.
|
Neighbour<Request,Enrollment> |
PriorityConstructionSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbor.
|
Neighbour<Request,Enrollment> |
RandomUnassignmentSelection.selectNeighbour(Solution<Request,Enrollment> solution)
With the given probabilty, a student is randomly selected to be
unassigned.
|
Neighbour<Request,Enrollment> |
ResectionIncompleteStudentsSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbour.
|
Neighbour<Request,Enrollment> |
ResectionUnassignedStudentsSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbour.
|
Neighbour<Request,Enrollment> |
RndUnProblStudSelection.selectNeighbour(Solution<Request,Enrollment> solution)
With the given probabilty, a problematic student is randomly selected to
be unassigned.
|
Neighbour<Request,Enrollment> |
StandardSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Employ the provided
VariableSelection and ValueSelection
and return the selected value as SimpleNeighbour . |
Neighbour<Request,Enrollment> |
SwapStudentSelection.selectNeighbour(Solution<Request,Enrollment> solution)
For each student that does not have a complete schedule, try to find a
request and a student that can be moved out of an enrollment so that the
selected student can be assigned to the selected request.
|
Modifier and Type | Method and Description |
---|---|
boolean |
BranchBoundSelection.Selection.canAssign(Request request,
int idx)
True if the given request can be assigned
|
protected boolean |
BranchBoundSelection.Selection.canLeaveUnassigned(Request request)
Returns true if the given request can be left unassigned
|
protected double |
BranchBoundSelection.Selection.getBound(Request r)
Return bound of a request
|
Modifier and Type | Method and Description |
---|---|
Neighbour<Request,Enrollment> |
PriorityConstructionSelection.branchAndBound(Solution<Request,Enrollment> solution)
Find best solution for the next student using
BranchBoundSelection . |
void |
BacktrackSelection.init(Solver<Request,Enrollment> solver) |
void |
BranchBoundSelection.init(Solver<Request,Enrollment> solver) |
void |
OnlineSelection.init(Solver<Request,Enrollment> solver) |
void |
PriorityConstructionSelection.init(Solver<Request,Enrollment> solver)
Initialize
|
void |
RandomUnassignmentSelection.init(Solver<Request,Enrollment> solver)
Initialization
|
void |
ResectionIncompleteStudentsSelection.init(Solver<Request,Enrollment> solver) |
void |
ResectionUnassignedStudentsSelection.init(Solver<Request,Enrollment> solver) |
void |
RndUnProblStudSelection.init(Solver<Request,Enrollment> solver)
Initialization --
ProblemStudentsProvider.getProblemStudents() is
called |
void |
StandardSelection.init(Solver<Request,Enrollment> solver)
Initialization
|
void |
SwapStudentSelection.init(Solver<Request,Enrollment> solver)
Initialization
|
void |
BacktrackSelection.init(Solver<Request,Enrollment> solver,
String name) |
void |
BranchBoundSelection.init(Solver<Request,Enrollment> solver,
String name)
Initialize
|
protected void |
PriorityConstructionSelection.nextCycle(Solution<Request,Enrollment> solution)
Increment cycle
|
Neighbour<Request,Enrollment> |
BacktrackSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
Neighbour<Request,Enrollment> |
BranchBoundSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbour.
|
Neighbour<Request,Enrollment> |
PriorityConstructionSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbor.
|
Neighbour<Request,Enrollment> |
RandomUnassignmentSelection.selectNeighbour(Solution<Request,Enrollment> solution)
With the given probabilty, a student is randomly selected to be
unassigned.
|
Neighbour<Request,Enrollment> |
ResectionIncompleteStudentsSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbour.
|
Neighbour<Request,Enrollment> |
ResectionUnassignedStudentsSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbour.
|
Neighbour<Request,Enrollment> |
RndUnProblStudSelection.selectNeighbour(Solution<Request,Enrollment> solution)
With the given probabilty, a problematic student is randomly selected to
be unassigned.
|
Neighbour<Request,Enrollment> |
StandardSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Employ the provided
VariableSelection and ValueSelection
and return the selected value as SimpleNeighbour . |
Neighbour<Request,Enrollment> |
SwapStudentSelection.selectNeighbour(Solution<Request,Enrollment> solution)
For each student that does not have a complete schedule, try to find a
request and a student that can be moved out of an enrollment so that the
selected student can be assigned to the selected request.
|
Constructor and Description |
---|
StandardSelection(DataProperties properties,
VariableSelection<Request,Enrollment> variableSelection,
ValueSelection<Request,Enrollment> valueSelection)
Constructor (variable and value selection are expected to be already
initialized).
|
StandardSelection(DataProperties properties,
VariableSelection<Request,Enrollment> variableSelection,
ValueSelection<Request,Enrollment> valueSelection)
Constructor (variable and value selection are expected to be already
initialized).
|
Modifier and Type | Class and Description |
---|---|
class |
CourseRequest
Representation of a request of a student for one or more course.
|
class |
FreeTimeRequest
Representation of a request of a student for free time.
|
Modifier and Type | Method and Description |
---|---|
Request |
Enrollment.getRequest()
Request
|
Modifier and Type | Method and Description |
---|---|
List<Request> |
Student.getRequests()
Student's course and free time requests
|
Modifier and Type | Method and Description |
---|---|
boolean |
Student.canAssign(Request request)
True if the given request can be assigned to the student.
|
int |
Request.compareTo(Request r)
Compare to requests, non-alternative requests go first, otherwise use
priority (a request with lower priority goes first)
|
double |
Config.getEnrollmentWeight(Request excludeRequest)
Enrollment weight -- weight of all requests which have an enrollment that
contains this config, excluding the given one.
|
double |
Course.getEnrollmentWeight(Request excludeRequest)
Enrollment weight -- weight of all requests that are enrolled into this course,
excluding the given one.
|
double |
Section.getEnrollmentWeight(Request excludeRequest)
Enrollment weight -- weight of all requests which have an enrollment that
contains this section, excluding the given one.
|
double |
Config.getUnreservedSpace(Request excludeRequest)
Available space in the configuration that is not reserved by any config reservation
|
double |
Offering.getUnreservedSpace(Request excludeRequest)
Available space in the offering that is not reserved by any reservation
|
double |
Section.getUnreservedSpace(Request excludeRequest)
Available space in the section that is not reserved by any section reservation
|
Constructor and Description |
---|
Enrollment(Request request,
int priority,
Config config,
Set<? extends Assignment> assignments)
Constructor
|
Enrollment(Request request,
int priority,
Course course,
Config config,
Set<? extends Assignment> assignments,
Reservation reservation)
Constructor
|
Modifier and Type | Method and Description |
---|---|
double |
Reservation.getReservedAvailableSpace(Request excludeRequest)
Available reserved space
|
Modifier and Type | Method and Description |
---|---|
double |
OriginalStudentWeights.getBound(Request request) |
double |
PriorityStudentWeights.getBound(Request request) |
double |
StudentWeights.getBound(Request request)
Return lower bound for the given request
|
double |
PriorityStudentWeights.getCachedWeight(Request request) |
double |
EqualStudentWeights.getWeight(Request request) |
double |
OriginalStudentWeights.getWeight(Request request) |
double |
PriorityStudentWeights.getWeight(Request request) |
Modifier and Type | Method and Description |
---|---|
boolean |
EqualStudentWeights.isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution) |
boolean |
OriginalStudentWeights.isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution) |
boolean |
PriorityStudentWeights.isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution) |