Package localsolver

Class LSExpression


  • public class LSExpression
    extends java.lang.Object
    Mathematical modeling expression. Expressions are used to build the mathematical optimization model associated to LocalSolver. An expression is composed of an operator (which corresponds to its type) and its operands (which are other expressions of the model).
    See Also:
    LSModel, LSOperator
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addOperand​(double constant)
      Adds the given constant operand to this expression.
      void addOperand​(long constant)
      Adds the given constant operand to this expression.
      void addOperand​(LSExpression expr)
      Adds the given operand to this expression.
      void addOperands​(double... operands)
      Adds the given constant double operands to this expression.
      void addOperands​(long... operands)
      Adds the given constant integer operands to this expression.
      void addOperands​(java.lang.Iterable<LSExpression> operands)
      Adds the given operands to this expression.
      void addOperands​(LSExpression... operands)
      Adds the given operands to this expression.
      boolean equals​(java.lang.Object obj)  
      LSArray getArrayValue()
      Gets the value of this expression in the best solution found by the solver.
      LSCollection getCollectionValue()
      Gets the value of this expression in the best solution found by the solver.
      double getDoubleValue()
      Gets the value of this expression in the best solution found by the solver.
      LSExternalContext getExternalContext()
      Gets the native function context of this expression.
      int getIndex()
      Gets the index of this expression in the model.
      LSInterval getIntervalValue()
      Gets the value of this expression in the best solution found by the solver.
      long getIntValue()
      Gets the value of this expression in the best solution found by the solver.
      LocalSolver getLocalSolver()  
      LSModel getModel()  
      java.lang.String getName()
      Gets the name of this expression or the empty String if no name has been set.
      int getNbOperands()
      Gets the number of operands of this expression.
      LSExpression getOperand​(int operandIndex)
      Gets the operand with the given index.
      LSOperator getOperator()
      Gets the operator of this expression.
      long getValue()
      Gets the value of this expression in the best solution found by the solver.
      int hashCode()  
      boolean isArray()
      Returns true if this expression is an array, false otherwise.
      boolean isBool()
      Returns true if this expression is a boolean (ie 0 or 1), false otherwise.
      boolean isCollection()
      Returns true if this expression is a collection (list or set), false otherwise.
      boolean isConstant()
      Returns true if this expression is typed as constant in the model, false otherwise.
      boolean isConstraint()
      Returns true if this expression is tagged as constraint in the model, false otherwise.
      boolean isDecision()
      Returns true if this expression is typed as decision in the model, false otherwise.
      boolean isDouble()
      Returns true if this expression is a double, false otherwise.
      boolean isFunction()
      Returns true if this expression is a function, false otherwise.
      boolean isInt()
      Returns true if this expression is an integer, false otherwise.
      boolean isInterval()
      Returns true if this expression is an interval, false otherwise.
      boolean isNamed()
      Returns true if this expression has a name, and false otherwise.
      boolean isObjective()
      Returns true if this expression is tagged as objective in the model, false otherwise.
      boolean isUndefined()
      Returns true if the given expression has an undefined value in the best solution found by the solver.
      boolean isViolated()
      Returns true if the given expression is violated in the best solution found by the solver.
      void setDoubleValue​(double value)
      Sets the value of this expression in the current solution found by the solver.
      void setIntervalValue​(LSInterval value)
      Sets the value of this expression in the current solution found by the solver.
      void setIntValue​(long value)
      Sets the value of this expression in the current solution found by the solver.
      void setName​(java.lang.String name)
      Sets the name of this expression.
      void setOperand​(int operandIndex, double constant)
      Replaces the operand of the given index.
      void setOperand​(int operandIndex, long constant)
      Replaces the operand of the given index.
      void setOperand​(int operandIndex, LSExpression operand)
      Replaces the operand of the given index.
      void setValue​(double value)
      Sets the value of this expression in the current solution found by the solver.
      void setValue​(long value)
      Sets the value of this expression in the current solution found by the solver.
      void setValue​(LSInterval value)
      Sets the value of this expression in the current solution found by the solver.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        getClass, notify, notifyAll, wait, wait, wait
    • Method Detail

      • getModel

        public LSModel getModel()
      • getOperator

        public LSOperator getOperator()
        Gets the operator of this expression.
        Returns:
        Operator.
      • getIndex

        public int getIndex()
        Gets the index of this expression in the model.
        Returns:
        Index in the model.
      • isConstant

        public boolean isConstant()
        Returns true if this expression is typed as constant in the model, false otherwise.
        Returns:
        True if typed as constant.
      • isDecision

        public boolean isDecision()
        Returns true if this expression is typed as decision in the model, false otherwise.
        Returns:
        True if typed as decision.
      • isConstraint

        public boolean isConstraint()
        Returns true if this expression is tagged as constraint in the model, false otherwise.
        Returns:
        True if tagged as constraint.
      • isObjective

        public boolean isObjective()
        Returns true if this expression is tagged as objective in the model, false otherwise.
        Returns:
        True if tagged as objective.
      • isDouble

        public boolean isDouble()
        Returns true if this expression is a double, false otherwise. Only allowed in states LSState.Paused or LSState.Stopped.
        Returns:
        True if the expression is a double.
        Since:
        3.0
      • isInt

        public boolean isInt()
        Returns true if this expression is an integer, false otherwise. Only allowed in states LSState.Paused or LSState.Stopped. Note that a boolean is also an integer.
        Returns:
        True if the expression is an integer.
        Since:
        3.0
      • isBool

        public boolean isBool()
        Returns true if this expression is a boolean (ie 0 or 1), false otherwise. Only allowed in states LSState.Paused or LSState.Stopped.
        Returns:
        True if the expression is a boolean.
        Since:
        3.0
      • isInterval

        public boolean isInterval()
        Returns true if this expression is an interval, false otherwise. Only allowed in states LSState.Paused or LSState.Stopped.
        Returns:
        True if the expression is an interval.
        Since:
        12.0
      • isArray

        public boolean isArray()
        Returns true if this expression is an array, false otherwise. Only allowed in states LSState.Paused or LSState.Stopped.
        Returns:
        True if the expression is an array.
        Since:
        3.1
      • isCollection

        public boolean isCollection()
        Returns true if this expression is a collection (list or set), false otherwise. Only allowed in states LSState.Paused or LSState.Stopped.
        Returns:
        True if the expression is a collection.
        Since:
        5.5
      • isFunction

        public boolean isFunction()
        Returns true if this expression is a function, false otherwise. Only allowed in states LSState.Paused or LSState.Stopped.
        Returns:
        True if the expression is a function.
        Since:
        6.0
      • addOperand

        public void addOperand​(LSExpression expr)
        Adds the given operand to this expression. Only allowed in state LSState.Modeling.
        Parameters:
        expr - Operand to add.
      • addOperand

        public void addOperand​(long constant)
        Adds the given constant operand to this expression. Only allowed in state LSState.Modeling.
        Parameters:
        constant - Constant operand to add.
      • addOperand

        public void addOperand​(double constant)
        Adds the given constant operand to this expression. Only allowed in state LSState.Modeling.
        Parameters:
        constant - Constant operand to add.
      • addOperands

        public void addOperands​(java.lang.Iterable<LSExpression> operands)
        Adds the given operands to this expression. Only allowed in state LSState.Modeling.
        Parameters:
        operands - The iterable collection of operands to be added.
        Since:
        5.5
      • addOperands

        public void addOperands​(long... operands)
        Adds the given constant integer operands to this expression. Only allowed in state LSState.Modeling.
        Parameters:
        operands - The constant integer operands to be added.
        Since:
        5.5
      • addOperands

        public void addOperands​(double... operands)
        Adds the given constant double operands to this expression. Only allowed in state LSState.Modeling.
        Parameters:
        operands - The constant double operands to be added.
        Since:
        5.5
      • addOperands

        public void addOperands​(LSExpression... operands)
        Adds the given operands to this expression. Only allowed in state LSState.Modeling.
        Parameters:
        operands - The operands to be added.
        Since:
        5.5
      • getOperand

        public LSExpression getOperand​(int operandIndex)
        Gets the operand with the given index.
        Parameters:
        operandIndex - Index of the operand.
        Returns:
        Operand.
      • setOperand

        public void setOperand​(int operandIndex,
                               LSExpression operand)
        Replaces the operand of the given index.
        Parameters:
        operandIndex - Index of the operand to change
        operand - New operand
      • setOperand

        public void setOperand​(int operandIndex,
                               long constant)
        Replaces the operand of the given index.
        Parameters:
        operandIndex - Index of the operand to change.
        constant - New constant operand.
      • setOperand

        public void setOperand​(int operandIndex,
                               double constant)
        Replaces the operand of the given index.
        Parameters:
        operandIndex - Index of the operand to change.
        constant - New constant operand.
        Since:
        3.0
      • getNbOperands

        public int getNbOperands()
        Gets the number of operands of this expression.
        Returns:
        Number of operands.
      • setIntValue

        public void setIntValue​(long value)
        Sets the value of this expression in the current solution found by the solver. Only allowed for decisions. Only allowed in state LSState.Stopped. Only allowed if this expression is an integer or a boolean. If the solver was not launched, this value will be used as an initial value for the decision. This method is a shortcut for LSSolution.setValue(LSExpression, long).
        Parameters:
        value - Value assigned to this expression.
        Since:
        3.0
        See Also:
        LSSolution.setIntValue(LSExpression, long), isInt(), isBool()
      • getExternalContext

        public LSExternalContext getExternalContext()
        Gets the native function context of this expression. Only allowed if this expression is a native function.
        Returns:
        Context of the native function.
        Since:
        9.5
        See Also:
        LSExternalContext
      • isViolated

        public boolean isViolated()
        Returns true if the given expression is violated in the best solution found by the solver. An expression can be violated in 3 cases:
        1. It is a constraint and its value is 0.
        2. It is a double and its value is NaN (Not A Number).
        3. It is an integer or boolean with no valid value (arithmetic or out of bounds exception).
        Only allowed in states LSState.Paused or LSState.Stopped. This method is a shortcut for LSSolution.isViolated(LSExpression).
        Returns:
        True if this expression is violated in the best solution.
        Since:
        5.5
      • isUndefined

        public boolean isUndefined()
        Returns true if the given expression has an undefined value in the best solution found by the solver. found by the solver. An expression can be undefined in 4 cases:
        1. It is a double and its value is NaN (Not a Number).
        2. It is an integer or boolean with no valid value (arithmetic or out of bounds exception).
        3. It is an interval with at least one undefined bound.
        4. It is the result of any ill-defined operation (at with out of bounds index or operations on undefined values for instance).
        Only allowed in states LSState.Paused or LSState.Stopped. This method is a shortcut for LSSolution.isUndefined(LSExpression).
        Returns:
        True if this expression has an undefined value in the best solution.
        Since:
        7.0
      • setName

        public void setName​(java.lang.String name)
        Sets the name of this expression. Only allowed in state LSState.Modeling. The name cannot be empty. Two operators of the model cannot share the same name. Useful for debugging or logging purposes.
        Parameters:
        name - Name.
      • isNamed

        public boolean isNamed()
        Returns true if this expression has a name, and false otherwise.
        Returns:
        True if named.
      • getName

        public java.lang.String getName()
        Gets the name of this expression or the empty String if no name has been set.
        Returns:
        Name.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object