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 
14 package com.google.ortools.sat;
15 
17 public interface LinearExpr {
19  int numElements();
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