LocalSolver logo
is now
Hexaly logo

We're excited to share that we are moving forward. We're leaving behind the LocalSolver brand and transitioning to our new identity: Hexaly. This represents a leap forward in our mission to enable every organization to make better decisions faster when faced with operational and strategic challenges.

This page is for an old version of Hexaly Optimizer. We recommend that you update your version and read the documentation for the latest stable release.

LSOperator Enumeration

enum localsolver::LSOperator

Mathematical operators available for modeling.

These operators are used to type the expressions created in LocalSolver mathematical optimization model.

See:

LSModel

LSExpression

O_Bool

Boolean decision.

Decisional operator with no operand. Decision variable with domain {0,1}.

O_Float

Float decision.

Decisional operator with two operands min and max. Decision variable with domain [min,max].

Since:4.0

O_Const

Constant.

Unary operator. Can be equal to any integer. Note that constants 0 or 1 are considered as boolean. Constants are implicitly created when passing integer arguments to LSModel#createExpression or LSExpression#addOperand.

O_Sum

Sum.

N-ary arithmetic operator. SUM(e1,e2,...,eN) is equal to the sum of all operands e1,e2,...,eN. This operator returns an integer or a double according to the type of its operands.

O_Sub

Substraction.

Binary arithmetic operator. SUB(x, y) is equal to the value of x - y. This operator returns an integer or a double according to the type of its operands.

Since:4.0

O_Prod

Product.

N-ary arithmetic operator. PROD(e1,e2,...,eN) is equal to the product of all operands e1,e2,...,eN. This operator returns an integer or a double according to the type of its operands.

O_Max

Maximum.

N-ary arithmetic operator. MAX(e1,e2,...,eN) is equal to the maximum value among all operands e1,e2,...,eN. This operator returns an integer or a double according to the type of its operands.

O_Min

Minimum.

N-ary arithmetic operator. MIN(e1,e2,...,eN) is equal to the minimum value among all operands e1,e2,...,eN. This operator returns an integer or a double according to the type of its operands.

O_Eq

Equal.

Binary relational operator. EQ(a,b) = 1 if a == b, and 0 otherwise. This operator returns a boolean.

O_Neq

Not equal to.

Binary relational operator. NEQ(a,b) = 1 if a != b, and 0 otherwise. This operator returns a boolean.

O_Geq

Greater than or equal to.

Binary relational operator. GEQ(a,b) = 1 if a >= b, and 0 otherwise. This operator returns a boolean.

O_Leq

Lower than or equal to.

Binary relational operator. LEQ(a,b) = 1 if a <= b, and 0 otherwise. This operator returns a boolean.

O_Gt

Strictly greater than.

Binary relational operator. GT(a,b) = 1 if a > b, and 0 otherwise. This operator returns a boolean.

O_Lt

Strictly lower than.

Binary relational operator. LQ(a, b) = 1 if a < b, and 0 otherwise. This operator returns a boolean.

O_If

If-Then-Else.

Ternary conditional operator. IF(a,b,c) is equal to b if a is true, and c otherwise. Note that the first operand must be a boolean (that is, equal to 0 or 1). This operator returns a boolean, an integer or a double according to the type of the second and third operands.

O_Not

Not.

Unary logical operator. NOT(a) = 1 - a. Note that the operand must be boolean (that is, equal to 0 or 1). This operator returns a boolean.

O_And

And.

N-ary logical operator. AND(e1,e2,...,eN) is equal to 1 (true) if all operands e1,e2,...,eN are 1, and 0 otherwise. Note that all operands must be boolean (that is, equal to 0 or 1). This operator returns a boolean.

O_Or

Or.

N-ary logical operator. OR(e1,e2,...,eN) is equal to 0 if all operands e1,e2,...,eN are 0, and 1 otherwise. Note that all operands must be boolean (that is, equal to 0 or 1). This operator returns a boolean.

O_Xor

Exclusive or (also called “xor”).

N-ary logical operator. XOR(e1,e2,...,eN) is equal to 0 if the number of operands with value 1 among e1,e2,...,eN is even, and 1 otherwise. Remarkable case: XOR(a,b) = 1 if a == b, and 0 otherwise. Note that all operands must be boolean (that is, equal to 0 or 1). This operator returns a boolean.

O_Abs

Absolute value.

Unary arithmetic operator. ABS(e) = e >= 0 ? e : -e. This operator returns an integer or a double according to the type of its operand.

O_Dist

Distance between two numbers.

Binary arithmetic operator. DIST(a,b) = ABS(a-b). This operator returns an integer or a double according to the type of its operands.

O_Div

Division.

Binary arithmetic operator. This operator always returns a double. Note that until version 4.0, the division was an integer division if both operands were integers.

