# 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 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 black-box 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 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. 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 black-box 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. 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. 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. TN - types of the operands to add. Types allowed: constant types, LSExpression or iterators. 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. LSExternalFunction O_ExternalFunction 9.5 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. LSExternalFunction O_ExternalFunction 9.5 func - External function to call.

LSExpression localsolver::LSModel::createBlackBoxFunction(LSBlackBoxFunction<lsint> *func)

Creates an integer black-box function.

The argument must be derived from LSBlackBoxFunction. When the black-box 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. LSBlackBoxFunction O_BlackBoxFunction 10.0 func - Black-box function to call.

LSExpression localsolver::LSModel::createBlackBoxFunction(LSBlackBoxFunction<lsdouble> *func)

Creates a double black-box function.

The argument must be derived from LSBlackBoxFunction. When the black-box 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. LSBlackBoxFunction O_BlackBoxFunction 9.5 func - Black-box 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. LSExternalFunction O_ExternalFunction 9.5 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. LSExternalFunction O_ExternalFunction 9.5 func - External function to call.

template <typename T, typename … ARGS>
LSExpression localsolver::LSModel::createBlackBoxFunction(const std::function<T(ARGS...)> &func)

Creates a black-box function.

The argument must be a std::function taking any combination of lsint and lsdouble arguments. When the black-box 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. LSBlackBoxFunction O_BlackBoxFunction 9.5 func - Black-box function to call.

template <typename T>
LSExpression localsolver::LSModel::createBlackBoxFunction(const std::function<T(const LSBlackBoxArgumentValues&)> &func)

Creates a black-box function.

The argument must be a std::function taking a LSBlackBoxArgumentValues as its argument. When the black-box 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. LSBlackBoxFunction O_BlackBoxFunction 9.5 func - Black-box 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. 9.5 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 createExpression 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: 5.5 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: 5.5 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 5.5

template <typename T0, typename… TN>
LSExpression localsolver::LSModel::at(T0 arrayExpr, TN... operands)

Creates a “at” expression for N-dimensional array.

This method is a shortcut for createExpression(O_At, arrayExpr, operands).

See: O_At createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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, n-1]. This method is a shortcut for createExpression(O_List, n).

See: O_List createExpression 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, n-1]. This method is a shortcut for createExpression(O_Set, n).

See: O_Set createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExpression 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 createExternalFunction 9.5

template <typename T>
LSExpression localsolver::LSModel::blackBoxFunction(LSBlackBoxFunction<T> *func)

Creates a black-box function expression.

This method is a shortcut for createBlackBoxFunction(func).

See: O_BlackBoxFunction createBlackBoxFunction 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 createExternalFunction 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 createExternalFunction 9.5

template <typename T, typename … ARGS>
LSExpression localsolver::LSModel::blackBoxFunction(const std::function<T(ARGS...)> &func)

Creates a black-box function expression.

This method is a shortcut for createBlackBoxFunction(func).

See: O_BlackBoxFunction createBlackBoxFunction 9.5

template <typename T>
LSExpression localsolver::LSModel::blackBoxFunction(const std::function<T(const LSBlackBoxArgumentValues&)> &func)

Creates a black-box function expression.

This method is a shortcut for createBlackBoxFunction(func).

See: O_BlackBoxFunction createBlackBoxFunction 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 createLambdaFunction 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 createExpression 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. 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. 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. 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 5.5 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 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 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. 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 5.5 expr - Expression.

void localsolver::LSModel::maximize(const LSExpression &expr)

Shortcut for addObjective(expr, OD_Maximize).

See: addObjective 5.5 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 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. 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. 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.

bool localsolver::LSModel::isClosed()
const

Returns true if the model is closed, false otherwise.

Return: True if the model is closed.

std::string localsolver::LSModel::toString()
const

Returns a string representation of this model.

This representation provides:

• The number of expressions, decisions, constraints, and objectives.
• The density of the model. Useful for debugging or logging purposes.

Return: String representation.