## Uses of Classnet.sf.cpsolver.ifs.solution.Solution

• Packages that use Solution
Package Description
net.sf.cpsolver.coursett
University Course Timetabling.
net.sf.cpsolver.coursett.criteria.placement
University Course Timetabling: Placement Selection Criteria.
net.sf.cpsolver.coursett.heuristics
University Course Timetabling: Heuristics.
net.sf.cpsolver.coursett.neighbourhoods
University Course Timetabling: Various Neighbourhoods.
net.sf.cpsolver.exam.heuristics
Examination Timetabling: Solution Heuristics.
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.
net.sf.cpsolver.ifs.algorithms
IFS Neighbourhood Search Algorithms
net.sf.cpsolver.ifs.algorithms.neighbourhoods
IFS: Various Problem-Independent Neighbourhoods.
net.sf.cpsolver.ifs.dbt
Dynamic backtracking extension of IFS solver
net.sf.cpsolver.ifs.example.tt
Simple Timetabling Problem.
net.sf.cpsolver.ifs.extension
IFS Extensions (conflict-based statistics, maintenance of arc consistency)
net.sf.cpsolver.ifs.heuristics
IFS Heuristics (value and variable selection criteria)
net.sf.cpsolver.ifs.solution
IFS Solution (also contains solution comparator)
net.sf.cpsolver.ifs.solver
IFS Solver
net.sf.cpsolver.ifs.termination
IFS Termination (termination condition)
net.sf.cpsolver.studentsct
Student Sectioning Solver.
net.sf.cpsolver.studentsct.heuristics
Student Sectioning: Heuristics.
net.sf.cpsolver.studentsct.heuristics.selection
Student Sectioning: Various Neighbour Selection Criteria.
net.sf.cpsolver.studentsct.weights
Student Sectioning Weightings: various students weight models

• ### Uses of Solution in net.sf.cpsolver.coursett

Methods in net.sf.cpsolver.coursett that return Solution
Modifier and Type Method and Description
`protected Solution<Lecture,Placement>` TimetableSaver.`getSolution()`
Solution to be saved
Methods in net.sf.cpsolver.coursett with parameters of type Solution
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` 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)`
`static void` Test.```saveOutputCSV(Solution<Lecture,Placement> s, File file)```
`void` Test.`solutionUpdated(Solution<Lecture,Placement> solution)`
• ### Uses of Solution in net.sf.cpsolver.coursett.criteria.placement

Methods in net.sf.cpsolver.coursett.criteria.placement with parameters of type 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)`
• ### Uses of Solution in net.sf.cpsolver.coursett.heuristics

Methods in net.sf.cpsolver.coursett.heuristics with parameters of type Solution
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.
`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)`
• ### Uses of Solution in net.sf.cpsolver.coursett.neighbourhoods

Methods in net.sf.cpsolver.coursett.neighbourhoods with parameters of type Solution
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>` TimeChange.`selectNeighbour(Solution<Lecture,Placement> solution)`
`Neighbour<Lecture,Placement>` TimeSwap.`selectNeighbour(Solution<Lecture,Placement> solution)`
• ### Uses of Solution in net.sf.cpsolver.exam.heuristics

Methods in net.sf.cpsolver.exam.heuristics with parameters of type Solution
Modifier and Type Method and Description
`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
`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
`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)`
`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)`
• ### Uses of Solution in net.sf.cpsolver.exam.neighbours

Methods in net.sf.cpsolver.exam.neighbours with parameters of type Solution
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).
• ### Uses of Solution in net.sf.cpsolver.exam.split

Methods in net.sf.cpsolver.exam.split with parameters of type Solution
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).
• ### Uses of Solution in net.sf.cpsolver.ifs.algorithms

