LSModel Class¶
 class
Mathematical optimization model.
A model is composed of expressions (some of which are decisions), organized as a tree. Then, some expressions of the model can be constrained or optimized. Once your optimization model is created and closed, the solver can be launched to resolve it. Note that you cannot modify a model which has been closed: you must reopen it (with open()) or instantiate another LocalSolver environment to optimize another model.
See: LSExpression See: LSOperator
Summary¶
createConstant 
Creates a constant expression representing the given value. 
createExpression 
Creates an expression of the given type, with the given ordered operands. 
createExternalFunction 
Creates an integer external function. 
createBlackBoxFunction 
Creates an integer blackbox function. 
createLambdaFunction 
Creates a lambda function. 
boolVar 
Creates a boolean decision. 
floatVar 
Creates a float decision. 
intVar 
Creates an integer decision. 
sum 
Creates a sum expression. 
sub 
Creates a substraction expression. 
call 
Creates a call expression. 
prod 
Creates a product expression. 
max 
Creates a maximum expression. 
min 
Creates a minimum expression. 
or_ 
Creates a OR expression. 
and_ 
Creates an AND expression. 
xor_ 
Creates a XOR expression. 
not_ 
Creates a NOT expression. 
eq 
Creates an equality expression. 
neq 
Creates a disequality expression. 
geq 
Creates an inequality expression greater than or equal to. 
leq 
Creates an inequality expression less than or equal to. 
gt 
Creates an inequality expression greater than. 
lt 
Creates an inequality expression less than. 
iif 
Creates a ternary conditional expression. 
abs 
Creates an absolute value expression. 
dist 
Creates a distance expression. 
div 
Creates a division expression. 
mod 
Creates a modulo expression. 
array 
Creates an array expression. 
at 
Creates a \u201cat\u201d expression for Ndimensional array. 
scalar 
Creates an expression for the scalar product between two arrays. 
ceil 
Creates a ceil expression. 
floor 
Creates a floor expression. 
round 
Creates a rounding expression. 
sqrt 
Creates a square root expression. 
log 
Creates a log expression. 
exp 
Creates an exponential expression. 
pow 
Creates a power expression. 
cos 
Creates a cosine expression. 
sin 
Creates a sine expression. 
tan 
Creates a tangent expression. 
piecewise 
Creates a piecewise linear expression. 
listVar 
Creates a list decision with the given length. 
setVar 
Creates a set decision with the given length. 
count 
Creates a count expression. 
indexOf 
Creates an indexOf expression. 
contains 
Creates a contains expression. 
partition 
Creates a partition expression. 
disjoint 
Creates a disjoint expression. 
cover 
Creates a cover expression. 
find 
Creates a find expression. 
externalFunction 
Creates an external function expression. 
blackBoxFunction 
Creates a blackbox function expression. 
lambdaFunction 
Creates a lambda function expression. 
range 
Creates a range expression, where expr0 is the lower bound (inclusive) and expr1 is the upper bound (exclusive). 
getNbExpressions 
Gets the number of expressions added to this model. 
getExpression 
Gets the expression with the given index in this model. 
getNbDecisions 
Gets the number of decisions in the model. 
getDecision 
Gets the decision with the given index. 
addConstraint 
Adds the given expression to the list of constraints. 
constraint 
Shortcut for addConstraint(expr). 
removeConstraint 
Removes the given expression from the list of constraints. 
getNbConstraints 
Gets the number of constraints added to this model. 
getConstraint 
Gets the constraint with the given index. 
addObjective 
Adds the given expression to the list of objectives to optimize. 
minimize 
Shortcut for addObjective(expr, OD_Minimize). 
maximize 
Shortcut for addObjective(expr, OD_Maximize). 
removeObjective 
Removes the objective at the given position in the list of objectives. 
getNbObjectives 
Gets the number of objectives added to this model. 
getObjective 
Gets the objective with the given index. 
getObjectiveDirection 
Gets the direction of the objective with the given index. 
getNbOperands 
Gets the number of operands in the model. 
close 
Closes the model. 
open 
Reopens the model. 
isClosed 
Returns true if the model is closed, false otherwise. 
toString 
Returns a string representation of this model. 
Functions¶

