LSModel Class¶
-
class
LSModel
¶ 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. |
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. |
createExternalFunction |
Creates a double external function. |
createExternalFunction |
Creates an integer array external function. |
createExternalFunction |
Creates a double array external function. |
createExternalFunction |
Creates an external function. |
createExternalFunction |
Creates an external function. |
createLambdaFunction |
Creates a lambda function. |
boolVar |
Creates a boolean decision. |
floatVar |
Creates a float decision. |
intVar |
Creates an integer decision. |
intervalVar |
Creates an interval decision included in [minStart, maxEnd). |
start |
Creates a start expression. |
end |
Creates an end expression. |
length |
Creates a length expression. |
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 an AT expression for N-dimensional 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. |
distinct |
Creates a distinct expression. |
distinct |
Creates a distinct expression. |
intersection |
Creates an intersection expression. |
contains |
Creates a contains expression. |
partition |
Creates a partition expression. |
partition |
Creates a partition expression. |
disjoint |
Creates a disjoint expression. |
disjoint |
Creates a disjoint expression. |
cover |
Creates a cover expression. |
cover |
Creates a cover expression. |
find |
Creates a find expression. |
sort |
Creates a sort expression. |
sort |
Creates a sort expression. |
externalFunction |
Creates an external function expression. |
externalFunction |
Creates an external function expression. |
externalFunction |
Creates an external 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. |
getExpression |
Gets the expression with the given name. |
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. |
removeConstraint |
Removes the constraint at the given position in 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
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.Parameters: value – Value of the constant. Returns: Created constant expression.
-
LSExpression
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.Parameters: value – Value of the constant Returns: Created constant expression.
-
template<typename ...
TN
>
LSExpressioncreateExpression
(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.Parameters: - TN – types of the operands to add. Types allowed: constant types, LSExpression or iterators.
- op – Type of expression to create.
- operands – Operands.
Returns: Created expression.
-
LSExpression
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 theLSExternalArgumentValues
.Once you have instantiated it, you have to use
call()
to call it in your model.Parameters: func – External function to call. Returns: The expression associated to the function. See: LSExternalFunction
See: O_ExternalFunction
Since: 9.5
-
LSExpression
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 theLSExternalArgumentValues
.Once you have instantiated it, you have to use
call()
to call it in your model.Parameters: func – External function to call. Returns: The expression associated to the function. See: LSExternalFunction
See: O_ExternalFunction
Since: 9.5
-
LSExpression
LSModel
::
createExternalFunction
(LSArrayExternalFunction<lsint> *func)¶ Creates an integer array external function. The argument must be derived from
LSArrayExternalFunction
. When the external function is called, the argument values will be made accessible to your function through theLSExternalArgumentValues
.Once you have instantiated it, you have to use
call()
to call it in your model.Parameters: func – External function to call. Returns: The expression associated to the function. See: LSExternalFunction
See: O_ExternalFunction
Since: 11.0
-
LSExpression
LSModel
::
createExternalFunction
(LSArrayExternalFunction<lsdouble> *func)¶ Creates a double array external function. The argument must be derived from
LSArrayExternalFunction
. When the external function is called, the argument values will be made accessible to your function through theLSExternalArgumentValues
.Once you have instantiated it, you have to use
call()
to call it in your model.Parameters: func – External function to call. Returns: The expression associated to the function. See: LSExternalFunction
See: O_ExternalFunction
Since: 11.0
-
template<typename
T
, typename ...ARGS
>
LSExpressionLSModel
::
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.Parameters: func – std::function to call. It must only accept lsint and lsdouble arguments. Returns: The expression associated to the function. See: LSExternalFunction
See: O_ExternalFunction
Since: 9.5
-
template<typename
T
>
LSExpressionLSModel
::
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.Parameters: func – External function to call. Returns: The expression associated to the function. See: LSExternalFunction
See: O_ExternalFunction
Since: 9.5
-
template<typename
A
>
LSExpressionLSModel
::
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 functionO_LambdaFunction
.Parameters: functor – Functor called to create the function. Returns: The expression associated to the function. Since: 9.5 - The arguments of the function
(which are also LSExpressions of type
-
LSExpression
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: LSModel::createExpression()
Since: 5.5
-
LSExpression
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)
.Parameters: - lb – Lower bound of the decision variable.
- ub – Upper bound of the decision variable.
See: See: LSModel::createExpression()
Since: 5.5
-
LSExpression
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)
.Parameters: - lb – Lower bound of the decision variable.
- ub – Upper bound of the decision variable.
See: See: LSModel::createExpression()
Since: 5.5
-
LSExpression
LSModel
::
intervalVar
(lsint minStart, lsint maxEnd)¶ Creates an interval decision included in [minStart, maxEnd). Start is inclusive and end is exclusive. This method is a shortcut for
createExpression(O_Interval, minStart, maxEnd)
.Parameters: - minStart – Min start of the decision variable.
- maxEnd – Max end of the decision variable.
See: See: LSModel::createExpression()
Since: 12.0
-
template<typename
T0
>
LSExpressionLSModel
::
start
(T0 expr0)¶ Creates a start expression. This method is a shortcut for
createExpression(O_Start, expr0)
.See: O_Start
See: LSModel::createExpression()
Since: 12.0
-
template<typename
T0
>
LSExpressionLSModel
::
end
(T0 expr0)¶ Creates an end expression. This method is a shortcut for
createExpression(O_End, expr0)
.See: O_End
See: LSModel::createExpression()
Since: 12.0
-
template<typename
T0
>
LSExpressionLSModel
::
length
(T0 expr0)¶ Creates a length expression. This method is a shortcut for
createExpression(O_Length, expr0)
.See: O_Length
See: LSModel::createExpression()
Since: 12.0
-
template<typename ...
TN
>
LSExpressionLSModel
::
sum
(TN... operands)¶ Creates a sum expression. This method is a shortcut for
createExpression(O_Sum, operands)
.See: O_Sum
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
sub
(T0 expr0, T1 expr1)¶ Creates a substraction expression. This method is a shortcut for
createExpression(O_Sub, expr0, expr1)
.See: O_Sub
See: LSModel::createExpression()
Since: 5.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
call
(TN... operands)¶ Creates a call expression. The first operand must be an LSExpression of type
O_LambdaFunction
orO_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: LSModel::createExpression()
Since: 6.0
-
template<typename ...
TN
>
LSExpressionLSModel
::
prod
(TN... operands)¶ Creates a product expression. This method is a shortcut for
createExpression(O_Prod, operands)
.See: O_Prod
See: LSModel::createExpression()
Since: 5.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
max
(TN... operands)¶ Creates a maximum expression. This method is a shortcut for
createExpression(O_Max, operands)
.See: O_Max
See: LSModel::createExpression()
Since: 5.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
min
(TN... operands)¶ Creates a minimum expression. This method is a shortcut for
createExpression(O_Min, operands)
.See: O_Min
See: LSModel::createExpression()
Since: 5.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
or_
(TN... operands)¶ Creates a OR expression. This method is a shortcut for
createExpression(O_Or, operands)
.See: O_Or
See: LSModel::createExpression()
Since: 5.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
and_
(TN... operands)¶ Creates an AND expression. This method is a shortcut for
createExpression(O_And, operands)
.See: O_And
See: LSModel::createExpression()
Since: 5.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
xor_
(TN... operands)¶ Creates a XOR expression. This method is a shortcut for
createExpression(O_Xor, operands)
.See: O_Xor
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSModel::LSExpressionnot_
(T0 expr0)¶ Creates a NOT expression. This method is a shortcut for
createExpression(O_Not, expr0)
.See: O_Not
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
eq
(T0 expr0, T1 expr1)¶ Creates an equality expression. This method is a shortcut for
createExpression(O_Eq, expr0, expr1)
.See: O_Eq
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
neq
(T0 expr0, T1 expr1)¶ Creates a disequality expression. This method is a shortcut for
createExpression(O_Neq, expr0, expr1)
.See: O_Neq
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
, typenameT2
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
abs
(T0 expr0)¶ Creates an absolute value expression. This method is a shortcut for
createExpression(O_Abs, expr0)
.See: O_Abs
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
dist
(T0 expr0, T1 expr1)¶ Creates a distance expression. This method is a shortcut for
createExpression(O_Dist, expr0, expr1)
.See: O_Dist
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
div
(T0 expr0, T1 expr1)¶ Creates a division expression. This method is a shortcut for
createExpression(O_Div, expr0, expr1)
.See: O_Div
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
mod
(T0 expr0, T1 expr1)¶ Creates a modulo expression. This method is a shortcut for
createExpression(O_Mod, expr0, expr1)
.See: O_Mod
See: LSModel::createExpression()
Since: 5.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
array
(TN... operands)¶ Creates an array expression. This method is a shortcut for
createExpression(O_Array, operands)
.See: O_Array
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typename ...TN
>
LSExpressionLSModel
::
at
(T0 arrayExpr, TN... operands)¶ Creates an AT expression for N-dimensional array. This method is a shortcut for
createExpression(O_At, arrayExpr, operands)
.See: O_At
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
ceil
(T0 expr0)¶ Creates a ceil expression. This method is a shortcut for
createExpression(O_Ceil, expr0)
.See: O_Ceil
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
floor
(T0 expr0)¶ Creates a floor expression. This method is a shortcut for
createExpression(O_Floor, expr0)
.See: O_Floor
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
round
(T0 expr0)¶ Creates a rounding expression. This method is a shortcut for
createExpression(O_Round, expr0)
.See: O_Round
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
sqrt
(T0 expr0)¶ Creates a square root expression. This method is a shortcut for
createExpression(O_Sqrt, expr0)
.See: O_Sqrt
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
log
(T0 expr0)¶ Creates a log expression. This method is a shortcut for
createExpression(O_Log, expr0)
.See: O_Log
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
exp
(T0 expr0)¶ Creates an exponential expression. This method is a shortcut for
createExpression(O_Exp, expr0)
.See: O_Exp
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
pow
(T0 expr0, T1 expr1)¶ Creates a power expression. This method is a shortcut for
createExpression(O_Pow, expr0, expr1)
.See: O_Pow
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
cos
(T0 expr0)¶ Creates a cosine expression. This method is a shortcut for
createExpression(O_Cos, expr0)
.See: O_Cos
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
sin
(T0 expr0)¶ Creates a sine expression. This method is a shortcut for
createExpression(O_Sin, expr0)
.See: O_Sin
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
tan
(T0 expr0)¶ Creates a tangent expression. This method is a shortcut for
createExpression(O_Tan, expr0)
.See: O_Tan
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
, typenameT2
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 5.5
-
LSExpression
LSModel
::
listVar
(lsint n)¶ Creates a list decision with the given length. A list is a ordered collection of integers within a domain [0, n-1]. This method is a shortcut for
createExpression(O_List, n)
.Parameters: n – Collection size. See: O_List
See: LSModel::createExpression()
Since: 5.5
-
LSExpression
LSModel
::
setVar
(lsint n)¶ Creates a set decision with the given length. A set is a unordered collection of integers within a domain [0, n-1]. This method is a shortcut for
createExpression(O_Set, n)
.Parameters: n – Collection size. See: O_Set
See: LSModel::createExpression()
Since: 8.0
-
template<typename
T0
>
LSExpressionLSModel
::
count
(T0 expr0)¶ Creates a count expression. This method is a shortcut for
createExpression(O_Count, expr0)
.See: O_Count
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
indexOf
(T0 expr0, T1 expr1)¶ Creates an indexOf expression. This method is a shortcut for
createExpression(O_IndexOf, expr0, expr1)
.See: O_IndexOf
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
distinct
(T0 array)¶ Creates a distinct expression. This method is a shortcut for
createExpression(O_Distinct, array)
.See: O_Distinct
See: LSModel::createExpression()
Since: 12.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
distinct
(T0 it, T1 func)¶ Creates a distinct expression. This method is a shortcut for
createExpression(O_Distinct, it, func)
.See: O_Distinct
See: LSModel::createExpression()
Since: 12.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
intersection
(T0 expr0, T1 expr1)¶ Creates an intersection expression. This method is a shortcut for
createExpression(O_Intersection, expr0, expr1)
.See: O_Intersection
See: LSModel::createExpression()
Since: 12.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
contains
(T0 e1, T1 e2)¶ Creates a contains expression. This method is a shortcut for
createExpression(O_Contains, e1, e2)
.See: O_Contains
See: LSModel::createExpression()
Since: 7.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
partition
(TN... operands)¶ Creates a partition expression. This method is a shortcut for
createExpression(O_Partition, operands)
.See: O_Partition
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
partition
(T0 array)¶ Creates a partition expression. This method is a shortcut for
createExpression(O_Partition, array)
.See: O_Partition
See: LSModel::createExpression()
Since: 10.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
disjoint
(TN... operands)¶ Creates a disjoint expression. This method is a shortcut for
createExpression(O_Disjoint, operands)
.See: O_Disjoint
See: LSModel::createExpression()
Since: 5.5
-
template<typename
T0
>
LSExpressionLSModel
::
disjoint
(T0 array)¶ Creates a disjoint expression. This method is a shortcut for
createExpression(O_Disjoint, array)
.See: O_Disjoint
See: LSModel::createExpression()
Since: 10.5
-
template<typename ...
TN
>
LSExpressionLSModel
::
cover
(TN... operands)¶ Creates a cover expression. This method is a shortcut for
createExpression(O_Cover, operands)
.See: O_Cover
See: LSModel::createExpression()
Since: 10.5
-
template<typename
T0
>
LSExpressionLSModel
::
cover
(T0 array)¶ Creates a cover expression. This method is a shortcut for
createExpression(O_Cover, array)
.See: O_Cover
See: LSModel::createExpression()
Since: 10.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
find
(T0 expr0, T1 expr1)¶ Creates a find expression. This method is a shortcut for
createExpression(O_Find, expr0, expr1)
.See: O_Find
See: LSModel::createExpression()
Since: 10.5
-
template<typename
T0
>
LSExpressionLSModel
::
sort
(T0 expr0)¶ Creates a sort expression. This method is a shortcut for
createExpression(O_Sort, expr0)
.See: O_Sort
See: LSModel::createExpression()
Since: 11.0
-
template<typename
T0
>
LSExpressionLSModel
::
sort
(T0 expr0, expr1)¶ Creates a sort expression. This method is a shortcut for
createExpression(O_Sort, expr0, expr1)
.See: O_Sort
See: LSModel::createExpression()
Since: 12.5
-
template<typename
T
>
LSExpressionLSModel
::
externalFunction
(LSExternalFunction<T> *func)¶ Creates an external function expression. This method is a shortcut for
createExternalFunction(func)
.See: O_ExternalFunction
See: LSModel::createExternalFunction()
Since: 9.5
-
template<typename
T
, typename ...ARGS
>
LSExpressionLSModel
::
externalFunction
(const std::function<T(ARGS...)> &func)¶ Creates an external function expression. This method is a shortcut for
createExternalFunction(func)
.See: O_ExternalFunction
See: LSModel::createExternalFunction()
Since: 9.5
-
template<typename
T
>
LSExpressionLSModel
::
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: LSModel::createExternalFunction()
Since: 9.5
-
template<typename
T
>
LSExpressionLSModel
::
lambdaFunction
(T functor)¶ Creates a lambda function expression. This method is a shortcut for
createLambdaFunction(functor)
.See: O_LambdaFunction
See: LSModel::createLambdaFunction()
Since: 9.5
-
template<typename
T0
, typenameT1
>
LSExpressionLSModel
::
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: LSModel::createExpression()
Since: 7.0
-
int
LSModel
::
getNbExpressions
() const¶ Gets the number of expressions added to this model.
Returns: Number of expressions.
-
LSExpression
LSModel
::
getExpression
(int exprIndex) const¶ Gets the expression with the given index in this model.
Parameters: exprIndex – Index of the expression. Returns: Expression with the given index.
-
LSExpression
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.
Parameters: name – Name. Returns: Expression with the given name.
-
int
LSModel
::
getNbDecisions
() const¶ Gets the number of decisions in the model. This corresponds to the number of decision variables declared in the model.
Returns: Number of decisions.
-
LSExpression
LSModel
::
getDecision
(int decisionIndex) const¶ Gets the decision with the given index.
Parameters: decisionIndex – Index of the decision. Returns: Decision with the given index.
-
void
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.param expr: Expression.
-
void
LSModel
::
constraint
(const LSExpression &expr)¶ Shortcut for
addConstraint(expr)
.See: LSModel::addConstraint()
Parameters: expr – Expression. Since: 5.5
-
void
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
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
LSModel
::
getNbConstraints
() const¶ Gets the number of constraints added to this model.
Returns: Number of constraints.
-
LSExpression
LSModel
::
getConstraint
(int constraintIndex) const¶ Gets the constraint with the given index.
Parameters: constraintIndex – Index of the constraint. Returns: Constraint with the given index.
-
void
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
LSModel
::
minimize
(const LSExpression &expr)¶ Shortcut for
addObjective(expr, OD_Minimize)
.See: LSModel::addObjective()
Parameters: expr – Expression. Since: 5.5
-
void
LSModel
::
maximize
(const LSExpression &expr)¶ Shortcut for
addObjective(expr, OD_Maximize)
.See: LSModel::addObjective()
Parameters: expr – Expression. Since: 5.5
-
void
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 (withLSPhase::setEnabled()
). Only allowed in stateS_Modeling
.Since: 5.0 Parameters: objectiveIndex – position of the objective to remove.
-
LSExpression
LSModel
::
getObjective
(int objectiveIndex) const¶ Gets the objective with the given index.
Parameters: objectiveIndex – Index of the objective. Returns: Objective with the given index.
-
LSObjectiveDirection
LSModel
::
getObjectiveDirection
(int objectiveIndex) const¶ Gets the direction of the objective with the given index.
Parameters: objectiveIndex – Index of the objective. Returns: Objective direction.
-
int
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.
Returns: Number of operands.
-
void
LSModel
::
close
()¶ Closes the model. Only allowed in state
S_Modeling
. When this method is called, the solver is placed in stateS_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
LSModel
::
open
()¶ Reopens the model. Only allowed in state
S_Stopped
. When this method is called, the solver is placed in stateS_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.