Methods in net.sf.cpsolver.ifs.algorithms with parameters of type Solution
Modifier and Type Method and Description
`protected boolean` NeighbourSearch.```accept(Solution<V,T> solution, Neighbour<V,T> neighbour)```
True if the generated move is to be accepted.
`protected void` GreatDeluge.`activate(Solution<V,T> solution)`
Setup the bound
`protected void` HillClimber.`activate(Solution<V,T> solution)`
Reset the idle iterations counter
`protected void` NeighbourSearch.`activate(Solution<V,T> solution)`
Called just before the neighbourhood search is called for the first time.
`protected void` SimulatedAnnealing.`activate(Solution<V,T> solution)`
Setup the temperature
`void` StepCountingHillClimber.`activate(Solution<V,T> solution)`
Reset the bound and the steps counter.
`void` NeighbourSearch.`bestCleared(Solution<V,T> solution)`
`void` NeighbourSearch.`bestRestored(Solution<V,T> solution)`
`void` GreatDeluge.`bestSaved(Solution<V,T> solution)`
Update last improving iteration count
`void` HillClimber.`bestSaved(Solution<V,T> solution)`
Memorize the iteration when the last best solution was found.
`void` NeighbourSearch.`bestSaved(Solution<V,T> solution)`
`void` SimulatedAnnealing.`bestSaved(Solution<V,T> solution)`
Memorize the iteration when the last best solution was found.
`protected boolean` HillClimber.`canContinue(Solution<V,T> solution)`
Stop the search after a given number of idle (not improving) iterations
`protected boolean` NeighbourSearch.`canContinue(Solution<V,T> solution)`
Return false if the search is to be stopped.
`boolean` SimpleSearch.`canContinue(Solution<V,T> currentSolution)`
Termination condition (i.e., has final phase finished)
`protected boolean` StepCountingHillClimber.`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.`cool(Solution<V,T> solution)`
Cool temperature
`protected void` NeighbourSearch.`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.```getInfo(Solution<V,T> solution, Map<String,String> info, Collection<V> variables)```
`protected void` GreatDeluge.`incIteration(Solution<V,T> solution)`
Increment iteration count, update bound
`protected void` HillClimber.`incIteration(Solution<V,T> solution)`
Increase iteration counter
`protected void` NeighbourSearch.`incIteration(Solution<V,T> solution)`
Increment iteration counters etc.
`protected void` SimulatedAnnealing.`incIteration(Solution<V,T> solution)`
Increment iteration counter, cool/reheat/restoreBest if necessary
`void` StepCountingHillClimber.`incIteration(Solution<V,T> solution)`
Increase iteration number, also update bound when the given number of steps is reached.
`protected void` SimulatedAnnealing.`reheat(Solution<V,T> solution)`
Reheat temperature
`protected void` SimulatedAnnealing.`restoreBest(Solution<V,T> solution)`
restore best ever found solution
`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>` SimpleSearch.`selectNeighbour(Solution<V,T> solution)`
Neighbour selection.
`void` NeighbourSearch.`solutionUpdated(Solution<V,T> solution)`
• ### Uses of Solution in net.sf.cpsolver.ifs.algorithms.neighbourhoods

Methods in net.sf.cpsolver.ifs.algorithms.neighbourhoods with parameters of type Solution
Modifier and Type Method and Description
`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)`
• ### Uses of Solution in net.sf.cpsolver.ifs.dbt

Methods in net.sf.cpsolver.ifs.dbt with parameters of type Solution
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
• ### Uses of Solution in net.sf.cpsolver.ifs.example.tt

Methods in net.sf.cpsolver.ifs.example.tt with parameters of type Solution
Modifier and Type Method and Description
`void` TimetableModel.```saveAsXML(DataProperties cfg, boolean gen, Solution<Activity,Location> solution, File outFile)```
• ### Uses of Solution in net.sf.cpsolver.ifs.extension

Methods in net.sf.cpsolver.ifs.extension with parameters of type Solution
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.```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)`
• ### Uses of Solution in net.sf.cpsolver.ifs.heuristics

Fields in net.sf.cpsolver.ifs.heuristics declared as Solution
Modifier and Type Field and Description
`protected Solution<V,T>` BacktrackNeighbourSelection.`iSolution`
Methods in net.sf.cpsolver.ifs.heuristics with parameters of type Solution
Modifier and Type Method and Description
`void` RoundRobinNeighbourSelection.`changeSelection(Solution<V,T> solution)`
Change selection
`int` BacktrackNeighbourSelection.BackTrackNeighbour.`compareTo(Solution<V,T> solution)`
Compare two neighbours
`Neighbour<V,T>` BacktrackNeighbourSelection.`selectNeighbour(Solution<V,T> solution)`
Select neighbour.
`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.
`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
• ### Uses of Solution in net.sf.cpsolver.ifs.solution

Methods in net.sf.cpsolver.ifs.solution with parameters of type 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` SolutionListener.`solutionUpdated(Solution<V,T> solution)`
Called by the solution when it is updated, see `update(double)`.
• ### Uses of Solution in net.sf.cpsolver.ifs.solver

Fields in net.sf.cpsolver.ifs.solver declared as Solution
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)
Methods in net.sf.cpsolver.ifs.solver that return Solution
Modifier and Type Method and Description
`Solution<V,T>` Solver.`currentSolution()`
Current solution (during the search)
`Solution<V,T>` Solver.`lastSolution()`
Last solution (when solver finishes)
Methods in net.sf.cpsolver.ifs.solver with parameters of type Solution
Modifier and Type Method and Description
`void` Solver.`setInitalSolution(Solution<V,T> solution)`
Sets initial solution
• ### Uses of Solution in net.sf.cpsolver.ifs.termination

Methods in net.sf.cpsolver.ifs.termination with parameters of type 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
• ### Uses of Solution in net.sf.cpsolver.studentsct

Methods in net.sf.cpsolver.studentsct that return Solution
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
`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
Methods in net.sf.cpsolver.studentsct with parameters of type Solution
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)```
`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)`
• ### Uses of Solution in net.sf.cpsolver.studentsct.heuristics

Methods in net.sf.cpsolver.studentsct.heuristics with parameters of type Solution
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.
`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.
• ### Uses of Solution in net.sf.cpsolver.studentsct.heuristics.selection

Methods in net.sf.cpsolver.studentsct.heuristics.selection with parameters of type Solution
Modifier and Type Method and Description
`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
`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.
• ### Uses of Solution in net.sf.cpsolver.studentsct.weights

Methods in net.sf.cpsolver.studentsct.weights with parameters of type Solution
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)`