LSExpression
localsolver::LSModel
::
createConstant
(lsint value)¶ Creates a constant expression representing the given value.
Only allowed in state S_Modeling. Note that if a constant has been already created with the same value, this method can return the same expression, but it is not guaranteed. The exact behavior is implementation defined.
Return: Created constant expression. Parameters: value  Value of the constant.

LSExpression
localsolver::LSModel
::
createConstant
(lsdouble value)¶ Creates a constant expression representing the given value.
Only allowed in state S_Modeling. Note that if a constant has been already created with the same value, this method can return the same expression, but it is not guaranteed. The exact behavior is implementation defined.
Return: Created constant expression. Parameters: value  Value of the constant
 template <typename… TN>

LSExpression
localsolver::LSModel
::
createExpression
(LSOperator op, TN... operands)¶ Creates an expression of the given type, with the given ordered operands.
Only allowed in state S_Modeling. The operands can be doubles, integers or previously declared LSExpressions. It is also possible to use this method with iterators. In that case, you have to call this method with 2 operands exactly that must be iterators of the same type, pointing respectively to the initial and final positions of the operands.
Return: Created expression.
Templates: TN  types of the operands to add. Types allowed: constant types, LSExpression or iterators.
Parameters:  op  Type of expression to create.
 operands  Operands.

LSExpression
localsolver::LSModel
::
createExternalFunction
(LSExternalFunction<lsint> *func)¶ Creates an integer external function.
The argument must be derived from LSExternalFunction. When the external function is called, the argument values will be made accessible to your function through the LSExternalArgumentValues.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSExternalFunction See: O_ExternalFunction Since: 9.5 Parameters: func  External function to call.

LSExpression
localsolver::LSModel
::
createExternalFunction
(LSExternalFunction<lsdouble> *func)¶ Creates a double external function.
The argument must be derived from LSExternalFunction. When the external function is called, the argument values will be made accessible to your function through the LSExternalArgumentValues.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSExternalFunction See: O_ExternalFunction Since: 9.5 Parameters: func  External function to call.

LSExpression
localsolver::LSModel
::
createBlackBoxFunction
(LSBlackBoxFunction<lsint> *func)¶ Creates an integer blackbox function.
The argument must be derived from LSBlackBoxFunction. When the blackbox function is called, the argument values will be made accessible to your function through the LSBlackBoxArgumentValues.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSBlackBoxFunction See: O_BlackBoxFunction Since: 10.0 Parameters: func  Blackbox function to call.

LSExpression
localsolver::LSModel
::
createBlackBoxFunction
(LSBlackBoxFunction<lsdouble> *func)¶ Creates a double blackbox function.
The argument must be derived from LSBlackBoxFunction. When the blackbox function is called, the argument values will be made accessible to your function through the LSBlackBoxArgumentValues.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSBlackBoxFunction See: O_BlackBoxFunction Since: 9.5 Parameters: func  Blackbox function to call.
 template <typename T, typename … ARGS>

LSExpression
localsolver::LSModel
::
createExternalFunction
(const std::function<T(ARGS...)> &func)¶ Creates an external function.
The argument must be a std::function taking any combination of lsint and lsdouble arguments. When the external function is called, the argument values will be passed to your function as its arguments.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSExternalFunction See: O_ExternalFunction Since: 9.5 Parameters: func  std::function to call. It must only accept lsint and lsdouble arguments.
 template <typename T>

LSExpression
localsolver::LSModel
::
createExternalFunction
(const std::function<T(const LSExternalArgumentValues&)> &func)¶ Creates an external function.
The argument must be a std::function taking a LSExternalArgumentValues as its argument. When the external function is called, the argument values will be made accessible to your function through this object.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSExternalFunction See: O_ExternalFunction Since: 9.5 Parameters: func  External function to call.
 template <typename T, typename … ARGS>

