public class ExamSplitter extends ExamCriterion
AbstractCriterion.getWeight().
AbstractCriterion.ValueContext, AbstractCriterion.ValueUpdateTypeiBest, iDebug, iWeight, sDoubleFormat, sPercentFormatsMaxSize| Constructor and Description |
|---|
ExamSplitter()
Examination splitter criterion.
|
| Modifier and Type | Method and Description |
|---|---|
void |
bestRestored(Assignment<Exam,ExamPlacement> assignment)
Best solution was restored, change the splits back to what it was in the best solution
|
void |
bestSaved(Assignment<Exam,ExamPlacement> assignment)
Best solution was saved, remember the current splits
|
boolean |
canMerge(Exam exam)
True, if the given exam can be merged (it has been split)
|
boolean |
canSplit(Exam exam)
True, if an exam can be split
|
List<Exam> |
children(Exam parent)
Children exams of an exam that has been split.
|
double |
delta(Assignment<Exam,ExamPlacement> assignment,
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[] |
getBounds(Assignment<Exam,ExamPlacement> assignment,
Collection<Exam> exams)
Not used
|
void |
getInfo(Assignment<Exam,ExamPlacement> assignment,
Map<String,String> info)
Lists the split
|
double |
getValue(Assignment<Exam,ExamPlacement> assignment)
Current value of the criterion (optimization objective)
|
double |
getValue(Assignment<Exam,ExamPlacement> assignment,
ExamPlacement value,
Set<ExamPlacement> conflicts)
Not used
|
double |
getWeightDefault(DataProperties config)
Returns half of a student direct conflict weight
|
String |
getWeightName()
Returns Exams.ExamSplitWeight
|
String |
getXmlWeightName()
Returns examSplitWeight
|
boolean |
init(Solver<Exam,ExamPlacement> solver)
Initialization
|
Exam |
merge(Assignment<Exam,ExamPlacement> assignment,
Exam child,
long iteration)
Merge an exam
|
Exam |
parent(Exam exam)
Parent of an exam that has been split.
|
void |
shuffle(Assignment<Exam,ExamPlacement> assignment,
Exam exam,
long iteration)
Shuffle students between the given exam and all the other exams in the split (if there are any).
|
Exam |
split(Assignment<Exam,ExamPlacement> assignment,
Exam parent,
long iteration,
ExamPlacement placement)
Split an exam
|
String |
toString(Assignment<Exam,ExamPlacement> assignment)
Simple text representation of the criterion and its value.
|
getPeriodValue, getRoomValue, getXmlParameters, isPeriodCriterion, isRoomCriterion, setWeight, setXmlParametersafterAssigned, afterUnassigned, beforeAssigned, beforeUnassigned, clearCache, computeBounds, configure, constraintAdded, constraintRemoved, createAssignmentContext, getAbbreviation, getAssignmentContextReference, getBest, getBounds, getBounds, getBounds, getContext, getContext, getExtendedInfo, getInfo, getModel, getName, getPerc, getPercentage, getPercRev, getValue, getValue, getValue, getValueUpdateType, getWeight, getWeightedBest, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, getWeightedValue, inc, inc, setAssignmentContextReference, setModel, setValueUpdateType, variableAdded, variableRemovedpublic ExamSplitter()
public boolean init(Solver<Exam,ExamPlacement> solver)
init in interface ModelListener<Exam,ExamPlacement>init in class AbstractCriterion<Exam,ExamPlacement>solver - IFS solverpublic String getWeightName()
getWeightName in class ExamCriterionpublic String getXmlWeightName()
getXmlWeightName in class ExamCriterionpublic double getWeightDefault(DataProperties config)
getWeightDefault in class AbstractCriterion<Exam,ExamPlacement>config - solver configurationpublic boolean canSplit(Exam exam)
exam - given exampublic Exam parent(Exam exam)
exam - an exam in questionpublic List<Exam> children(Exam parent)
parent - an exam in questionpublic Exam split(Assignment<Exam,ExamPlacement> assignment, Exam parent, long iteration, ExamPlacement placement)
assignment - current assignmentparent - an exam to be splititeration - solver iterationplacement - placement of the new exampublic boolean canMerge(Exam exam)
exam - given exampublic Exam merge(Assignment<Exam,ExamPlacement> assignment, Exam child, long iteration)
assignment - current assignmentchild - an exam to be mergediteration - solver iterationpublic double delta(Assignment<Exam,ExamPlacement> assignment, ExamStudent student, ExamPlacement oldPlacement, ExamPlacement newPlacement)
StudentDirectConflicts,
StudentMoreThan2ADayConflicts, and StudentBackToBackConflicts) if a student
is moved from an exam with one placement into an exam with another placement.assignment - current assignmentstudent - a student in questionoldPlacement - placement of the exam in which the student is nownewPlacement - placement of the exam into which the student would be movedpublic void shuffle(Assignment<Exam,ExamPlacement> assignment, Exam exam, long iteration)
delta(Assignment, ExamStudent, ExamPlacement, ExamPlacement) are
considered.assignment - current assignmentexam - an exam in questioniteration - solver iterationpublic double getValue(Assignment<Exam,ExamPlacement> assignment)
CriteriongetValue in interface Criterion<Exam,ExamPlacement>getValue in class AbstractCriterion<Exam,ExamPlacement>assignment - current assignmentpublic double getValue(Assignment<Exam,ExamPlacement> assignment, ExamPlacement value, Set<ExamPlacement> conflicts)
assignment - current assignmentvalue - given valueconflicts - values conflicting with the given valuepublic double[] getBounds(Assignment<Exam,ExamPlacement> assignment, Collection<Exam> exams)
getBounds in interface Criterion<Exam,ExamPlacement>getBounds in class ExamCriterionassignment - current assignmentexams - list of problem variablespublic String toString(Assignment<Exam,ExamPlacement> assignment)
AbstractCriterionAbstractCriterion.getAbbreviation()
and x is the current value AbstractCriterion.getValue(Assignment).toString in interface Criterion<Exam,ExamPlacement>toString in class AbstractCriterion<Exam,ExamPlacement>assignment - current assignmentpublic void getInfo(Assignment<Exam,ExamPlacement> assignment, Map<String,String> info)
getInfo in interface InfoProvider<Exam,ExamPlacement>getInfo in class ExamCriterionassignment - current assignmentinfo - info tablepublic void bestSaved(Assignment<Exam,ExamPlacement> assignment)
bestSaved in interface Criterion<Exam,ExamPlacement>bestSaved in class AbstractCriterion<Exam,ExamPlacement>assignment - current assignmentpublic void bestRestored(Assignment<Exam,ExamPlacement> assignment)
bestRestored in interface Criterion<Exam,ExamPlacement>bestRestored in class AbstractCriterion<Exam,ExamPlacement>assignment - current assignment