HxSolution Class

class Hexaly.Optimizer.HxSolution

Solution to the optimization model. A solution carries the values of all expressions in the model. It is used to retrieve the values of all expressions (getting the solution), or to set the values of some decisions (setting the solution).

See:

HxSolutionStatus

Summary

Methods

GetOptimizer

Returns the Hexaly Optimizer object associated to this solution.

SetValue

Sets the value of the given expression in this solution.

SetIntValue

Sets the value of the given expression in this solution.

SetDoubleValue

Sets the value of the given expression in this solution.

SetIntervalValue

Sets the value of the given expression in this solution.

GetValue

Returns the value of the given expression in this solution.

GetDoubleValue

Returns the value of the given expression in this solution.

GetIntValue

Returns the value of the given expression in this solution.

GetIntervalValue

Returns the value of the given expression in this solution.

GetCollectionValue

Returns the value of the given expression in this solution.

GetArrayValue

Returns the value of the given expression in this solution.

IsViolated

Returns true if the given expression is violated in this solution.

IsUndefined

Returns true if the given expression has an undefined value in this solution.

GetStatus

Returns the status of the solution.

GetObjectiveBound

Returns the bound computed by the solver for the given objective.

GetIntObjectiveBound

Returns the bound computed by the solver for the given objective.

GetDoubleObjectiveBound

Returns the bound computed by the solver for the given objective.

GetObjectiveGap

Returns the gap computed by the solver for the given objective.

Clear

Clear the solution and set all decisions to zero.

Instance methods

HexalyOptimizer GetOptimizer()

Returns the Hexaly Optimizer object associated to this solution.

Returns:

Hexaly Optimizer object

Return type:

HexalyOptimizer

void SetValue(HxExpression expr, long value)

Sets the value of the given expression in this solution. Only decisions can be set. Only allowed in state 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 has the same behavior as HxSolution.SetIntValue.

Arguments:
  • expr (HxExpression) – Decision.

  • value (long) – Value assigned to the decision in this solution.

See:

HxExpression.IsDecision

See:

HxExpression.IsInt

See:

HxExpression.IsBool

void SetValue(HxExpression expr, double value)

Sets the value of the given expression in this solution. Only decisions can be set. Only allowed in state Stopped. Only allowed if this expression is a double. If the solver was not launched, this value will be used as an initial value for the decision.

This method has the same behavior as HxSolution.SetDoubleValue.

Arguments:
  • expr (HxExpression) – Decision.

  • value (double) – Value assigned to the decision in this solution.

See:

HxExpression.IsDecision

See:

HxExpression.IsDouble

void SetValue(HxExpression expr, HxInterval value)

Sets the value of the given expression in this solution. Only decisions can be set. Only allowed in state Stopped. Only allowed if this expression is an interval. If the solver was not launched, this value will be used as an initial value for the decision.

This method has the same behavior as HxSolution.SetIntervalValue.

Arguments:
See:

HxExpression.IsDecision

See:

HxExpression.IsInterval

void SetIntValue(HxExpression expr, long value)

Sets the value of the given expression in this solution. Only decisions can be set. Only allowed in state 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.

Since:

3.0

Arguments:
  • expr (HxExpression) – Decision.

  • value (long) – Value assigned to the decision in this solution.

See:

HxExpression.IsDecision

See:

HxExpression.IsInt

See:

HxExpression.IsBool

void SetDoubleValue(HxExpression expr, long value)

Sets the value of the given expression in this solution. Only decisions can be set. Only allowed in state Stopped. If the solver was not launched, this value will be used as an initial value for the decision. Only allowed if this expression is a double.

Since:

3.0

Arguments:
  • expr (HxExpression) – Decision.

  • value (long) – Value assigned to the decision in this solution.

See:

HxExpression.IsDecision

See:

HxExpression.IsDouble

void SetIntervalValue(HxExpression expr, HxInterval value)

Sets the value of the given expression in this solution. Only decisions can be set. Only allowed in state Stopped. If the solver was not launched, this value will be used as an initial value for the decision. Only allowed if this expression is an interval.

Since:

12.0

Arguments:
See:

HxExpression.IsDecision

See:

HxExpression.IsInterval

long GetValue(HxExpression expr)

Returns the value of the given expression in this solution. Only allowed in states Paused or Stopped. Only allowed if this expression is an integer or a boolean.

This method has the same behavior as HxSolution.GetIntValue.

Arguments:

expr (HxExpression) – Expression.

Returns:

Value of the expression in this solution.

Return type:

long

See:

HxExpression.IsInt

See:

HxExpression.IsBool

double GetDoubleValue(HxExpression expr)

Returns the value of the given expression in this solution. Only allowed in states Paused or Stopped. Only allowed if this expression is a double.

Since:

3.0

Arguments:

