This page is for an old version of Hexaly Optimizer. We recommend that you update your version and read the documentation for the latest stable release.

LSExternalContext Class

class LSExternalContext

Context of an external function. External contexts can be used to query and set properties of the associated external function.

If you known the bounds of the external function or if you know it cannot return a NaN value, we recommend you to specify it as LocalSolver is then able to improve its search process. But beware! If the evaluation of the function returns an unexpected value (like a value outside of the bounds), an exception will be thrown during the search.

See

LSExpression::getExternalContext()

Since

9.5

Summary

Functions

lsint LSExternalContext::getIntLowerBound() const

Gets the lower bound of the external function. Only allowed if the external function is an integer function. By default, this property is set to LONG_LONG_MIN.

Returns

Lower bound of the external function.

lsint LSExternalContext::getIntUpperBound() const

Gets the upper bound of the external function. Only allowed if the external function is an integer function. By default, this property is set to LONG_LONG_MAX.

Returns

Upper bound of the external function.

lsdouble LSExternalContext::getDoubleLowerBound() const

Gets the lower bound of the external function. Only allowed if the external function is a double function. By default, this property is set to -INFINITY.

Returns

Lower bound of the external function.

lsdouble LSExternalContext::getDoubleUpperBound() const

Gets the upper bound of the external function. Only allowed if the external function is a double function. By default, this property is set to INFINITY.

Returns

Upper bound of the external function.

bool LSExternalContext::isNanable() const

Returns true if the function can return a NaN (Not a Number) value. Only allowed if the external function is a double function. By default this property is set to true.

Returns

True if the function can return a NaN value.

void LSExternalContext::setLowerBound(lsint lowerBound)

Sets the lower bound of the external function. Only allowed if the external function is an integer function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling. This method has the same behaviour as LSExternalContext::setIntLowerBound()

Parameters

lowerBound – Lower bound of the function.

void LSExternalContext::setLowerBound(lsdouble lowerBound)

Sets the lower bound of the external function. Only allowed if the external function is a double function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling. This method has the same behaviour as LSExternalContext::setDoubleLowerBound()

Parameters

lowerBound – Lower bound of the function

void LSExternalContext::setUpperBound(lsint upperBound)

Sets the upper bound of the external function. Only allowed if the external function is an integer function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling. This method has the same behaviour as LSExternalContext::setIntUpperBound()

Parameters

upperBound – Upper bound of the function.

void LSExternalContext::setUpperBound(lsdouble upperBound)

Sets the upper bound of the external function. Only allowed if the external function is a double function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling. This method has the same behaviour as LSExternalContext::setDoubleLowerBound()

Parameters

upperBound – Upper bound of the function.

void LSExternalContext::setIntLowerBound(lsint lowerBound)

Sets the lower bound of the external function. Only allowed if the external function is an integer function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling.

Parameters

lowerBound – Lower bound of the function

void LSExternalContext::setIntUpperBound(lsint upperBound)

Sets the upper bound of the external function. Only allowed if the external function is an integer function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling.

Parameters

upperBound – Upper bound of the function.

void LSExternalContext::setDoubleLowerBound(lsdouble lowerBound)

Sets the lower bound of the external function. Only allowed if the external function is a double function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling.

Parameters

lowerBound – Lower bound of the function.

void LSExternalContext::setDoubleUpperBound(lsdouble upperBound)

Sets the upper bound of the external function. Only allowed if the external function is a double function. If it is an array function, the bound will apply to all elements of the array. Only allowed in state S_Modeling.

Parameters

upperBound – Upper bound of the function.

void LSExternalContext::setNanable(bool nanable)

Sets whether or not the function can return a NaN (Not a Number) value. Only allowed if the external function is a double function. If it is an array function, this parameter will apply to all elements of the array. Only allowed in state S_Modeling.

Parameters

nanable – True if the function can return a NaN value, false otherwise.

LSSurrogateParameters LSExternalContext::enableSurrogateModeling()

Enables the surrogate modeling on the associated external function. This method changes the internal behavior of the solver: the solver now considers that the function is computationally expensive and therefore uses surrogate modeling. This method returns the LSSurrogateParameters which are used to parameterize various aspects of surrogate modeling. Note: Once the surrogate modeling is enabled, it cannot be disabled. Only allowed in state S_Modeling.

For more information, please see the section dedicated to surrogate modeling among the modeling features.

Returns

Surrogate parameters.

Rtype

LSSurrogateParameters