Package | Description |
---|---|
net.sf.cpsolver.coursett |
University Course Timetabling.
|
net.sf.cpsolver.coursett.constraint |
University Course Timetabling: Constraints.
|
net.sf.cpsolver.coursett.criteria |
University Course Timetabling: Criteria.
|
net.sf.cpsolver.coursett.criteria.additional |
University Course Timetabling: Additional (Experimental) Criteria.
|
net.sf.cpsolver.coursett.criteria.placement |
University Course Timetabling: Placement Selection Criteria.
|
net.sf.cpsolver.coursett.custom |
University Course Timetabling: Various customizations.
|
net.sf.cpsolver.coursett.heuristics |
University Course Timetabling: Heuristics.
|
net.sf.cpsolver.coursett.model |
University Course Timetabling: Model.
|
net.sf.cpsolver.coursett.neighbourhoods |
University Course Timetabling: Various Neighbourhoods.
|
Modifier and Type | Method and Description |
---|---|
protected Solution<Lecture,Placement> |
TimetableSaver.getSolution()
Solution to be saved
|
Solver<Lecture,Placement> |
TimetableSaver.getSolver()
Solver
|
Solver<Lecture,Placement> |
TimetableXMLLoader.getSolver() |
Modifier and Type | Method and Description |
---|---|
void |
Test.bestCleared(Solution<Lecture,Placement> solution) |
void |
Test.bestRestored(Solution<Lecture,Placement> solution) |
void |
Test.bestSaved(Solution<Lecture,Placement> solution) |
void |
Test.getInfo(Solution<Lecture,Placement> solution,
Map<String,String> info) |
void |
Test.getInfo(Solution<Lecture,Placement> solution,
Map<String,String> info,
Collection<Lecture> variables) |
void |
Test.getInfo(Solution<Lecture,Placement> solution,
Map<String,String> info,
Collection<Lecture> variables) |
void |
Test.init(Solver<Lecture,Placement> solver)
Solver initialization
|
void |
TimetableXMLLoader.load(Solution<Lecture,Placement> currentSolution) |
void |
Test.notify(Solution<Lecture,Placement> solution)
Add a line into the output CSV file when a enw best solution is found.
|
static void |
Test.printSomeStuff(Solution<Lecture,Placement> solution)
Create info.txt with some more information about the problem
|
static void |
Test.saveOutputCSV(Solution<Lecture,Placement> s,
File file) |
void |
TimetableXMLLoader.setSolver(Solver<Lecture,Placement> solver) |
void |
Test.solutionUpdated(Solution<Lecture,Placement> solution) |
Constructor and Description |
---|
TimetableSaver(Solver<Lecture,Placement> solver)
Constructor
|
TimetableXMLSaver(Solver<Lecture,Placement> solver) |
Modifier and Type | Method and Description |
---|---|
Lecture |
ClassLimitConstraint.getParentLecture() |
Modifier and Type | Method and Description |
---|---|
protected Criterion<Lecture,Placement> |
DepartmentSpreadConstraint.getCriterion() |
protected Criterion<Lecture,Placement> |
SpreadConstraint.getCriterion() |
Modifier and Type | Method and Description |
---|---|
void |
ClassLimitConstraint.addParentAdepts(Collection<Placement> adepts,
Lecture parent,
Placement value,
Set<Placement> conflicts) |
void |
GroupConstraint.addVariable(Lecture lecture) |
void |
IgnoreStudentConflictsConstraint.addVariable(Lecture variable) |
void |
JenrlConstraint.addVariable(Lecture variable) |
void |
SpreadConstraint.addVariable(Lecture lecture) |
boolean |
InstructorConstraint.isAvailable(Lecture lecture,
Placement placement) |
boolean |
InstructorConstraint.isAvailable(Lecture lecture,
TimeLocation time) |
boolean |
RoomConstraint.isAvailable(Lecture lecture,
TimeLocation time,
Long scheduler) |
boolean |
GroupConstraint.isChildrenNotOverlap(Lecture lec1,
Placement plc1,
Lecture lec2,
Placement plc2) |
long |
JenrlConstraint.jenrl(Lecture variable,
Placement value)
Number of joined enrollments if the given value is assigned to the given
variable
|
void |
GroupConstraint.removeVariable(Lecture lecture) |
Modifier and Type | Method and Description |
---|---|
void |
ClassLimitConstraint.computeAdepts(Collection<Placement> adepts,
List<Lecture> variables,
Placement value,
Set<Placement> conflicts) |
List<FlexibleConstraint.Block> |
MaxBlockFlexibleConstraint.getBlocks(int dayCode,
Set<Placement> conflicts,
Placement value,
HashMap<Lecture,Placement> assignments,
BitSet week) |
List<FlexibleConstraint.Block> |
MaxBreaksFlexibleConstraint.getBlocks(int dayCode,
Set<Placement> conflicts,
Placement value,
HashMap<Lecture,Placement> assignments,
BitSet week) |
List<FlexibleConstraint.Block> |
BreakFlexibleConstraint.getBreakBlocks(int dayCode,
Set<Placement> conflicts,
Placement value,
HashMap<Lecture,Placement> assignments,
BitSet week)
Creates a list of consecutive blocks with back-to-back classes.
|
double |
FlexibleConstraint.getCurrentPreference(Set<Placement> conflicts,
HashMap<Lecture,Placement> assignments)
Return the current preference of the flexible constraint, considering conflicts and new assignments.
|
double |
BreakFlexibleConstraint.getNrViolations(Set<Placement> conflicts,
HashMap<Lecture,Placement> assignments) |
abstract double |
FlexibleConstraint.getNrViolations(Set<Placement> conflicts,
HashMap<Lecture,Placement> assignments) |
double |
MaxBlockFlexibleConstraint.getNrViolations(Set<Placement> conflicts,
HashMap<Lecture,Placement> assignments) |
double |
MaxBreaksFlexibleConstraint.getNrViolations(Set<Placement> conflicts,
HashMap<Lecture,Placement> assignments) |
protected Set<Placement> |
FlexibleConstraint.getRelevantPlacements(int dayCode,
Set<Placement> conflicts,
Placement value,
HashMap<Lecture,Placement> assignments,
BitSet week)
Returns placements of variables assigned to this constraint with assignment which satisfy following conditions:
They must be taught in the day included in dayCode.
|
void |
GroupConstraint.setModel(Model<Lecture,Placement> model) |
Constructor and Description |
---|
ClassLimitConstraint(Lecture parent,
String name) |
Modifier and Type | Method and Description |
---|---|
PerturbationsCounter<Lecture,Placement> |
Perturbations.getPerturbationsCounter() |
Modifier and Type | Method and Description |
---|---|
static boolean |
StudentConflict.applicable(Lecture l1,
Lecture l2) |
static boolean |
StudentConflict.committed(Lecture l1,
Lecture l2) |
static boolean |
StudentConflict.hard(Lecture l1,
Lecture l2) |
static boolean |
StudentConflict.ignore(Lecture l1,
Lecture l2) |
boolean |
StudentCommittedConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
StudentConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
StudentDistanceConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
StudentHardConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
StudentOverlapConflict.isApplicable(Lecture l1,
Lecture l2) |
Modifier and Type | Method and Description |
---|---|
double[] |
BackToBackInstructorPreferences.getBounds(Collection<Lecture> variables) |
double[] |
BrokenTimePatterns.getBounds(Collection<Lecture> variables) |
double[] |
DistributionPreferences.getBounds(Collection<Lecture> variables) |
double[] |
Perturbations.getBounds(Collection<Lecture> variables) |
double[] |
RoomPreferences.getBounds(Collection<Lecture> variables) |
double[] |
RoomViolations.getBounds(Collection<Lecture> variables) |
double[] |
SameSubpartBalancingPenalty.getBounds(Collection<Lecture> variables) |
double[] |
StudentCommittedConflict.getBounds(Collection<Lecture> variables) |
double[] |
StudentConflict.getBounds(Collection<Lecture> variables) |
double[] |
TimePreferences.getBounds(Collection<Lecture> variables) |
double[] |
TooBigRooms.getBounds(Collection<Lecture> variables) |
void |
FlexibleConstraintCriterion.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
double |
BackToBackInstructorPreferences.getValue(Collection<Lecture> variables) |
double |
BrokenTimePatterns.getValue(Collection<Lecture> variables) |
double |
DepartmentBalancingPenalty.getValue(Collection<Lecture> variables) |
double |
DistributionPreferences.getValue(Collection<Lecture> variables) |
double |
FlexibleConstraintCriterion.getValue(Collection<Lecture> variables) |
double |
Perturbations.getValue(Collection<Lecture> variables) |
double |
SameSubpartBalancingPenalty.getValue(Collection<Lecture> variables) |
double |
StudentCommittedConflict.getValue(Collection<Lecture> variables) |
double |
StudentConflict.getValue(Collection<Lecture> variables) |
boolean |
FlexibleConstraintCriterion.init(Solver<Lecture,Placement> solver) |
boolean |
Perturbations.init(Solver<Lecture,Placement> solver) |
boolean |
StudentConflict.init(Solver<Lecture,Placement> solver) |
boolean |
TimetablingCriterion.init(Solver<Lecture,Placement> solver) |
Modifier and Type | Method and Description |
---|---|
boolean |
IgnoredCommittedStudentConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
IgnoredStudentConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
ImportantStudentHardConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
InstructorStudentHardConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
QuadraticStudentConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
QuadraticStudentHardConflict.isApplicable(Lecture l1,
Lecture l2) |
boolean |
StudentLuchBreak.isApplicable(Lecture l1,
Lecture l2) |
static boolean |
InstructorStudentHardConflict.oneInstructorOtherHard(Lecture l1,
Lecture l2)
One of the lectures is hard, there is a joint enrollment constraint between them, and
there is at least one student that is instructor for one lecture and the other lecture
is singleton.
|
Modifier and Type | Method and Description |
---|---|
double[] |
IgnoredCommittedStudentConflict.getBounds(Collection<Lecture> variables) |
void |
IgnoredStudentConflict.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
void |
ImportantStudentConflict.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
void |
ImportantStudentHardConflict.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
void |
InstructorLunchBreak.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
void |
InstructorStudentConflict.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
void |
InstructorStudentHardConflict.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
void |
StudentLuchBreak.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
double |
IgnoredCommittedStudentConflict.getValue(Collection<Lecture> variables) |
double |
InstructorLunchBreak.getValue(Collection<Lecture> variables) |
boolean |
InstructorLunchBreak.init(Solver<Lecture,Placement> solver) |
boolean |
RoomSizePenalty.init(Solver<Lecture,Placement> solver) |
boolean |
StudentLuchBreak.init(Solver<Lecture,Placement> solver) |
Modifier and Type | Field and Description |
---|---|
protected ConflictStatistics<Lecture,Placement> |
WeightedHardConflicts.iStat |
Modifier and Type | Method and Description |
---|---|
void |
WeightedHardConflicts.bestCleared(Solution<Lecture,Placement> solution) |
void |
WeightedHardConflicts.bestRestored(Solution<Lecture,Placement> solution) |
void |
WeightedHardConflicts.bestSaved(Solution<Lecture,Placement> solution) |
void |
PlacementSelectionCriterion.getInfo(Map<String,String> info,
Collection<Lecture> variables) |
void |
WeightedHardConflicts.getInfo(Solution<Lecture,Placement> solution,
Map<String,String> info) |
void |
WeightedHardConflicts.getInfo(Solution<Lecture,Placement> solution,
Map<String,String> info,
Collection<Lecture> variables) |
void |
WeightedHardConflicts.getInfo(Solution<Lecture,Placement> solution,
Map<String,String> info,
Collection<Lecture> variables) |
boolean |
DeltaTimePreference.init(Solver<Lecture,Placement> solver) |
boolean |
WeightedHardConflicts.init(Solver<Lecture,Placement> solver) |
void |
WeightedHardConflicts.solutionUpdated(Solution<Lecture,Placement> solution) |
Modifier and Type | Method and Description |
---|---|
void |
DeterministicStudentSectioning.resection(Lecture lecture,
boolean recursive,
boolean configAsWell)
No re-sectioning (final sectioning) during deterministic student sectioning.
|
Modifier and Type | Method and Description |
---|---|
protected InitialSectioning.Group[] |
DeterministicStudentSectioning.studentsToLectures(Long offeringId,
Collection<Student> students,
Collection<Lecture> lectures) |
Modifier and Type | Method and Description |
---|---|
Lecture |
LectureSelection.selectVariable(Solution<Lecture,Placement> solution) |
Modifier and Type | Method and Description |
---|---|
Neighbour<Lecture,Placement> |
NeighbourSelectionWithSuggestions.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
NeighbourSelectionWithSuggestions.selectNeighbourWithSuggestions(Solution<Lecture,Placement> solution,
Lecture lecture,
int depth) |
Modifier and Type | Method and Description |
---|---|
Neighbour<Lecture,Placement> |
NeighbourSelectionWithSuggestions.selectNeighbourWithSuggestions(Solution<Lecture,Placement> solution,
Lecture lecture,
int depth) |
Placement |
PlacementSelection.selectValue(Solution<Lecture,Placement> solution,
Lecture var) |
Modifier and Type | Method and Description |
---|---|
int |
NeighbourSelectionWithSuggestions.SuggestionNeighbour.compareTo(Solution<Lecture,Placement> solution) |
double |
TimetableComparator.currentValue(Solution<Lecture,Placement> currentSolution)
Deprecated.
|
double |
TimetableComparator.getBest(Solution<Lecture,Placement> currentSolution)
Deprecated.
|
void |
UniversalPerturbationsCounter.getInfo(Map<String,String> info,
TimetableModel model,
List<Lecture> variables) |
void |
LectureSelection.init(Solver<Lecture,Placement> solver) |
void |
NeighbourSelectionWithSuggestions.init(Solver<Lecture,Placement> solver) |
void |
PlacementSelection.init(Solver<Lecture,Placement> solver) |
Neighbour<Lecture,Placement> |
NeighbourSelectionWithSuggestions.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
NeighbourSelectionWithSuggestions.selectNeighbourWithSuggestions(Solution<Lecture,Placement> solution,
Lecture lecture,
int depth) |
Placement |
PlacementSelection.selectValue(Solution<Lecture,Placement> solution,
Lecture var) |
Lecture |
LectureSelection.selectVariable(Solution<Lecture,Placement> solution) |
Constructor and Description |
---|
NeighbourSelectionWithSuggestions(Solver<Lecture,Placement> solver) |
SuggestionNeighbour(Map<Lecture,Placement> resolvedLectures) |
Modifier and Type | Method and Description |
---|---|
Lecture |
FinalSectioning.Move.firstLecture() |
Lecture |
Lecture.getChild(Student student,
Long subpartId) |
Lecture |
InitialSectioning.Group.getLecture() |
Lecture |
Lecture.getParent() |
Lecture |
FinalSectioning.Move.secondLecture() |
Modifier and Type | Method and Description |
---|---|
Map<Long,Set<Lecture>> |
Student.canNotEnrollSections() |
List<Lecture> |
Lecture.conflictLectures(Student student)
Lectures different from this one, where it is student conflict of the
given student between this and the lecture
|
Set<Lecture> |
FinalSectioning.MoveBetweenCfgs.firstLectures() |
List<Lecture> |
Lecture.getChildren(Long subpartId) |
Map<Lecture,Long> |
Lecture.getInitialStudentConflicts()
Table of student conflicts caused by the initial assignment of this
lecture in format (another lecture, number)
|
Set<Lecture> |
Student.getLectures() |
Map<Long,Set<Lecture>> |
Configuration.getTopLectures() |
Set<Lecture> |
Configuration.getTopLectures(Long subpartId) |
Set<Constraint<Lecture,Placement>> |
Lecture.getWeakeningConstraints() |
List<Lecture> |
Lecture.sameStudentsLectures() |
List<Lecture> |
Lecture.sameSubpartLectures()
Set of lectures of the same class (only section is different)
|
Set<Lecture> |
FinalSectioning.MoveBetweenCfgs.secondLectures() |
Modifier and Type | Method and Description |
---|---|
void |
Student.addCanNotEnroll(Lecture lecture) |
void |
Student.addLecture(Lecture lecture) |
void |
Configuration.addTopLecture(Lecture lecture) |
boolean |
Lecture.areStudentConflictsHard(Lecture other) |
boolean |
Student.canEnroll(Lecture lecture) |
boolean |
Lecture.canShareRoom(Lecture other) |
boolean |
Student.canUnenroll(Lecture lecture) |
int |
Lecture.compareTo(Lecture o) |
FinalSectioning.Move |
FinalSectioning.createMove(Lecture firstLecture,
Student firstStudent,
Lecture secondLecture,
Student secondStudent) |
FinalSectioning.Move |
FinalSectioning.createMove(Lecture firstLecture,
Student firstStudent,
Lecture secondLecture,
Student secondStudent,
FinalSectioning.Move parentMove) |
void |
FinalSectioning.findAndPerformMoves(Lecture lecture,
HashSet<Lecture> lecturesToRecompute)
Swap students between this and the same lectures (lectures which differ
only in the section)
|
FinalSectioning.Move |
FinalSectioning.findAwayMove(Lecture lecture) |
FinalSectioning.Move |
FinalSectioning.findMove(Lecture lecture,
Student student) |
protected String |
DefaultStudentSectioning.getClassLabel(Lecture lecture)
Class label
|
Double |
Student.getConflictingPriorty(Lecture l1,
Lecture l2) |
double |
Student.getJenrlWeight(Lecture l1,
Lecture l2) |
Double |
Student.getPriority(Lecture lecture) |
boolean |
Lecture.isToIgnoreStudentConflictsWith(Lecture other)
Returns true if there is
IgnoreStudentConflictsConstraint between the two lectures. |
JenrlConstraint |
Lecture.jenrlConstraint(Lecture another)
All JENRL constraints of this lecture
|
void |
Student.removeLecture(Lecture lecture) |
void |
DefaultStudentSectioning.resection(Lecture lecture,
boolean recursive,
boolean configAsWell)
Perform sectioning on the given lecture
|
void |
FinalSectioning.resection(Lecture lecture,
boolean recursive,
boolean configAsWell)
Perform sectioning on the given lecture
|
void |
StudentSectioning.resection(Lecture lecture,
boolean recursive,
boolean configAsWell)
Perform sectioning on the given lecture
|
Set<Student> |
Lecture.sameStudents(Lecture lecture)
List of students enrolled in this class as well as in the given class
|
void |
Lecture.setParent(Lecture parent) |
int |
FinalSectioning.test(Student student,
Lecture lecture) |
void |
OnFlySectioning.variableAdded(Lecture variable) |
void |
OnFlySectioning.variableRemoved(Lecture variable) |
Modifier and Type | Method and Description |
---|---|
void |
Student.addCanNotEnroll(Long offeringId,
Collection<Lecture> lectures) |
void |
TimetableModel.addConstraint(Constraint<Lecture,Placement> constraint) |
void |
Lecture.addContstraint(Constraint<Lecture,Placement> constraint) |
void |
OnFlySectioning.constraintAdded(Constraint<Lecture,Placement> constraint) |
void |
OnFlySectioning.constraintRemoved(Constraint<Lecture,Placement> constraint) |
void |
FinalSectioning.findAndPerformMoves(Configuration configuration,
HashSet<Lecture> lecturesToRecompute) |
void |
FinalSectioning.findAndPerformMoves(Lecture lecture,
HashSet<Lecture> lecturesToRecompute)
Swap students between this and the same lectures (lectures which differ
only in the section)
|
Map<String,String> |
TimetableModel.getInfo(Collection<Lecture> variables) |
double |
TimetableModel.getTotalValue(Collection<Lecture> variables) |
boolean |
OnFlySectioning.init(Solver<Lecture,Placement> solver)
Initialization
|
protected void |
DefaultStudentSectioning.initialSectioningLectures(Long offeringId,
String courseName,
Collection<Student> students,
Collection<Lecture> lectures)
Enroll students into the given classes during the initial data load using
InitialSectioning . |
void |
TimetableModel.removeConstraint(Constraint<Lecture,Placement> constraint) |
void |
Lecture.removeContstraint(Constraint<Lecture,Placement> constraint) |
void |
Lecture.setSameSubpartLectures(List<Lecture> sameSubpartLectures)
Set of lectures of the same class (only section is different)
|
protected InitialSectioning.Group[] |
DefaultStudentSectioning.studentsToLectures(Long offeringId,
Collection<Student> students,
Collection<Lecture> lectures)
Section students into lectures.
|
Constructor and Description |
---|
Group(Lecture lecture) |
Placement(Lecture lecture,
TimeLocation timeLocation,
List<RoomLocation> roomLocations) |
Placement(Lecture lecture,
TimeLocation timeLocation,
RoomLocation roomLocation)
Constructor
|
Modifier and Type | Method and Description |
---|---|
Neighbour<Lecture,Placement> |
RoomChange.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
RoomSwap.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
TimeChange.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
TimeSwap.selectNeighbour(Solution<Lecture,Placement> solution) |
Modifier and Type | Method and Description |
---|---|
void |
RoomSwap.init(Solver<Lecture,Placement> solver) |
void |
TimeSwap.init(Solver<Lecture,Placement> solver) |
Double |
RoomSwap.resolve(Solution<Lecture,Placement> solution,
double total,
long startTime,
Map<Lecture,Placement> assignments,
List<Placement> conflicts,
int index) |
Double |
RoomSwap.resolve(Solution<Lecture,Placement> solution,
double total,
long startTime,
Map<Lecture,Placement> assignments,
List<Placement> conflicts,
int index) |
Double |
TimeSwap.resolve(Solution<Lecture,Placement> solution,
double total,
long startTime,
Map<Lecture,Placement> assignments,
List<Placement> conflicts,
int index) |
Double |
TimeSwap.resolve(Solution<Lecture,Placement> solution,
double total,
long startTime,
Map<Lecture,Placement> assignments,
List<Placement> conflicts,
int index) |
Neighbour<Lecture,Placement> |
RoomChange.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
RoomSwap.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
TimeChange.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
TimeSwap.selectNeighbour(Solution<Lecture,Placement> solution) |