LSExpression
localsolver::LSModel
::
createBlackBoxFunction
(const std::function<T(ARGS...)> &func)¶ Creates a blackbox function.
The argument must be a std::function taking any combination of lsint and lsdouble arguments. When the blackbox function is called, the argument values will be passed to your function as its arguments.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSBlackBoxFunction See: O_BlackBoxFunction Since: 9.5 Parameters: func  Blackbox function to call.
 template <typename T>

LSExpression
localsolver::LSModel
::
createBlackBoxFunction
(const std::function<T(const LSBlackBoxArgumentValues&)> &func)¶ Creates a blackbox function.
The argument must be a std::function taking a LSBlackBoxArgumentValues as its argument. When the blackbox function is called, the argument values will be made accessible to your function through this object.
Once you have instantiated it, you have to use call to call it in your model.
Return: The expression associated to the function. See: LSBlackBoxFunction See: O_BlackBoxFunction Since: 9.5 Parameters: func  Blackbox function to call.
 template <typename A>

LSExpression
localsolver::LSModel
::
createLambdaFunction
(const A &functor)¶ Creates a lambda function.
A lambda function is a particular expression composed of two parts:
 The arguments of the function (which are also LSExpressions of type O_Argument)
 The body of the function. The body is an LSExpression that will be used to evaluate the result of the function. The body can be any LSExpression composed of any operands and operators supported by LocalSolver. Thus, the body expression can use the arguments of the function but can also capture and refer to expressions declared outside of the function.
You have to provide the body of the function as a std::function (C++ function or lambda). Please note that the provided std::function will not be used directly during the solving process, but will be evaluated once by the API with a number of LSExpression of type O_Argument that corresponds to the number of arguments your std::function expects. The returned LSExpression resulting of this evaluation will be used as the body of the LocalSolver function O_LambdaFunction.
Return: The expression associated to the function. Since: 9.5 Parameters: functor  Functor called to create the function.

LSExpression
localsolver::LSModel
::
boolVar
()¶ Creates a boolean decision.
Binary decision variable with domain { 0, 1 }. This method is a shortcut for
createExpression(O_Bool)
.See: O_Bool See: createExpression Since: 5.5

LSExpression
localsolver::LSModel
::
floatVar
(lsdouble lb, lsdouble ub)¶ Creates a float decision.
Decision variable with domain [lb, ub]. This method is a shortcut for
createExpression(O_Float, lb, ub)
.See: See: Since: 5.5
Parameters:  lb  Lower bound of the decision variable.
 ub  Upper bound of the decision variable.

LSExpression
localsolver::LSModel
::
intVar
(lsint lb, lsint ub)¶ Creates an integer decision.
Decision variable with domain [lb, ub]. This method is a shortcut for
createExpression(O_Int, lb, ub)
.See: See: Since: 5.5
Parameters:  lb  Lower bound of the decision variable.
 ub  Upper bound of the decision variable.
 template <typename… TN>

LSExpression
localsolver::LSModel
::
sum
(TN... operands)¶ Creates a sum expression.
This method is a shortcut for
createExpression(O_Sum, operands)
.See: O_Sum See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
sub
(T0 expr0, T1 expr1)¶ Creates a substraction expression.
This method is a shortcut for
createExpression(O_Sub, expr0, expr1)
.See: O_Sub See: createExpression Since: 5.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
call
(TN... operands)¶ Creates a call expression.
The first operand must be an LSExpression of type O_LambdaFunction or O_ExternalFunction. The other operands may be LSExpressions, booleans, integers, and doubles. They are passed to the function as arguments.
This method is a shortcut for
createExpression(O_Call, operands)
.See: O_Call See: createExpression Since: 6.0
 template <typename… TN>

