net.sf.cpsolver.coursett.constraint
Class InstructorConstraint

java.lang.Object
  extended by net.sf.cpsolver.ifs.model.Constraint
      extended by net.sf.cpsolver.coursett.constraint.InstructorConstraint

public class InstructorConstraint
extends Constraint

Instructor constraint.
Classes with this instructor can not overlap in time. Also, for back-to-back classes, there is the following reasoning:


When isIgnoreDistances() is set to true, the constraint never prohibits two back-to-back classes (but it still tries to minimize the above back-to-back preferences).

Version:
CourseTT 1.1 (University Course Timetabling)
Copyright (C) 2006 Tomáš Müller
muller@unitime.org
Lazenska 391, 76314 Zlin, Czech Republic

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Field Summary
 int iPreference
           
protected  Vector[] iResource
          table iResource[slot] = lecture using this resource placed in the given time slot (null if empty)
 
Fields inherited from class net.sf.cpsolver.ifs.model.Constraint
iAssignedVariables, iConstraintListeners, iId
 
Constructor Summary
InstructorConstraint(Long id, String puid, String name, boolean ignDist)
          Constructor
 
Method Summary
 void assigned(long iteration, Value value)
          Given value is to be assigned to its varable.
 void computeConflicts(Value value, Set conflicts)
          The only method which has to be implemented by any constraint.
 int countPreference()
           
 int countUselessSlots()
          Number of useless slots for this resource
 Vector[] getAvailableArray()
           
 int getDistancePreference(Placement p1, Placement p2)
          Back-to-back preference of two placements (3 means prohibited)
 String getName()
          Resource name
 Placement getPlacement(int slot, int day)
           
 Vector getPlacements(int slot, BitSet weekCode)
           
 Vector getPlacements(int slot, Placement placement)
           
 int getPreference()
          Overall back-to-back preference of this instructor
 int getPreference(Value value)
          Back-to-back preference of the given placement
 int getPreferenceCombination(Value value)
           
 String getPuid()
           
 Vector getResource(int slot)
          Lookup table getResource()[slot] -> lecture using this resource placed in the given time slot (null if empty)
 Long getResourceId()
          Resource id
 Placement[] getResourceOfWeek(int startDay)
           
 Long getType()
           
 int getWorstPreference()
          Worst back-to-back preference of this instructor
 boolean inConflict(Value value)
          Returns true if the given assignment is inconsistent with the existing assignments respecting this constraint.
 boolean isAvailable(int slot)
           
 boolean isAvailable(Lecture lecture, Placement placement)
           
 boolean isAvailable(Lecture lecture, TimeLocation time)
           
 boolean isConsistent(Value value1, Value value2)
          Returns true if the given assignments are consistent respecting this constraint.
 boolean isIgnoreDistances()
           
protected  void printUsage(StringBuffer sb)
          Resource usage usage
 void setNotAvailable(Placement placement)
           
 void setType(Long type)
           
 String toString()
           
 void unassigned(long iteration, Value value)
          Given value is unassigned from its varable.
 
Methods inherited from class net.sf.cpsolver.ifs.model.Constraint
addConstraintListener, addVariable, assignedVariables, constraintListeners, countAssignedVariables, countVariables, equals, getDescription, getId, getModel, hashCode, isHard, removeConstraintListener, removeVariable, setModel, variables
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

iPreference

public int iPreference

iResource

protected Vector[] iResource
table iResource[slot] = lecture using this resource placed in the given time slot (null if empty)

Constructor Detail

InstructorConstraint

public InstructorConstraint(Long id,
                            String puid,
                            String name,
                            boolean ignDist)
Constructor

Parameters:
id - instructor id
name - instructor name
Method Detail

getPlacements

public Vector getPlacements(int slot,
                            Placement placement)

getPlacements

public Vector getPlacements(int slot,
                            BitSet weekCode)

getPlacement

public Placement getPlacement(int slot,
                              int day)

setNotAvailable

public void setNotAvailable(Placement placement)

isAvailable

public boolean isAvailable(int slot)

isAvailable

public boolean isAvailable(Lecture lecture,
                           TimeLocation time)

isAvailable

public boolean isAvailable(Lecture lecture,
                           Placement placement)

getAvailableArray

public Vector[] getAvailableArray()

getDistancePreference

public int getDistancePreference(Placement p1,
                                 Placement p2)
Back-to-back preference of two placements (3 means prohibited)


getResourceId

public Long getResourceId()
Resource id


getName

public String getName()
Resource name

Overrides:
getName in class Constraint

computeConflicts

public void computeConflicts(Value value,
                             Set conflicts)
Description copied from class: Constraint
The only method which has to be implemented by any constraint. It returns the values which needs to be unassigned in order to make this constraint consistent with the given value if it is assigned to its variable. The computed list of conflicting values is added to the given set of conflicts.

Specified by:
computeConflicts in class Constraint
Parameters:
value - value to be assigned to its varaible
conflicts - resultant set of conflicting values

inConflict

public boolean inConflict(Value value)
Description copied from class: Constraint
Returns true if the given assignment is inconsistent with the existing assignments respecting this constraint. This method is used by MAC (see MacPropagation).

Overrides:
inConflict in class Constraint

isConsistent

public boolean isConsistent(Value value1,
                            Value value2)
Description copied from class: Constraint
Returns true if the given assignments are consistent respecting this constraint. This method is used by MAC (see MacPropagation).

Overrides:
isConsistent in class Constraint

assigned

public void assigned(long iteration,
                     Value value)
Description copied from class: Constraint
Given value is to be assigned to its varable. In this method, the constraint should unassigns all varaibles which are in conflict with the given assignment because of this constraint.

Overrides:
assigned in class Constraint

unassigned

public void unassigned(long iteration,
                       Value value)
Description copied from class: Constraint
Given value is unassigned from its varable.

Overrides:
unassigned in class Constraint

getResource

public Vector getResource(int slot)
Lookup table getResource()[slot] -> lecture using this resource placed in the given time slot (null if empty)


getResourceOfWeek

public Placement[] getResourceOfWeek(int startDay)

countUselessSlots

public int countUselessSlots()
Number of useless slots for this resource


printUsage

protected void printUsage(StringBuffer sb)
Resource usage usage


toString

public String toString()
Overrides:
toString in class Object

getPreference

public int getPreference(Value value)
Back-to-back preference of the given placement


getPreferenceCombination

public int getPreferenceCombination(Value value)

getPreference

public int getPreference()
Overall back-to-back preference of this instructor


countPreference

public int countPreference()

getWorstPreference

public int getWorstPreference()
Worst back-to-back preference of this instructor


getPuid

public String getPuid()

isIgnoreDistances

public boolean isIgnoreDistances()

getType

public Long getType()

setType

public void setType(Long type)