expr (HxExpression) – Expression.

Returns:

Value of the expression in this solution.

Return type:

double

See:

HxExpression.IsDouble

long GetIntValue(HxExpression expr)

Returns the value of the given expression in this solution. Only allowed in states Paused or Stopped. Only allowed if this expression is an integer or a boolean.

Since:

3.0

Arguments:

expr (HxExpression) – Expression.

Returns:

Value of the expression in this solution.

Return type:

long

See:

HxExpression.IsInt

See:

HxExpression.IsBool

long GetIntervalValue(HxExpression expr)

Returns the value of the given expression in this solution. Only allowed in states Paused or Stopped. Only allowed if this expression is an interval.

Since:

3.0

Arguments:

expr (HxExpression) – Expression.

Returns:

Value of the expression in this solution.

Return type:

HxInterval

See:

HxExpression.IsInterval

HxCollection GetCollectionValue(HxExpression expr)

Returns the value of the given expression in this solution. Only allowed in states Paused or Stopped. Only allowed if this expression is a collection (list or set).

Since:

5.5

Arguments:

expr (HxExpression) – Expression.

Returns:

Value of the expression in this solution.

Return type:

HxCollection

See:

HxExpression.IsCollection

HxCollection GetArrayValue(HxExpression expr)

Returns the value of the given expression in this solution. Only allowed in states Paused or Stopped. Only allowed if this expression is an array.

Since:

7.5

Arguments:

expr (HxExpression) – Expression.

Returns:

Value of the expression in this solution.

Return type:

HxArray

See:

HxExpression.IsArray

bool IsViolated(HxExpression expr)

Returns true if the given expression is violated in this solution. An expression can be violated in 3 cases:

  • It is a constraint and its value is 0.

  • It is a double and its value is NaN (Not A Number).

  • It is an integer or boolean with no valid value (arithmetic or out of bounds exception).

Only allowed in states Paused or Stopped.

Since:

5.5

Arguments:

expr (HxExpression) – Expression.

Returns:

True if the expression is violated in this solution.

Return type:

bool

bool IsUndefined(HxExpression expr)

Returns true if the given expression has an undefined value in this solution. An expression can be undefined in 4 cases:

  • It is a double and its value is NaN (Not a Number).

  • It is an integer or boolean with no valid value (arithmetic or out of bounds exception).

  • It is an interval with at least one undefined bound.

  • 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 Paused or Stopped.

Since:

7.0

Arguments:

expr (HxExpression) – Expression.

Returns:

True if this expression has an undefined value in this solution.

HxSolutionStatus GetStatus()

Returns the status of the solution. Only allowed in states Paused or Stopped.

Returns:

Status of the solution

Return type:

HxSolutionStatus

long GetObjectiveBound(int objectiveIndex)

Returns the bound computed by the solver for the given objective. If the solver has never been launched, this method returns Int64.MaxValue or Int64.MinValue depending on the optimization direction of the objective. Only allowed in states Paused or Stopped. Only allowed if this expression is a boolean or an integer. This method has the same behavior as HxSolution.GetIntObjectiveBound.

Since:

8.5

Arguments:

objectiveIndex (int) – Index of the objective.

Returns:

Bound of the given objective.

Return type:

long

See:

HxExpression.IsInt

See:

HxExpression.IsBool

long GetIntObjectiveBound(int objectiveIndex)

Returns the bound computed by the solver for the given objective. If the solver has never been launched, this method returns Int64.MaxValue or Int64.MinValue depending on the optimization direction of the objective. Only allowed in states Paused or Stopped. Only allowed if this expression is a boolean or an integer.

Since:

8.5

Arguments:

objectiveIndex (int) – Index of the objective.

Returns:

Bound of the given objective.

Return type:

long

See:

HxExpression.IsInt

See:

HxExpression.IsBool

double GetDoubleObjectiveBound(int objectiveIndex)

Returns the bound computed by the solver for the given objective. If the solver has never been launched, this method returns Double.PositiveInfinity or Double.NegativeInfinity depending on the optimization direction of the objective. Only allowed in states Paused or Stopped. Only allowed if this expression is a double.

Since:

8.5

Arguments:

objectiveIndex (int) – Index of the objective.

Returns:

Bound of the given objective.

Return type:

double

See:

HxExpression.IsDouble

double GetObjectiveGap(int objectiveIndex)

Returns the gap computed by the solver for the given objective. The gap for feasible solutions is defined as:

\[|obj - bound| / \max(1, |obj|, |bound|)\]

Infeasible solutions have an infinite gap.

Only allowed in states Paused or Stopped.

Arguments:

objectiveIndex (int) – Index of the objective.

Returns:

Gap of the given objective.

Return type:

double

void Clear()

Clear the solution and set all decisions to zero. Only allowed in state Stopped.