LSExpression
localsolver::LSModel
::
prod
(TN... operands)¶ Creates a product expression.
This method is a shortcut for
createExpression(O_Prod, operands)
.See: O_Prod See: createExpression Since: 5.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
max
(TN... operands)¶ Creates a maximum expression.
This method is a shortcut for
createExpression(O_Max, operands)
.See: O_Max See: createExpression Since: 5.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
min
(TN... operands)¶ Creates a minimum expression.
This method is a shortcut for
createExpression(O_Min, operands)
.See: O_Min See: createExpression Since: 5.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
or_
(TN... operands)¶ Creates a OR expression.
This method is a shortcut for
createExpression(O_Or, operands)
.See: O_Or See: createExpression Since: 5.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
and_
(TN... operands)¶ Creates an AND expression.
This method is a shortcut for
createExpression(O_And, operands)
.See: O_And See: createExpression Since: 5.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
xor_
(TN... operands)¶ Creates a XOR expression.
This method is a shortcut for
createExpression(O_Xor, operands)
.See: O_Xor See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
not_
(T0 expr0)¶ Creates a NOT expression.
This method is a shortcut for
createExpression(O_Not, expr0)
.See: O_Not See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
eq
(T0 expr0, T1 expr1)¶ Creates an equality expression.
This method is a shortcut for
createExpression(O_Eq, expr0, expr1)
.See: O_Eq See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
neq
(T0 expr0, T1 expr1)¶ Creates a disequality expression.
This method is a shortcut for
createExpression(O_Neq, expr0, expr1)
.See: O_Neq See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
geq
(T0 expr0, T1 expr1)¶ Creates an inequality expression greater than or equal to.
This method is a shortcut for
createExpression(O_Geq, expr0, expr1)
.See: O_Geq See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
leq
(T0 expr0, T1 expr1)¶ Creates an inequality expression less than or equal to.
This method is a shortcut for
createExpression(O_Leq, expr0, expr1)
.See: O_Leq See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
gt
(T0 expr0, T1 expr1)¶ Creates an inequality expression greater than.
This method is a shortcut for
createExpression(O_Gt, expr0, expr1)
.See: O_Gt See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
lt
(T0 expr0, T1 expr1)¶ Creates an inequality expression less than.
This method is a shortcut for
createExpression(O_Lt, expr0, expr1)
.See: O_Lt See: createExpression Since: 5.5
 template <typename T0, typename T1, typename T2>

LSExpression
localsolver::LSModel
::
iif
(T0 condExpr, T1 trueExpr, T2 falseExpr)¶ Creates a ternary conditional expression.
This method is a shortcut for
createExpression(O_If, condExpr, trueExpr, falseExpr)
.See: O_If See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
abs
(T0 expr0)¶ Creates an absolute value expression.
This method is a shortcut for
createExpression(O_Abs, expr0)
.See: O_Abs See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
dist
(T0 expr0, T1 expr1)¶ Creates a distance expression.
This method is a shortcut for
createExpression(O_Dist, expr0, expr1)
.See: O_Dist See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
div
(T0 expr0, T1 expr1)¶ Creates a division expression.
This method is a shortcut for
createExpression(O_Div, expr0, expr1)
.See: O_Div See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
mod
(T0 expr0, T1 expr1)¶ Creates a modulo expression.
This method is a shortcut for
createExpression(O_Mod, expr0, expr1)
.See: O_Mod See: createExpression Since: 5.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
array
(TN... operands)¶ Creates an array expression.
This method is a shortcut for
createExpression(O_Array, operands)
.See: O_Array See: createExpression Since: 5.5
 template <typename T0, typename… TN>

