Class: IntVar
Integer variable represents an unknown (integer) value that solver has to find.
The value of the integer variable can be constrained using mathematical expressions, such as Model.plus, Model.times, Model.le, Model.sum.
OptalCP solver focuses on scheduling problems and concentrates on IntervalVar variables. Therefore, interval variables should be the primary choice for modeling in OptalCP. However, integer variables can be used for other purposes, such as counting or indexing. In particular, integer variables can be helpful for cumulative expressions with variable heights; see Model.pulse, Model.stepAtStart, Model.stepAtEnd, and Model.stepAt.
The integer variable can be optional. In this case, the solver can make the variable absent, which is usually interpreted as the fact that the solver does not use the variable at all. Functions Model.presenceOf and IntExpr.presence can constrain the presence of the variable.
Integer variables can be created using the function Model.intVar.
Example
In the following example we create three interval variables x
, y
and z
.
Variables x
and y
are present, but variable z
is optional.
Each variable has a different range of possible values.
let model = CP.Model;
let x = model.intervalVar({ name: "x", range: [1, 3] });
let y = model.intervalVar({ name: "y", range: [0, 100] });
let z = model.intervalVar({ name: "z", range: [10, 20], optional: true });
Extends
Methods
abs()
abs():
IntExpr
Creates an integer expression which is absolute value of the expression.
Returns
Remarks
If the expression has value absent, the resulting expression also has value absent.
Same as Model.abs.
Inherited from
div()
Returns integer division of the expression arg
. The division rounds towards zero.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Same as Model.div.
Inherited from
eq()
Creates Boolean expression this
= arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent then the resulting expression has also value absent.
Use function Model.constraint to create a constraint from this expression.
Same as Model.eq.
Inherited from
ge()
Creates Boolean expression this
≥ arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent then the resulting expression has also value absent.
Use function Model.constraint to create a constraint from this expression.
Same as Model.ge.
Inherited from
getMax()
getMax():
null
|number
Returns
null
| number
getMin()
getMin():
null
|number
Returns
null
| number
getName()
getName():
undefined
|string
Returns the name assigned to the node.
Returns
undefined
| string
Inherited from
gt()
Creates Boolean expression this
> arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Use function Model.constraint to create a constraint from this expression.
Same as Model.gt.
Inherited from
guard()
guard(
absentValue
:number
):IntExpr
Creates an expression that replaces value absent by a constant.
Parameters
Parameter | Type | Default value |
---|---|---|
absentValue | number | 0 |
Returns
Remarks
The resulting expression is:
- equal to the expression if the expression is present
- and equal to
absentValue
otherwise (i.e. when the expression is absent).
The default value of absentValue
is 0.
The resulting expression is never absent.
Same as Model.guard.
Inherited from
identity()
identity(
arg
:number
|IntExpr
):void
Constrains the expression to be identical to the argument, including their presence status.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
void
Remarks
Identity is different than equality. For example, if x
is absent, then x.eq(0)
is absent, but x.identity(0)
is false.
Same as Model.identity.
Inherited from
inRange()
inRange(
lb
:number
,ub
:number
):BoolExpr
Creates Boolean expression lb
≤ this
≤ ub
.
Parameters
Parameter | Type |
---|---|
lb | number |
ub | number |
Returns
Remarks
If the expression has value absent, then the resulting expression has also value absent.
Use function Model.constraint to create a constraint from this expression.
Same as Model.inRange.
Inherited from
isAbsent()
isAbsent():
boolean
Returns
boolean
isOptional()
isOptional():
boolean
Returns
boolean
isPresent()
isPresent():
boolean
Returns
boolean
le()
Creates Boolean expression this
≤ arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Use function Model.constraint to create a constraint from this expression.
Same as Model.le.
Inherited from
lt()
Creates Boolean expression this
< arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Use function Model.constraint to create a constraint from this expression.
Same as Model.lt.
Inherited from
makeAbsent()
makeAbsent():
IntVar
Returns
makeOptional()
makeOptional():
IntVar
Returns
makePresent()
makePresent():
IntVar
Returns
max2()
Creates an integer expression which is the maximum of the expression and arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Same as Model.max2. See Model.max for n-ary maximum.
Inherited from
maximize()
maximize():
void
Maximize the expression. I.e., search for a solution that achieves the maximal value of the expression.
Returns
void
Remarks
Equivalent of function Model.maximize.
The opposite of minimize.
Inherited from
min2()
Creates an integer expression which is the minimum of the expression and arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Same as Model.min2. See Model.min for the n-ary minimum.
Inherited from
minimize()
minimize():
void
Minimize the expression. I.e., search for a solution that achieves the minimal value of the expression.
Returns
void
Remarks
Equivalent of function Model.minimize.
Example
In the following model, we search for a solution that minimizes the maximum
end of the two intervals x
and y
:
let model = new CP.Model();
let x = model.intervalVar({ length: 10, name: "x" });
let y = model.intervalVar({ length: 20, name: "y" });
model.max2(x.end(), y.end()).minimize();
let result = await CP.solve(model);
Inherited from
minus()
Returns subtraction of the expression and arg
.@remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Same as Model.minus.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Inherited from
ne()
Creates Boolean expression this
≠ arg
.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Use function Model.constraint to create a constraint from this expression.
Same as Model.ne.
Inherited from
neg()
neg():
IntExpr
Returns negation of the expression.
Returns
Remarks
If the expression has value absent then the resulting expression has also value absent.
Same as Model.neg.
Inherited from
plus()
Returns addition of the expression and the argument.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |
Returns
Remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Same as Model.plus.
Inherited from
presence()
presence():
BoolExpr
Returns an expression which is true if the expression is present and false when it is absent.
Returns
Remarks
The resulting expression is never absent.
Same as Model.presenceOf.
Inherited from
setMax()
setMax(
max
:number
):IntVar
Parameters
Parameter | Type |
---|---|
max | number |
Returns
setMin()
setMin(
min
:number
):IntVar
Parameters
Parameter | Type |
---|---|
min | number |
Returns
setName()
setName(
name
:string
):this
Assigns a name to the node.
Parameters
Parameter | Type | Description |
---|---|---|
name | string | Named to be assigned. |
Returns
this
The node itself so it can be used in chained expression.
Remarks
Assigning a name is optional. However, it is helpful for debugging because variable names appear in the development traces. It is also helpful for exporting the model to a file (see problem2json).
Example
let model = new CP.Model();
let x = model.intervalVar({ length: 10 }).setName("x");
// The line above is equivalent to:
// let x = model.intervalVar({ length: 10, name:"x" });
let endOfX = model.endOf(x).setName("endOfX");
let result = await CP.solve(model);
Inherited from
setRange()
setRange(
min
:number
,max
:number
):IntVar
Parameters
Parameter | Type |
---|---|
min | number |
max | number |
Returns
times()
Returns multiplication of the expression and arg
.@remarks
If the expression or arg
has value absent, then the resulting expression has also value absent.
Same as Model.times.
Parameters
Parameter | Type |
---|---|
arg | number | IntExpr |