LSExpression Class¶
-
class LSExpression¶
Mathematical modeling expression. Expressions are used to build the mathematical optimization model associated to LocalSolver. An expression is composed of an operator (which corresponds to its type) and its operands (which are other expressions of the model).
- See
- See
Summary¶
Gets the operator of this expression. |
|
Gets the index of this expression in the model. |
|
Returns true if this expression is typed as constant in the model, false otherwise. |
|
Returns true if this expression is typed as decision in the model, false otherwise. |
|
Returns true if this expression is tagged as constraint in the model, false otherwise. |
|
Returns true if this expression is tagged as objective in the model, false otherwise. |
|
Returns true if this expression is a double, false otherwise. |
|
Returns true if this expression is an integer, false otherwise. |
|
Returns true if this expression is a boolean (ie 0 or 1), false otherwise. |
|
Returns true if this expression is an interval, false otherwise. |
|
Returns true if this expression is an array, false otherwise. |
|
Returns true if this expression is a collection (list or set), false otherwise. |
|
Returns true if this expression is a function, false otherwise. |
|
Adds the given operand to this expression. |
|
Add the given constant operand to this expression. |
|
Add the given constant operand to this expression. |
|
Add the given constant operand to this expression. |
|
Add the given operands to this expression. |
|
Add the given operands to this expression. |
|
Gets the operand with the given index. |
|
Replaces the operand of the given index. |
|
Replaces the operand of the given index. |
|
Replaces the operand of the given index. |
|
Replaces the operand of the given index. |
|
Gets the number of operands of this expression. |
|
Sets the value of this expression in the current solution found by the solver. |
|
Sets the value of this expression in the current solution found by the solver. |
|
Sets the value of this expression in the current solution found by the solver. |
|
Sets the value of this expression in the current solution found by the solver. |
|
Sets the value of this expression in the current solution found by the solver. |
|
Sets the value of this expression in the current solution found by the solver. |
|
Gets the value of this expression in the best solution found by the solver. |
|
Gets the value of this expression in the best solution found by the solver. |
|
Gets the value of this expression in the best solution found by the solver. |
|
Gets the value of this expression in the best solution found by the solver. |
|
Gets the value of this expression in the best solution found by the solver. |
|
Gets the value of this expression in the best solution found by the solver. |
|
Gets the external function context of this expression. |
|
Returns true if the given expression is violated in the best solution found by the solver. |
|
Returns true if the given expression has an undefined value in the best solution found by the solver. |
|
Sets the name of this expression. |
|
Returns true if this expression has a name, and false otherwise. |
|
Gets the name of this expression or the empty string if no name has been set. |
|
Returns a string representation of this expression. |
Creates a new O_Sum expression. |
|
Creates a new O_Sub expression. |
|
Creates a new O_Prod expression. |
|
Creates a new O_Mod expression. |
|
Creates a new O_Div expression. |
|
Creates a new O_Not expression. |
|
Creates a new O_And expression. |
|
Creates a new O_Or expression. |
|
Creates a new O_Xor expression. |
|
Creates a new O_Eq expression. |
|
Creates a new O_Neq expression. |
|
Creates a new O_Geq expression. |
|
Creates a new O_Leq expression. |
|
Creates a new O_Gt expression. |
|
Creates a new O_Lt expression. |
|
Creates a new O_At expression. |
|
Creates a O_Call expression with the given operands as arguments. |
Functions¶
-
LSOperator LSExpression::getOperator() const¶
Gets the operator of this expression.
- Returns
Operator.
-
int LSExpression::getIndex() const¶
Gets the index of this expression in the model.
- Returns
Index in the model.
-
bool LSExpression::isConstant() const¶
Returns true if this expression is typed as constant in the model, false otherwise.
- Returns
True if typed as constant.
-
bool LSExpression::isDecision() const¶
Returns true if this expression is typed as decision in the model, false otherwise.
- Returns
True if typed as decision.
-
bool LSExpression::isConstraint() const¶
Returns true if this expression is tagged as constraint in the model, false otherwise.
- Returns
True if tagged as constraint.
-
bool LSExpression::isObjective() const¶
Returns true if this expression is tagged as objective in the model, false otherwise.
- Returns
True if tagged as objective.
-
bool LSExpression::isDouble() const¶
Returns true if this expression is a double, false otherwise. Only allowed in states
S_PausedorS_Stopped.- Returns
True if the expression is a double.
- Since
3.0
-
bool LSExpression::isInt() const¶
Returns true if this expression is an integer, false otherwise. Only allowed in states
S_PausedorS_Stopped. Note that a boolean is also an integer.- Returns
True if the expression is an integer.
- Since
3.0
-
bool LSExpression::isBool() const¶
Returns true if this expression is a boolean (ie 0 or 1), false otherwise. Only allowed in states
S_PausedorS_Stopped.- Returns
True if the expression is a boolean.
- Since
3.0
-
bool LSExpression::isInterval() const¶
Returns true if this expression is an interval, false otherwise. Only allowed in states
S_PausedorS_Stopped.- Returns
True if the expression is an interval.
- Since
12.0
-
bool LSExpression::isArray() const¶
Returns true if this expression is an array, false otherwise. Only allowed in states
S_PausedorS_Stopped.- Returns
True if the expression is an array.
- Since
3.1
-
bool LSExpression::isCollection() const¶
Returns true if this expression is a collection (list or set), false otherwise. Only allowed in states
S_PausedorS_Stopped.- Returns
True if the expression is a collection.
- Since
5.5
-
bool LSExpression::isFunction() const¶
Returns true if this expression is a function, false otherwise. Only allowed in states
S_PausedorS_Stopped.- Returns
True if the expression is a function.
- Since
6.0
-
void LSExpression::addOperand(const LSExpression &operand)¶
Adds the given operand to this expression. Only allowed in state
S_Modeling.- Parameters
operand – Operand to add.
-
void LSExpression::addOperand(int constant)¶
Add the given constant operand to this expression. Only allowed in state
S_Modeling.- Parameters
constant – Constant operand to add.
-
void LSExpression::addOperand(lsint constant)¶
Add the given constant operand to this expression. Only allowed in state
S_Modeling.- Parameters
constant – Constant operand to add.
-
void LSExpression::addOperand(lsdouble constant)¶
Add the given constant operand to this expression. Only allowed in state
S_Modeling.- Parameters
constant – Constant operand to add.
- Since
3.0
-
template<typename ...TN>
void LSExpression::addOperands(TN... operands)¶ Add the given operands to this expression. 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 arguments 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.
operands – operands.
-
template<typename T0, typename T1>
void LSExpression::addOperands(T0 begin, T1 end)¶ Add the given operands to this expression. Only allowed in state
S_Modeling.- Parameters
begin – iterator to the initial position of the operands to add.
end – iterator to the final position of the operands to add.
- Since
5.5
-
LSExpression LSExpression::getOperand(int operandIndex) const¶
Gets the operand with the given index.
- Parameters
operandIndex – Index of the operand.
- Returns
Operand.
-
void LSExpression::setOperand(int operandIndex, const LSExpression &operand)¶
Replaces the operand of the given index.
- Parameters
operandIndex – Index of the operand to change
operand – New operand
-
void LSExpression::setOperand(int operandIndex, int constant)¶
Replaces the operand of the given index.
- Parameters
operandIndex – Index of the operand to change.
constant – New constant operand.
-
void LSExpression::setOperand(int operandIndex, lsint constant)¶
Replaces the operand of the given index.
- Parameters
operandIndex – Index of the operand to change.
constant – New constant operand.
-
void LSExpression::setOperand(int operandIndex, lsdouble constant)¶
Replaces the operand of the given index.
- Parameters
operandIndex – Index of the operand to change.
constant – New constant operand.
- Since
3.0
-
int LSExpression::getNbOperands() const¶
Gets the number of operands of this expression.
- Returns
Number of operands.
-
void LSExpression::setValue(lsint value)¶
Sets the value of this expression in the current solution found by the solver. Only allowed for decisions. Only allowed in state
S_Stopped. Only allowed if this expression is an integer or a boolean. If the solver was not launched, this value will be used as an initial value for the decision. This method is a shortcut forLSSolution::setValue()and has the same behavior assetIntValue().- Parameters
value – Value assigned to this expression.
- See
- See
- See
-
void LSExpression::setValue(lsdouble value)¶
Sets the value of this expression in the current solution found by the solver. Only allowed for decisions. Only allowed in state
S_Stopped. Only allowed if this expression is an integer or a boolean. If the solver was not launched, this value will be used as an initial value for the decision. This method is a shortcut forLSSolution::setDoubleValue()and has the same behavior assetDoubleValue().- Parameters
value – Value assigned to this expression.
- See
- See
-
void LSExpression::setValue(LSInterval value)¶
Sets the value of this expression in the current solution found by the solver. Only allowed for decisions. Only allowed in state
S_Stopped. Only allowed if this expression is an interval If the solver was not launched, this value will be used as an initial value for the decision. This method is a shortcut forLSSolution::setIntervalValue()and has the same behavior assetIntervalValue().- Parameters
value – Value assigned to this expression.
- See
- See
-
void LSExpression::setIntValue(lsint value)¶
Sets the value of this expression in the current solution found by the solver. Only allowed for decisions. Only allowed in state
S_Stopped. Only allowed if this expression is an integer or a boolean. If the solver was not launched, this value will be used as an initial value for the decision. This method is a shortcut forLSSolution::setIntValue().- Parameters
value – Value assigned to this expression.
- See
- See
- See
- Since
3.0
-
void LSExpression::setDoubleValue(lsdouble value)¶
Sets the value of this expression in the current solution found by the solver. Only allowed for decisions. Only allowed in state
S_Stopped. Only allowed if this expression is a double. If the solver was not launched, this value will be used as an initial value for the decision. This method is a shortcut forLSSolution::setDoubleValue().- Parameters
value – Value assigned to this expression.
- See
- See
- Since
3.0
-
void LSExpression::setIntervalValue(LSInterval value)¶
Sets the value of this expression in the current solution found by the solver. Only allowed for decisions. Only allowed in state
S_Stopped. Only allowed if this expression is an interval. If the solver was not launched, this value will be used as an initial value for the decision. This method is a shortcut forLSSolution::setIntervalValue().- Parameters
value – Value assigned to this expression.
- See
- See
- Since
12.0
-
lsint LSExpression::getValue() const¶
Gets the value of this expression in the best solution found by the solver. Only allowed in states
S_PausedorS_Stopped. Only allowed if this expression is an integer or a boolean. This method is a shortcut forLSSolution::getValue().- Returns
Value in the best solution.
- See
- See
- See
-
lsint LSExpression::getIntValue() const¶
Gets the value of this expression in the best solution found by the solver. Only allowed in states
S_PausedorS_Stopped. Only allowed if this expression is an integer or a boolean. This method is a shortcut forLSSolution::getIntValue().- Returns
Value in the best solution.
- See
- See
- See
- Since
3.0
-
lsdouble LSExpression::getDoubleValue() const¶
Gets the value of this expression in the best solution found by the solver. Only allowed in states
S_PausedorS_Stopped. Only allowed if this expression is a double. This method is a shortcut forLSSolution::getDoubleValue().- Returns
Value in the best solution.
- See
- See
- Since
3.0
-
LSInterval LSExpression::getIntervalValue() const¶
Gets the value of this expression in the best solution found by the solver. Only allowed in states
S_PausedorS_Stopped. Only allowed if this expression is an interval. This method is a shortcut forLSSolution::getIntervalValue().- Returns
Value in the best solution.
- See
- See
- Since
12.0
-
LSCollection LSExpression::getCollectionValue() const¶
Gets the value of this expression in the best solution found by the solver. Only allowed in states
S_PausedorS_Stopped. Only allowed if this expression is a collection (list or set). This method is a shortcut forLSSolution::getCollectionValue().- Returns
Value in the best solution.
- See
- See
- Since
5.5
-
LSArray LSExpression::getArrayValue() const¶
Gets the value of this expression in the best solution found by the solver. Only allowed in states
S_PausedorS_Stopped. Only allowed if this expression is an array. This method is a shortcut forLSSolution::getArrayValue().- Returns
Value in the best solution.
- See
- See
- Since
7.5
-
LSExternalContext LSExpression::getExternalContext() const¶
Gets the external function context of this expression. Only allowed if this expression is an external function.
- Returns
Context of the external function.
- See
- Since
9.5
-
bool LSExpression::isViolated() const¶
Returns true if the given expression is violated in the best solution found by the solver. An expression can be violated in 3 cases:
it is a constraint and its value is 0
it is a double objective and its value is NaN (Not a Number)
it is an integer or boolean with no valid value (arithmetic or out of bounds exception).
Note that only constraints and objectives can be violated. Other expression can have undefined value provided that it does not impact a constraint or objective.
Only allowed in states
S_PausedorS_Stopped. This method is a shortcut forLSSolution::isViolated().- Returns
True if this expression is violated in the best solution.
- Since
5.5
- See
-
bool LSExpression::isUndefined() const¶
Returns true if the given expression has an undefined value in the best solution found by the solver. An expression can be undefined in 4 cases:
It is a double and its value is NaN (Not a Number).
It is an integer or boolean with no valid value (arithmetic or out of bounds exception).
It is an interval with at least one undefined bound.
It is the result of any ill-defined operation (at with out of bounds index or operations on undefined values for instance).
Only allowed in states
S_PausedorS_Stopped. This method is a shortcut forLSSolution::isUndefined().- Returns
True if this expression has an undefined value in the best solution.
- Since
7.0
-
void LSExpression::setName(const std::string &name)¶
Sets the name of this expression. Only allowed in state
S_Modeling. The name cannot be empty. Two operators of the model cannot share the same name. Useful for debugging or logging purposes.- Parameters
name – Name.
-
bool LSExpression::isNamed() const¶
Returns true if this expression has a name, and false otherwise.
- Returns
True if named.
-
std::string LSExpression::getName() const¶
Gets the name of this expression or the empty string if no name has been set.
- Returns
Name.
-
std::string LSExpression::toString() const¶
Returns a string representation of this expression. This representation provides the index of the expression, its type, and its name (if any). Useful for debugging or logging purposes.
- Returns
String representation.
Overloaded operators¶
-
template<typename T>
LSExpression LSExpression::operator+(T operand)¶ Creates a new
O_Sumexpression. It is a shortcut formodel.createExpression(O_Sum, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Sumexpression.
-
template<typename T>
LSExpression LSExpression::operator-(T operand)¶ Creates a new
O_Subexpression. It is a shortcut formodel.createExpression(O_Sub, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Subexpression.
-
template<typename T>
LSExpression LSExpression::operator*(T operand)¶ Creates a new
O_Prodexpression. It is a shortcut formodel.createExpression(O_Prod, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Prodexpression.
-
template<typename T>
LSExpression LSExpression::operator%(T operand)¶ Creates a new
O_Modexpression. It is a shortcut formodel.createExpression(O_Mod, this, operand).- Parameters
operand – Operand. Can be an LSExpression or an integer.
- Returns
A new
O_Modexpression.
-
template<typename T>
LSExpression LSExpression::operator/(T operand)¶ Creates a new
O_Divexpression. It is a shortcut formodel.createExpression(O_Div, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Divexpression.
-
LSExpression LSExpression::operator!()¶
Creates a new
O_Notexpression. It is a shortcut formodel.createExpression(O_Not, this).- Returns
A new
O_Notexpression.
-
template<typename T>
LSExpression LSExpression::operator&&(T operand)¶ Creates a new
O_Andexpression. It is a shortcut formodel.createExpression(O_And, this, operand).- Parameters
operand – Operand. Can be an LSExpression or a boolean.
- Returns
A new
O_Andexpression.
-
template<typename T>
LSExpression LSExpression::operator||(T operand)¶ Creates a new
O_Orexpression. It is a shortcut formodel.createExpression(O_Or, this, operand).- Parameters
operand – Operand. Can be an LSExpression or a boolean.
- Returns
A new
O_Orexpression.
-
template<typename T>
LSExpression LSExpression::operator^(T operand)¶ Creates a new
O_Xorexpression. It is a shortcut formodel.createExpression(O_Xor, this, operand).- Parameters
operand – Operand. Can be an LSExpression or a boolean.
- Returns
A new
O_Xorexpression.
-
template<typename T>
LSExpression LSExpression::operator==(T operand)¶ Creates a new
O_Eqexpression. It is a shortcut formodel.createExpression(O_Eq, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Eqexpression.
-
template<typename T>
LSExpression LSExpression::operator!=(T operand)¶ Creates a new
O_Neqexpression. It is a shortcut formodel.createExpression(O_Neq, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Neqexpression.
-
template<typename T>
LSExpression LSExpression::operator>=(T operand)¶ Creates a new
O_Geqexpression. It is a shortcut formodel.createExpression(O_Geq, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Geqexpression.
-
template<typename T>
LSExpression LSExpression::operator<=(T operand)¶ Creates a new
O_Leqexpression. It is a shortcut formodel.createExpression(O_Leq, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Leqexpression.
-
template<typename T>
LSExpression LSExpression::operator>(T operand)¶ Creates a new
O_Gtexpression. It is a shortcut formodel.createExpression(O_Gt, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Gtexpression.
-
template<typename T>
LSExpression LSExpression::operator<(T operand)¶ Creates a new
O_Ltexpression. It is a shortcut formodel.createExpression(O_Lt, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Ltexpression.
-
template<typename T>
LSExpression LSExpression::operator[](T operand)¶ Creates a new
O_Atexpression. It is a shortcut formodel.createExpression(O_At, this, operand).- Parameters
operand – Operand. Can be an LSExpression, an integer or a double.
- Returns
A new
O_Atexpression.
-
template<typename ...TN>
LSExpression LSExpression::operator()(TN... operands)¶ Creates a
O_Callexpression with the given operands as arguments. It is a shortcut formodel.createExpression(O_Call, this, operands).- Parameters
TN – types of the operands to add. Types allowed: constant types, LSExpression or iterators.
operands – operands.