Interface LSIntExternalFunction
-
public interface LSIntExternalFunctionInteger 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
LSExternalArgumentValuesand 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
LSExternalContextassociated 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 longcall(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.
-
-