LSExpression
localsolver::LSModel
::
at
(T0 arrayExpr, TN... operands)¶ Creates a “at” expression for Ndimensional array.
This method is a shortcut for
createExpression(O_At, arrayExpr, operands)
.See: O_At See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
scalar
(T0 expr0, T1 expr1)¶ Creates an expression for the scalar product between two arrays.
This method is a shortcut for
createExpression(O_Scalar, expr0, expr1)
.See: O_Scalar See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
ceil
(T0 expr0)¶ Creates a ceil expression.
This method is a shortcut for
createExpression(O_Ceil, expr0)
.See: O_Ceil See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
floor
(T0 expr0)¶ Creates a floor expression.
This method is a shortcut for
createExpression(O_Floor, expr0)
.See: O_Floor See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
round
(T0 expr0)¶ Creates a rounding expression.
This method is a shortcut for
createExpression(O_Round, expr0)
.See: O_Round See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
sqrt
(T0 expr0)¶ Creates a square root expression.
This method is a shortcut for
createExpression(O_Sqrt, expr0)
.See: O_Sqrt See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
log
(T0 expr0)¶ Creates a log expression.
This method is a shortcut for
createExpression(O_Log, expr0)
.See: O_Log See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
exp
(T0 expr0)¶ Creates an exponential expression.
This method is a shortcut for
createExpression(O_Exp, expr0)
.See: O_Exp See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
pow
(T0 expr0, T1 expr1)¶ Creates a power expression.
This method is a shortcut for
createExpression(O_Pow, expr0, expr1)
.See: O_Pow See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
cos
(T0 expr0)¶ Creates a cosine expression.
This method is a shortcut for
createExpression(O_Cos, expr0)
.See: O_Cos See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
sin
(T0 expr0)¶ Creates a sine expression.
This method is a shortcut for
createExpression(O_Sin, expr0)
.See: O_Sin See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
tan
(T0 expr0)¶ Creates a tangent expression.
This method is a shortcut for
createExpression(O_Tan, expr0)
.See: O_Tan See: createExpression Since: 5.5
 template <typename T0, typename T1, typename T2>

LSExpression
localsolver::LSModel
::
piecewise
(T0 expr0, T1 expr1, T2 expr2)¶ Creates a piecewise linear expression.
This method is a shortcut for
createExpression(O_Piecewise, expr, expr1, expr2)
.See: O_Piecewise See: createExpression Since: 5.5

LSExpression
localsolver::LSModel
::
listVar
(lsint n)¶ Creates a list decision with the given length.
A list is a ordered collection of integers within a domain [0, n1]. This method is a shortcut for
createExpression(O_List, n)
.See: O_List See: createExpression Since: 5.5

LSExpression
localsolver::LSModel
::
setVar
(lsint n)¶ Creates a set decision with the given length.
A set is a unordered collection of integers within a domain [0, n1]. This method is a shortcut for
createExpression(O_Set, n)
.See: O_Set See: createExpression Since: 8.0
 template <typename T0>

LSExpression
localsolver::LSModel
::
count
(T0 expr0)¶ Creates a count expression.
This method is a shortcut for
createExpression(O_Count, expr0)
.See: O_Count See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
indexOf
(T0 expr0, T1 expr1)¶ Creates an indexOf expression.
This method is a shortcut for
createExpression(O_IndexOf, expr0, expr1)
.See: O_IndexOf See: createExpression Since: 5.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
contains
(T0 expr0, T1 expr1)¶ Creates a contains expression.
This method is a shortcut for
createExpression(O_Contains, expr0, expr1)
.See: O_Contains See: createExpression Since: 7.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
partition
(TN... operands)¶ Creates a partition expression.
This method is a shortcut for
createExpression(O_Partition, operands)
.See: O_Partition See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
partition
(T0 array)¶ Creates a partition expression.
This method is a shortcut for
createExpression(O_Partition, array)
.See: O_Partition See: createExpression Since: 10.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
disjoint
(TN... operands)¶ Creates a disjoint expression.
This method is a shortcut for
createExpression(O_Disjoint, operands)
.See: O_Disjoint See: createExpression Since: 5.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
disjoint
(T0 array)¶ Creates a disjoint expression.
This method is a shortcut for
createExpression(O_Disjoint, array)
.See: O_Disjoint See: createExpression Since: 10.5
 template <typename… TN>

LSExpression
localsolver::LSModel
::
cover
(TN... operands)¶ Creates a cover expression.
This method is a shortcut for
createExpression(O_Cover, operands)
.See: O_Cover See: createExpression Since: 10.5
 template <typename T0>

