Java Reference

Java Reference

LinearExpr.java
Go to the documentation of this file.
1// Copyright 2010-2018 Google LLC
2// Licensed under the Apache License, Version 2.0 (the "License");
3// you may not use this file except in compliance with the License.
4// You may obtain a copy of the License at
5//
6// http://www.apache.org/licenses/LICENSE-2.0
7//
8// Unless required by applicable law or agreed to in writing, software
9// distributed under the License is distributed on an "AS IS" BASIS,
10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11// See the License for the specific language governing permissions and
12// limitations under the License.
13
14package com.google.ortools.sat;
15
17public interface LinearExpr {
20
22 IntVar getVariable(int index);
23
25 long getCoefficient(int index);
26
28 long getOffset();
29
31 static LinearExpr sum(IntVar[] variables) {
32 return new SumOfVariables(variables);
33 }
34
36 static LinearExpr booleanSum(Literal[] literals) {
37 // We need the scalar product for the negative coefficient of negated Boolean variables.
38 return new ScalProd(literals);
39 }
40
42 static LinearExpr scalProd(IntVar[] variables, long[] coefficients) {
43 if (variables.length != coefficients.length) {
44 throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "variables", "coefficients");
45 }
46 return new ScalProd(variables, coefficients);
47 }
48
50 static LinearExpr scalProd(IntVar[] variables, int[] coefficients) {
51 if (variables.length != coefficients.length) {
52 throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "variables", "coefficients");
53 }
54 long[] tmp = new long[coefficients.length];
55 for (int i = 0; i < coefficients.length; ++i) {
56 tmp[i] = coefficients[i];
57 }
58 return new ScalProd(variables, tmp);
59 }
60
62 static LinearExpr booleanScalProd(Literal[] literals, long[] coefficients) {
63 if (literals.length != coefficients.length) {
64 throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "literals", "coefficients");
65 }
66 return new ScalProd(literals, coefficients);
67 }
68
70 static LinearExpr booleanScalProd(Literal[] literals, int[] coefficients) {
71 if (literals.length != coefficients.length) {
72 throw new CpModel.MismatchedArrayLengths("LinearExpr.scalProd", "literals", "coefficients");
73 }
74
75 long[] tmp = new long[coefficients.length];
76 for (int i = 0; i < coefficients.length; ++i) {
77 tmp[i] = coefficients[i];
78 }
79 return new ScalProd(literals, tmp);
80 }
81
83 static LinearExpr term(IntVar variable, long coefficient) {
84 return new ScalProd(new IntVar[] {variable}, new long[] {coefficient});
85 }
86}
Exception thrown when parallel arrays have mismatched lengths.
Definition: CpModel.java:50
Main modeling class.
Definition: CpModel.java:41
An integer variable.
Definition: IntVar.java:21
A linear expression interface that can be parsed.
Definition: ScalProd.java:17
A linear expression interface that can be parsed.
A linear expression interface that can be parsed.
Definition: LinearExpr.java:17
static LinearExpr booleanSum(Literal[] literals)
Creates a sum expression.
Definition: LinearExpr.java:36
long getCoefficient(int index)
Returns the ith coefficient.
int numElements()
Returns the number of elements in the interface.
long getOffset()
Returns the constant part of the expression.
static LinearExpr booleanScalProd(Literal[] literals, int[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:70
static LinearExpr sum(IntVar[] variables)
Creates a sum expression.
Definition: LinearExpr.java:31
static LinearExpr booleanScalProd(Literal[] literals, long[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:62
static LinearExpr term(IntVar variable, long coefficient)
Creates a linear term (var * coefficient).
Definition: LinearExpr.java:83
static LinearExpr scalProd(IntVar[] variables, int[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:50
static LinearExpr scalProd(IntVar[] variables, long[] coefficients)
Creates a scalar product.
Definition: LinearExpr.java:42
IntVar getVariable(int index)
Returns the ith variable.
Interface to describe a boolean variable or its negation.
Definition: Literal.java:17