Class HxExpression


  • public class HxExpression
    extends java.lang.Object
    Mathematical modeling expression. Expressions are used to build the mathematical optimization model associated to Hexaly Optimizer. An expression is composed of an operator (which corresponds to its type) and its operands (which are other expressions of the model).
    See Also:
    HxModel, HxOperator
    • 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​(HxExpression 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​(HxExpression... operands)
      Adds the given operands to this expression.
      void addOperands​(java.lang.Iterable<HxExpression> operands)
      Adds the given operands to this expression.
      boolean equals​(java.lang.Object obj)  
      HxArray getArrayValue()
      Gets the value of this expression in the best solution found by the optimizer.
      HxCollection getCollectionValue()
      Gets the value of this expression in the best solution found by the optimizer.
      double getDoubleValue()
      Gets the value of this expression in the best solution found by the optimizer.
      HxExternalContext getExternalContext()
      Gets the native function context of this expression.
      int getIndex()
      Gets the index of this expression in the model.
      HxInterval getIntervalValue()
      Gets the value of this expression in the best solution found by the optimizer.
      long getIntValue()
      Gets the value of this expression in the best solution found by the optimizer.
      HxModel 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.
      HxExpression getOperand​(int operandIndex)
      Gets the operand with the given index.
      HxOperator getOperator()
      Gets the operator of this expression.
      HexalyOptimizer getOptimizer()  
      long getValue()
      Gets the value of this expression in the best solution found by the optimizer.
      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 optimizer.
      boolean isViolated()
      Returns true if the given expression is violated in the best solution found by the optimizer.
      void setDoubleValue​(double value)
      Sets the value of this expression in the current solution found by the optimizer.
      void setIntervalValue​(HxInterval value)
      Sets the value of this expression in the current solution found by the optimizer.
      void setIntValue​(long value)
      Sets the value of this expression in the current solution found by the optimizer.
      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, HxExpression 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 optimizer.
      void setValue​(long value)
      Sets the value of this expression in the current solution found by the optimizer.
      void setValue​(HxInterval value)
      Sets the value of this expression in the current solution found by the optimizer.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

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

      • getModel

        public HxModel getModel()
      • getOperator

        public HxOperator 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 HxState.Paused or HxState.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 HxState.Paused or HxState.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 HxState.Paused or HxState.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 HxState.Paused or HxState.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 HxState.Paused or HxState.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 HxState.Paused or HxState.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 HxState.Paused or HxState.Stopped.
        Returns:
        True if the expression is a function.
        Since:
        6.0
      • addOperand

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

        public void addOperand​(long constant)
        Adds the given constant operand to this expression. Only allowed in state HxState.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 HxState.Modeling.
        Parameters:
        constant - Constant operand to add.
      • addOperands

        public void addOperands​(java.lang.Iterable<HxExpression> operands)
        Adds the given operands to this expression. Only allowed in state HxState.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 HxState.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 HxState.Modeling.
        Parameters:
        operands - The constant double operands to be added.
        Since:
        5.5
      • addOperands

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

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

        public void setOperand​(int operandIndex,
                               HxExpression 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 optimizer. Only allowed for decisions. Only allowed in state HxState.Stopped. Only allowed if this expression is an integer or a boolean. If the optimizer was not launched, this value will be used as an initial value for the decision. This method is a shortcut for HxSolution.setValue(HxExpression, long).
        Parameters:
        value - Value assigned to this expression.
        Since:
        3.0
        See Also:
        HxSolution.setIntValue(HxExpression, long), isInt(), isBool()
      • getExternalContext

        public HxExternalContext 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:
        HxExternalContext
      • isViolated

        public boolean isViolated()
        Returns true if the given expression is violated in the best solution found by the optimizer. 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 HxState.Paused or HxState.Stopped. This method is a shortcut for HxSolution.isViolated(HxExpression).
        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 optimizer. found by the optimizer. 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 HxState.Paused or HxState.Stopped. This method is a shortcut for HxSolution.isUndefined(HxExpression).
        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 HxState.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