Interface LSIntArrayExternalFunction
-
public interface LSIntArrayExternalFunction
Integer array external function interface. To use integer array external functions with LocalSolver, you have to proceed in 3 steps:- Implement the LSIntArrayExternalFunction interface with the call method. The
call method must take a
LSExternalArgumentValues
and must return an integer array 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). - Instantiate the function as an LSExpression with
LSModel.createIntArrayExternalFunction(localsolver.LSIntArrayExternalFunction)
or the dedicated shortcutLSModel.intArrayExternalFunction(localsolver.LSIntArrayExternalFunction)
. - 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 theLSExternalArgumentValues
.
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: To optimize performance, you can return the same array object per thread from one call to another.
Note 4: You can provide additional data for your function (such as the maximum number of evaluations) with the help of the
LSExternalContext
associated with the function (seeLSExpression.getExternalContext()
).- Since:
- 11.0
- Implement the LSIntArrayExternalFunction 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.
-
-