Package | Description |
---|---|
net.sf.cpsolver.exam |
Examination Timetabling Solver.
|
net.sf.cpsolver.exam.criteria |
Examination Timetabling: Criteria.
|
net.sf.cpsolver.exam.criteria.additional |
Examination Timetabling: Additional (Experimental) Criteria.
|
net.sf.cpsolver.exam.heuristics |
Examination Timetabling: Solution Heuristics.
|
net.sf.cpsolver.exam.model |
Examination Timetabling: Model.
|
net.sf.cpsolver.exam.neighbours |
Examination Timetabling: Various Neighbourhoods.
|
net.sf.cpsolver.exam.split |
This package contains an an experimental criterion that allows an exam to be split into two if it decreases the number of student conflicts.
|
Constructor and Description |
---|
ShutdownHook(Solver<Exam,ExamPlacement> solver) |
Modifier and Type | Method and Description |
---|---|
void |
ExamRotationPenalty.afterAssigned(long iteration,
ExamPlacement value) |
void |
RoomSplitDistancePenalty.afterAssigned(long iteration,
ExamPlacement value) |
void |
RoomSplitPenalty.afterAssigned(long iteration,
ExamPlacement value) |
void |
ExamRotationPenalty.beforeUnassigned(long iteration,
ExamPlacement value) |
void |
RoomSplitDistancePenalty.beforeUnassigned(long iteration,
ExamPlacement value) |
void |
RoomSplitPenalty.beforeUnassigned(long iteration,
ExamPlacement value) |
double |
DistributionPenalty.getPeriodValue(ExamPlacement value)
Period related distribution penalty, i.e., sum weights of violated
distribution constraints
|
double |
ExamCriterion.getPeriodValue(ExamPlacement value)
Return impact of this criterion on period assignment (if this criterion is based on period assignment).
|
double |
DistributionPenalty.getRoomValue(ExamPlacement value)
Room related distribution penalty, i.e., sum weights of violated
distribution constraints
|
double |
ExamCriterion.getRoomValue(ExamPlacement value)
Return impact of this criterion on room assignment (if this criterion is based on room assignment).
|
double |
DistributionPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
ExamRotationPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorDirectConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorDistanceBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorMoreThan2ADayConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorNotAvailableConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
LargeExamsPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodIndexPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodSizePenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PerturbationPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomPerturbationPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomSizePenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomSplitDistancePenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomSplitPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentDirectConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentDistanceBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentMoreThan2ADayConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentNotAvailableConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
Modifier and Type | Method and Description |
---|---|
double |
DistributionPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
ExamRotationPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorDirectConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorDistanceBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorMoreThan2ADayConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
InstructorNotAvailableConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
LargeExamsPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodIndexPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodSizePenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PerturbationPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomPerturbationPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomSizePenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomSplitDistancePenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomSplitPenalty.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentDirectConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentDistanceBackToBackConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentMoreThan2ADayConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
StudentNotAvailableConflicts.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
boolean |
DistributionPenalty.init(Solver<Exam,ExamPlacement> solver) |
boolean |
LargeExamsPenalty.init(Solver<Exam,ExamPlacement> solver) |
boolean |
PeriodPenalty.init(Solver<Exam,ExamPlacement> solver) |
boolean |
PerturbationPenalty.init(Solver<Exam,ExamPlacement> solver) |
boolean |
RoomPenalty.init(Solver<Exam,ExamPlacement> solver) |
boolean |
RoomSizePenalty.init(Solver<Exam,ExamPlacement> solver) |
boolean |
StudentBackToBackConflicts.init(Solver<Exam,ExamPlacement> solver) |
boolean |
StudentDistanceBackToBackConflicts.init(Solver<Exam,ExamPlacement> solver) |
Modifier and Type | Method and Description |
---|---|
double |
DistributionViolation.getPeriodValue(ExamPlacement value) |
double |
DistributionViolation.getRoomValue(ExamPlacement value) |
double |
DistanceToStronglyPreferredRoom.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
DistributionViolation.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodViolation.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomViolation.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
Modifier and Type | Method and Description |
---|---|
double |
DistanceToStronglyPreferredRoom.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
DistributionViolation.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
PeriodViolation.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
double |
RoomViolation.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts) |
Modifier and Type | Method and Description |
---|---|
ExamPlacement |
ExamTabuSearch.selectValue(Solution<Exam,ExamPlacement> solution,
Exam exam)
Value selection
|
Modifier and Type | Method and Description |
---|---|
Neighbour<Exam,ExamPlacement> |
ExamConstruction.checkLocalOptimality(ExamModel model)
Find a new assignment of one of the assigned exams that improves the time
cost
getTimeCost() and for which there is a set of
available rooms Exam.findBestAvailableRooms(ExamPeriodPlacement) . |
Neighbour<Exam,ExamPlacement> |
ExamGreatDeluge.genMove(Solution<Exam,ExamPlacement> solution)
Generate neighbour -- select neighbourhood randomly, select neighbour
|
Neighbour<Exam,ExamPlacement> |
ExamSimulatedAnnealing.genMove(Solution<Exam,ExamPlacement> solution)
Generate neighbour -- select neighbourhood randomly, select neighbour
|
Neighbour<Exam,ExamPlacement> |
ExamColoringConstruction.selectNeighbour(Solution<Exam,ExamPlacement> solution) |
Neighbour<Exam,ExamPlacement> |
ExamConstruction.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select a neighbour.
|
Neighbour<Exam,ExamPlacement> |
ExamGreatDeluge.selectNeighbour(Solution<Exam,ExamPlacement> solution)
A neighbour is generated randomly untill an acceptable one is found.
|
Neighbour<Exam,ExamPlacement> |
ExamHillClimbing.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select one of the given neighbourhoods randomly, select neighbour, return
it if its value is below or equal to zero (continue with the next
selection otherwise).
|
Neighbour<Exam,ExamPlacement> |
ExamNeighbourSelection.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Neighbour selection.
|
Neighbour<Exam,ExamPlacement> |
ExamSimulatedAnnealing.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select neighbour -- generate a move
ExamSimulatedAnnealing.genMove(Solution) until an acceptable
neighbour is found
ExamSimulatedAnnealing.accept(Solution, Neighbour) , keep
increasing iteration ExamSimulatedAnnealing.incIter(Solution) . |
Neighbour<Exam,ExamPlacement> |
ExamTabuSearch.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Neighbor selection
|
Modifier and Type | Method and Description |
---|---|
boolean |
ExamGreatDeluge.accept(LazyNeighbour<Exam,ExamPlacement> neighbour,
double value)
Accept lazy neighbour
|
boolean |
ExamHillClimbing.accept(LazyNeighbour<Exam,ExamPlacement> neighbour,
double value)
Accept lazy neighbour
|
boolean |
ExamSimulatedAnnealing.accept(LazyNeighbour<Exam,ExamPlacement> neighbour,
double value)
Accept lazy neighbour
|
protected boolean |
ExamGreatDeluge.accept(Solution<Exam,ExamPlacement> solution,
Neighbour<Exam,ExamPlacement> neighbour)
Accept neighbour
|
protected boolean |
ExamGreatDeluge.accept(Solution<Exam,ExamPlacement> solution,
Neighbour<Exam,ExamPlacement> neighbour)
Accept neighbour
|
protected boolean |
ExamSimulatedAnnealing.accept(Solution<Exam,ExamPlacement> solution,
Neighbour<Exam,ExamPlacement> neighbour)
True if the given neighboir is to be be accepted
|
protected boolean |
ExamSimulatedAnnealing.accept(Solution<Exam,ExamPlacement> solution,
Neighbour<Exam,ExamPlacement> neighbour)
True if the given neighboir is to be be accepted
|
void |
ExamGreatDeluge.bestCleared(Solution<Exam,ExamPlacement> solution) |
void |
ExamHillClimbing.bestCleared(Solution<Exam,ExamPlacement> solution) |
void |
ExamSimulatedAnnealing.bestCleared(Solution<Exam,ExamPlacement> solution) |
void |
ExamGreatDeluge.bestRestored(Solution<Exam,ExamPlacement> solution) |
void |
ExamHillClimbing.bestRestored(Solution<Exam,ExamPlacement> solution) |
void |
ExamSimulatedAnnealing.bestRestored(Solution<Exam,ExamPlacement> solution) |
void |
ExamGreatDeluge.bestSaved(Solution<Exam,ExamPlacement> solution)
Update last improving iteration count
|
void |
ExamHillClimbing.bestSaved(Solution<Exam,ExamPlacement> solution)
Memorize the iteration when the last best solution was found.
|
void |
ExamSimulatedAnnealing.bestSaved(Solution<Exam,ExamPlacement> solution)
Memorize the iteration when the last best solution was found.
|
boolean |
ExamNeighbourSelection.canContinue(Solution<Exam,ExamPlacement> currentSolution)
Termination condition (i.e., has final phase finished)
|
protected void |
ExamSimulatedAnnealing.cool(Solution<Exam,ExamPlacement> solution)
Cool temperature
|
Neighbour<Exam,ExamPlacement> |
ExamGreatDeluge.genMove(Solution<Exam,ExamPlacement> solution)
Generate neighbour -- select neighbourhood randomly, select neighbour
|
Neighbour<Exam,ExamPlacement> |
ExamSimulatedAnnealing.genMove(Solution<Exam,ExamPlacement> solution)
Generate neighbour -- select neighbourhood randomly, select neighbour
|
void |
ExamGreatDeluge.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info) |
void |
ExamHillClimbing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info) |
void |
ExamSimulatedAnnealing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info) |
void |
ExamGreatDeluge.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info,
Collection<Exam> variables) |
void |
ExamHillClimbing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info,
Collection<Exam> variables) |
void |
ExamSimulatedAnnealing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info,
Collection<Exam> variables) |
protected void |
ExamGreatDeluge.incIter(Solution<Exam,ExamPlacement> solution)
Increment iteration count, update bound
|
protected void |
ExamSimulatedAnnealing.incIter(Solution<Exam,ExamPlacement> solution)
Increment iteration counter, cool/reheat/restoreBest if necessary
|
protected void |
ExamGreatDeluge.info(Solution<Exam,ExamPlacement> solution)
Print some information
|
void |
ExamColoringConstruction.init(Solver<Exam,ExamPlacement> solver) |
void |
ExamConstruction.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamGreatDeluge.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamHillClimbing.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamNeighbourSelection.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamSimulatedAnnealing.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamTabuSearch.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamUnassignedVariableSelection.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
protected void |
ExamSimulatedAnnealing.reheat(Solution<Exam,ExamPlacement> solution)
Reheat temperature
|
protected void |
ExamSimulatedAnnealing.restoreBest(Solution<Exam,ExamPlacement> solution)
restore best ever found solution
|
Neighbour<Exam,ExamPlacement> |
ExamColoringConstruction.selectNeighbour(Solution<Exam,ExamPlacement> solution) |
Neighbour<Exam,ExamPlacement> |
ExamConstruction.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select a neighbour.
|
Neighbour<Exam,ExamPlacement> |
ExamGreatDeluge.selectNeighbour(Solution<Exam,ExamPlacement> solution)
A neighbour is generated randomly untill an acceptable one is found.
|
Neighbour<Exam,ExamPlacement> |
ExamHillClimbing.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select one of the given neighbourhoods randomly, select neighbour, return
it if its value is below or equal to zero (continue with the next
selection otherwise).
|
Neighbour<Exam,ExamPlacement> |
ExamNeighbourSelection.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Neighbour selection.
|
Neighbour<Exam,ExamPlacement> |
ExamSimulatedAnnealing.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select neighbour -- generate a move
ExamSimulatedAnnealing.genMove(Solution) until an acceptable
neighbour is found
ExamSimulatedAnnealing.accept(Solution, Neighbour) , keep
increasing iteration ExamSimulatedAnnealing.incIter(Solution) . |
Neighbour<Exam,ExamPlacement> |
ExamTabuSearch.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Neighbor selection
|
ExamPlacement |
ExamTabuSearch.selectValue(Solution<Exam,ExamPlacement> solution,
Exam exam)
Value selection
|
Exam |
ExamUnassignedVariableSelection.selectVariable(Solution<Exam,ExamPlacement> solution)
Variable selection
|
void |
ExamGreatDeluge.solutionUpdated(Solution<Exam,ExamPlacement> solution) |
void |
ExamHillClimbing.solutionUpdated(Solution<Exam,ExamPlacement> solution) |
void |
ExamSimulatedAnnealing.solutionUpdated(Solution<Exam,ExamPlacement> solution) |
Modifier and Type | Method and Description |
---|---|
ExamPlacement |
ExamRoom.getPlacement(ExamPeriod period)
Deprecated.
If room sharing is allowed, this method only returns first exam. Use
ExamRoom.getPlacements(ExamPeriod) instead. |
Modifier and Type | Method and Description |
---|---|
List<ExamPlacement> |
ExamRoom.getPlacements(ExamPeriod period)
Exams placed at the given period
|
List<ExamPlacement> |
Exam.values()
Values (assignment of a period and a set of rooms)
|
Modifier and Type | Method and Description |
---|---|
void |
ExamInstructor.afterAssigned(long iteration,
ExamPlacement p)
An exam was assigned, update instructor assignment table
|
void |
ExamModel.afterAssigned(long iteration,
ExamPlacement placement)
Called after a value is assigned to its variable, optimization criteria
are updated
|
void |
ExamRoom.afterAssigned(long iteration,
ExamPlacement p)
An exam was assigned, update room assignment table
|
void |
ExamStudent.afterAssigned(long iteration,
ExamPlacement value)
An exam was assigned, update student assignment table
|
void |
ExamInstructor.afterUnassigned(long iteration,
ExamPlacement p)
An exam was unassigned, update instructor assignment table
|
void |
ExamRoom.afterUnassigned(long iteration,
ExamPlacement p)
An exam was unassigned, update room assignment table
|
void |
ExamStudent.afterUnassigned(long iteration,
ExamPlacement value)
An exam was unassigned, update student assignment table
|
void |
Exam.assign(long iteration,
ExamPlacement placement) |
void |
ExamDistributionConstraint.assigned(long iteration,
ExamPlacement value) |
void |
ExamRoom.assigned(long iteration,
ExamPlacement p)
An exam was assigned, update room assignment table
|
void |
ExamModel.beforeUnassigned(long iteration,
ExamPlacement placement)
Called before a value is unassigned from its variable, optimization
criteria are updated
|
boolean |
ExamDistributionConstraint.check(ExamPlacement first,
ExamPlacement second)
Check assignments of the given exams
|
void |
ExamRoomSharing.computeConflicts(ExamPlacement exam,
Collection<ExamPlacement> other,
ExamRoom room,
Set<ExamPlacement> conflicts)
Compute conflicting placement for the case when a given examination needs to be placed in the same room at the same period as the other examinations
|
void |
ExamDistributionConstraint.computeConflicts(ExamPlacement givenPlacement,
Set<ExamPlacement> conflicts)
Compute conflicts -- there is a conflict if the other variable is
assigned and
ExamDistributionConstraint.check(ExamPlacement, ExamPlacement) is
false |
void |
ExamInstructor.computeConflicts(ExamPlacement p,
Set<ExamPlacement> conflicts)
Compute conflicts between the given assignment of an exam and all the
current assignments (of this instructor).
|
void |
ExamRoom.computeConflicts(ExamPlacement p,
Set<ExamPlacement> conflicts)
Compute conflicts between the given assignment of an exam and all the
current assignments (of this room)
|
void |
ExamStudent.computeConflicts(ExamPlacement p,
Set<ExamPlacement> conflicts)
Compute conflicts between the given assignment of an exam and all the
current assignments (of this student).
|
double |
ExamPlacement.getDistanceInMeters(ExamPlacement other)
Distance between two placements, i.e., maximal distance between a room of
this placement and a room of the given placement.
|
boolean |
ExamDistributionConstraint.inConflict(ExamPlacement givenPlacement)
Check for conflict -- there is a conflict if the other variable is
assigned and
ExamDistributionConstraint.check(ExamPlacement, ExamPlacement) is
false |
boolean |
ExamInstructor.inConflict(ExamPlacement p)
Check whether there is a conflict between the given assignment of an exam
and all the current assignments (of this instructor).
|
boolean |
ExamRoom.inConflict(ExamPlacement p)
Checks whether there is a conflict between the given assignment of an
exam and all the current assignments (of this room)
|
boolean |
ExamStudent.inConflict(ExamPlacement p)
Check whether there is a conflict between the given assignment of an exam
and all the current assignments (of this student).
|
boolean |
ExamRoomSharing.inConflict(ExamPlacement exam,
Collection<ExamPlacement> other,
ExamRoom room)
True if given examination can not be placed in the same room at the same period as the other examinations
|
boolean |
ExamDistributionConstraint.isConsistent(ExamPlacement first,
ExamPlacement second)
Consistency check --
ExamDistributionConstraint.check(ExamPlacement, ExamPlacement) is
called |
boolean |
ExamInstructor.isConsistent(ExamPlacement p1,
ExamPlacement p2)
True if the given exams can conflict (see
ExamInstructor.isAllowDirectConflicts() ), or if they are placed
at different periods. |
boolean |
ExamRoom.isConsistent(ExamPlacement p1,
ExamPlacement p2)
False if the given two assignments are using this room at the same period
|
boolean |
ExamStudent.isConsistent(ExamPlacement p1,
ExamPlacement p2)
True if the given exams can conflict (see
ExamStudent.canConflict(Exam, Exam) ), or if they are placed at
different periods. |
boolean |
ExamDistributionConstraint.isSatisfied(ExamPlacement p)
Return true if this is hard constraint or this is a soft constraint
without any violation
|
void |
ExamDistributionConstraint.unassigned(long iteration,
ExamPlacement value) |
void |
ExamRoom.unassigned(long iteration,
ExamPlacement p)
An exam was unassigned, update room assignment table
|
Modifier and Type | Method and Description |
---|---|
void |
Exam.addContstraint(Constraint<Exam,ExamPlacement> constraint)
Adds a constraint.
|
int |
ExamRoom.compareTo(Constraint<Exam,ExamPlacement> o)
Compare two rooms (by unique id)
|
int |
ExamStudent.compareTo(Constraint<Exam,ExamPlacement> o)
Compare two students (by student ids)
|
void |
ExamRoomSharing.computeConflicts(Exam exam,
Collection<ExamPlacement> other,
ExamRoom room,
Set<ExamPlacement> conflicts)
Compute conflicting placement for the case when a given examination needs to be placed in the same room at the same period as the other examinations
|
void |
ExamRoomSharing.computeConflicts(Exam exam,
Collection<ExamPlacement> other,
ExamRoom room,
Set<ExamPlacement> conflicts)
Compute conflicting placement for the case when a given examination needs to be placed in the same room at the same period as the other examinations
|
void |
ExamRoomSharing.computeConflicts(ExamPlacement exam,
Collection<ExamPlacement> other,
ExamRoom room,
Set<ExamPlacement> conflicts)
Compute conflicting placement for the case when a given examination needs to be placed in the same room at the same period as the other examinations
|
void |
ExamRoomSharing.computeConflicts(ExamPlacement exam,
Collection<ExamPlacement> other,
ExamRoom room,
Set<ExamPlacement> conflicts)
Compute conflicting placement for the case when a given examination needs to be placed in the same room at the same period as the other examinations
|
void |
ExamDistributionConstraint.computeConflicts(ExamPlacement givenPlacement,
Set<ExamPlacement> conflicts)
Compute conflicts -- there is a conflict if the other variable is
assigned and
ExamDistributionConstraint.check(ExamPlacement, ExamPlacement) is
false |
void |
ExamInstructor.computeConflicts(ExamPlacement p,
Set<ExamPlacement> conflicts)
Compute conflicts between the given assignment of an exam and all the
current assignments (of this instructor).
|
void |
ExamRoom.computeConflicts(ExamPlacement p,
Set<ExamPlacement> conflicts)
Compute conflicts between the given assignment of an exam and all the
current assignments (of this room)
|
void |
ExamStudent.computeConflicts(ExamPlacement p,
Set<ExamPlacement> conflicts)
Compute conflicts between the given assignment of an exam and all the
current assignments (of this student).
|
boolean |
ExamRoomSharing.inConflict(Exam exam,
Collection<ExamPlacement> other,
ExamRoom room)
True if given examination can not be placed in the same room at the same period as the other examinations
|
boolean |
ExamRoomSharing.inConflict(ExamPlacement exam,
Collection<ExamPlacement> other,
ExamRoom room)
True if given examination can not be placed in the same room at the same period as the other examinations
|
void |
Exam.removeContstraint(Constraint<Exam,ExamPlacement> constraint)
Removes a constraint.
|
Constructor and Description |
---|
ExamRoomSharing(Model<Exam,ExamPlacement> model,
DataProperties config) |
PredefinedExamRoomSharing(Model<Exam,ExamPlacement> model,
DataProperties config) |
SimpleExamRoomSharing(Model<Exam,ExamPlacement> model,
DataProperties config) |
Modifier and Type | Method and Description |
---|---|
Neighbour<Exam,ExamPlacement> |
ExamPeriodSwapMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly,
select an available period randomly (if it is not assigned),
use rooms if possible, select rooms using
Exam.findBestAvailableRooms(ExamPeriodPlacement) if not (exam is unassigned, a room is not available or used). |
Neighbour<Exam,ExamPlacement> |
ExamRandomMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly, select an available period randomly (from
Exam.getPeriodPlacements() ), select rooms using
Exam.findBestAvailableRooms(ExamPeriodPlacement) . |
Neighbour<Exam,ExamPlacement> |
ExamRoomMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly, select an available period randomly (if it is
not assigned, from
Exam.getPeriodPlacements() ), select rooms
using Exam.findRoomsRandom(ExamPeriodPlacement) |
Neighbour<Exam,ExamPlacement> |
ExamTimeMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly,
select an available period randomly (if it is not assigned),
use rooms if possible, select rooms using
Exam.findBestAvailableRooms(ExamPeriodPlacement) if not (exam is unassigned, a room is not available or used). |
Modifier and Type | Method and Description |
---|---|
boolean |
ExamPeriodSwapMove.checkDistributionConstraints(Exam exam,
ExamPeriodPlacement period,
Map<Exam,ExamPlacement> placements) |
boolean |
ExamPeriodSwapMove.checkDistributionConstraints(Exam exam,
ExamRoomPlacement room,
Set<ExamPlacement> conflictsToIgnore,
Map<Exam,ExamPlacement> placements) |
boolean |
ExamPeriodSwapMove.checkDistributionConstraints(Exam exam,
ExamRoomPlacement room,
Set<ExamPlacement> conflictsToIgnore,
Map<Exam,ExamPlacement> placements) |
Set<ExamRoomPlacement> |
ExamPeriodSwapMove.findBestAvailableRooms(Exam exam,
ExamPeriodPlacement period,
Set<ExamPlacement> conflictsToIgnore,
Map<Exam,ExamPlacement> placements) |
Set<ExamRoomPlacement> |
ExamPeriodSwapMove.findBestAvailableRooms(Exam exam,
ExamPeriodPlacement period,
Set<ExamPlacement> conflictsToIgnore,
Map<Exam,ExamPlacement> placements) |
int |
ExamPeriodSwapMove.getDistributionConstraintPenalty(Exam exam,
ExamRoomPlacement room,
Set<ExamPlacement> conflictsToIgnore,
Map<Exam,ExamPlacement> placements) |
int |
ExamPeriodSwapMove.getDistributionConstraintPenalty(Exam exam,
ExamRoomPlacement room,
Set<ExamPlacement> conflictsToIgnore,
Map<Exam,ExamPlacement> placements) |
void |
ExamPeriodSwapMove.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamRandomMove.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamRoomMove.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
void |
ExamTimeMove.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
Neighbour<Exam,ExamPlacement> |
ExamPeriodSwapMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly,
select an available period randomly (if it is not assigned),
use rooms if possible, select rooms using
Exam.findBestAvailableRooms(ExamPeriodPlacement) if not (exam is unassigned, a room is not available or used). |
Neighbour<Exam,ExamPlacement> |
ExamRandomMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly, select an available period randomly (from
Exam.getPeriodPlacements() ), select rooms using
Exam.findBestAvailableRooms(ExamPeriodPlacement) . |
Neighbour<Exam,ExamPlacement> |
ExamRoomMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly, select an available period randomly (if it is
not assigned, from
Exam.getPeriodPlacements() ), select rooms
using Exam.findRoomsRandom(ExamPeriodPlacement) |
Neighbour<Exam,ExamPlacement> |
ExamTimeMove.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select an exam randomly,
select an available period randomly (if it is not assigned),
use rooms if possible, select rooms using
Exam.findBestAvailableRooms(ExamPeriodPlacement) if not (exam is unassigned, a room is not available or used). |
Constructor and Description |
---|
ExamRoomSwapNeighbour(ExamPlacement placement,
ExamRoomPlacement current,
ExamRoomPlacement swap) |
ExamSimpleNeighbour(ExamPlacement placement) |
Modifier and Type | Method and Description |
---|---|
ExamPlacement |
ExamSplitMoves.ExamSplitNeighbour.placement()
Placement of the new exam.
|
Modifier and Type | Method and Description |
---|---|
Neighbour<Exam,ExamPlacement> |
ExamSplitMoves.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select a split (split an exam into two), a merge (merge two split exams back together) or
shuffle operation (move students between two exams that has been split before).
|
Modifier and Type | Method and Description |
---|---|
double |
ExamSplitter.delta(ExamStudent student,
ExamPlacement oldPlacement,
ExamPlacement newPlacement)
Difference in the total weighted student conflicts (including
StudentDirectConflicts ,
StudentMoreThan2ADayConflicts , and StudentBackToBackConflicts ) if a student
is moved from an exam with one placement into an exam with another placement. |
double |
ExamSplitter.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts)
Not used
|
Exam |
ExamSplitter.split(Exam parent,
long iteration,
ExamPlacement placement)
Split an exam
|
Modifier and Type | Method and Description |
---|---|
double |
ExamSplitter.getValue(ExamPlacement value,
Set<ExamPlacement> conflicts)
Not used
|
void |
ExamSplitMoves.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
boolean |
ExamSplitter.init(Solver<Exam,ExamPlacement> solver)
Initialization
|
Neighbour<Exam,ExamPlacement> |
ExamSplitMoves.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Select a split (split an exam into two), a merge (merge two split exams back together) or
shuffle operation (move students between two exams that has been split before).
|
Constructor and Description |
---|
ExamSplitNeighbour(Exam exam,
ExamPlacement placement)
Split an exam into two, assign the new exam into the given placement.
|