net.sf.cpsolver.ifs.model
Class Variable

java.lang.Object
  extended by net.sf.cpsolver.ifs.model.Variable
All Implemented Interfaces:
Comparable
Direct Known Subclasses:
Activity, CSPVariable, Exam, Lecture, MultiVariable, Operation, Rectangle, Request

public class Variable
extends Object
implements Comparable

Generic variable.

Besides a domain of values, a variable also contains information about assigned value, the value assigned in the best ever found solution and also the initial value (minimal perturbations problem). It also knows what constraints are associated with this variable and has a unique id.

Version:
IFS 1.1 (Iterative Forward Search)
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
See Also:
Value, Model, Solver

Field Summary
protected  long iId
           
protected  Value iValue
          Assigned value
 
Constructor Summary
Variable()
          Constructor
Variable(Value initialValue)
          Constructor
 
Method Summary
 void addContstraint(Constraint constraint)
          Adds a constraint.
 void addVariableListener(VariableListener listener)
          Adds variable listener
 void assign(long iteration, Value value)
          Assign value to this variable.
 int compareTo(Object o)
           
 Vector constraints()
          Return the list of constraints associated with this variable
 Hashtable constraintVariables()
          Returns a table of all variables linked with this variable by a constraint.
 long countAssignments()
          Return how many times was this variable assigned in the past.
 boolean equals(Object o)
           
 Value getAssignment()
          Returns current assignment
 Value getBestAssignment()
          Returns the value from the best ever found soultion.
 long getBestAssignmentIteration()
          Returns the iteration when the best value was assigned
 String getDescription()
          Variable's description -- for printing purposes
 Object getExtra()
          Extra information to which can be used by an extension (see Extension).
 long getId()
          Unique id
 Value getInitialAssignment()
          Returns initial assignment
 Model getModel()
          Model, the variable belong to
 String getName()
          Variable's name -- for printing purposes
 Vector getVariableListeners()
          Return variable listeners
 Vector hardConstraints()
          Return the list of hard constraints associated with this variable
 boolean hasAssignment()
          Returns true if the variable is assigned
 int hashCode()
           
 boolean hasInitialAssignment()
          Returns true if the variable has an initial assignment
 boolean hasValues()
          True, if the variable's domain is not empty
 long lastAssignmentIteration()
          Returns the iteration when the variable was assigned for the last time (-1 if never)
 long lastUnassignmentIteration()
          Returns the iteration when the variable was unassigned for the last time (-1 if never)
 void removeContstraint(Constraint constraint)
          Removes a constraint.
 void removeInitialValue()
          Permanently remove the initial value from the variable's domain -- for testing MPP
 void removeValue(long iteration, Value value)
          Permanently remove a value from variables domain.
 void removeVariableListener(VariableListener listener)
          Removes variable listener
 void setBestAssignment(Value value)
          Sets variable's value of the best ever found solution.
 void setExtra(Object object)
          Extra information to which can be used by an extension (see Extension).
 void setInitialAssignment(Value initialValue)
          Sets initial assignment
 void setModel(Model model)
          Set the model to which the variable belongs to
protected  void setValues(Vector values)
          Sets the domain
 Vector softConstraints()
          Return the list of soft constraints associated with this variable
 String toString()
           
 void unassign(long iteration)
          Unassign value from this variable.
 Vector values()
          Domain
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

iId

protected long iId

iValue

protected Value iValue
Assigned value

Constructor Detail

Variable

public Variable()
Constructor


Variable

public Variable(Value initialValue)
Constructor

Parameters:
initialValue - initial value (minimal-perturbation problem)
Method Detail

getModel

public Model getModel()
Model, the variable belong to


setModel

public void setModel(Model model)
Set the model to which the variable belongs to


values

public Vector values()
Domain


setValues

protected void setValues(Vector values)
Sets the domain


hasValues

public boolean hasValues()
True, if the variable's domain is not empty


getAssignment

public Value getAssignment()
Returns current assignment


hasAssignment

public boolean hasAssignment()
Returns true if the variable is assigned


getInitialAssignment

public Value getInitialAssignment()
Returns initial assignment


setInitialAssignment

public void setInitialAssignment(Value initialValue)
Sets initial assignment


hasInitialAssignment

public boolean hasInitialAssignment()
Returns true if the variable has an initial assignment


assign

public void assign(long iteration,
                   Value value)
Assign value to this variable. If the variable has already assigned another value, it is unassigned first. Also, all conflicting values are unassigned before the given value is assigned to this variable.

Parameters:
iteration - current iteration
value - the value to be assigned

unassign

public void unassign(long iteration)
Unassign value from this variable.

Parameters:
iteration - current iteration

countAssignments

public long countAssignments()
Return how many times was this variable assigned in the past.


addContstraint

public void addContstraint(Constraint constraint)
Adds a constraint. Called automatically when the constraint is added to the model, i.e., Model.addConstraint(Constraint) is called.

Parameters:
constraint - added constraint

removeContstraint

public void removeContstraint(Constraint constraint)
Removes a constraint. Called automatically when the constraint is removed from the model, i.e., Model.removeConstraint(Constraint) is called.

Parameters:
constraint - added constraint

constraints

public Vector constraints()
Return the list of constraints associated with this variable


hardConstraints

public Vector hardConstraints()
Return the list of hard constraints associated with this variable


softConstraints

public Vector softConstraints()
Return the list of soft constraints associated with this variable


toString

public String toString()
Overrides:
toString in class Object

getId

public long getId()
Unique id


hashCode

public int hashCode()
Overrides:
hashCode in class Object

getName

public String getName()
Variable's name -- for printing purposes


getDescription

public String getDescription()
Variable's description -- for printing purposes


setBestAssignment

public void setBestAssignment(Value value)
Sets variable's value of the best ever found solution. Called when Model.saveBest() is called.


getBestAssignment

public Value getBestAssignment()
Returns the value from the best ever found soultion.


getBestAssignmentIteration

public long getBestAssignmentIteration()
Returns the iteration when the best value was assigned


lastAssignmentIteration

public long lastAssignmentIteration()
Returns the iteration when the variable was assigned for the last time (-1 if never)


lastUnassignmentIteration

public long lastUnassignmentIteration()
Returns the iteration when the variable was unassigned for the last time (-1 if never)


compareTo

public int compareTo(Object o)
Specified by:
compareTo in interface Comparable

equals

public boolean equals(Object o)
Overrides:
equals in class Object

addVariableListener

public void addVariableListener(VariableListener listener)
Adds variable listener


removeVariableListener

public void removeVariableListener(VariableListener listener)
Removes variable listener


getVariableListeners

public Vector getVariableListeners()
Return variable listeners


setExtra

public void setExtra(Object object)
Extra information to which can be used by an extension (see Extension).


getExtra

public Object getExtra()
Extra information to which can be used by an extension (see Extension).


removeValue

public void removeValue(long iteration,
                        Value value)
Permanently remove a value from variables domain.


constraintVariables

public Hashtable constraintVariables()
Returns a table of all variables linked with this variable by a constraint.

Returns:
table (variable, constraint)

removeInitialValue

public void removeInitialValue()
Permanently remove the initial value from the variable's domain -- for testing MPP