Class HxExpression

java.lang.Object
com.hexaly.optimizer.HxExpression

public class HxExpression extends 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:
  • Method Summary

    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
    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
    Adds the given operands to this expression.
    void
    Adds the given operands to this expression.
    boolean
     
    Gets the value of this expression in the best solution found by the optimizer.
    Gets the value of this expression in the best solution found by the optimizer.
    double
    Gets the value of this expression in the best solution found by the optimizer.
    Gets the native function context of this expression.
    int
    Gets the index of this expression in the model.
    Gets the value of this expression in the best solution found by the optimizer.
    long
    Gets the value of this expression in the best solution found by the optimizer.
     
    Gets the name of this expression or the empty String if no name has been set.
    int
    Gets the number of operands of this expression.
    getOperand(int operandIndex)
    Gets the operand with the given index.
    Gets the operator of this expression.
     
    long
    Gets the value of this expression in the best solution found by the optimizer.
    int
     
    boolean
    Returns true if this expression is an array, false otherwise.
    boolean
    Returns true if this expression is a boolean (ie 0 or 1), false otherwise.
    boolean
    Returns true if this expression is a collection (list or set), false otherwise.
    boolean
    Returns true if this expression is typed as constant in the model, false otherwise.
    boolean
    Returns true if this expression is tagged as constraint in the model, false otherwise.
    boolean
    Returns true if this expression is typed as decision in the model, false otherwise.
    boolean
    Returns true if this expression is a double, false otherwise.
    boolean
    Returns true if this expression is a function, false otherwise.
    boolean
    Returns true if this expression is an integer, false otherwise.
    boolean
    Returns true if this expression is an interval, false otherwise.
    boolean
    Returns true if this expression has a name, and false otherwise.
    boolean
    Returns true if this expression is tagged as objective in the model, false otherwise.
    boolean
    Returns true if the given expression has an undefined value in the best solution found by the optimizer.
    boolean
    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
    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
    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
    Sets the value of this expression in the current solution found by the optimizer.
     

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Method Details

    • getModel

      public HxModel getModel()
    • getOptimizer

      public HexalyOptimizer getOptimizer()
    • 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(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.
    • setValue

      public void setValue(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) and has the same behavior as setIntValue(long).
      Parameters:
      value - Value assigned to this expression.
      See Also:
    • setValue

      public void setValue(double 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, double) and has the same behavior as setDoubleValue(double).
      Parameters:
      value - Value assigned to this expression.
      See Also:
    • setValue

      public void setValue(HxInterval 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 interval. 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, HxInterval) and has the same behavior as setIntervalValue(HxInterval).
      Parameters:
      value - Value assigned to this expression.
      See Also:
    • 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:
    • setDoubleValue

      public void setDoubleValue(double 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 a double. 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, double).
      Parameters:
      value - Value assigned to this expression.
      Since:
      3.0
      See Also:
    • setIntervalValue

      public void setIntervalValue(HxInterval 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 interval. 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, HxInterval).
      Parameters:
      value - Value assigned to this expression.
      Since:
      3.0
      See Also:
    • getValue

      public long getValue()
      Gets the value of this expression in the best solution found by the optimizer. Only allowed in states HxState.Paused or HxState.Stopped. Only allowed if this expression is an integer or a boolean. This method is a shortcut for HxSolution.getValue(HxExpression).
      Returns:
      Value in the best solution.
      See Also:
    • getIntValue

      public long getIntValue()
      Gets the value of this expression in the best solution found by the optimizer. Only allowed in states HxState.Paused or HxState.Stopped. Only allowed if this expression is an integer or a boolean. This method is a shortcut for HxSolution.getIntValue(HxExpression).
      Returns:
      Value in the best solution.
      Since:
      3.0
      See Also:
    • getDoubleValue

      public double getDoubleValue()
      Gets the value of this expression in the best solution found by the optimizer. Only allowed in states HxState.Paused or HxState.Stopped. Only allowed if this expression is a double. This method is a shortcut for HxSolution.getDoubleValue(HxExpression).
      Returns:
      Value in the best solution.
      Since:
      3.0
      See Also:
    • getIntervalValue

      public HxInterval getIntervalValue()
      Gets the value of this expression in the best solution found by the optimizer. Only allowed in states HxState.Paused or HxState.Stopped. Only allowed if this expression is an interval. This method is a shortcut for HxSolution.getIntervalValue(HxExpression).
      Returns:
      Value in the best solution.
      Since:
      12.0
      See Also:
    • getCollectionValue

      public HxCollection getCollectionValue()
      Gets the value of this expression in the best solution found by the optimizer. Only allowed in states HxState.Paused or HxState.Stopped. Only allowed if this expression is a collection (list or set). This method is a shortcut for HxSolution.getCollectionValue(HxExpression).
      Returns:
      Value in the best solution.
      Since:
      5.5
      See Also:
    • getArrayValue

      public HxArray getArrayValue()
      Gets the value of this expression in the best solution found by the optimizer. Only allowed in states HxState.Paused or HxState.Stopped. Only allowed if this expression is an array. This method is a shortcut for HxSolution.getArrayValue(HxExpression).
      Returns:
      Value in the best solution.
      Since:
      7.5
      See Also:
    • 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:
    • 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(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 String getName()
      Gets the name of this expression or the empty String if no name has been set.
      Returns:
      Name.
    • toString

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

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

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