public class ExamSplitter extends ExamCriterion
AbstractCriterion.getWeight()
.
AbstractCriterion.ValueContext, AbstractCriterion.ValueUpdateType
iBest, iDebug, iWeight, sDoubleFormat, sPercentFormat
sMaxSize
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
|
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
|
List<Exam> |
children(Exam parent)
Children exams of an exam that has been split.
|
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, setXmlParameters
afterAssigned, 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, variableRemoved
public 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 ExamCriterion
public String getXmlWeightName()
getXmlWeightName
in class ExamCriterion
public 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)
Criterion
getValue
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 ExamCriterion
assignment
- current assignmentexams
- list of problem variablespublic String toString(Assignment<Exam,ExamPlacement> assignment)
AbstractCriterion
AbstractCriterion.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 ExamCriterion
assignment
- 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