public class RoomConstraint extends ConstraintWithContext<Lecture,Placement,RoomConstraint.RoomConstraintContext>
Modifier and Type | Class and Description |
---|---|
class |
RoomConstraint.RoomConstraintContext |
iConstraintListeners, iId
sMaxSize
Constructor and Description |
---|
RoomConstraint(Long id,
String name,
Long buildingId,
int capacity,
RoomSharingModel roomSharingModel,
Double x,
Double y,
boolean ignoreTooFar,
boolean constraint)
Constructor
|
Modifier and Type | Method and Description |
---|---|
void |
addPartition(RoomConstraint room)
Add partition of this room.
|
void |
assigned(Assignment<Lecture,Placement> assignment,
long iteration,
Placement placement)
Given value is to be assigned to its variable.
|
boolean |
checkRoomSize(Placement placement,
Collection<Placement> other) |
boolean |
checkRoomSize(Placement placement,
Collection<Placement> other,
Placement extra) |
void |
computeConflicts(Assignment<Lecture,Placement> assignment,
Placement placement,
Set<Placement> conflicts)
The only method which has to be implemented by any constraint.
|
RoomConstraint.RoomConstraintContext |
createAssignmentContext(Assignment<Lecture,Placement> assignment)
Create a new assignment context for the given assignment.
|
List<Placement>[] |
getAvailableArray() |
Long |
getBuildingId()
Building id
|
int |
getCapacity()
Capacity
|
boolean |
getConstraint() |
boolean |
getIgnoreTooFar() |
String |
getName()
Room name
|
RoomConstraint |
getParentRoom()
If this room is a partition of some other room, returns the parent room (which is partitioned).
|
List<RoomConstraint> |
getPartitions()
If this room is partitioned into multiple rooms, return room partitions
|
Double |
getPosX()
X-position of the building
|
Double |
getPosY()
Y-position of the building
|
List<Placement> |
getResource(Assignment<Lecture,Placement> assignment,
int slot)
Lookup table getResource()[slot] → lecture using this room placed in the
given time slot (null if empty)
|
Long |
getResourceId()
Room id
|
Placement[] |
getResourceOfWeek(Assignment<Lecture,Placement> assignment,
int startDay) |
String |
getRoomName() |
RoomSharingModel |
getSharingModel() |
Long |
getType() |
boolean |
inConflict(Assignment<Lecture,Placement> assignment,
Placement placement)
Returns true if the given assignment is inconsistent with the existing
assignments respecting this constraint.
|
boolean |
isAvailable(int slot) |
boolean |
isAvailable(Lecture lecture,
TimeLocation time,
Long scheduler) |
boolean |
isConsistent(Placement p1,
Placement p2)
Returns true if the given assignments are consistent respecting this
constraint.
|
void |
setCoordinates(Double x,
Double y)
Position of the building
|
void |
setModel(Model<Lecture,Placement> model)
Sets the model which the constraint belongs to
|
void |
setNotAvailable(Placement placement) |
void |
setType(Long type) |
String |
toString() |
void |
unassigned(Assignment<Lecture,Placement> assignment,
long iteration,
Placement placement)
Given value is unassigned from its variable.
|
getAssignmentContextReference, getContext, getContext, setAssignmentContextReference
addConstraintListener, addVariable, assignedVariables, compareTo, computeConflictsNoForwardCheck, constraintListeners, countAssignedVariables, countVariables, equals, getDescription, getId, getModel, hashCode, isHard, removeConstraintListener, removeVariable, variables
public RoomConstraint(Long id, String name, Long buildingId, int capacity, RoomSharingModel roomSharingModel, Double x, Double y, boolean ignoreTooFar, boolean constraint)
id
- room unique idname
- room namebuildingId
- building unique idcapacity
- room sizeroomSharingModel
- room sharing modelx
- X-coordinate (latitude)y
- Y-coordinate (longitude)ignoreTooFar
- ignore distances if set to trueconstraint
- hard constraint if true (classes cannot overlap in this room)public void setModel(Model<Lecture,Placement> model)
Constraint
setModel
in class ConstraintWithContext<Lecture,Placement,RoomConstraint.RoomConstraintContext>
model
- problem modelpublic void setNotAvailable(Placement placement)
public boolean isAvailable(int slot)
public boolean isAvailable(Lecture lecture, TimeLocation time, Long scheduler)
public List<Placement>[] getAvailableArray()
public RoomSharingModel getSharingModel()
public void addPartition(RoomConstraint room)
room
- room partitionpublic RoomConstraint getParentRoom()
public List<RoomConstraint> getPartitions()
public Long getResourceId()
public Long getBuildingId()
public String getName()
getName
in class Constraint<Lecture,Placement>
public String getRoomName()
public int getCapacity()
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 checkRoomSize(Placement placement, Collection<Placement> other, Placement extra)
public boolean checkRoomSize(Placement placement, Collection<Placement> other)
public boolean inConflict(Assignment<Lecture,Placement> assignment, Placement placement)
Constraint
MacPropagation
).inConflict
in class Constraint<Lecture,Placement>
assignment
- current assignmentplacement
- given valuepublic boolean isConsistent(Placement p1, Placement p2)
Constraint
MacPropagation
).isConsistent
in class Constraint<Lecture,Placement>
p1
- a valuep2
- a valuepublic void assigned(Assignment<Lecture,Placement> assignment, long iteration, Placement placement)
Constraint
assigned
in class ConstraintWithContext<Lecture,Placement,RoomConstraint.RoomConstraintContext>
assignment
- current assignmentiteration
- current iterationplacement
- assigned valuepublic void unassigned(Assignment<Lecture,Placement> assignment, long iteration, Placement placement)
Constraint
unassigned
in class ConstraintWithContext<Lecture,Placement,RoomConstraint.RoomConstraintContext>
assignment
- current assignmentiteration
- current iterationplacement
- unassigned valuepublic List<Placement> getResource(Assignment<Lecture,Placement> assignment, int slot)
assignment
- current assignmentslot
- time slotpublic Placement[] getResourceOfWeek(Assignment<Lecture,Placement> assignment, int startDay)
public void setCoordinates(Double x, Double y)
x
- X-coordinate (latitude)y
- Y-coordinate (longitude)public boolean getIgnoreTooFar()
public boolean getConstraint()
public RoomConstraint.RoomConstraintContext createAssignmentContext(Assignment<Lecture,Placement> assignment)
HasAssignmentContext
assignment
- an assignment for which there needs to be an assignment context