public class SpreadConstraint extends ConstraintWithContext<Lecture,Placement,SpreadConstraint.SpreadConstraintContext> implements WeakeningConstraint<Lecture,Placement>
DepartmentSpreadConstraint
for more details.Modifier and Type | Class and Description |
---|---|
class |
SpreadConstraint.SpreadConstraintContext |
Modifier and Type | Field and Description |
---|---|
static boolean |
USE_MOST_IMPROVEMENT_ADEPTS |
iConstraintListeners, iId
sMaxSize
Constructor and Description |
---|
SpreadConstraint(DataProperties config,
String name) |
SpreadConstraint(String name,
double spreadFactor,
int unassignmentsToWeaken,
boolean interactiveMode,
int firstDaySlot,
int lastDaySlot,
int firstWorkDay,
int lastWorkDay) |
Modifier and Type | Method and Description |
---|---|
void |
addVariable(Lecture lecture)
Add a variable to this constraint
|
void |
computeConflicts(Assignment<Lecture,Placement> assignment,
Placement placement,
Set<Placement> conflicts)
The only method which has to be implemented by any constraint.
|
SpreadConstraint.SpreadConstraintContext |
createAssignmentContext(Assignment<Lecture,Placement> assignment)
Create a new assignment context for the given assignment.
|
Placement |
getAdept(Assignment<Lecture,Placement> assignment,
Placement placement,
int[][] nrCourses,
Set<Placement> conflicts) |
protected Criterion<Lecture,Placement> |
getCriterion() |
int |
getMaxPenalty(Assignment<Lecture,Placement> assignment,
Placement placement) |
String |
getName()
Constraint's name -- for printing purposes
|
int |
getPenalty(Assignment<Lecture,Placement> assignment)
Department balancing penalty for this department
|
int |
getPenalty(Assignment<Lecture,Placement> assignment,
Placement placement)
Department balancing penalty of the given placement
|
int |
getPenaltyEstimate(Assignment<Lecture,Placement> assignment) |
boolean |
inConflict(Assignment<Lecture,Placement> assignment,
Placement placement)
Returns true if the given assignment is inconsistent with the existing
assignments respecting this constraint.
|
String |
toString() |
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.
|
assigned, getAssignmentContextReference, getContext, getContext, setAssignmentContextReference, setModel, unassigned
addConstraintListener, assignedVariables, compareTo, computeConflictsNoForwardCheck, constraintListeners, countAssignedVariables, countVariables, equals, getDescription, getId, getModel, hashCode, isConsistent, isHard, removeConstraintListener, removeVariable, variables
public static boolean USE_MOST_IMPROVEMENT_ADEPTS
public SpreadConstraint(String name, double spreadFactor, int unassignmentsToWeaken, boolean interactiveMode, int firstDaySlot, int lastDaySlot, int firstWorkDay, int lastWorkDay)
public SpreadConstraint(DataProperties config, String name)
protected Criterion<Lecture,Placement> getCriterion()
public Placement getAdept(Assignment<Lecture,Placement> assignment, Placement placement, int[][] nrCourses, Set<Placement> conflicts)
public void computeConflicts(Assignment<Lecture,Placement> assignment, Placement placement, Set<Placement> conflicts)
Constraint
computeConflicts
in class Constraint<Lecture,Placement>
assignment
- current assignmentplacement
- value to be assigned to its variableconflicts
- resultant set of conflicting valuespublic boolean inConflict(Assignment<Lecture,Placement> assignment, Placement placement)
Constraint
MacPropagation
).inConflict
in class Constraint<Lecture,Placement>
assignment
- current assignmentplacement
- given valuepublic void weaken(Assignment<Lecture,Placement> assignment)
WeakeningConstraint
weaken
in interface WeakeningConstraint<Lecture,Placement>
assignment
- current assignmentpublic String getName()
Constraint
getName
in class Constraint<Lecture,Placement>
public int getPenalty(Assignment<Lecture,Placement> assignment)
assignment
- current assignmentpublic int getPenaltyEstimate(Assignment<Lecture,Placement> assignment)
public int getMaxPenalty(Assignment<Lecture,Placement> assignment, Placement placement)
public int getPenalty(Assignment<Lecture,Placement> assignment, Placement placement)
assignment
- current assignmentplacement
- a placement that is being consideredpublic void addVariable(Lecture lecture)
Constraint
addVariable
in class Constraint<Lecture,Placement>
lecture
- a variablepublic void weaken(Assignment<Lecture,Placement> assignment, Placement value)
WeakeningConstraint
weaken
in interface WeakeningConstraint<Lecture,Placement>
assignment
- current assignmentvalue
- a conflicting value to be assignedpublic SpreadConstraint.SpreadConstraintContext createAssignmentContext(Assignment<Lecture,Placement> assignment)
HasAssignmentContext
createAssignmentContext
in interface HasAssignmentContext<Lecture,Placement,SpreadConstraint.SpreadConstraintContext>
assignment
- an assignment for which there needs to be an assignment context