Package | Description |
---|---|
org.cpsolver.coursett |
University Course Timetabling.
|
org.cpsolver.coursett.criteria.placement |
University Course Timetabling: Placement Selection Criteria.
|
org.cpsolver.coursett.custom |
University Course Timetabling: Various customizations.
|
org.cpsolver.coursett.heuristics |
University Course Timetabling: Heuristics.
|
org.cpsolver.coursett.model |
University Course Timetabling: Model.
|
org.cpsolver.coursett.neighbourhoods |
University Course Timetabling: Various Neighbourhoods.
|
org.cpsolver.coursett.sectioning |
Additional Student Sectioning Algorithms.
|
org.cpsolver.exam.heuristics |
Examination Timetabling: Solution Heuristics.
|
org.cpsolver.exam.neighbours |
Examination Timetabling: Various Neighbourhoods.
|
org.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.
|
org.cpsolver.ifs.algorithms |
IFS Neighbourhood Search Algorithms
|
org.cpsolver.ifs.algorithms.neighbourhoods |
IFS: Various Problem-Independent Neighbourhoods.
|
org.cpsolver.ifs.assignment |
An assignment holds current values of all the variables of a model.
|
org.cpsolver.ifs.dbt |
Dynamic backtracking extension of IFS solver
|
org.cpsolver.ifs.example.tt |
Simple Timetabling Problem.
|
org.cpsolver.ifs.extension |
IFS Extensions (conflict-based statistics, maintenance of arc consistency)
|
org.cpsolver.ifs.heuristics |
IFS Heuristics (value and variable selection criteria)
|
org.cpsolver.ifs.model |
IFS Model (description of a problem)
|
org.cpsolver.ifs.solution |
IFS Solution (also contains solution comparator)
|
org.cpsolver.ifs.solver |
IFS Solver
|
org.cpsolver.ifs.termination |
IFS Termination (termination condition)
|
org.cpsolver.ifs.util |
Utilities
|
org.cpsolver.studentsct |
Student Sectioning Solver.
|
org.cpsolver.studentsct.heuristics |
Student Sectioning: Heuristics.
|
org.cpsolver.studentsct.heuristics.selection |
Student Sectioning: Various Neighbour Selection Criteria.
|
org.cpsolver.studentsct.online.selection |
Online Student Sectioning Solver: Selection Weights and Heuristics.
|
org.cpsolver.studentsct.weights |
Student Sectioning Weightings: various students weight models
|
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) |
protected void |
TimetableXMLLoader.doLoad(Solution<Lecture,Placement> currentSolution,
Element root) |
protected void |
TimetableSolver.fixCompleteSolution(Solution<Lecture,Placement> solution,
double startTime)
Deprecated.
Try to improve existing solution by backtracking search of very limited
depth.
|
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 |
TimetableXMLLoader.load(Solution<Lecture,Placement> currentSolution) |
void |
TimetableXMLLoader.load(Solution<Lecture,Placement> currentSolution,
Document document) |
void |
Test.notify(Solution<Lecture,Placement> solution)
Add a line into the output CSV file when a enw best solution is found.
|
protected void |
TimetableSolver.onAssigned(double startTime,
Solution<Lecture,Placement> solution)
Deprecated.
|
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 |
Test.solutionUpdated(Solution<Lecture,Placement> solution) |
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 |
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.solutionUpdated(Solution<Lecture,Placement> solution) |
Modifier and Type | Method and Description |
---|---|
void |
DeterministicStudentSectioning.switchStudents(Solution<Lecture,Placement> solution,
TerminationCondition<Lecture,Placement> termination)
No re-sectioning (final sectioning) during deterministic student sectioning.
|
Modifier and Type | Method and Description |
---|---|
Solution<Lecture,Placement> |
NeighbourSelectionWithSuggestions.NeighbourSelectionWithSuggestionsContext.getSolution() |
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 |
FixCompleteSolutionNeighbourSelection.FixCompleteSolutionNeighbourContext.incPhase(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
FixCompleteSolutionNeighbourSelection.selectNeighbour(Solution<Lecture,Placement> solution)
Try to improve existing solution by backtracking search of very limited
depth.
|
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 |
---|
NeighbourSelectionWithSuggestionsContext(Solution<Lecture,Placement> solution) |
Modifier and Type | Method and Description |
---|---|
void |
FinalSectioning.execute(Solution<Lecture,Placement> solution,
TerminationCondition<Lecture,Placement> termination) |
void |
DefaultStudentSectioning.switchStudents(Solution<Lecture,Placement> solution,
TerminationCondition<Lecture,Placement> termination)
Run student final sectioning (switching students between sections of the same
class in order to minimize overall number of student conflicts).
|
void |
StudentSectioning.switchStudents(Solution<Lecture,Placement> solution,
TerminationCondition<Lecture,Placement> termination)
Run student final sectioning (switching students between sections of the same
class in order to minimize overall number of student conflicts).
|
Modifier and Type | Method and Description |
---|---|
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) |
Neighbour<Lecture,Placement> |
RoomChange.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
RoomSwap.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
Suggestion.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 |
---|---|
static double |
StudentSwapSectioning.gp(Solution<Lecture,Placement> solution)
Student group percentage of a solution
|
protected double |
StudentSwapSectioning.objective(Solution<Lecture,Placement> solution)
Student conflict weight of a solution
|
Neighbour<Lecture,Placement> |
RandomStudentSwap.selectNeighbour(Solution<Lecture,Placement> solution) |
Neighbour<Lecture,Placement> |
StudentSwapGenerator.selectNeighbour(Solution<Lecture,Placement> solution) |
void |
SctSectioning.switchStudents(Solution<Lecture,Placement> solution,
TerminationCondition<Lecture,Placement> termination) |
void |
StudentSwapSectioning.switchStudents(Solution<Lecture,Placement> solution,
TerminationCondition<Lecture,Placement> termination) |
protected double |
SctSectioning.value(Solution<Lecture,Placement> solution)
Student conflict weight for the given solution
|
protected double |
StudentSwapSectioning.value(Solution<Lecture,Placement> solution)
Combined weight of a solution
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
ExamGreatDeluge.accept(Solution<Exam,ExamPlacement> solution,
Neighbour<Exam,ExamPlacement> neighbour)
Deprecated.
Accept neighbour
|
protected boolean |
ExamSimulatedAnnealing.accept(Solution<Exam,ExamPlacement> solution,
Neighbour<Exam,ExamPlacement> neighbour)
Deprecated.
True if the given neighboir is to be be accepted
|
void |
ExamGreatDeluge.bestCleared(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
void |
ExamHillClimbing.bestCleared(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
void |
ExamSimulatedAnnealing.bestCleared(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
void |
ExamGreatDeluge.bestRestored(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
void |
ExamHillClimbing.bestRestored(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
void |
ExamSimulatedAnnealing.bestRestored(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
void |
ExamGreatDeluge.bestSaved(Solution<Exam,ExamPlacement> solution)
Deprecated.
Update last improving iteration count
|
void |
ExamHillClimbing.bestSaved(Solution<Exam,ExamPlacement> solution)
Deprecated.
Memorize the iteration when the last best solution was found.
|
void |
ExamSimulatedAnnealing.bestSaved(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
protected void |
ExamSimulatedAnnealing.Context.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.Context.cool(Solution<Exam,ExamPlacement> solution)
Cool temperature
|
Neighbour<Exam,ExamPlacement> |
ExamGreatDeluge.genMove(Solution<Exam,ExamPlacement> solution)
Deprecated.
Generate neighbour -- select neighbourhood randomly, select neighbour
|
Neighbour<Exam,ExamPlacement> |
ExamSimulatedAnnealing.genMove(Solution<Exam,ExamPlacement> solution)
Deprecated.
Generate neighbour -- select neighbourhood randomly, select neighbour
|
void |
ExamGreatDeluge.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info)
Deprecated.
|
void |
ExamHillClimbing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info)
Deprecated.
|
void |
ExamSimulatedAnnealing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info)
Deprecated.
|
void |
ExamGreatDeluge.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info,
Collection<Exam> variables)
Deprecated.
|
void |
ExamHillClimbing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info,
Collection<Exam> variables)
Deprecated.
|
void |
ExamSimulatedAnnealing.getInfo(Solution<Exam,ExamPlacement> solution,
Map<String,String> info,
Collection<Exam> variables)
Deprecated.
|
protected void |
ExamGreatDeluge.incIter(Solution<Exam,ExamPlacement> solution)
Deprecated.
Increment iteration count, update bound
|
protected void |
ExamGreatDeluge.Context.incIter(Solution<Exam,ExamPlacement> solution) |
protected boolean |
ExamHillClimbing.Context.incIter(Solution<Exam,ExamPlacement> solution) |
protected void |
ExamSimulatedAnnealing.Context.incIter(Solution<Exam,ExamPlacement> solution)
Increment iteration counter, cool/reheat/restoreBest if necessary
|
protected void |
ExamGreatDeluge.info(Solution<Exam,ExamPlacement> solution)
Deprecated.
Print some information
|
protected void |
ExamGreatDeluge.Context.info(Solution<Exam,ExamPlacement> solution) |
protected void |
ExamSimulatedAnnealing.Context.reheat(Solution<Exam,ExamPlacement> solution)
Reheat temperature
|
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)
Deprecated.
A neighbour is generated randomly untill an acceptable one is found.
|
Neighbour<Exam,ExamPlacement> |
ExamHillClimbing.selectNeighbour(Solution<Exam,ExamPlacement> solution)
Deprecated.
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)
Deprecated.
Select neighbour -- generate a move
ExamSimulatedAnnealing.genMove(Solution) until an acceptable
neighbour is found
ExamSimulatedAnnealing.accept(Solution, Neighbour) , keep
increasing iteration ExamSimulatedAnnealing.Context.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)
Deprecated.
|
void |
ExamHillClimbing.solutionUpdated(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
void |
ExamSimulatedAnnealing.solutionUpdated(Solution<Exam,ExamPlacement> solution)
Deprecated.
|
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(Assignment, 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(Assignment, 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(Assignment, 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(Assignment, ExamPeriodPlacement) if not (exam is unassigned, a room is not available or used). |
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 |
---|---|
protected boolean |
NeighbourSearch.accept(NeighbourSearch.NeighbourSearchContext context,
Solution<V,T> solution,
Neighbour<V,T> neighbour)
True if the generated move is to be accepted.
|
protected void |
GreatDeluge.GreatDelugeContext.activate(Solution<V,T> solution)
Setup the bound
|
protected void |
HillClimber.HillClimberContext.activate(Solution<V,T> solution)
Reset the idle iterations counter
|
protected void |
NeighbourSearch.NeighbourSearchContext.activate(Solution<V,T> solution)
Called just before the neighbourhood search is called for the first time.
|
protected void |
SimulatedAnnealing.SimulatedAnnealingContext.activate(Solution<V,T> solution)
Setup the temperature
|
void |
StepCountingHillClimber.StepCountingHillClimberContext.activate(Solution<V,T> solution)
Reset the bound and the steps counter.
|
void |
NeighbourSearch.bestCleared(Solution<V,T> solution) |
void |
NeighbourSearch.NeighbourSearchContext.bestCleared(Solution<V,T> solution) |
void |
ParallelConstruction.bestCleared(Solution<V,T> solution) |
void |
NeighbourSearch.bestRestored(Solution<V,T> solution) |
void |
NeighbourSearch.NeighbourSearchContext.bestRestored(Solution<V,T> solution) |
void |
ParallelConstruction.bestRestored(Solution<V,T> solution) |
void |
GreatDeluge.GreatDelugeContext.bestSaved(Solution<V,T> solution)
Update last improving iteration count
|
void |
NeighbourSearch.bestSaved(Solution<V,T> solution) |
void |
NeighbourSearch.NeighbourSearchContext.bestSaved(Solution<V,T> solution) |
void |
ParallelConstruction.bestSaved(Solution<V,T> solution) |
void |
SimulatedAnnealing.SimulatedAnnealingContext.bestSaved(Solution<V,T> solution)
Memorize the iteration when the last best solution was found.
|
protected boolean |
HillClimber.HillClimberContext.canContinue(Solution<V,T> solution)
Stop the search after a given number of idle (not improving) iterations
|
protected boolean |
NeighbourSearch.NeighbourSearchContext.canContinue(Solution<V,T> solution)
Return false if the search is to be stopped.
|
protected boolean |
StepCountingHillClimber.StepCountingHillClimberContext.canContinue(Solution<V,T> solution)
Stop the search when the number of idle iterations is reached and the bound is no longer decreasing
|
protected void |
SimulatedAnnealing.SimulatedAnnealingContext.cool(Solution<V,T> solution)
Cool temperature
|
protected void |
NeighbourSearch.NeighbourSearchContext.deactivate(Solution<V,T> solution)
Called when the search cannot continue, just before a null neighbour is returned
|
Neighbour<V,T> |
NeighbourSearch.generateMove(Solution<V,T> solution)
Generate a random move
|
void |
NeighbourSearch.getInfo(Solution<V,T> solution,
Map<String,String> info) |
void |
NeighbourSearch.NeighbourSearchContext.getInfo(Solution<V,T> solution,
Map<String,String> info) |
void |
ParallelConstruction.getInfo(Solution<V,T> solution,
Map<String,String> info) |
void |
NeighbourSearch.getInfo(Solution<V,T> solution,
Map<String,String> info,
Collection<V> variables) |
void |
NeighbourSearch.NeighbourSearchContext.getInfo(Solution<V,T> solution,
Map<String,String> info,
Collection<V> variables) |
void |
ParallelConstruction.getInfo(Solution<V,T> solution,
Map<String,String> info,
Collection<V> variables) |
protected void |
GreatDeluge.GreatDelugeContext.incIteration(Solution<V,T> solution)
Increment iteration count, update bound
|
protected void |
HillClimber.HillClimberContext.incIteration(Solution<V,T> solution)
Increase iteration counter
|
protected void |
NeighbourSearch.NeighbourSearchContext.incIteration(Solution<V,T> solution)
Increment iteration counters etc.
|
protected void |
SimulatedAnnealing.SimulatedAnnealingContext.incIteration(Solution<V,T> solution)
Increment iteration counter, cool/reheat/restoreBest if necessary
|
void |
StepCountingHillClimber.StepCountingHillClimberContext.incIteration(Solution<V,T> solution)
Increase iteration number, also update bound when the given number of steps is reached.
|
boolean |
NeighbourSearch.isMaster(Solution<V,T> solution)
In single solution multiple threads environments return true if the given solution is of the first thread
|
protected void |
SimulatedAnnealing.SimulatedAnnealingContext.reheat(Solution<V,T> solution)
Reheat temperature
|
protected void |
SimulatedAnnealing.SimulatedAnnealingContext.restoreBest(Solution<V,T> solution)
restore best ever found solution
|
Neighbour<V,T> |
MetaHeuristicSearch.selectNeighbour(Solution<V,T> solution)
Neighbour selection.
|
Neighbour<V,T> |
NeighbourSearch.selectNeighbour(Solution<V,T> solution) |
Neighbour<V,T> |
NeighbourSelector.selectNeighbour(Solution<V,T> solution)
Neighbour selection -- use
NeighbourSelection.selectNeighbour(Solution)
update stats if desired. |
Neighbour<V,T> |
ParallelConstruction.selectNeighbour(Solution<V,T> solution) |
Neighbour<V,T> |
SimpleSearch.selectNeighbour(Solution<V,T> solution)
Neighbour selection.
|
void |
NeighbourSearch.solutionUpdated(Solution<V,T> solution) |
void |
NeighbourSearch.NeighbourSearchContext.solutionUpdated(Solution<V,T> solution) |
void |
ParallelConstruction.solutionUpdated(Solution<V,T> solution) |
protected void |
SimulatedAnnealing.SimulatedAnnealingContext.train(Solution<V,T> solution)
Set initial temperature based on the training period
|
protected void |
SimpleSearch.updateProgress(int phase,
Solution<V,T> solution) |
Modifier and Type | Method and Description |
---|---|
protected Double |
RandomSwapMove.resolve(Solution<V,T> solution,
double total,
long startTime,
Map<V,T> assignments,
List<T> conflicts,
int index)
Try to resolve given conflicts.
|
Neighbour<V,T> |
RandomMove.selectNeighbour(Solution<V,T> solution) |
Neighbour<V,T> |
RandomSwapMove.selectNeighbour(Solution<V,T> solution) |
Neighbour<V,T> |
SuggestionMove.selectNeighbour(Solution<V,T> solution) |
Constructor and Description |
---|
DefaultInheritedAssignment(Solution<V,T> parent,
int index) |
DefaultParallelAssignment(AssignmentContextHolder<V,T> contexts,
int threadIndex,
Solution<V,T> solution) |
InheritedAssignmentArray(Solution<V,T> parent,
int index) |
OptimisticInheritedAssignment(Solution<V,T> parent,
int index) |
Modifier and Type | Method and Description |
---|---|
T |
DbtValueSelection.selectValue(Solution<V,T> solution,
V selectedVariable)
Value selection
|
V |
DbtVariableSelection.selectVariable(Solution<V,T> solution)
Variable selection
|
Modifier and Type | Method and Description |
---|---|
void |
TimetableModel.saveAsXML(DataProperties cfg,
boolean gen,
Solution<Activity,Location> solution,
Assignment<Activity,Location> assignment,
File outFile) |
Modifier and Type | Method and Description |
---|---|
void |
SearchIntensification.bestCleared(Solution<V,T> solution) |
void |
SearchIntensification.bestRestored(Solution<V,T> solution) |
void |
SearchIntensification.bestSaved(Solution<V,T> solution) |
void |
SearchIntensification.Context.bestSaved(Solution<V,T> solution) |
void |
SearchIntensification.getInfo(Solution<V,T> solution,
Map<String,String> info) |
void |
SearchIntensification.getInfo(Solution<V,T> solution,
Map<String,String> info,
Collection<V> variables) |
void |
SearchIntensification.solutionUpdated(Solution<V,T> solution) |
Modifier and Type | Field and Description |
---|---|
protected Solution<V,T> |
BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext.iSolution |
Modifier and Type | Method and Description |
---|---|
void |
MaxIdleNeighbourSelection.bestCleared(Solution<V,T> solution) |
void |
MaxIdleNeighbourSelection.bestRestored(Solution<V,T> solution) |
void |
MaxIdleNeighbourSelection.bestSaved(Solution<V,T> solution) |
int |
BacktrackNeighbourSelection.BackTrackNeighbour.compareTo(Solution<V,T> solution)
Compare two neighbours
|
void |
MaxIdleNeighbourSelection.getInfo(Solution<V,T> solution,
Map<String,String> info) |
void |
MaxIdleNeighbourSelection.getInfo(Solution<V,T> solution,
Map<String,String> info,
Collection<V> variables) |
void |
MaxIdleNeighbourSelection.MaxIdleContext.reset(Solution<V,T> solution) |
Neighbour<V,T> |
BacktrackNeighbourSelection.selectNeighbour(Solution<V,T> solution)
Select neighbour.
|
Neighbour<V,T> |
MaxIdleNeighbourSelection.selectNeighbour(Solution<V,T> solution) |
Neighbour<V,T> |
NeighbourSelection.selectNeighbour(Solution<V,T> solution)
select a neighbour of a given solution
|
Neighbour<V,T> |
RoundRobinNeighbourSelection.selectNeighbour(Solution<V,T> solution)
Select neighbour.
|
Neighbour<V,T> |
StandardNeighbourSelection.selectNeighbour(Solution<V,T> solution)
Select neighbour.
|
Neighbour<V,T> |
BacktrackNeighbourSelection.selectNeighbour(Solution<V,T> solution,
V variable)
Select neighbour -- starts from the provided variable.
|
protected void |
BacktrackNeighbourSelection.selectNeighbour(Solution<V,T> solution,
V variable,
BacktrackNeighbourSelection.BacktrackNeighbourSelectionContext context) |
T |
GeneralValueSelection.selectValue(Solution<V,T> solution,
V selectedVariable)
Value selection
|
T |
StandardNeighbourSelection.selectValue(Solution<V,T> solution,
V variable)
Use the provided value selection criterion to select a value to the
selected variable
|
T |
ValueSelection.selectValue(Solution<V,T> solution,
V selectedVariable)
Value selection
|
V |
GeneralVariableSelection.selectVariable(Solution<V,T> solution)
Variable selection
|
V |
StandardNeighbourSelection.selectVariable(Solution<V,T> solution)
Use the provided variable selection criterion to select a variable
|
V |
VariableSelection.selectVariable(Solution<V,T> solution)
Variable selection
|
void |
MaxIdleNeighbourSelection.solutionUpdated(Solution<V,T> solution) |
Constructor and Description |
---|
BacktrackNeighbourSelectionContext(Solution<V,T> solution) |
Modifier and Type | Method and Description |
---|---|
InheritedAssignment<V,T> |
Model.createInheritedAssignment(Solution<V,T> solution,
int index)
Create a new inherited assignment from the given solution
|
Modifier and Type | Method and Description |
---|---|
void |
SolutionListener.bestCleared(Solution<V,T> solution)
Called by the solution when method
clearBest() is
called. |
void |
SolutionListener.bestRestored(Solution<V,T> solution)
Called by the solution when method
restoreBest() is
called. |
void |
SolutionListener.bestSaved(Solution<V,T> solution)
Called by the solution when method
saveBest() is called. |
void |
SolutionListener.getInfo(Solution<V,T> solution,
Map<String,String> info)
Called by the solution when it is asked to produce info table, see
getInfo() . |
void |
SolutionListener.getInfo(Solution<V,T> solution,
Map<String,String> info,
Collection<V> variables)
Called by the solution when it is asked to produce info table, see
getInfo() . |
boolean |
GeneralSolutionComparator.isBetterThanBestSolution(Solution<V,T> currentSolution) |
boolean |
MPPSolutionComparator.isBetterThanBestSolution(Solution<V,T> currentSolution) |
boolean |
SolutionComparator.isBetterThanBestSolution(Solution<V,T> currentSolution)
Compares two solutions.
|
void |
Solution.saveBest(Solution<V,T> master)
Save the current solution as the best ever found solution (it also calls
Model.saveBest(Assignment) ) |
boolean |
Solution.saveBestIfImproving(Solution<V,T> master,
SolutionComparator<V,T> comparator) |
void |
SolutionListener.solutionUpdated(Solution<V,T> solution)
Called by the solution when it is updated, see
update(double) . |
void |
Solution.update(double time,
boolean success,
Solution<V,T> master)
Update time, increment current iteration
|
void |
Solution.update(double time,
Solution<V,T> master)
Update time, increment current iteration
|
Modifier and Type | Field and Description |
---|---|
protected Solution<V,T> |
Solver.iCurrentSolution
current solution
|
protected Solution<V,T> |
Solver.iLastSolution
last solution (after IFS Solver finishes)
|
Modifier and Type | Method and Description |
---|---|
protected Solution<V,T> |
ParallelSolver.createParallelSolution(int index)
Create a solution that is to be used by a solver thread of the given index
|
Solution<V,T> |
Solver.currentSolution()
Current solution (during the search)
|
protected Solution<V,T> |
ParallelSolver.getWorkingSolution()
Return a working (parallel) solution that contributed to the best solution last.
|
Solution<V,T> |
Solver.lastSolution()
Last solution (when solver finishes)
|
Modifier and Type | Method and Description |
---|---|
protected void |
Solver.onAssigned(double startTime,
Solution<V,T> solution)
Called in each iteration, after a neighbour is assigned
|
void |
Solver.setInitalSolution(Solution<V,T> solution)
Sets initial solution
|
Modifier and Type | Method and Description |
---|---|
boolean |
GeneralTerminationCondition.canContinue(Solution<V,T> currentSolution) |
boolean |
MPPTerminationCondition.canContinue(Solution<V,T> currentSolution) |
boolean |
TerminationCondition.canContinue(Solution<V,T> currentSolution)
Returns true when the solver can continue with the next iteration
|
Modifier and Type | Method and Description |
---|---|
protected Solution<V,T> |
ProblemSaver.getSolution()
Solution to be saved
|
Modifier and Type | Method and Description |
---|---|
static Solution<Request,Enrollment> |
Test.batchSectioning(DataProperties cfg)
Batch sectioning test
|
static Solution<Request,Enrollment> |
Test.combineStudents(DataProperties cfg,
File lastLikeStudentData,
File realStudentData)
Combine students from the provided two files
|
Solution<Request,Enrollment> |
StudentSctBBTest.getSolution()
Compute and return the sectioning solution.
|
static Solution<Request,Enrollment> |
Test.load(DataProperties cfg)
Load student sectioning model
|
static Solution<Request,Enrollment> |
Test.onlineSectioning(DataProperties cfg)
Online sectioning test
|
static Solution<Request,Enrollment> |
Test.solve(Solution<Request,Enrollment> solution,
DataProperties cfg)
Solve the student sectioning problem using IFS solver
|
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) |
InheritedAssignment<Request,Enrollment> |
StudentSectioningModel.createInheritedAssignment(Solution<Request,Enrollment> solution,
int index) |
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) |
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,
Map<String,String> extra,
File file)
Save solution info as XML
|
void |
Test.TestSolutionListener.solutionUpdated(Solution<Request,Enrollment> solution) |
static Solution<Request,Enrollment> |
Test.solve(Solution<Request,Enrollment> solution,
DataProperties cfg)
Solve the student sectioning problem using IFS solver
|
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> |
RestoreBestSolution.selectNeighbour(Solution<Request,Enrollment> solution) |
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
|
Enrollment |
EnrollmentSelection.selectValue(Solution<Request,Enrollment> solution,
Request selectedVariable,
AssignmentCheck<Request,Enrollment> test) |
Request |
RouletteWheelRequestSelection.selectVariable(Solution<Request,Enrollment> solution)
Variable selection.
|
Modifier and Type | Method and Description |
---|---|
boolean |
StandardSelection.accept(SimpleNeighbour<Request,Enrollment> n,
Solution<Request,Enrollment> solution)
Check whether the given neighbors can be returned
|
Neighbour<Request,Enrollment> |
PriorityConstructionSelection.branchAndBound(Solution<Request,Enrollment> solution)
Find best solution for the next student using
BranchBoundSelection . |
protected void |
PriorityConstructionSelection.nextCycle(Solution<Request,Enrollment> solution)
Increment cycle
|
protected Request |
UnassignedCriticalCourseRequestSelection.nextRequest(Solution<Request,Enrollment> solution) |
protected Request |
UnassignedRequestSelection.nextRequest(Solution<Request,Enrollment> solution) |
Neighbour<Request,Enrollment> |
AssignInitialSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
Neighbour<Request,Enrollment> |
BacktrackSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
Neighbour<Request,Enrollment> |
BranchBoundSelection.selectNeighbour(Solution<Request,Enrollment> solution)
Select neighbour.
|
Neighbour<Request,Enrollment> |
CriticalCoursesBranchAndBoundSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
Neighbour<Request,Enrollment> |
MinCreditBranchAndBoundSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
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> |
ShuffleStudentsSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
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> |
StudentEnrollmentSwapSelection.selectNeighbour(Solution<Request,Enrollment> solution) |
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.
|
protected Neighbour<Request,Enrollment> |
ShuffleStudentsSelection.ShuffleBacktrackNeighbourSelection.selectNeighbour(Solution<Request,Enrollment> solution,
org.cpsolver.studentsct.heuristics.selection.ShuffleStudentsSelection.Shuffle shuffle) |
Request |
UnassignedCriticalCourseRequestSelection.selectVariable(Solution<Request,Enrollment> solution) |
Request |
UnassignedRequestSelection.selectVariable(Solution<Request,Enrollment> solution) |
Modifier and Type | Method and Description |
---|---|
boolean |
StudentSchedulingAssistantWeights.isBetterThanBestSolution(Solution<Request,Enrollment> currentSolution) |
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) |