LSExpression
localsolver::LSModel
::
cover
(T0 array)¶ Creates a cover expression.
This method is a shortcut for
createExpression(O_Cover, array)
.See: O_Cover See: createExpression Since: 10.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
find
(T0 expr0, T1 expr1)¶ Creates a find expression.
This method is a shortcut for
createExpression(O_Find, expr0, expr1)
.See: O_Find See: createExpression Since: 10.5
 template <typename T>

LSExpression
localsolver::LSModel
::
externalFunction
(LSExternalFunction<T> *func)¶ Creates an external function expression.
This method is a shortcut for
createExternalFunction(func)
.See: O_ExternalFunction See: createExternalFunction Since: 9.5
 template <typename T>

LSExpression
localsolver::LSModel
::
blackBoxFunction
(LSBlackBoxFunction<T> *func)¶ Creates a blackbox function expression.
This method is a shortcut for
createBlackBoxFunction(func)
.See: O_BlackBoxFunction See: createBlackBoxFunction Since: 9.5
 template <typename T, typename … ARGS>

LSExpression
localsolver::LSModel
::
externalFunction
(const std::function<T(ARGS...)> &func)¶ Creates an external function expression.
This method is a shortcut for
createExternalFunction(func)
.See: O_ExternalFunction See: createExternalFunction Since: 9.5
 template <typename T>

LSExpression
localsolver::LSModel
::
externalFunction
(const std::function<T(const LSExternalArgumentValues&)> &func)¶ Creates an external function expression.
This method is a shortcut for
createExternalFunction(func)
.See: O_ExternalFunction See: createExternalFunction Since: 9.5
 template <typename T, typename … ARGS>

LSExpression
localsolver::LSModel
::
blackBoxFunction
(const std::function<T(ARGS...)> &func)¶ Creates a blackbox function expression.
This method is a shortcut for
createBlackBoxFunction(func)
.See: O_BlackBoxFunction See: createBlackBoxFunction Since: 9.5
 template <typename T>

LSExpression
localsolver::LSModel
::
blackBoxFunction
(const std::function<T(const LSBlackBoxArgumentValues&)> &func)¶ Creates a blackbox function expression.
This method is a shortcut for
createBlackBoxFunction(func)
.See: O_BlackBoxFunction See: createBlackBoxFunction Since: 9.5
 template <typename T>

LSExpression
localsolver::LSModel
::
lambdaFunction
(T functor)¶ Creates a lambda function expression.
This method is a shortcut for
createLambdaFunction(functor)
.See: O_LambdaFunction See: createLambdaFunction Since: 9.5
 template <typename T0, typename T1>

LSExpression
localsolver::LSModel
::
range
(T0 expr0, T1 expr1)¶ Creates a range expression, where expr0 is the lower bound (inclusive) and expr1 is the upper bound (exclusive).
This method is a shortcut for
createExpression(O_Range, expr0, expr1)
.See: O_Range See: createExpression Since: 7.0

int
localsolver::LSModel
::
getNbExpressions
()¶
const Gets the number of expressions added to this model.
Return: Number of expressions.

LSExpression
localsolver::LSModel
::
getExpression
(int exprIndex)¶
const Gets the expression with the given index in this model.
Return: Expression with the given index. Parameters: exprIndex  Index of the expression.

LSExpression
localsolver::LSModel
::
getExpression
(const std::string &name)¶
const Gets the expression with the given name.
Throws an exception if no expression with the given name exists.
Return: Expression with the given name. Parameters: name  Name.

int
localsolver::LSModel
::
getNbDecisions
()¶
const Gets the number of decisions in the model.
This corresponds to the number of decision variables declared in the model.
Return: Number of decisions.

LSExpression
localsolver::LSModel
::
getDecision
(int decisionIndex)¶
const Gets the decision with the given index.
Return: Decision with the given index. Parameters: decisionIndex  Index of the decision.

void
localsolver::LSModel
::
addConstraint
(const LSExpression &expr)¶ Adds the given expression to the list of constraints.
It means that the value of this expression must be constrained to be equal to 1 in any solution found by the solver. Hence, only boolean expressions (that is, expressions whose value is boolean) can be constrained. Only allowed in state S_Modeling. If the expression is already a constraint, this method does nothing and returns immediately.
Parameters: expr  Expression.

