public class MaxHolesFlexibleConstraint extends FlexibleConstraint implements WeakeningConstraint<Lecture,Placement>
Modifier and Type | Class and Description |
---|---|
class |
MaxHolesFlexibleConstraint.MaxHolesFlexibleConstraintContext |
FlexibleConstraint.Block, FlexibleConstraint.FlexibleConstraintContext, FlexibleConstraint.FlexibleConstraintType, FlexibleConstraint.PlacementTimeComparator
iConstraintType, iPreference, iReference, iWeeks
iConstraintListeners, iId
sMaxSize
Constructor and Description |
---|
MaxHolesFlexibleConstraint(Long id,
String owner,
String preference,
String reference) |
Modifier and Type | Method and Description |
---|---|
void |
computeConflicts(Assignment<Lecture,Placement> assignment,
Placement value,
Set<Placement> conflicts)
The only method which has to be implemented by any constraint.
|
int |
countHoles(Assignment<Lecture,Placement> assignment,
int dayCode,
Set<Placement> conflicts,
Placement value,
HashMap<Lecture,Placement> assignments,
BitSet week)
Count number of holes (free slots) between the given classes on given day and week.
|
FlexibleConstraint.FlexibleConstraintContext |
createAssignmentContext(Assignment<Lecture,Placement> assignment)
Create a new assignment context for the given assignment.
|
double |
getNrViolations(Assignment<Lecture,Placement> assignment,
Set<Placement> conflicts,
HashMap<Lecture,Placement> assignments)
Count violations, that is weekly average free time that is over the limit in hours.
|
boolean |
isConsistent(Placement value1,
Placement value2)
Returns true if the given assignments are consistent respecting this
constraint.
|
void |
weaken(Assignment<Lecture,Placement> assignment)
Weaken the constraint.
|
void |
weaken(Assignment<Lecture,Placement> assignment,
Placement value)
Weaken the constraint enough so that it can assign the given
value.
|
getCurrentPreference, getName, getOwner, getPrologPreference, getReference, getRelevantPlacements, getType, getWeeks, isHard, mergeToBlocks, toString
assigned, getAssignmentContextReference, getContext, getContext, setAssignmentContextReference, setModel, unassigned
addConstraintListener, addVariable, assignedVariables, compareTo, computeConflictsNoForwardCheck, constraintListeners, countAssignedVariables, countVariables, equals, getDescription, getId, getModel, hashCode, inConflict, removeConstraintListener, removeVariable, variables
public MaxHolesFlexibleConstraint(Long id, String owner, String preference, String reference)
public int countHoles(Assignment<Lecture,Placement> assignment, int dayCode, Set<Placement> conflicts, Placement value, HashMap<Lecture,Placement> assignments, BitSet week)
assignment
- current assignmentdayCode
- representation of days in week combinationconflicts
- placements to be unassignedvalue
- placement to be assignedassignments
- placements of variablesweek
- bitset representing a date patternpublic double getNrViolations(Assignment<Lecture,Placement> assignment, Set<Placement> conflicts, HashMap<Lecture,Placement> assignments)
getNrViolations
in class FlexibleConstraint
assignment
- current assignmentconflicts
- placements to be unassignedassignments
- placements of variablespublic void computeConflicts(Assignment<Lecture,Placement> assignment, Placement value, Set<Placement> conflicts)
Constraint
computeConflicts
in class Constraint<Lecture,Placement>
assignment
- current assignmentvalue
- value to be assigned to its variableconflicts
- resultant set of conflicting valuespublic void weaken(Assignment<Lecture,Placement> assignment)
WeakeningConstraint
weaken
in interface WeakeningConstraint<Lecture,Placement>
assignment
- current assignmentpublic boolean isConsistent(Placement value1, Placement value2)
Constraint
MacPropagation
).isConsistent
in class FlexibleConstraint
value1
- a valuevalue2
- a valuepublic void weaken(Assignment<Lecture,Placement> assignment, Placement value)
WeakeningConstraint
weaken
in interface WeakeningConstraint<Lecture,Placement>
assignment
- current assignmentvalue
- a conflicting value to be assignedpublic FlexibleConstraint.FlexibleConstraintContext createAssignmentContext(Assignment<Lecture,Placement> assignment)
HasAssignmentContext
createAssignmentContext
in interface HasAssignmentContext<Lecture,Placement,FlexibleConstraint.FlexibleConstraintContext>
createAssignmentContext
in class FlexibleConstraint
assignment
- an assignment for which there needs to be an assignment context