O_Mod

Modulo (remainder of the integer division).

Binary arithmetic operator. MOD(a,b) = r such that a = q * b + r with q, r integers and |r| < b. An error will be thrown if b equals 0 at an iteration of the search. Note that the operands must be integers. This operator returns an integer.

O_Array

Array.

An array is a collection of elements. Indexes begin at 0. It could be used with operators like at or scalar. An array can contain operands of type double, integer or boolean. Note that an array cannot contain another array.

Since:2.1

O_At

Returns the element of an array.

MyArray[i] returns the i element of the array MyArray. An error will be thrown if i is out of range. This operator returns a boolean, an integer or a double according to the type of the operands in the array.

Since:2.1

O_Scalar

Scalar product.

SCALAR(a, x) = sum(a[i]*x[i]) with a and x two arrays. This operator returns an integer or a double according to the type of the operands in the arrays.

Since:2.1

O_Ceil

Ceil.

Unary arithmetic operator. Returns a value rounded to the next highest integer. This operator returns an integer.

Since:3.0

O_Floor

Floor.

Unary arithmetic operator. Returns a value rounded to the next lowest integer. This operator returns an integer.

Since:3.0

O_Round

Round.

Unary arithmetic operator. Returns a value rounded to the nearest integer. This operator returns an integer.

Since:3.0

O_Sqrt

Square root.

Unary arithmetic operator. This operator returns a double.

Since:3.0

O_Log

Natural logarithm (base-e).

Unary arithmetic operator. This operator returns a double.

Since:3.0

O_Exp

Base-e exponential.

Unary arithmetic operator. This operator returns a double.

Since:3.0

O_Pow

Power operator.

POW(x, y) is equals to the value of x to the power of y. This operator returns a double.

Since:3.0

O_Cos

Cosine.

Unary arithmetic operator. This operator returns a double.

Since:3.0

O_Sin

Sine.

Unary arithmetic operator. This operator returns a double.

Since:3.0

O_Tan

Tangent.

Unary arithmetic operator. This operator returns a double.

Since:3.0

O_Int

Integer decision variable.

Decisional operator with two operands min and max. Decision variable with domain [min,max].

Since:5.0

O_Piecewise

Piecewise-linear function operator.

The piecewise linear function is defined by two arrays of numbers giving the breakpoints of the function. This operator has exactly 3 operands: The first two operands must be two arrays of equal lengths (necessarily larger or equal to 2). These arrays must contain constant numbers (int or double). The first array must contain numbers in ascending order. The third operand must be an integer or double expression. An exception will be thrown if its value is strictly smaller that the first element of the first array, or strictly larger than the last element of the first array. This operator returns a double.

piecewise(x,y,z) returns the image of z by the function defined by geometric points (x[0],y[0]), (x[1],y[1]), ..... (x[n-1],y[n-1]), For instance piecewise({0,50,100},{0,10,100},75) returns 55.

Discontinuities are allowed in the definition of the function, that is to say that two geometric points can share the same x-coordinate. By convention the value taken by the function at such a discontinuous point is the one associated to the last occurrence of this x-coordinate in array x. For instance piecewise({0,50,50,100},{0,0.1,0.9,1},50) returns 0.9;

Since:5.0

O_List

A list is an collection of integers within a range [0,n-1] where n is the unique argument of this operator.

Mathematically a list is a permutation of a subset of [0,n-1]. This operator takes exactly one parameter: a constant strictly positive integer. All values in the list will be pairwise different, non negative and strictly smaller that this number. The elements of the list can be accessed with the at operator (-1 will be returned for indices beyond the number of elements in the list and for negative indices).

Since:5.5

O_Count

The number of elements in a collection.

This operator takes exactly one argument of type list.

Since:5.5

O_IndexOf

The index of a value in a list (-1 if the value is not in the list).

This operator takes exactly two arguments: the first one is a list, the second one is an integer expression.

Since:5.5

O_Partition

Partition.

N-ary logical operator. Partition(l1,l2,...,lN) is true if all lists l1,l2..lN form a partition of their common range. All parameters of this operator must be lists on the same range.

Since:5.5

O_Disjoint

Disjoint.

N-ary logical operator. Disjoint(l1,l2,...,lN) is true if all lists l1,l2..lN are pairwise disjoint. All parameters of this operator must be lists on the same range.

Since:5.5

O_NativeFunction

Native function.

Native functions are used to retrieve the value of expressions from external functions written with your favorite language. Native functions are created with the dedicated method LSModel#createNativeFunction.

See:LSNativeFunction
Since:6.0

O_Call

Call a particular function.

The first operand must be a function (like O_NativeFunction). The other operands are passed to the function as arguments.

Since:6.0