void
localsolver::LSModel
::
constraint
(const LSExpression &expr)¶ Shortcut for
addConstraint(expr)
.See: addConstraint Since: 5.5 Parameters: expr  Expression.

void
localsolver::LSModel
::
removeConstraint
(const LSExpression &expr)¶ Removes the given expression from the list of constraints.
If the expression was not constrained, this method does nothing and returns immediately. Only allowed in state S_Modeling.
Since: 5.0 Parameters: expr  Expression.

void
localsolver::LSModel
::
removeConstraint
(int constraintIndex)¶ Removes the constraint at the given position in the list of constraints.
Only allowed in state S_Modeling.
Since: 5.0 Parameters: constraintIndex  position of the constraint to remove.

int
localsolver::LSModel
::
getNbConstraints
()¶
const Gets the number of constraints added to this model.
Return: Number of constraints.

LSExpression
localsolver::LSModel
::
getConstraint
(int constraintIndex)¶
const Gets the constraint with the given index.
Return: Constraint with the given index. Parameters: constraintIndex  Index of the constraint.

void
localsolver::LSModel
::
addObjective
(const LSExpression &expr, LSObjectiveDirection direction)¶ Adds the given expression to the list of objectives to optimize.
The same expression can be added more than once. Only allowed in state S_Modeling. Note that the objectives will be optimized in the order in which they have been added to the model. It is useful for lexicographic multiobjective optimization, and more particularly for goal programming.
Parameters:  expr  Expression.
 direction  Optimization direction of this objective.

void
localsolver::LSModel
::
minimize
(const LSExpression &expr)¶ Shortcut for
addObjective(expr, OD_Minimize)
.See: addObjective Since: 5.5 Parameters: expr  Expression.

void
localsolver::LSModel
::
maximize
(const LSExpression &expr)¶ Shortcut for
addObjective(expr, OD_Maximize)
.See: addObjective Since: 5.5 Parameters: expr  Expression.

void
localsolver::LSModel
::
removeObjective
(int objectiveIndex)¶
const Removes the objective at the given position in the list of objectives.
Note that the objectives created after the removed one have their index decreased by 1. Phases are not modified when an objective is removed. It is the user’s responsibility to change the objective index of each phase to keep it coherent (with LSPhase#setOptimizedObjective), or to disable it (with LSPhase#setEnabled). Only allowed in state S_Modeling.
Since: 5.0 Parameters: objectiveIndex  position of the objective to remove.

int
localsolver::LSModel
::
getNbObjectives
()¶
const Gets the number of objectives added to this model.
Return: Number of objectives.

LSExpression
localsolver::LSModel
::
getObjective
(int objectiveIndex)¶
const Gets the objective with the given index.
Return: Objective with the given index. Parameters: objectiveIndex  Index of the objective.

LSObjectiveDirection
localsolver::LSModel
::
getObjectiveDirection
(int objectiveIndex)¶
const Gets the direction of the objective with the given index.
Return: Objective direction. Parameters: objectiveIndex  Index of the objective.

int
localsolver::LSModel
::
getNbOperands
()¶
const Gets the number of operands in the model.
This corresponds to the number of operands for all expressions declared in the model. It is an analog of the number of non zeros in matrix model encountered in mathematical programming: it gives an hint about the size and the density of your model.
Return: Number of operands.

void
localsolver::LSModel
::
close
()¶ Closes the model.
Only allowed in state S_Modeling. When this method is called, the solver is placed in state S_Stopped.
Once the model is closed, no expressions, constraints or objectives can be added or removed unless the model is reopened. The model must be closed before starting its resolution.

void
localsolver::LSModel
::
open
()¶ Reopens the model.
Only allowed in state S_Stopped. When this method is called, the solver is placed in state S_Modeling.
In this state, the model can be modified: it is possible to add new expressions, constraints or objectives, modify expression operands, and remove existing constraints and objectives. However, existing expressions cannot be deleted.