Interface LSIntExternalFunction
-
public interface LSIntExternalFunction
Integer external function interface. To use your own integer functions with LocalSolver, you have to proceed in 3 steps:- Implement the LSIntExternalFunction interface with the call method. The call
method must take a
LSExternalArgumentValues
and must return an integer value. The argument values contain the values of the expressions passed to the function. A distinction is made between integer arguments (bool, int) and floating point arguments (double). - Instanciate the function as an LSExpression with
LSModel.createIntExternalFunction(localsolver.LSIntExternalFunction)
or with the shortcutLSModel.intExternalFunction(localsolver.LSIntExternalFunction)
. - Pass arguments to your function and call it. For that, you have to create
expressions of type
LSOperator.Call
. The first operand must be your external function. The other operands must be LSExpressions. Their value will be made accessible to your external function through the argument values.
Note 1: Most of the time your external function will be called when the solver is in state
LSState.Running
. Do not attempt to call any method of the solver (to retrieve statistics, values of LSExpressions or whatever) in that state or an exception will be thrown.Note 2: Your functions must be thread-safe. According to the "nbThreads" parameter, LocalSolver can be multi-threaded. In that case, your external functions must be thread safe. If you cannot guarantee the thread-safety of your code, we strongly recommend you to limit the search of LocalSolver to one thread with
LSParam.setNbThreads(int)
.Note 3: You can provide additional data for your function (such as lower and upper bounds) with the help of the
LSExternalContext
associated with the function (seeLSExpression.getExternalContext()
).- Since:
- 9.5
- Implement the LSIntExternalFunction interface with the call method. The call
method must take a
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description long
call(LSExternalArgumentValues argumentValues)
The function to call.
-
-
-
Method Detail
-
call
long call(LSExternalArgumentValues argumentValues)
The function to call. The argument values contain the arguments to pass to your function.- Parameters:
argumentValues
- Argument values containing the arguments of the function.- Returns:
- The value of the LSExpression.
-
-